From b4a90358b2db32a2ab2234fd7a136cf86032acac Mon Sep 17 00:00:00 2001 From: Michael Phipps Date: Tue, 2 Mar 2004 00:45:50 +0000 Subject: [PATCH] Initial checkin of diffutils git-svn-id: file:///srv/svn/repos/haiku/trunk/current@6847 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/apps/bin/Jamfile | 3 + src/apps/bin/diffutils-2.8.1/ABOUT-NLS | 396 + src/apps/bin/diffutils-2.8.1/AUTHORS | 112 + src/apps/bin/diffutils-2.8.1/COPYING | 340 + src/apps/bin/diffutils-2.8.1/ChangeLog | 3409 ++++ src/apps/bin/diffutils-2.8.1/INSTALL | 231 + src/apps/bin/diffutils-2.8.1/INSTALLME | 53 + src/apps/bin/diffutils-2.8.1/Jamfile | 4 + src/apps/bin/diffutils-2.8.1/Makefile | 455 + src/apps/bin/diffutils-2.8.1/Makefile.am | 23 + src/apps/bin/diffutils-2.8.1/Makefile.in | 455 + src/apps/bin/diffutils-2.8.1/NEWS | 202 + src/apps/bin/diffutils-2.8.1/README | 38 + src/apps/bin/diffutils-2.8.1/THANKS | 22 + src/apps/bin/diffutils-2.8.1/aclocal.m4 | 3633 ++++ src/apps/bin/diffutils-2.8.1/config.h | 1436 ++ src/apps/bin/diffutils-2.8.1/config.hin | 514 + src/apps/bin/diffutils-2.8.1/config.log | 2590 +++ src/apps/bin/diffutils-2.8.1/config.status | 1568 ++ .../bin/diffutils-2.8.1/config/config.guess | 1321 ++ .../bin/diffutils-2.8.1/config/config.rpath | 513 + .../bin/diffutils-2.8.1/config/config.sub | 1443 ++ src/apps/bin/diffutils-2.8.1/config/depcomp | 436 + .../bin/diffutils-2.8.1/config/install-sh | 251 + src/apps/bin/diffutils-2.8.1/config/mdate-sh | 97 + src/apps/bin/diffutils-2.8.1/config/missing | 336 + .../bin/diffutils-2.8.1/config/mkinstalldirs | 101 + .../bin/diffutils-2.8.1/config/texinfo.tex | 6364 +++++++ src/apps/bin/diffutils-2.8.1/configure | 15482 ++++++++++++++++ src/apps/bin/diffutils-2.8.1/configure.ac | 135 + src/apps/bin/diffutils-2.8.1/doc/Makefile | 359 + src/apps/bin/diffutils-2.8.1/doc/Makefile.am | 24 + src/apps/bin/diffutils-2.8.1/doc/Makefile.in | 359 + .../bin/diffutils-2.8.1/doc/diagmeet.note | 71 + src/apps/bin/diffutils-2.8.1/doc/diff.info | 5084 +++++ src/apps/bin/diffutils-2.8.1/doc/diff.texi | 4556 +++++ src/apps/bin/diffutils-2.8.1/doc/fdl.texi | 403 + src/apps/bin/diffutils-2.8.1/doc/stamp-vti | 4 + src/apps/bin/diffutils-2.8.1/doc/version.texi | 4 + src/apps/bin/diffutils-2.8.1/exgettext | 123 + src/apps/bin/diffutils-2.8.1/lib/Jamfile | 43 + src/apps/bin/diffutils-2.8.1/lib/Makefile | 493 + src/apps/bin/diffutils-2.8.1/lib/Makefile.am | 42 + src/apps/bin/diffutils-2.8.1/lib/Makefile.in | 493 + src/apps/bin/diffutils-2.8.1/lib/alloca.c | 504 + src/apps/bin/diffutils-2.8.1/lib/basename.c | 79 + src/apps/bin/diffutils-2.8.1/lib/c-stack.c | 237 + src/apps/bin/diffutils-2.8.1/lib/c-stack.h | 24 + src/apps/bin/diffutils-2.8.1/lib/cmpbuf.c | 147 + src/apps/bin/diffutils-2.8.1/lib/cmpbuf.h | 21 + src/apps/bin/diffutils-2.8.1/lib/config.h | 1436 ++ src/apps/bin/diffutils-2.8.1/lib/dirname.h | 47 + src/apps/bin/diffutils-2.8.1/lib/error.c | 400 + src/apps/bin/diffutils-2.8.1/lib/error.h | 78 + src/apps/bin/diffutils-2.8.1/lib/exclude.c | 268 + src/apps/bin/diffutils-2.8.1/lib/exclude.h | 49 + src/apps/bin/diffutils-2.8.1/lib/exitfail.c | 31 + src/apps/bin/diffutils-2.8.1/lib/exitfail.h | 20 + src/apps/bin/diffutils-2.8.1/lib/fnmatch.c | 230 + src/apps/bin/diffutils-2.8.1/lib/fnmatch.h | 69 + src/apps/bin/diffutils-2.8.1/lib/fnmatch.hin | 69 + src/apps/bin/diffutils-2.8.1/lib/freesoft.c | 31 + src/apps/bin/diffutils-2.8.1/lib/freesoft.h | 1 + src/apps/bin/diffutils-2.8.1/lib/getopt.c | 1067 ++ src/apps/bin/diffutils-2.8.1/lib/getopt.h | 179 + src/apps/bin/diffutils-2.8.1/lib/getopt1.c | 187 + src/apps/bin/diffutils-2.8.1/lib/gettext.h | 59 + .../bin/diffutils-2.8.1/lib/hard-locale.c | 79 + .../bin/diffutils-2.8.1/lib/hard-locale.h | 18 + src/apps/bin/diffutils-2.8.1/lib/imaxtostr.c | 3 + src/apps/bin/diffutils-2.8.1/lib/inttostr.c | 49 + src/apps/bin/diffutils-2.8.1/lib/inttostr.h | 60 + src/apps/bin/diffutils-2.8.1/lib/malloc.c | 38 + src/apps/bin/diffutils-2.8.1/lib/memchr.c | 216 + src/apps/bin/diffutils-2.8.1/lib/mkstemp.c | 42 + src/apps/bin/diffutils-2.8.1/lib/offtostr.c | 3 + src/apps/bin/diffutils-2.8.1/lib/posixver.c | 58 + src/apps/bin/diffutils-2.8.1/lib/posixver.h | 1 + src/apps/bin/diffutils-2.8.1/lib/prepargs.c | 93 + src/apps/bin/diffutils-2.8.1/lib/prepargs.h | 3 + src/apps/bin/diffutils-2.8.1/lib/quotesys.c | 125 + src/apps/bin/diffutils-2.8.1/lib/quotesys.h | 9 + src/apps/bin/diffutils-2.8.1/lib/realloc.c | 44 + src/apps/bin/diffutils-2.8.1/lib/regex.c | 8431 +++++++++ src/apps/bin/diffutils-2.8.1/lib/regex.h | 46 + src/apps/bin/diffutils-2.8.1/lib/regex.hin | 46 + src/apps/bin/diffutils-2.8.1/lib/setmode.c | 62 + src/apps/bin/diffutils-2.8.1/lib/setmode.h | 27 + src/apps/bin/diffutils-2.8.1/lib/strcasecmp.c | 66 + src/apps/bin/diffutils-2.8.1/lib/strftime.c | 1406 ++ src/apps/bin/diffutils-2.8.1/lib/strtoimax.c | 101 + src/apps/bin/diffutils-2.8.1/lib/strtol.c | 472 + src/apps/bin/diffutils-2.8.1/lib/strtoul.c | 22 + src/apps/bin/diffutils-2.8.1/lib/strtoull.c | 27 + src/apps/bin/diffutils-2.8.1/lib/strtoumax.c | 2 + src/apps/bin/diffutils-2.8.1/lib/tempname.c | 342 + src/apps/bin/diffutils-2.8.1/lib/umaxtostr.c | 3 + .../bin/diffutils-2.8.1/lib/unlocked-io.h | 69 + src/apps/bin/diffutils-2.8.1/lib/waitpid.c | 73 + src/apps/bin/diffutils-2.8.1/lib/xalloc.h | 82 + src/apps/bin/diffutils-2.8.1/lib/xmalloc.c | 113 + src/apps/bin/diffutils-2.8.1/lib/xstrtol.c | 302 + src/apps/bin/diffutils-2.8.1/lib/xstrtol.h | 82 + src/apps/bin/diffutils-2.8.1/lib/xstrtoumax.c | 31 + src/apps/bin/diffutils-2.8.1/m4/Makefile | 272 + src/apps/bin/diffutils-2.8.1/m4/Makefile.am | 50 + .../bin/diffutils-2.8.1/m4/Makefile.am.in | 17 + src/apps/bin/diffutils-2.8.1/m4/Makefile.in | 272 + src/apps/bin/diffutils-2.8.1/m4/README | 10 + src/apps/bin/diffutils-2.8.1/m4/c-bs-a.m4 | 23 + src/apps/bin/diffutils-2.8.1/m4/c-stack.m4 | 131 + src/apps/bin/diffutils-2.8.1/m4/check-decl.m4 | 85 + src/apps/bin/diffutils-2.8.1/m4/codeset.m4 | 23 + src/apps/bin/diffutils-2.8.1/m4/dos.m4 | 53 + src/apps/bin/diffutils-2.8.1/m4/error.m4 | 13 + src/apps/bin/diffutils-2.8.1/m4/fnmatch.m4 | 47 + src/apps/bin/diffutils-2.8.1/m4/gettext.m4 | 541 + src/apps/bin/diffutils-2.8.1/m4/glibc21.m4 | 32 + src/apps/bin/diffutils-2.8.1/m4/gnu-source.m4 | 25 + src/apps/bin/diffutils-2.8.1/m4/iconv.m4 | 96 + src/apps/bin/diffutils-2.8.1/m4/inttypes.m4 | 32 + .../bin/diffutils-2.8.1/m4/jm-glibc-io.m4 | 14 + src/apps/bin/diffutils-2.8.1/m4/lcmessage.m4 | 32 + src/apps/bin/diffutils-2.8.1/m4/lib-ld.m4 | 97 + src/apps/bin/diffutils-2.8.1/m4/lib-link.m4 | 521 + src/apps/bin/diffutils-2.8.1/m4/lib-prefix.m4 | 148 + src/apps/bin/diffutils-2.8.1/m4/longlong.m4 | 35 + src/apps/bin/diffutils-2.8.1/m4/malloc.m4 | 34 + src/apps/bin/diffutils-2.8.1/m4/mbrtowc.m4 | 18 + src/apps/bin/diffutils-2.8.1/m4/mbstate_t.m4 | 29 + src/apps/bin/diffutils-2.8.1/m4/prereq.m4 | 153 + src/apps/bin/diffutils-2.8.1/m4/progtest.m4 | 59 + src/apps/bin/diffutils-2.8.1/m4/realloc.m4 | 34 + src/apps/bin/diffutils-2.8.1/m4/regex.m4 | 81 + src/apps/bin/diffutils-2.8.1/m4/setmode.m4 | 38 + src/apps/bin/diffutils-2.8.1/m4/st_mtim.m4 | 32 + src/apps/bin/diffutils-2.8.1/m4/stdbool.m4 | 56 + src/apps/bin/diffutils-2.8.1/m4/strftime.m4 | 43 + src/apps/bin/diffutils-2.8.1/m4/vararrays.m4 | 37 + src/apps/bin/diffutils-2.8.1/m4/xstrtoumax.m4 | 40 + src/apps/bin/diffutils-2.8.1/man/Makefile | 291 + src/apps/bin/diffutils-2.8.1/man/Makefile.am | 34 + src/apps/bin/diffutils-2.8.1/man/Makefile.in | 291 + src/apps/bin/diffutils-2.8.1/man/cmp.1 | 64 + src/apps/bin/diffutils-2.8.1/man/diff.1 | 225 + src/apps/bin/diffutils-2.8.1/man/diff3.1 | 76 + src/apps/bin/diffutils-2.8.1/man/sdiff.1 | 88 + src/apps/bin/diffutils-2.8.1/ms/Makefile | 230 + src/apps/bin/diffutils-2.8.1/ms/Makefile.am | 19 + src/apps/bin/diffutils-2.8.1/ms/Makefile.in | 230 + src/apps/bin/diffutils-2.8.1/ms/README | 66 + src/apps/bin/diffutils-2.8.1/ms/config.bat | 261 + src/apps/bin/diffutils-2.8.1/ms/config.sed | 87 + src/apps/bin/diffutils-2.8.1/ms/config.site | 81 + src/apps/bin/diffutils-2.8.1/po/LINGUAS | 1 + src/apps/bin/diffutils-2.8.1/po/Makefile | 397 + src/apps/bin/diffutils-2.8.1/po/Makefile.in | 317 + .../bin/diffutils-2.8.1/po/Makefile.in.in | 317 + src/apps/bin/diffutils-2.8.1/po/Makevars | 25 + src/apps/bin/diffutils-2.8.1/po/POTFILES | 13 + src/apps/bin/diffutils-2.8.1/po/POTFILES.in | 33 + src/apps/bin/diffutils-2.8.1/po/Rules-quot | 42 + src/apps/bin/diffutils-2.8.1/po/boldquot.sed | 10 + src/apps/bin/diffutils-2.8.1/po/cs.gmo | Bin 0 -> 23035 bytes src/apps/bin/diffutils-2.8.1/po/cs.po | 947 + src/apps/bin/diffutils-2.8.1/po/da.gmo | Bin 0 -> 22910 bytes src/apps/bin/diffutils-2.8.1/po/da.po | 931 + src/apps/bin/diffutils-2.8.1/po/de.gmo | Bin 0 -> 24021 bytes src/apps/bin/diffutils-2.8.1/po/de.po | 993 + src/apps/bin/diffutils-2.8.1/po/diffutils.pot | 841 + .../bin/diffutils-2.8.1/po/en@boldquot.header | 25 + .../bin/diffutils-2.8.1/po/en@quot.header | 22 + src/apps/bin/diffutils-2.8.1/po/en_GB.gmo | Bin 0 -> 617 bytes src/apps/bin/diffutils-2.8.1/po/en_GB.po | 843 + src/apps/bin/diffutils-2.8.1/po/eo.gmo | Bin 0 -> 22734 bytes src/apps/bin/diffutils-2.8.1/po/eo.po | 923 + src/apps/bin/diffutils-2.8.1/po/es.gmo | Bin 0 -> 25106 bytes src/apps/bin/diffutils-2.8.1/po/es.po | 1137 ++ src/apps/bin/diffutils-2.8.1/po/fr.gmo | Bin 0 -> 25082 bytes src/apps/bin/diffutils-2.8.1/po/fr.po | 1033 ++ src/apps/bin/diffutils-2.8.1/po/gl.gmo | Bin 0 -> 23855 bytes src/apps/bin/diffutils-2.8.1/po/gl.po | 997 + src/apps/bin/diffutils-2.8.1/po/he.gmo | Bin 0 -> 23365 bytes src/apps/bin/diffutils-2.8.1/po/he.po | 907 + src/apps/bin/diffutils-2.8.1/po/id.gmo | Bin 0 -> 22711 bytes src/apps/bin/diffutils-2.8.1/po/id.po | 913 + .../bin/diffutils-2.8.1/po/insert-header.sin | 23 + src/apps/bin/diffutils-2.8.1/po/ja.gmo | Bin 0 -> 22004 bytes src/apps/bin/diffutils-2.8.1/po/ja.po | 898 + src/apps/bin/diffutils-2.8.1/po/pl.gmo | Bin 0 -> 23351 bytes src/apps/bin/diffutils-2.8.1/po/pl.po | 930 + src/apps/bin/diffutils-2.8.1/po/quot.sed | 6 + .../diffutils-2.8.1/po/remove-potcdate.sin | 19 + src/apps/bin/diffutils-2.8.1/po/ru.gmo | Bin 0 -> 23983 bytes src/apps/bin/diffutils-2.8.1/po/ru.po | 942 + src/apps/bin/diffutils-2.8.1/po/sv.gmo | Bin 0 -> 22549 bytes src/apps/bin/diffutils-2.8.1/po/sv.po | 921 + src/apps/bin/diffutils-2.8.1/po/tr.gmo | Bin 0 -> 24943 bytes src/apps/bin/diffutils-2.8.1/po/tr.po | 956 + src/apps/bin/diffutils-2.8.1/po/zh_TW.gmo | Bin 0 -> 21489 bytes src/apps/bin/diffutils-2.8.1/po/zh_TW.po | 922 + src/apps/bin/diffutils-2.8.1/src/Jamfile | 12 + src/apps/bin/diffutils-2.8.1/src/Makefile | 418 + src/apps/bin/diffutils-2.8.1/src/Makefile.am | 44 + src/apps/bin/diffutils-2.8.1/src/Makefile.in | 418 + src/apps/bin/diffutils-2.8.1/src/analyze.c | 1068 ++ src/apps/bin/diffutils-2.8.1/src/cmp.c | 674 + src/apps/bin/diffutils-2.8.1/src/config.h | 1436 ++ src/apps/bin/diffutils-2.8.1/src/context.c | 478 + src/apps/bin/diffutils-2.8.1/src/diff.c | 1363 ++ src/apps/bin/diffutils-2.8.1/src/diff.h | 375 + src/apps/bin/diffutils-2.8.1/src/diff3.c | 1745 ++ src/apps/bin/diffutils-2.8.1/src/dir.c | 289 + src/apps/bin/diffutils-2.8.1/src/ed.c | 169 + src/apps/bin/diffutils-2.8.1/src/ifdef.c | 424 + src/apps/bin/diffutils-2.8.1/src/io.c | 855 + src/apps/bin/diffutils-2.8.1/src/normal.c | 71 + src/apps/bin/diffutils-2.8.1/src/sdiff.c | 1220 ++ src/apps/bin/diffutils-2.8.1/src/side.c | 283 + src/apps/bin/diffutils-2.8.1/src/system.h | 401 + src/apps/bin/diffutils-2.8.1/src/util.c | 756 + src/apps/bin/diffutils-2.8.1/src/version.c | 2 + src/apps/bin/diffutils-2.8.1/stamp-h | 1 + src/apps/bin/diffutils-2.8.1/stamp-h1 | 1 + 224 files changed, 106953 insertions(+) create mode 100644 src/apps/bin/diffutils-2.8.1/ABOUT-NLS create mode 100644 src/apps/bin/diffutils-2.8.1/AUTHORS create mode 100644 src/apps/bin/diffutils-2.8.1/COPYING create mode 100644 src/apps/bin/diffutils-2.8.1/ChangeLog create mode 100644 src/apps/bin/diffutils-2.8.1/INSTALL create mode 100644 src/apps/bin/diffutils-2.8.1/INSTALLME create mode 100644 src/apps/bin/diffutils-2.8.1/Jamfile create mode 100644 src/apps/bin/diffutils-2.8.1/Makefile create mode 100644 src/apps/bin/diffutils-2.8.1/Makefile.am create mode 100644 src/apps/bin/diffutils-2.8.1/Makefile.in create mode 100644 src/apps/bin/diffutils-2.8.1/NEWS create mode 100644 src/apps/bin/diffutils-2.8.1/README create mode 100644 src/apps/bin/diffutils-2.8.1/THANKS create mode 100644 src/apps/bin/diffutils-2.8.1/aclocal.m4 create mode 100644 src/apps/bin/diffutils-2.8.1/config.h create mode 100644 src/apps/bin/diffutils-2.8.1/config.hin create mode 100644 src/apps/bin/diffutils-2.8.1/config.log create mode 100755 src/apps/bin/diffutils-2.8.1/config.status create mode 100644 src/apps/bin/diffutils-2.8.1/config/config.guess create mode 100755 src/apps/bin/diffutils-2.8.1/config/config.rpath create mode 100644 src/apps/bin/diffutils-2.8.1/config/config.sub create mode 100755 src/apps/bin/diffutils-2.8.1/config/depcomp create mode 100755 src/apps/bin/diffutils-2.8.1/config/install-sh create mode 100755 src/apps/bin/diffutils-2.8.1/config/mdate-sh create mode 100755 src/apps/bin/diffutils-2.8.1/config/missing create mode 100755 src/apps/bin/diffutils-2.8.1/config/mkinstalldirs create mode 100644 src/apps/bin/diffutils-2.8.1/config/texinfo.tex create mode 100755 src/apps/bin/diffutils-2.8.1/configure create mode 100644 src/apps/bin/diffutils-2.8.1/configure.ac create mode 100644 src/apps/bin/diffutils-2.8.1/doc/Makefile create mode 100644 src/apps/bin/diffutils-2.8.1/doc/Makefile.am create mode 100644 src/apps/bin/diffutils-2.8.1/doc/Makefile.in create mode 100644 src/apps/bin/diffutils-2.8.1/doc/diagmeet.note create mode 100644 src/apps/bin/diffutils-2.8.1/doc/diff.info create mode 100644 src/apps/bin/diffutils-2.8.1/doc/diff.texi create mode 100644 src/apps/bin/diffutils-2.8.1/doc/fdl.texi create mode 100644 src/apps/bin/diffutils-2.8.1/doc/stamp-vti create mode 100644 src/apps/bin/diffutils-2.8.1/doc/version.texi create mode 100755 src/apps/bin/diffutils-2.8.1/exgettext create mode 100644 src/apps/bin/diffutils-2.8.1/lib/Jamfile create mode 100644 src/apps/bin/diffutils-2.8.1/lib/Makefile create mode 100644 src/apps/bin/diffutils-2.8.1/lib/Makefile.am create mode 100644 src/apps/bin/diffutils-2.8.1/lib/Makefile.in create mode 100644 src/apps/bin/diffutils-2.8.1/lib/alloca.c create mode 100644 src/apps/bin/diffutils-2.8.1/lib/basename.c create mode 100644 src/apps/bin/diffutils-2.8.1/lib/c-stack.c create mode 100644 src/apps/bin/diffutils-2.8.1/lib/c-stack.h create mode 100644 src/apps/bin/diffutils-2.8.1/lib/cmpbuf.c create mode 100644 src/apps/bin/diffutils-2.8.1/lib/cmpbuf.h create mode 100644 src/apps/bin/diffutils-2.8.1/lib/config.h create mode 100644 src/apps/bin/diffutils-2.8.1/lib/dirname.h create mode 100644 src/apps/bin/diffutils-2.8.1/lib/error.c create mode 100644 src/apps/bin/diffutils-2.8.1/lib/error.h create mode 100644 src/apps/bin/diffutils-2.8.1/lib/exclude.c create mode 100644 src/apps/bin/diffutils-2.8.1/lib/exclude.h create mode 100644 src/apps/bin/diffutils-2.8.1/lib/exitfail.c create mode 100644 src/apps/bin/diffutils-2.8.1/lib/exitfail.h create mode 100644 src/apps/bin/diffutils-2.8.1/lib/fnmatch.c create mode 100644 src/apps/bin/diffutils-2.8.1/lib/fnmatch.h create mode 100644 src/apps/bin/diffutils-2.8.1/lib/fnmatch.hin create mode 100644 src/apps/bin/diffutils-2.8.1/lib/freesoft.c create mode 100644 src/apps/bin/diffutils-2.8.1/lib/freesoft.h create mode 100644 src/apps/bin/diffutils-2.8.1/lib/getopt.c create mode 100644 src/apps/bin/diffutils-2.8.1/lib/getopt.h create mode 100644 src/apps/bin/diffutils-2.8.1/lib/getopt1.c create mode 100644 src/apps/bin/diffutils-2.8.1/lib/gettext.h create mode 100644 src/apps/bin/diffutils-2.8.1/lib/hard-locale.c create mode 100644 src/apps/bin/diffutils-2.8.1/lib/hard-locale.h create mode 100644 src/apps/bin/diffutils-2.8.1/lib/imaxtostr.c create mode 100644 src/apps/bin/diffutils-2.8.1/lib/inttostr.c create mode 100644 src/apps/bin/diffutils-2.8.1/lib/inttostr.h create mode 100644 src/apps/bin/diffutils-2.8.1/lib/malloc.c create mode 100644 src/apps/bin/diffutils-2.8.1/lib/memchr.c create mode 100644 src/apps/bin/diffutils-2.8.1/lib/mkstemp.c create mode 100644 src/apps/bin/diffutils-2.8.1/lib/offtostr.c create mode 100644 src/apps/bin/diffutils-2.8.1/lib/posixver.c create mode 100644 src/apps/bin/diffutils-2.8.1/lib/posixver.h create mode 100644 src/apps/bin/diffutils-2.8.1/lib/prepargs.c create mode 100644 src/apps/bin/diffutils-2.8.1/lib/prepargs.h create mode 100644 src/apps/bin/diffutils-2.8.1/lib/quotesys.c create mode 100644 src/apps/bin/diffutils-2.8.1/lib/quotesys.h create mode 100644 src/apps/bin/diffutils-2.8.1/lib/realloc.c create mode 100644 src/apps/bin/diffutils-2.8.1/lib/regex.c create mode 100644 src/apps/bin/diffutils-2.8.1/lib/regex.h create mode 100644 src/apps/bin/diffutils-2.8.1/lib/regex.hin create mode 100644 src/apps/bin/diffutils-2.8.1/lib/setmode.c create mode 100644 src/apps/bin/diffutils-2.8.1/lib/setmode.h create mode 100644 src/apps/bin/diffutils-2.8.1/lib/strcasecmp.c create mode 100644 src/apps/bin/diffutils-2.8.1/lib/strftime.c create mode 100644 src/apps/bin/diffutils-2.8.1/lib/strtoimax.c create mode 100644 src/apps/bin/diffutils-2.8.1/lib/strtol.c create mode 100644 src/apps/bin/diffutils-2.8.1/lib/strtoul.c create mode 100644 src/apps/bin/diffutils-2.8.1/lib/strtoull.c create mode 100644 src/apps/bin/diffutils-2.8.1/lib/strtoumax.c create mode 100644 src/apps/bin/diffutils-2.8.1/lib/tempname.c create mode 100644 src/apps/bin/diffutils-2.8.1/lib/umaxtostr.c create mode 100644 src/apps/bin/diffutils-2.8.1/lib/unlocked-io.h create mode 100644 src/apps/bin/diffutils-2.8.1/lib/waitpid.c create mode 100644 src/apps/bin/diffutils-2.8.1/lib/xalloc.h create mode 100644 src/apps/bin/diffutils-2.8.1/lib/xmalloc.c create mode 100644 src/apps/bin/diffutils-2.8.1/lib/xstrtol.c create mode 100644 src/apps/bin/diffutils-2.8.1/lib/xstrtol.h create mode 100644 src/apps/bin/diffutils-2.8.1/lib/xstrtoumax.c create mode 100644 src/apps/bin/diffutils-2.8.1/m4/Makefile create mode 100644 src/apps/bin/diffutils-2.8.1/m4/Makefile.am create mode 100644 src/apps/bin/diffutils-2.8.1/m4/Makefile.am.in create mode 100644 src/apps/bin/diffutils-2.8.1/m4/Makefile.in create mode 100644 src/apps/bin/diffutils-2.8.1/m4/README create mode 100644 src/apps/bin/diffutils-2.8.1/m4/c-bs-a.m4 create mode 100644 src/apps/bin/diffutils-2.8.1/m4/c-stack.m4 create mode 100644 src/apps/bin/diffutils-2.8.1/m4/check-decl.m4 create mode 100644 src/apps/bin/diffutils-2.8.1/m4/codeset.m4 create mode 100644 src/apps/bin/diffutils-2.8.1/m4/dos.m4 create mode 100644 src/apps/bin/diffutils-2.8.1/m4/error.m4 create mode 100644 src/apps/bin/diffutils-2.8.1/m4/fnmatch.m4 create mode 100644 src/apps/bin/diffutils-2.8.1/m4/gettext.m4 create mode 100644 src/apps/bin/diffutils-2.8.1/m4/glibc21.m4 create mode 100644 src/apps/bin/diffutils-2.8.1/m4/gnu-source.m4 create mode 100644 src/apps/bin/diffutils-2.8.1/m4/iconv.m4 create mode 100644 src/apps/bin/diffutils-2.8.1/m4/inttypes.m4 create mode 100644 src/apps/bin/diffutils-2.8.1/m4/jm-glibc-io.m4 create mode 100644 src/apps/bin/diffutils-2.8.1/m4/lcmessage.m4 create mode 100644 src/apps/bin/diffutils-2.8.1/m4/lib-ld.m4 create mode 100644 src/apps/bin/diffutils-2.8.1/m4/lib-link.m4 create mode 100644 src/apps/bin/diffutils-2.8.1/m4/lib-prefix.m4 create mode 100644 src/apps/bin/diffutils-2.8.1/m4/longlong.m4 create mode 100644 src/apps/bin/diffutils-2.8.1/m4/malloc.m4 create mode 100644 src/apps/bin/diffutils-2.8.1/m4/mbrtowc.m4 create mode 100644 src/apps/bin/diffutils-2.8.1/m4/mbstate_t.m4 create mode 100644 src/apps/bin/diffutils-2.8.1/m4/prereq.m4 create mode 100644 src/apps/bin/diffutils-2.8.1/m4/progtest.m4 create mode 100644 src/apps/bin/diffutils-2.8.1/m4/realloc.m4 create mode 100644 src/apps/bin/diffutils-2.8.1/m4/regex.m4 create mode 100644 src/apps/bin/diffutils-2.8.1/m4/setmode.m4 create mode 100644 src/apps/bin/diffutils-2.8.1/m4/st_mtim.m4 create mode 100644 src/apps/bin/diffutils-2.8.1/m4/stdbool.m4 create mode 100644 src/apps/bin/diffutils-2.8.1/m4/strftime.m4 create mode 100644 src/apps/bin/diffutils-2.8.1/m4/vararrays.m4 create mode 100644 src/apps/bin/diffutils-2.8.1/m4/xstrtoumax.m4 create mode 100644 src/apps/bin/diffutils-2.8.1/man/Makefile create mode 100644 src/apps/bin/diffutils-2.8.1/man/Makefile.am create mode 100644 src/apps/bin/diffutils-2.8.1/man/Makefile.in create mode 100644 src/apps/bin/diffutils-2.8.1/man/cmp.1 create mode 100644 src/apps/bin/diffutils-2.8.1/man/diff.1 create mode 100644 src/apps/bin/diffutils-2.8.1/man/diff3.1 create mode 100644 src/apps/bin/diffutils-2.8.1/man/sdiff.1 create mode 100644 src/apps/bin/diffutils-2.8.1/ms/Makefile create mode 100644 src/apps/bin/diffutils-2.8.1/ms/Makefile.am create mode 100644 src/apps/bin/diffutils-2.8.1/ms/Makefile.in create mode 100644 src/apps/bin/diffutils-2.8.1/ms/README create mode 100644 src/apps/bin/diffutils-2.8.1/ms/config.bat create mode 100644 src/apps/bin/diffutils-2.8.1/ms/config.sed create mode 100644 src/apps/bin/diffutils-2.8.1/ms/config.site create mode 100644 src/apps/bin/diffutils-2.8.1/po/LINGUAS create mode 100644 src/apps/bin/diffutils-2.8.1/po/Makefile create mode 100644 src/apps/bin/diffutils-2.8.1/po/Makefile.in create mode 100644 src/apps/bin/diffutils-2.8.1/po/Makefile.in.in create mode 100644 src/apps/bin/diffutils-2.8.1/po/Makevars create mode 100644 src/apps/bin/diffutils-2.8.1/po/POTFILES create mode 100644 src/apps/bin/diffutils-2.8.1/po/POTFILES.in create mode 100644 src/apps/bin/diffutils-2.8.1/po/Rules-quot create mode 100644 src/apps/bin/diffutils-2.8.1/po/boldquot.sed create mode 100644 src/apps/bin/diffutils-2.8.1/po/cs.gmo create mode 100644 src/apps/bin/diffutils-2.8.1/po/cs.po create mode 100644 src/apps/bin/diffutils-2.8.1/po/da.gmo create mode 100644 src/apps/bin/diffutils-2.8.1/po/da.po create mode 100644 src/apps/bin/diffutils-2.8.1/po/de.gmo create mode 100644 src/apps/bin/diffutils-2.8.1/po/de.po create mode 100644 src/apps/bin/diffutils-2.8.1/po/diffutils.pot create mode 100644 src/apps/bin/diffutils-2.8.1/po/en@boldquot.header create mode 100644 src/apps/bin/diffutils-2.8.1/po/en@quot.header create mode 100644 src/apps/bin/diffutils-2.8.1/po/en_GB.gmo create mode 100644 src/apps/bin/diffutils-2.8.1/po/en_GB.po create mode 100644 src/apps/bin/diffutils-2.8.1/po/eo.gmo create mode 100644 src/apps/bin/diffutils-2.8.1/po/eo.po create mode 100644 src/apps/bin/diffutils-2.8.1/po/es.gmo create mode 100644 src/apps/bin/diffutils-2.8.1/po/es.po create mode 100644 src/apps/bin/diffutils-2.8.1/po/fr.gmo create mode 100644 src/apps/bin/diffutils-2.8.1/po/fr.po create mode 100644 src/apps/bin/diffutils-2.8.1/po/gl.gmo create mode 100644 src/apps/bin/diffutils-2.8.1/po/gl.po create mode 100644 src/apps/bin/diffutils-2.8.1/po/he.gmo create mode 100644 src/apps/bin/diffutils-2.8.1/po/he.po create mode 100644 src/apps/bin/diffutils-2.8.1/po/id.gmo create mode 100644 src/apps/bin/diffutils-2.8.1/po/id.po create mode 100644 src/apps/bin/diffutils-2.8.1/po/insert-header.sin create mode 100644 src/apps/bin/diffutils-2.8.1/po/ja.gmo create mode 100644 src/apps/bin/diffutils-2.8.1/po/ja.po create mode 100644 src/apps/bin/diffutils-2.8.1/po/pl.gmo create mode 100644 src/apps/bin/diffutils-2.8.1/po/pl.po create mode 100644 src/apps/bin/diffutils-2.8.1/po/quot.sed create mode 100644 src/apps/bin/diffutils-2.8.1/po/remove-potcdate.sin create mode 100644 src/apps/bin/diffutils-2.8.1/po/ru.gmo create mode 100644 src/apps/bin/diffutils-2.8.1/po/ru.po create mode 100644 src/apps/bin/diffutils-2.8.1/po/sv.gmo create mode 100644 src/apps/bin/diffutils-2.8.1/po/sv.po create mode 100644 src/apps/bin/diffutils-2.8.1/po/tr.gmo create mode 100644 src/apps/bin/diffutils-2.8.1/po/tr.po create mode 100644 src/apps/bin/diffutils-2.8.1/po/zh_TW.gmo create mode 100644 src/apps/bin/diffutils-2.8.1/po/zh_TW.po create mode 100644 src/apps/bin/diffutils-2.8.1/src/Jamfile create mode 100644 src/apps/bin/diffutils-2.8.1/src/Makefile create mode 100644 src/apps/bin/diffutils-2.8.1/src/Makefile.am create mode 100644 src/apps/bin/diffutils-2.8.1/src/Makefile.in create mode 100644 src/apps/bin/diffutils-2.8.1/src/analyze.c create mode 100644 src/apps/bin/diffutils-2.8.1/src/cmp.c create mode 100644 src/apps/bin/diffutils-2.8.1/src/config.h create mode 100644 src/apps/bin/diffutils-2.8.1/src/context.c create mode 100644 src/apps/bin/diffutils-2.8.1/src/diff.c create mode 100644 src/apps/bin/diffutils-2.8.1/src/diff.h create mode 100644 src/apps/bin/diffutils-2.8.1/src/diff3.c create mode 100644 src/apps/bin/diffutils-2.8.1/src/dir.c create mode 100644 src/apps/bin/diffutils-2.8.1/src/ed.c create mode 100644 src/apps/bin/diffutils-2.8.1/src/ifdef.c create mode 100644 src/apps/bin/diffutils-2.8.1/src/io.c create mode 100644 src/apps/bin/diffutils-2.8.1/src/normal.c create mode 100644 src/apps/bin/diffutils-2.8.1/src/sdiff.c create mode 100644 src/apps/bin/diffutils-2.8.1/src/side.c create mode 100644 src/apps/bin/diffutils-2.8.1/src/system.h create mode 100644 src/apps/bin/diffutils-2.8.1/src/util.c create mode 100644 src/apps/bin/diffutils-2.8.1/src/version.c create mode 100644 src/apps/bin/diffutils-2.8.1/stamp-h create mode 100644 src/apps/bin/diffutils-2.8.1/stamp-h1 diff --git a/src/apps/bin/Jamfile b/src/apps/bin/Jamfile index d02f862b3e..b5562156da 100644 --- a/src/apps/bin/Jamfile +++ b/src/apps/bin/Jamfile @@ -21,6 +21,9 @@ StdBinCommands yes.cpp : be ; +StdBinCommands + sleep.cpp + : root ; #UsePrivateHeaders kernel ; #StdBinCommands # factor.cpp diff --git a/src/apps/bin/diffutils-2.8.1/ABOUT-NLS b/src/apps/bin/diffutils-2.8.1/ABOUT-NLS new file mode 100644 index 0000000000..022965c6ac --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/ABOUT-NLS @@ -0,0 +1,396 @@ +Notes on the Free Translation Project +************************************* + + Free software is going international! The Free Translation Project +is a way to get maintainers of free software, translators, and users all +together, so that will gradually become able to speak many languages. +A few packages already provide translations for their messages. + + If you found this `ABOUT-NLS' file inside a distribution, you may +assume that the distributed package does use GNU `gettext' internally, +itself available at your nearest GNU archive site. But you do _not_ +need to install GNU `gettext' prior to configuring, installing or using +this package with messages translated. + + Installers will find here some useful hints. These notes also +explain how users should proceed for getting the programs to use the +available translations. They tell how people wanting to contribute and +work at translations should contact the appropriate team. + + When reporting bugs in the `intl/' directory or bugs which may be +related to internationalization, you should tell about the version of +`gettext' which is used. The information can be found in the +`intl/VERSION' file, in internationalized packages. + +Quick configuration advice +========================== + + If you want to exploit the full power of internationalization, you +should configure it using + + ./configure --with-included-gettext + +to force usage of internationalizing routines provided within this +package, despite the existence of internationalizing capabilities in the +operating system where this package is being installed. So far, only +the `gettext' implementation in the GNU C library version 2 provides as +many features (such as locale alias, message inheritance, automatic +charset conversion or plural form handling) as the implementation here. +It is also not possible to offer this additional functionality on top +of a `catgets' implementation. Future versions of GNU `gettext' will +very likely convey even more functionality. So it might be a good idea +to change to GNU `gettext' as soon as possible. + + So you need _not_ provide this option if you are using GNU libc 2 or +you have installed a recent copy of the GNU gettext package with the +included `libintl'. + +INSTALL Matters +=============== + + Some packages are "localizable" when properly installed; the +programs they contain can be made to speak your own native language. +Most such packages use GNU `gettext'. Other packages have their own +ways to internationalization, predating GNU `gettext'. + + By default, this package will be installed to allow translation of +messages. It will automatically detect whether the system already +provides the GNU `gettext' functions. If not, the GNU `gettext' own +library will be used. This library is wholly contained within this +package, usually in the `intl/' subdirectory, so prior installation of +the GNU `gettext' package is _not_ required. Installers may use +special options at configuration time for changing the default +behaviour. The commands: + + ./configure --with-included-gettext + ./configure --disable-nls + +will respectively bypass any pre-existing `gettext' to use the +internationalizing routines provided within this package, or else, +_totally_ disable translation of messages. + + When you already have GNU `gettext' installed on your system and run +configure without an option for your new package, `configure' will +probably detect the previously built and installed `libintl.a' file and +will decide to use this. This might be not what is desirable. You +should use the more recent version of the GNU `gettext' library. I.e. +if the file `intl/VERSION' shows that the library which comes with this +package is more recent, you should use + + ./configure --with-included-gettext + +to prevent auto-detection. + + The configuration process will not test for the `catgets' function +and therefore it will not be used. The reason is that even an +emulation of `gettext' on top of `catgets' could not provide all the +extensions of the GNU `gettext' library. + + Internationalized packages have usually many `po/LL.po' files, where +LL gives an ISO 639 two-letter code identifying the language. Unless +translations have been forbidden at `configure' time by using the +`--disable-nls' switch, all available translations are installed +together with the package. However, the environment variable `LINGUAS' +may be set, prior to configuration, to limit the installed set. +`LINGUAS' should then contain a space separated list of two-letter +codes, stating which languages are allowed. + +Using This Package +================== + + As a user, if your language has been installed for this package, you +only have to set the `LANG' environment variable to the appropriate +`LL_CC' combination. Here `LL' is an ISO 639 two-letter language code, +and `CC' is an ISO 3166 two-letter country code. For example, let's +suppose that you speak German and live in Germany. At the shell +prompt, merely execute `setenv LANG de_DE' (in `csh'), +`export LANG; LANG=de_DE' (in `sh') or `export LANG=de_DE' (in `bash'). +This can be done from your `.login' or `.profile' file, once and for +all. + + You might think that the country code specification is redundant. +But in fact, some languages have dialects in different countries. For +example, `de_AT' is used for Austria, and `pt_BR' for Brazil. The +country code serves to distinguish the dialects. + + 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'. + + In the `LANGUAGE' environment variable, but not in the `LANG' +environment variable, `LL_CC' combinations can be abbreviated as `LL' +to denote the language's main dialect. For example, `de' is equivalent +to `de_DE' (German as spoken in Germany), and `pt' to `pt_PT' +(Portuguese as spoken in Portugal) in this context. + +Translating Teams +================= + + For the Free Translation Project to be a success, we need interested +people who like their own language and write it well, and who are also +able to synergize with other translators speaking the same language. +Each translation team has its own mailing list. The up-to-date list of +teams can be found at the Free Translation Project's homepage, +`http://www.iro.umontreal.ca/contrib/po/HTML/', in the "National teams" +area. + + If you'd like to volunteer to _work_ at translating messages, you +should become a member of the translating team for your own language. +The subscribing address is _not_ the same as the list itself, it has +`-request' appended. For example, speakers of Swedish can send a +message to `sv-request@li.org', having this message body: + + subscribe + + Keep in mind that team members are expected to participate +_actively_ in translations, or at solving translational difficulties, +rather than merely lurking around. If your team does not exist yet and +you want to start one, or if you are unsure about what to do or how to +get started, please write to `translation@iro.umontreal.ca' to reach the +coordinator for all translator teams. + + The English team is special. It works at improving and uniformizing +the terminology in use. Proven linguistic skill are praised more than +programming skill, here. + +Available Packages +================== + + Languages are not equally supported in all packages. The following +matrix shows the current state of internationalization, as of March +2002. The matrix shows, in regard of each package, for which languages +PO files have been submitted to translation coordination, with a +translation percentage of at least 50%. + + Ready PO files bg ca cs da de el en eo es et fi fr + +-------------------------------------+ + a2ps | [] [] [] [] | + bash | [] [] [] [] | + bfd | [] [] | + binutils | [] [] | + bison | [] [] [] | + clisp | [] [] [] [] | + cpio | [] [] [] [] | + diffutils | [] [] [] [] [] [] | + enscript | [] [] | + error | [] [] | + fetchmail | () [] [] [] () | + fileutils | [] [] [] [] [] | + findutils | [] [] [] [] [] | + flex | [] [] [] [] | + gas | [] [] | + gawk | [] [] | + gcal | [] [] | + gcc | [] [] | + gettext | [] [] [] [] [] | + gnupg | [] [] [] [] [] [] | + gprof | [] [] | + grep | [] [] [] [] [] [] | + hello | [] [] [] [] [] [] [] [] | + id-utils | [] [] [] | + indent | [] [] [] [] [] | + jpilot | () [] [] [] | + jwhois | [] [] | + kbd | [] [] | + ld | [] [] | + libc | [] [] [] [] [] [] [] | + lilypond | [] [] | + lynx | [] [] [] [] | + m4 | [] [] [] [] [] | + make | [] [] [] [] | + mysecretdiary | [] [] | + nano | [] () [] [] [] [] | + nano_1_0 | [] () [] [] [] [] | + opcodes | [] [] [] | + parted | [] [] [] [] | + ptx | [] [] [] [] [] | + python | | + recode | [] [] [] [] [] [] | + sed | [] [] [] [] [] [] [] [] | + sh-utils | [] [] [] [] [] [] [] [] | + sharutils | [] [] [] [] [] [] | + sketch | () [] () | + soundtracker | [] [] [] | + sp | | + tar | [] [] [] [] [] [] | + texinfo | [] [] [] [] [] | + textutils | [] [] [] [] [] | + util-linux | [] [] [] [] | + vorbis-tools | | + wdiff | [] [] [] [] [] | + wget | [] [] [] [] [] [] [] [] | + +-------------------------------------+ + bg ca cs da de el en eo es et fi fr + 1 12 11 31 36 9 1 8 39 15 1 50 + + gl he hr hu id it ja ko lv nb nl nn + +-------------------------------------+ + a2ps | () () [] | + bash | | + bfd | [] | + binutils | [] | + bison | [] [] | + clisp | [] | + cpio | [] [] [] | + diffutils | [] [] [] | + enscript | [] | + error | [] | + fetchmail | | + fileutils | [] [] [] | + findutils | [] [] [] [] [] [] | + flex | [] | + gas | | + gawk | [] | + gcal | | + gcc | | + gettext | [] | + gnupg | [] [] [] | + gprof | | + grep | [] | + hello | [] [] [] [] [] [] [] [] [] [] | + id-utils | [] | + indent | [] [] [] | + jpilot | () () | + jwhois | | + kbd | | + ld | | + libc | [] [] [] [] | + lilypond | [] [] | + lynx | [] [] | + m4 | [] [] [] [] | + make | [] [] [] [] | + mysecretdiary | | + nano | [] [] [] () [] () [] | + nano_1_0 | [] [] [] () [] () [] | + opcodes | [] | + parted | [] [] [] | + ptx | [] [] [] [] | + python | | + recode | [] [] [] | + sed | [] [] [] [] [] [] [] | + sh-utils | [] [] [] [] [] | + sharutils | [] [] [] | + sketch | () | + soundtracker | [] | + sp | | + tar | [] [] [] | + texinfo | [] [] | + textutils | [] [] | + util-linux | () [] | + vorbis-tools | | + wdiff | | + wget | [] [] [] [] [] | + +-------------------------------------+ + gl he hr hu id it ja ko lv nb nl nn + 19 7 0 4 6 11 22 9 1 8 19 4 + + no pl pt pt_BR ru sk sl sv tr uk zh_TW + +----------------------------------------+ + a2ps | () () () [] [] [] () | 8 + bash | | 4 + bfd | [] [] | 5 + binutils | [] | 4 + bison | [] [] [] | 8 + clisp | | 5 + cpio | [] [] [] [] | 11 + diffutils | [] [] [] [] [] | 14 + enscript | [] [] [] | 6 + error | [] [] [] | 6 + fetchmail | () () [] | 4 + fileutils | [] [] [] [] | 12 + findutils | [] [] [] [] [] [] [] | 18 + flex | [] [] [] | 8 + gas | [] | 3 + gawk | [] [] | 5 + gcal | [] [] | 4 + gcc | [] | 3 + gettext | [] [] [] [] | 10 + gnupg | [] [] [] | 12 + gprof | [] [] | 4 + grep | [] [] [] | 10 + hello | [] [] [] [] [] [] [] | 25 + id-utils | [] [] | 6 + indent | [] [] [] [] | 12 + jpilot | () () | 3 + jwhois | () () [] | 3 + kbd | [] [] | 4 + ld | [] [] | 4 + libc | [] [] [] [] [] [] | 17 + lilypond | [] | 5 + lynx | [] [] [] | 9 + m4 | [] [] [] | 12 + make | [] [] [] [] | 12 + mysecretdiary | [] [] | 4 + nano | () [] [] [] [] | 14 + nano_1_0 | () [] [] [] | 13 + opcodes | [] [] | 6 + parted | [] [] [] | 10 + ptx | [] [] [] [] [] [] | 15 + python | | 0 + recode | [] [] [] [] | 13 + sed | [] [] [] [] [] [] | 21 + sh-utils | [] [] [] [] [] [] [] [] [] | 22 + sharutils | [] [] [] | 12 + sketch | [] () | 3 + soundtracker | [] | 5 + sp | | 0 + tar | [] [] [] [] [] [] [] | 16 + texinfo | [] [] [] | 10 + textutils | [] [] [] [] | 11 + util-linux | [] [] [] | 8 + vorbis-tools | [] | 1 + wdiff | [] [] [] [] | 9 + wget | [] [] [] [] [] [] [] | 20 + +----------------------------------------+ + 35 teams no pl pt pt_BR ru sk sl sv tr uk zh_TW + 55 domains 5 13 2 12 25 11 11 41 34 4 7 489 + + 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 March 2002 seems to be old, you may fetch a more recent copy of +this `ABOUT-NLS' file on most GNU archive sites. The most up-to-date +matrix with full percentage details can be found at +`http://www.iro.umontreal.ca/contrib/po/HTML/matrix.html'. + +Using `gettext' in new packages +=============================== + + If you are writing a freely available program and want to +internationalize it you are welcome to use GNU `gettext' in your +package. Of course 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 +to use of `gettext' the only thing missing are the translations. The +Free Translation Project is also available for packages which are not +developed inside the GNU project. Therefore the information given above +applies also for every other Free Software Project. Contact +`translation@iro.umontreal.ca' to make the `.pot' files available to +the translation teams. + diff --git a/src/apps/bin/diffutils-2.8.1/AUTHORS b/src/apps/bin/diffutils-2.8.1/AUTHORS new file mode 100644 index 0000000000..f5f0e90b32 --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/AUTHORS @@ -0,0 +1,112 @@ +Authors of GNU diffutils. + + Copyright 2001 Free Software Foundation, Inc. + + This file is part of GNU diffutils. + + GNU diffutils 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. + + GNU diffutils is distributed in the hope that 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 GNU diffutils; see the file COPYING. If not, write to + the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. + +The following contributions warranted legal paper exchanges with the +Free Software Foundation. Also see files ChangeLog and THANKS. + +DIFFUTILS Leonard H. Tower Jr. US 1949 1987-03-09 +Assigns diff (diff.c, initial version). + +DIFFUTILS Torbjorn Granlund Sweden 1961 1988-01-11 +Assigns cmp. +tege@matematik.su.se + +DIFFUTILS Mike Haertel US 1967 1988-09-16 +Assigns changes to diff. + +DIFFUTILS David S. Hayes US ? 1988-01-12 +Assigns changes to diff. + +DIFFUTILS Randall Smith US 1964 1988-09-21 +Assigns diff3. + +DIFFUTILS Richard Stallman US 1953 1988-01-15 +Assigns changes to GNU Diff. + +DIFFUTILS F. Thomas May US 1965 1989-08-22 +Assigns changes to diff (for -D). + +DIFFUTILS Optimal Solutions, Inc. 1989-08-14 +Disclaims changes by Thomas May to diff. + +DIFFUTILS Wayne Davison 1990-09-10 +Disclaims changes to diff. + +DIFFUTILS Digital Research Inc. 1990-09-13 +Disclaims changes by Wayne Davison to diff. + +DIFFUTILS Paul Eggert 1990-03-16 +Disclaims changes to diff. +eggert@twinsun.com + +DIFFUTILS Paul Eggert 1990-08-14 +Disclaims changes to GNU Diff. +eggert@twinsun.com + +DIFFUTILS Twin Sun Inc. 1990-03-16 +Disclaims changes to GNU Diff by Paul Eggert. + +DIFFUTILS Twin Sun Inc. 1990-08-14 +Disclaims changes to GNU Diff by Paul Eggert. + +DIFFUTILS Chip Rosenthal US 1959 1990-03-06 +Assigns changes to diff. +chip@chinacat.Unicom.COM + +DIFFUTILS Unicom Systems Development 1990-03-06 +Disclaims changes by Chip Rosenthal to diff. + +GCC DIFFUTILS Paul Eggert and Twin Sun Inc. 1992-03-11 +Disclaims changes by Paul Eggert to gcc and diff. +eggert@twinsun.com + +DIFF Wayne Davison 1993-06-20 +Disclaims diffcvt.c. + +DIFFUTILS Francois Pinard Canada 1949 1993-01-15 +Assigns wdiff and future changes submitted to the FSF. +pinard@iro.umontreal.ca + +DIFFUTILS Patrick D'Cruze Australia 1971 1994-11-10 +Assigns changes (makefile.in, analyze.c, cmp.c, error.c, diff.c, +diff3.c, getopt.c, getopt1.c, regex.c, sdiff.c, util.c, xmalloc.c; +new file: language.++) + +DIFFUTILS Paul R. Eggert US 1954 1997-04-07 +Assigns past and future changes. +eggert@twinsun.com + +DIFFUTILS Paul R. Eggert US 1954 1997-04-07 +Assigns past and future changes to manual. +eggert@twinsun.com + +ANY DIFFUTILS GNATS Cyclic Software 1997-11-11 +Assigns past and future works (work for hire by Tim Pierce (diffutils) and +Abe Feldman (GNATS)). +kingdon@cyclic.com + +WEBPAGES Gregory B. Harvey Canada 1976 1998-02-14 +Assigns web pages describing GNU Diffutils and future changes. + +DIFFUTILS Olga Nikulin Russia 1965 2001-01-11 +Assigns changes to diff. (diffutils-2.7.2/analyze.c, context.c, diff.[ch], +ed.c, ifdef.c, io.c, normal.c, side.c, util.c) +onikulin@yahoo.com diff --git a/src/apps/bin/diffutils-2.8.1/COPYING b/src/apps/bin/diffutils-2.8.1/COPYING new file mode 100644 index 0000000000..d60c31a97a --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/COPYING @@ -0,0 +1,340 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Library General +Public License instead of this License. diff --git a/src/apps/bin/diffutils-2.8.1/ChangeLog b/src/apps/bin/diffutils-2.8.1/ChangeLog new file mode 100644 index 0000000000..1e8723d4c4 --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/ChangeLog @@ -0,0 +1,3409 @@ +2002-04-05 Paul Eggert + + * NEWS, configure.ac (AC_INIT): Version 2.8.1. + + * configure.ac (AC_HEADER_STDBOOL): Add. + (AC_CHECK_HEADERS): Remove stdbool.h. + * m4/stdbool.m4: New file. + * m4/prereq.m4 (jm_PREREQ_EXCLUDE): + Use AC_HEADER_STDBOOL rather than AC_CHECK_HEADERS(stdbool.h). + (jm_PREREQ_HASH): Likewise. + + * src/system.h (SSIZE_MAX): Define if limits.h doesn't. + + * src/analyze.c (diff_2_files): Assign PTRDIFF_MAX - 1 to a + size_t variable, just in case there's a problem with ptrdiff_t + versus size_t. + + * lib/cmpbuf.c (errno): Remove decl; K&R C is no longer supported. + Include limits.h. + (SIZE_MAX, SSIZE_MAX): Define if standard headers don't. + (MIN): New macro. + (block_read): Do not attempt to read more than SSIZE_MAX bytes, as the + resulting behavior is implementation-defined. Work around bug in + Tru64 5.1, which can't read more than INT_MAX bytes at a time. + * src/cmp.c (cmp): Use block_read instead of read, to work + around Tru64 5.1 bug. + * src/diff3.c (read_diff): Likewise. + * src/diff3.c: Include cmpbuf.h. + + * THANKS: Add Ulrich Drepper. + + * INSTALLME: Mention GNU texinfo. + + * doc/diff.texi: + Use new @copying directive. + Put @contents first, not last, since Texinfo now suggests this. + Fix bug in -w documentation noted by Karl Berry. + Mention links for speedup. + New node "Speedups" for future speedups. + Just say "Index", not "Concept Index". + +2002-03-26 Paul Eggert + + * src/Makefile.am: + (INCLUDES): Remove this obsolete macro, replacing it with: + (AM_CPPFLAGS): New macro. + +2002-03-26 Albert Chin-A-Young + + * src/Makefile.am (datadir): Remove, as it conflicts with --datadir. + +2002-03-26 Paul Eggert + + * doc/diff.texi (dircategory GNU packages): Fix typo: a "* " was + missing before the menu entry. Bug diagnosed by Adam Heath. + Also, put this dircategory after the Individual utilities dircategory, + to work around a compatibility problem with Debian install-info. + +2002-03-24 Eli Zaretskii + + * src/io.c (sip): Do not mishandle buffered count when reverting + to text mode. + +2002-03-23 Paul Eggert + + * NEWS, configure.ac (AC_INIT): Version 2.8. + * configure.ac (AC_PREREQ): 2.53. + * INSTALLME: Upgrade to gettext 0.11.1 and help2man 1.27. + + * doc/diff.texi: Upgrade the description of `patch' to GNU patch + 2.5.4, and revamp the documentation accordingly. + + * src/diff.c (main): Fix typo that prevented diff -y from working. + Bug reported by Mitsuru Chinen. + +2002-03-15 Paul Eggert + + * lib/c-stack.c (c_stack_die) [!HAVE_SIGINFO_T]: Don't use info. + Bug reported by Eli Zaretskii. + +2002-03-15 Eli Zaretskii + + * ms/config.sed: Tweak editing of install-info-am target. + +2002-03-12 Paul Eggert + + * NEWS, configure.ac (AC_INIT): Version 2.7.10. + + * NEWS: cmp -l -s and cmp -s -l are not allowed. + Deprecate diff -h, -H, -L, -P, --inhibit-hunk-merge. + + * configure.ac (jm_PREREQ_HARD_LOCALE): Add. + (AM_INIT_AUTOMAKE): Do not distribute shar file. + + * doc/diff.texi (Overview): byte != character. + (Detailed Context, Detailed Unified, Alternate Names, diff Options): + Do not document diff -L. + (Comparing Directories, Making Patches, diff Options): + Do not document diff -P. + (diff Performance, sdiff Option Summary, diff Options, sdiff Options): + Do not document diff -H. + (diff Performance, diff Options): Do not document --horizon-lines. + (cmp Options): Prefer -b to -c. + (cmp Options, diff Options, diff3 Options, patch Options, + sdiff Options): Put short options next to the similar long options. + Document --help, and use the same wording for --verbose. + (diff3 Options): Fix typo in description of -E, which used wrongly used + "-e" instead of "-E". + + * lib/hard-locale.c (alloca): Remove. + Include stdlib.h if available, for malloc. + (hard_locale): Use malloc, not alloca, so that we need not worry about + alloca issues. Test for storage allocation failure. + + * m4/prereq.m4 (jm_PREREQ): Add jm_PREREQ_HARD_LOCALE. + (jm_PREREQ_HARD_LOCALE): New macro. + + * src/cmp.c (specify_comparison_type): New function. + (check_stdout): "indices and codes" -> "byte numbers and values" + (main): Detect clashing options. + (cmp): Use "byte" rather than "char" if a translation for "byte" + is available, even when in the POSIX locale. + + * src/diff.c (option_help_msgid): Do not document -L, -P, + --horizon-lines, --inhibit-hunk-merge, -H. + * src/diff.h: -L -> --label + +2002-03-11 Paul Eggert + + * NEWS, configure.ac (AC_INIT): Version 2.7.9. + + * INSTALLME: Update to autoconf 2.53, automake 1.6, help2man + 1.25 with patch. + + * configure.ac (AC_INIT): + Change package name from diff to diffutils. + (AM_INIT_AUTOMAKE): Use new form, with option gnits, + rather than old from that duplicated AC_INIT. + (AM_MISSING_PROG): Add help2man. + (REGEX_MALLOC): Define. + (AC_CONFIG_FILES): Add man/Makefile. + + * Makefile.am (AUTOMAKE_OPTIONS): Remove. + * doc/Makefile.am (AUTOMAKE_OPTIONS): Remove. + * lib/Makefile.am (AUTOMAKE_OPTIONS): Likewise. + * ms/Makefile.am (AUTOMAKE_OPTIONS): Likewise. + * src/Makefile.am (AUTOMAKE_OPTIONS): Likewise. + + * lib/c-stack.c: Include + (ENOTSUP): Define if errno.h doesn't. + (SA_NODEFER, SA_ONSTACK, SA_RESETHAND, SA_SIGINFO, SIGSTKSZ, + _SC_PAGESIZE, ALTERNATE_STACK_SIZE, stack_t, sigaltstack): + Remove; we now assume them all when + HAVE_XSI_STACK_OVERFLOW_HEURISTIC, so we don't need + substitutes. + (): Include only if HAVE_XSI_STACK_OVERFLOW_HEURISTIC. + (alternate_signal_stack): Now of size SIGSTKSZ. + (segv_handler): Simplify, under the assumption that + HAVE_XSI_STACK_OVERFLOW_HEURISTIC is nonzero. + (c_stack_action): Likewise. + (exit_failure) [DEBUG]: Initialize to 0, not 1. + (recurse, main) [DEBUG]: Remove main args. + + * m4/c-stack.m4 (AC_SYS_XSI_STACK_OVERFLOW_HEURISTIC): Change + wording of message. Do not check for stdbool.h or ucontext.h, + or for ucontext_t or sigaction or sigaltstack. + + * po/LINGUAS: Add zh_TW. + + * Makefile.am (SUBDIRS): Add man. + * man/Makefile.am: New file. + * src/cmp.c (usage): Reword for help2man. + * src/diff.c (option_help_msgid): Likewise. + * src/diff3.c (option_help_msgid, usage): Likewise. + * src/sdiff3.c (option_help_msgid, usage): Likewise. + Reword for help2man. + + * THANKS: Add email address for Tower. + + * config/config.guess, config/config.sub, config/depcomp, + config/install-sh, config/mdate-sh, config/missing, + config/mkinstalldirs, config/texinfo.texi: Update + to recent version (maintained in other packages). + +2002-03-04 Bruno Haible + + * m4/gettext.m4 (AM_GNU_GETTEXT): Set LIBINTL and LTLIBINTL to empty if + no preinstalled GNU gettext was found. + +2002-03-02 Eli Zaretskii + + * ms/config.sed: Tweak editing of install-info-am and + uninstall-info-am targets, to include 8+3-butchered names of Info + files. + +2002-02-28 Paul Eggert + + * NEWS, configure.ac (AC_INIT, AM_INIT_AUTOMAKE): Version 2.7.8. + + * doc/diff.texi: Add vr index. + Update copyright to 2002. + (Standards conformance): New chapter. + (Binary): Differing binary files are trouble unless the user asked for + brief output. + (Detailed Context): Prefer ISO time stamp format in discussion. + (Detailed Unified, Pagination): Likewise. + (Less Context): Likewise. Also use short option. + (Alternate Names): Separate option from arg. + (Making Patches): Mention -U 2. + (diff Options): Deprecate -LINES, as POSIX 1003.1-2001 does not + allow it. + + * INSTALLME: Update advice for Solaris installation problems. + We no longer use a test version of gettext. + Autoconf test version updated from 2.52f to 2.52h. + POSIX 1003.1-2001 patch for Automake. + + * configure.ac (AC__GNU_SOURCE): Add this, + replacing AH_VERBATIM of _GNU_SOURCE. + (tempname): Use AC_LIBOBJS, not LIBOBJS=, as now required by autoconf. + (jm_PREREQ_C_STACK): Add. + (AC_CONFIG_FILES): Remove intl/Makefile. + (AM_GNU_GETTEXT): Add external arg, from gettext 0.11. + + * lib/c-stack.c, lib/c-stack.h, lib/exitfail.c, lib/exitfail.h, + lib/posixver.c, lib/posixver.h, m4/c-stack.m4, m4/gnu-source.m4, + po/cs.po, po/ja.po: New files. + + * intl/ChangeLog, intl/Makefile.in, intl/VERSION, + intl/bindtextdom.c, intl/config.charset, intl/dcgettext.c, + intl/dcigettext.c, intl/dcngettext.c, intl/dgettext.c, + intl/dngettext.c, intl/explodename.c, intl/finddomain.c, + intl/gettext.c, intl/gettextP.h, intl/gmo.h, intl/hash-string.h, + intl/intl-compat.c, intl/l10nflist.c, intl/libgnuintl.h, + intl/loadinfo.h, intl/loadmsgcat.c, intl/localcharset.c, + intl/locale.alias, intl/localealias.c, intl/localename.c, + intl/ngettext.c, intl/os2compat.c, intl/os2compat.h, intl/osdep.c, + intl/plural-eval.c, intl/plural-exp.c, intl/plural-exp.h, + intl/plural.c, intl/plural.y, intl/ref-add.sin, intl/ref-del.sin, + intl/textdomain.c, m4/isc-posix.m4, m4/libtool.m4: Remove. + + * ABOUT-NLS: Update to Gettext 0.11. + + * Makefile.am (SUBDIRS): Remove intl. + + * config/config.guess, config/config.rpath, config/config.sub, + config/texinfo.tex, config/depcomp, config/texinfo.tex, + lib/tempname.c: Update to latest version from other packages. + + * lib/xalloc.h (xalloc_exit_failure): Remove; subsumed by exit_failure. + * lib/xmalloc.c: Include exitfail.h. + (xalloc_exit_failure): Remove; subsumed by exit_failure. + All uses changed. + + * lib/Makefile.am (noinst_HEADERS): Add c-stack.h, exitfail.h. + (libdiffutils_a_SOURCES): Add c-stack.c, exitfail.c, quotesys.c. + (INCLUDES): Remove. + + * lib/cmpbuf.h (buffer_lcm): New arg LCM_MAX. + * lib/cmpbuf.c: Include errno.h. + (errno): Declare if !STDC_HEADERS. + Include signal.h. + (SA_RESTART): Define if not already defined. + Include . + (PTRDIFF_MAX): Define if not already defined. + (TYPE_SIGNED, TYPE_MINIMUM, TYPE_MAXIMUM): Likewise. + (block_read): Accommodate ancient AIX hosts that set errno to EINTR + after uncaught SIGCONT. + (buffer_lcm): Return a reasonable size if the multiple is too large. + New arg LCM_MAX. All callers changed. + + * lib/hard-locale.c: Include "hard-locale.h". + (hard_locale): Ignore ENABLE_NLS, since we want to operate on + locales other than LC_MESSAGES. + + * m4/prereq.m4 (jm_PREREQ): Add jm_PREREQ_POSIXVER. + (jm_PREREQ_POSIXVER): New macro. + + * m4/setmode.m4 (AC_FUNC_SETMODE_DOS): + Check for fcntl.h and unistd.h unconditionally. + Suggested by Bruno Haible. + + * po/LINGUAS: Add cs, ja. + * po/POTFILES.in: Add lib/c-stack.c, src/dir.c. + + * src/Makefile.am (datadir): @DATADIRNAME@ -> share. + (INCLUDES): Remove intl. + (LDADD): Change INTLLIBS to LIBINTL. + No longer need to link libdiffutils.a twice. + + * src/analyze.c (diff_2_files): + Avoid arithmetic overflow in buffer size calculation. + + * src/cmp.c: Include c-stack.h, exitfail.h. + (hard_locale_LC_MESSAGES): Depend on ENABLE_NLS. + (try_help, check_stdout, main, cmp): 2 -> EXIT_TROUBLE. + (main): Check for stack overflow. + 0 -> EXIT_SUCCESS. + 1 -> EXIT_FAILURE. + (cmp): Likewise. + Accommodate ancient AIX hosts that set errno to + EINTR after uncaught SIGCONT. + + * src/context.c (pr_context_hunk): + Do not dump core if an enormous context causes an + arithmetic overflow. + (pr_unidiff_hunk): Likewise. + (find_hunk): Likewise. + + * src/diff.h: unsigned -> unsigned int. + * src/diff.c: Include c-stack.h, exitfail.h. + Do not include signal.h. + (specify_style, specify_value): Bring these routines back, as POSIX + requires that the order of options not matter. + (shortopts): New constant. + (group_format_option, line_format_option): New constants. + (main): 0 -> EXIT_SUCCESS, 1 -> EXIT_FAILURE, 2 -> EXIT_TROUBLE. + Ensure that order of options does not matter. + Check for stack overflow. + If contexts overflow, substitute LIN_MAX, as that's good enough. + If multiple contexts are specified, use their maximum. + -c is equivalent to -C 3 now, instead of having an implicit context; + likewise for -u and -U 3. + Use specify_style and specify_value. + (SIGCHLD): Do not define; now done in a header. + Use new style time stamp format for -u / -U. + Reject numeric-string options if operating in POSIX 1003.1-2001 mode. + Avoid overflow problems with tab width. + Simplify from-file and to-file code. + (usage): Do not mention obsolete options. + (filetype): Do not mention whether a file is executable. + Add typed memory objects. + (compare_files): 0 -> EXIT_SUCCESS, 1 -> EXIT_FAILURE, 2 -> + EXIT_TROUBLE. + + * src/diff3.c: Include c-stack.h, exitfail.h. + (ALLOCATE): Remove. All uses changed to xmalloc, or to xmalloc plus + an overflow check. + (myread): Remove. + (main): Check for stack overflow. + 0 -> EXIT_SUCCESS, 1 -> EXIT_FAIULRE, 2 -> EXIT_TROUBLE. + (try_help): Likewise. + (process_diff): Check for integer overflow, to avoid core dumps. + 2 -> EXIT_TROUBLE. + (read_diff): Exit with status 126 if the file is not executable, + for compatibility with POSIX 1003.1-2001. + Accommodate ancient AIX hosts that set errno to EINTR after uncaught + SIGCONT. + Check for integer overflow to avoid core dumps. + (fatal, perror_with_exit): 2 -> EXIT_TROUBLE. + + * src/dir.c (dir_read): + Ignore st_size of directories: POSIX says it's garbage. + Check for integer overflow to avoid core dumps. + (diff_dirs): 0 -> EXIT_SUCCESS, 2 -> EXIT_TROUBLE. + + * src/ifdef.c: Include . + (format_group, print_ifdef_lines): Avoid core dumps with bad formats. + (do_printf_spec): Avoid alloca. + + * src/io.c (sip): + Avoid integer overflow and core dumps if buffer alignments are + preposterously incompatible. + (slurp): Do not dump core if the file is growing as we read it. + If a regular file grows, keep reading until we catch up with its EOF. + (find_and_hash_each_line): Check for integer overflow to avoid cores. + (GUESS_LINES): Remove. + (guess_lines): New function. Avoid integer overflow. + (find_identical_ends): Use it. + Avoid integer overflow and possible core dumps. + + * src/sdiff.c: Include c-stack.h, exitfail.h. Do not include signal.h. + 0 -> EXIT_SUCCESS, 1 -> EXIT_FAILURE, 2 -> EXIT_TROUBLE. + (ck_editor_status): New function. + (main): Check for stack overflow. + Adopt POSIX convention for subsidiary programs not found. + (diffarg): Check for integer overflow to avoid core dumps. + (trapsigs): Remove SA_INTERRUPT special case; now done by header. + (SIGCHLD): Likewise. + (edit): Adopt POSIX convention for subsidiary programs not found. + + * src/side.c: unsigned -> unsigned int. + + * src/system.h: Don't use alloca or include . + unsigned -> unsigned int + (EXIT_SUCCESS, EXIT_FAILURE, EXIT_TROUBLE): Define if not defined. + Include signal.h. + (SA_RESTART): Define if not defined. + (SIGCHLD): Likewise. + + * src/util.c: 2 -> EXIT_TROUBLE. + Adopt POSIX convention for ENOEXEC and exit status 126. + unsigned -> unsigned int + +2002-01-24 Paul Eggert + + * NEWS, configure.ac (AC_INIT, AM_INIT_AUTOMAKE): Version 2.7.7. + + * intl/plural.c: Regenerate with Bison 1.31. + + * ABOUT-NLS, intl/*: Update to Gettext 0.11-pre5++. + * INSTALL: Update to Autoconf 2.52f. + + * INSTALLME: New file. + * Makefile.am (EXTRA_DIST): Add config/config.rpath, INSTALLME. + (DISTCLEANFILES): Remove. + * NEWS: Reformat for imminent 2.8 release. + * README: Mention INSTALLME. + * README-alpha: Move most of contents to INSTALLME. + * THANKS: Add Bruno Haible, Jim Meyering, and Eli Zaretskii. + + * config: New subdirectory, containing the following files from .: + config.guess, config.sub, depcomp, missing, install-sh, mkinstalldirs. + Move the following files here from doc: texinfo.tex, mdate-sh. + * config/config.guess, config/config.sub, config/texinfo.tex: + Update to latest version from FSF. + * config/config.rpath: New file, from Gettext 0.11-pre5++. + + * configure.ac (AC_INIT): Use new 3-arg form. + (AC_CONFIG_SRCDIR): Specify src/diff.c here, not in AC_INIT. + (ALL_LINGUAS): Remove: now in po/LINGUAS as per Gettext 0.11. + (AC_CONFIG_AUX_DIR): New macro invocation. + + * lib/Makefile.am (noinst_HEADERS): Add gettext.h. + * lib/gettext.h: New file, from Gettext 0.11-pre5++. + * lib/prepargs.c: Include . Reported by Bruno Haible. + + * m4/codeset.m4, m4/gettext.m4, glibc21.m4, iconv.m4, isc-posix.m4, + lcmessage.m4, progtest.m4: Upgrade to Gettext 0.11-pre5++. + * m4/lib-ld.m4, m4/lib-link.m4, m4/lib-prefix.m4: New files, from + Gettext 0.11-pre5++. + + * po/LINGUAS: New file. + * po/Makefile.in.in: Upgrade to Gettext 0.11-pre5++. + * po/Makevars, po/Rules-quot, po/boldquot.sed: New files, + from Gettext 0.11-pre5++. + + * src/cmp.c (copyright_string): Update to 2002. + * src/diff.c (copyright_string): Likewise. + * src/diff3.c (copyright_string): Likewise. + * src/sdiff.c (copyright_string): Likewise. + + * src/cmp.c (bytes, parse_ignore_initial, cmp): Use UINTMAX_MAX + instead of (uintmax_t) -1, to avoid warnings on some compilers. + * src/io.c (file_block_read): Likewise, for SIZE_MAX. + + * src/cmp.c (usage): Reformat messages to ease translation. + * src/diff3.c (usage): Likewise. + * src/sdiff.c (usage): Likewise. + + * src/diff3.c (main): Remove unused variable. + + * src/dir.c: Include + (struct dirdata): New member nnames. + (locale_specific_sorting, failed_strcoll): New vars. + (dir_read): Renamed from dir_sort. Don't sort the dir. + Set new nnames member of struct dirdata. All callers changed. + (compare_names): Don't check for errno after strcasecmp. + Use strcoll only if locale_specific_sorting is nonzero. + If strcoll fails, longjmp out rather than returning a value + that might result in an invalid comparison function that might + make qsort dump core. + (diff_dirs): Sort the directory ourselves. Use setjmp to recover + from strcoll failure, falling back on native byte comparison. + Make local variables volatile if they need to preserve their value + after setjmp/longjmp. + + * src/sdiff.c (handler_index_of_SIGINT, handler_index_of_SIGPIPE): + New macros. + (main): Do not confuse signal numbers with their indices. + Bug reported by Bruno Haible. + (edit): Cat lin to long before printing with %ld, since lin might + be narrow than long. + + * src/system.h (UINTMAX_MAX): New macro. + Include gettext.h, not libgettext.h. + (N_): Do not wrap arg in parentheses. Fix from Bruno Haible. + + * src/util.c (finish_output): Ensure that werrno is initialized. + (lines_differ): Have an explicit do-nothing case for + IGNORE_NO_WHITE_SPACE, to pacify gcc -Wall. + +2001-12-29 Eli Zaretskii + + * src/sdiff.c (interact): After extracting rlen from the editor + command, test for a terminating null character, not for a newline. + + * ms/config.bat: Allow longer source directory names without + overflowing the line length limits. Create the cache in the + build directory, not in the source directory + * ms/config.sed: Fix AC_CONFIG_LINKS for when symlinks are + unavailable. + +2001-12-23 Paul Eggert + + * NEWS, configure.ac (AM_INIT_AUTOMAKE): Version 2.7.6. + + * configure.ac (ALL_LINGUAS): Add tr. + + * src/util.c (begin_output): + Have child exit with status 127 rather than reporting + failure on its own. Set errno to 0 before invoking popen. + (finish_output): Report errno on pclose failure. + Distinguish between subsidiary program not found, and failure. + + * src/sdiff.c (not_found, execdiff): Remove. + (DIFF_PROGRAM_OPTION): New constant. + (longopts, option_help_msgid, main): Add --diff-program=PROGRAM. + (check_stdout): New function. + (main): Remove DIFF_PROGRAM. Check stdout after printing version. + Use check_stdout after printing help. Use execvp/perror_fatail rather + than execdiff. Set errno to 0 before invoking popen. + Check for pclose failure properly. + (main, edit): If child exec fails, exit with 127 rather than trying to + print diagnostic. + Distinguish between subsidiary program failing and not being found. + (edit): Handle signals the same way, regardless of whether we're using + system or fork+exec. Check for system returning -1. + + * src/diff3.c (DIFF_PROGRAM_OPTION, HELP_OPTION): New constants. + (longopts, main): Use them. + (longopts, main, option_help_msgid): New option --diff-option=PROGRAM. + (main): Remove DIFF_PROGRAM support. + Check stdout after printing version. + (check_stdout): Report errno info if fclose fails. + (read_diff): Have child exit with status 127 when program is not found, + rather than trying to have the child report failure. Check for + pclose returning -1. + + * src/diff.c (DEFAULT_WIDTH): Remove. + (main): Use 130 instead of DEFAULT_WIDTH, since it's not really + builder-settable. Do not prepend DIFF_OPTIONS. + (check-stdout): If fclose (stdout) fails, print errno info. + (option_help_msgid): Default context is 3, not 2. + (usage): Work even if ptrdiff_t is wider than int. + + * doc/diff.texi (diff Options): Remove DIFF_OPTIONS. + (Invoking diff3, Invoking sdiff): Remove DIFF_PROGRAM. + (diff3 Options, sdiff Options): Add --diff-program. + + * src/cmp.c (valid_suffixes): + Add '0', to support suffixes like "MB" and "MiB". + (check_stdout): Don't assume that the translations of "write failed" + and of "standard output" lack '%'. + (main): Check stdout after printing version. + + * lib/setmode.c: [HAVE_FCNTL_H && HAVE_SETMODE_DOS]: Include . + [!HAVE_SETMODE_DOS]: Do not include . + (set_binary_mode): Return mode (not 1) if fd is a tty. + Do not assume that O_TEXT is zero. + + * doc/diff.texi (cmp Options): + In byte counts, a plain suffix (without any integer) + is assumed to modify the integer 1. Index terms like "kibibyte". + Document plain "k". + + (Reporting Bugs): Mention bug-report archive and test version + location. Ask for "diff --version" in bug reports. + +2001-12-13 Paul Eggert + + * src/diff.c (DEFAULT_WIDTH): Remove; couldn't be changed without + also changing option_help_msgid. All uses replaced with 130. + + * lib/setmode.c: Include fcntl.h and unistd.h only if + HAVE_SETMODE_DOS. + (setmode): Assume a file is binary unless the mode is O_TEXT. + * ms/README: Fix minor typos. + +2001-12-13 Eli Zaretskii + + * ms/README: New file. + + * lib/setmode.c (set_binary_mode) [HAVE_SETMODE_DOS]: Don't assume + O_TEXT has a zero value. If FD is a terminal device, do nothing + and return MODE, thus pretending that it was already in the + requested MODE. + [HAVE_FCNTL_H]: Include fcntl.h (needed for O_BINARY). + + * ms/config.sed: Remove the split prevention of config.status. + Fix Sed commands for converting absolute file names into + top_srcdir-relative ones. + + * ms/config.bat: Fix typos. + +2001-12-12 Neal H Walfield + + * diff.c (option_help_msgid): Correct the default context width + from 2 to 3. + +2001-12-11 Paul Eggert + + * m4/Makefile.am.in: Remove jm-glibc-io.m4 + + * NEWS, configure.ac (AM_INIT_AUTOMAKE): Version 2.7.5. + + * configure.ac (PR_PROGRAM): Use AC_DEFINE_UNQUOTED, so that + $PR_PROGRAM is expanded by sh. + (ptrdiff_t, ssize_t): Use AC_CHECK_TYPE with a default of int, + not AC_CHECK_TYPES. + (jm_AC_DOS, AC_FUNC_SETMODE_DOS): New macros. + (AC_CONFIG_FILES): Add ms/Makefile. + + * doc/diff.texi: Add --no-ignore-file-name-case. + File name case sensitivity now affects file name exclusion. + Fix typos. + + * src/util.c: Include dirname.h. + (dir_file_pathname): Use base_name rather than file_name_lastdirchar. + + * src/system.h (S_IXUSR, S_IXGRP, S_IXOTH): New macros. + Include rather than rolling it ourselves. + (file_name_lastdirchar, HAVE_SETMODE, set_binary_mode): Remove. + + * src/sdiff.c: Include . + (expand_name): Use base_name rather than file_name_lastdirchar, for + portability to DOS. + (main): Initialize xalloc_exit_failure before possibly invoking + any memory allocator. + + * src/io.c: Include setmode.h. + + * src/diff3.c (main): + Initialize xalloc_exit_failure before possibly invoking any memory + allocator. + + * src/diff.c: Include dirname.h, setmode.h. + + (main): Later values and/or styles now silently override earlier. + (specify_value, specify_style): Likewise. All callers changed. + Remove. + (binary, main, option_help_msgid, compare_files): + HAVE_SETMODE -> HAVE_SETMODE_DOS. + (NO_IGNORE_FILE_NAME_CASE_OPTION): New constant. + (longopts, main, option_help_msgid): Support it. + (exclude_options): New function. + (main): Use it. Initialize xalloc_exit_failure before potentially + allocating memory. + + (filetype): Distinguish executable files from others, as POSIX + suggests. + + (compare_files): Use base_name instead of file_name_lastdirchar. + + * src/cmp.c: Include , . + (hard_locale_LC_MESSAGES): New macro. + (sprintc): Remove int width arg; it's now the caller's responsibility + to pad. All callers changed. + (stat_buf): New static var; was formerly a local var in 'main'. + (valid_suffixes): Add 'K', for 'KiB'. + (option_help_msgid): Don't confuse bytes with characters. + (main): Set xalloc_exit_failure before invoking anything that might + allocate memory. Fix bug: -n was incorrectly ignored when optimizing + the case of regular files with different lengths. + (cmp): Use an index column wide enough to store this comparison's + indexes. In locales other than the POSIX locale, say "byte" + rather than "char". + + * ms/config.bat: pc -> ms + + * ms/Makefile.am, m4/setmode.m4, lib/setmode.c, lib/setmode.h: + New file. + + * lib/Makefile.am (noinst_HEADERS): Add dirname.h, setmode.h. + (libdiffutils_a_SOURCES): Add basename.c, setmode.c. + + * Makefile.am (SUBDIRS): Add ms. + +2001-12-10 Paul Eggert + + * m4/fnmatch.m4: Test for FNM_CASEFOLD. + +2001-12-03 Paul Eggert + + * lib/posix/regex.h: Fix copyright notice. + +2001-12-03 Paul Eggert + + * NEWS, configure.ac (AM_INIT_AUTOMAKE): Version 2.7.4. + + * diff.texi (direntry, Overview, Comparison, Binary, Invoking cmp): + Use "byte" rather than "character" when talking about cmp, since + it compares bytes, not character. + (Invoking cmp): New trailing operands FROM-SKIP and TO-SKIP. + -i or --ignore-initial now accepts FROM-SKIP:TO-SKIP. + New option -n or --bytes. + Count operands now may be in octal or hex, and may be followed by a + size multiplier. + + * configure.ac (DEFAULT_DIFF_PROGRAM): + Define to "diff", not "$bindir/diff" (which didn't work anyway). + (AC_CHECK_MEMBERS): Add struct stat.st_blksize, struct stat.st_rdev. + (AC_STRUCT_ST_BLKSIZE, AC_STRUCT_ST_RDEV): Remove; obsolescent. + (AC_FUNC_FORK): Use this, instead of obsolescent AC_FUNC_VFORK. + (AC_CONFIG_FILES, AC_CONFIG_COMMANDS): Add. + (AC_OUTPUT): Remove args; they were obsolescent. + + * util.c (setup_output, begin_output, finish_output): + HAVE_FORK -> HAVE_WORKING_FORK || HAVE_WORKING_VFORK. + * sdiff.c (diffpid, cleanup, main, edit): Likewise. + * diff3.c (read_diff): Likewise. + + * system.h (STAT_BLOCKSIZE): + Use HAVE_STRUCT_STAT_ST_BLKSIZE, not HAVE_ST_BLKSIZE. + (vfork): New macro. + (HAVE_FORK): Remove. + (set_binary_mode): New macro. + + * sdiff.c (main): HAVE_VFORK -> HAVE_WORKING_VFORK. + (edit): Reopen the temporary file after the editor has run, in case + the editor operates by unlinking the old file and linking a new one. + (P_tmpdir): Rename from PVT_tmpdir; this fixes a typo. + All uses changed. + + * io.c (sip, read_files): + Remove tests for HAVE_SETMODE; use set_binary_mode + instead of setmode. + (sip): Fix typo in backward lseek when reverting to text mode. + + * config.site, config.sed, config.bat: New file. + + * Makefile.am (EXTRA_DIST): Add xstrtol.c. + (noinst_HEADERS): Add xstrtol.h. + (libdiffutils_a_SOURCES): Add xstrtoumax.c. + + * cmp.c: : Include. + (ignore_initial): Now an array with 2 elements. All uses changed. + (bytes): New var. + (HELP_OPTION): New constant. + (long_options, main): Use it. + (long_options, option_help_msgid, main, cmp): + Add support for -n or --bytes. + (parse_ignore_initial): New function. + (option_help_msgid, main): Add -i M:N. + (usage, main): Add two optional trailing operands, a la BSD. + (main): setmode -> set_binary_mode. + (cmp): Report byte number of what we've seen, not of the entire file. + This is to be consistent with the line number, which is always relative + with what we've seen. + +2001-12-02 Paul Eggert + + * diff.c (main, compare_files): setmode -> set_binary_mode. + + * xstrtol.c (__xstrtol): Don't accept 'Ki'; require 'KiB'. + + * xstrtol.c (__xstrtol): Add support for IEC 60027-2. + +2001-11-25 Paul Eggert + + * NEWS, configure.ac (AM_INIT_AUTOMAKE): Version 2.7.3. + + * README-alpha: New file. + + * src/Makefile.am (INCLUDES): Add -I../lib, for regex.h. + + * configure.ac: + Don't set LIB_CLOCK_GETTIME to 'none required'; set it to + the empty string instead. + + * lib/Makefile.am (EXTRA_DIST): Add strtoimax.c, strtol.c. + + * Makefile.am (SUBDIRS): Put intl before lib, so that libintl.h exists. + + * lib/Makefile.am (noinst_HEADERS): Add unlocked-io.h. + + * configure.ac (__EXTENSIONS__): New define, for the unlocked macros. + + * README: Add copyright notice. + Remove stuff that doesn't apply any more. + + * doc/diff.texi: offsets -> indices for cmp + + * src/cmp.c (option_help_msgid): offsets -> indices + + * src/diff.c (option_help_msgid): + Don't mention --binary on POSIX hosts. + + * src/sdiff.c (STRIP_TRAILING_CR_OPTION): New constant. + (longopts, option_help_msgid, main): Add -E, --ignore-tab-expansion, + --strip-trailing-cr. + + * doc/diff.texi: Change direcategory from Utilities to GNU Packages. + Add individual utilities. + Switch to Free Documentation License. + @code -> @command + @samp -> @option + GNU -> @sc{gnu} + Expand tabs to spaces, except when in an example that actually + uses tabs. + Prefer @node with just one arg. + Document -E or --ignore-tab-expansion, --strip-trailing-cr, + --ignore-file-name-case. + Regular expressions are now grep style, not Emacs style. + cmp's -c or --print-chars option is now -b or --print-bytes. + Time stamps now depend on LC_TIME. + -p now implies ^[[:alpha:]$_]. + Flags now include ' and 0. + cmp -i is an alias for --ignore-initial + Document --from-file, --to-file. + Document DIFF_OPTIONS. + + * configure.ac (AC_CHECK_FUNCS): Add gettimeofday, clock_gettime. + (LIB_CLOCK_GETTIME): New subst. + + * src/system.h: Assume C89 or better. + (_GNU_SOURCE): Remove; config.h now defines it. + (alloca): Declare like coreutils does it. + (verify, TYPE_SIGNED, TYPE_MINIMUM, TYPE_MAXIMUM, O_RDWR, + S_IRUSR, S_IWUSR): New macros. + (STAT_BLOCKSIZE): Parenthesize definiens. + : Include if HAVE_INTTYPES_H. + (CHAR_MAX, INT_MAX): Remove. + (PTRDIFF_MAX, SIZE_MAX): New macros. + (strtoumax): New decl. + Include stddef.h. + (bzero): Remove. + (bindtextdomain, textdomain, N_): New macros. + (ISPRINT, ISSPACE): Remove ifndef wrappers. + (ISUPPER, ISDIGIT): Remove. + (TOLOWER): New macro. + (MIN): Renamed from min; all callers changed. + (MAX): Likewise, from max. + (lin): New type. + (LIN_MAX): New macro. + (file_name_cmp): Renamed from filename_cmp. All callers changed. + (file_name_lastdirchar): Renamed from file_name_lastdirchar. + All callers changed. + (could_be_mvfs_stat_bug, could_be_nfs_stat_bug, + dev_may_have_duplicate_ino): Remove. + (HAVE_SETMODE, NULL_DEVICE): New macros. + (same_file): Do not check attributes. + (same_file_attributes): New macro. + + * src/util.c: Assume C89 or better. + int -> bool for booleans. + int -> lin for line numbers. + int -> size_t for sizes. + Use angle-brackets when including quotesys.h. + Include error.h, regex.h, xalloc.h. + (message5): sizeof -> offsetof + (begin_output): Invoke pr without -f. + (lines_differ): Renamed from line_cmp, and return bool not 3-way int. + All callers changed. + Add support for IGNORE_TAB_EXPANSION. + (change_letter): Now an array rather than a function. All + callers changed. + (translate_range): Translate line numbers to long, not lin, + for convenience with printf. + (analyze_hunk): Return enum changes instead of a count of + inserts and deletes. All callers changed. + (zalloc): New function. + + * src/side.c: Assume C89 or better. + int -> bool for booleans. + int -> lin for line numbers. + + * src/sdiff.c: Assume C89 or better. + int -> bool for booleans. + int -> lin for line numbers. + Use angle-brackets when including getopt.h, quotesys.h. + Include error.h, freesoft.h, stdio.h, xalloc.h. + (copyright_string): Use only most recent year. + (authorship_msgid, option_help_msgid): Wrap in N_(). + + (tmpname): Now volatile. + (tmpmade): Remove. + (tmp): New var. + (private_tempnam, exists, letters): Remove. + (temporary_file): New function. + (edit): Use it. + (interact): Use strtoumax, not atoi. + + * src/normal.c: Assume C89 or better. + int -> lin for line numbers. + + * src/io.c: Assume C89 or better. + int -> bool for booleans. + int -> lin for line numbers. + int -> size_t for sizes. + Use angle-brackets when including cmpbuf.h. + Include regex.h, xalloc.h. + (word): Remove; now done in system.h. + (hash_value): New type; use it instead of 'unsigned' for hash values. + (file_block_read): New function. + (sip, slurp): Use it. Now static. + (sip): Ensure block size is a multiple of word size. Clear eof flag. + (slurp): Use xalloc_die to report memory exhaustion. + (find_and_hash_each_line): Use TOLOWER instead of _tolower. + Add support for IGNORE_TAB_EXPANSION. + (prepare_text_end): Strip trailing CR if requested. + (find_identical_ends): Prepare the text only once, + if they're duplicates. + Let the compiler take advantage more of the fact that the buffers are + word-aligned. + (primes): Remove. + (prime_offset): New var. + (read_var): Use prime_offset instead of primes. + Use zalloc instead of xmalloc + bzero. + + * src/ifdef.c: Assume C89 or better. + int -> lin for line numbers. + (format_group): Use strtoumax to parse line numbers. + (format_group, print_ifdef_lines): Use do_printf_spec to + handle printf specs. + (groups_letter_value): Don't use _tolower; it's locale-dependent. + (do_printf_spec): Renamed from scan_printf_spec; now does the printing. + + * src/ed.c: Assume C89 or better. + int -> lin for line numbers (or 'long' when that's more convenient). + (print_ed_hunk): Fix bug when handling double-dot inserts. + + * src/dir.c: Assume C89 or better. + int -> bool for booleans. + Include error.h, exclude.h, xalloc.h. + + (dir_sort): Return 0 on error, 1 on success. All callers changed. + compare_names -> compare_names_for_qsort. + + (compare_names): Try strcasecmp if ignore_file_name_case. Then try + strcoll. Use file_name_cmp only as a last resort. Warn about + strcasecmp or strcoll failure. + (compare_names_for_qsort): New function. + + (diff_dirs): Use compare_names rather than filename_cmp. + + * src/diff3.c: Assume C89 or better. + int -> bool for booleans. + int -> lin for line numbers. + Use angle-brackets when including getopt.h, quotesys.h. + Include error.h, freesoft.h, inttostr.h, xalloc.h. + (copyright_string): Use only most recent year. + (authorship_msgid, option_help_msgid): Wrap in N_(). + + Rename the following variables for consistency with user-visible + option spellings. All uses changed. + (text): Renamed from always_text. + (initial_tab): Renamed from tab_align_flag. + + (horizon_lines): Remove. Remove all uses. + + (main): Invoke bindtextdomain and textdomain after setlocale. + Rename "DIFF" to "DIFF_PROGRAM". + + Try to compare file0 to file1, because this is where changes are + expected to come from. Diffing between these pairs of files is more + likely to avoid phantom changes from file0 to file1. + However, use file2 as the common file if this is a 3-way diff, + for backward compatibility. Suggested by Karl Tomlinson. + + (create_diff3_block): Use xcalloc instead of malloc + bzero. + + (INT_STRLEN_BOUND): Remove; now in system.h. + + (read_diff): Always use --horizon-lines=100 rather than trying + to guess it. + Do not pass --inhibit-hunk-merge. + Minimum chunk size is 1, not 8KiB. + Use xalloc_die to report memory exhaustion. + (undotlines): Use long for start, not int. + + * src/diff.h: Assume C89 or better. + int -> bool for booleans. + int -> lin for line numbers. + Don't include regex.h. + (enum changes): New enum. + (enum line_class): Remove; subsumed by enum changes. + (enum output_style): New constant OUTPUT_UNSPECIFIED. + + (ignore_space_change_flag, ignore_all_space_flag): Remove. + (ignore_white_space): New decl, subsuming the above two. All + uses changed. + + Rename the following decls for consistency with user-visible + option spellings. All uses changed. + (text): Renamed from always_text_flag. + (ignore_blank_lines): Renamed from ignore_blank_lines_flag. + (ignore_case): Renamed from ignore_case_flag. + (brief): Renamed from no_details_flag. + (initial_tab): Renamed from tab_align_flag. + (expand_tabs): Renamed from tab_expand_flag. + (starting_file): Renamed from dir_start_file. + (paginate): Renamed from paginate_flag. + (sdiff_merge_assist): Renamed from sdiff_help_sdiff. + (left_column): Renamed from sdiff_left_only. + (suppress_common_lines): Renamed from sdiff_skip_common_lines. + (speed_large_files): Renamed from heuristic. + (minimal): Renamed from no_discards. + + (inhibit_hunk_merge): Remove. + + (strip_trailing_cr, excluded, time_format): New decls. + + (files_can_be_treated_as_binary): Renamed from ignore_some_changes. + + (group_format, line_format): Now char const *[], not char *[]. + + (struct file_data): Buffer is now word*, not char*, as it's always + aligned and this can help the compiler. buffered_chars -> buffered + (since it's a byte count, not a char count). All uses changed. + New member `eof'. + + (FILE_BUFFER): New macro. + + (excluded_filename, error, free_software_msgid): Remove decls; now in + other .h files. + + (sip, slurp): Remove decls. + (file_block_read): New decl. + (change_letter): Now an array, not a function. + (lines_differ): Renamed from line_cmp. + (analyze_hunk): Now returns enum changes rather than two change counts. + + * src/Makefile.am (diff_LDADD): New symbol. + + * src/diff.c: Assume C89 or better. + int -> bool for booleans. + long -> off_t for line numbers. + Use angle-brackets when including getopt.h, fnmatch.h, quotesys.h. + Include error.h, exclude.h, freesoft.h, hard-locale.h, prepargs.h, + regex.h, signal.h, xalloc.h. + (copyright_string): Use only most recent year. + (authorship_msgid, option_help_msgid): Wrap in N_(). + + Rename the following variables for consistency with user-visible + option spellings. All uses changed. + (binary): Renamed from binary_flag. + (new_file): Renamed from entire_new_file_flag. + (unidirectional_new_file): Renamed from unidirectional_new_file_flag. + (report_identical_files): Renamed from print_file_same_flag. + + (numeric_arg): Remove. + + (exclude, exclude_alloc, exclude_count, excluded_filename, add_exclude, + add_exclude_file): + Remove; now done by exclude.h. + + (BINARY_OPTION, FROM_FILE_OPTION, HELP_OPTION, HORIZON_LINES_OPTION, + IGNORE_FILE_NAME_CASE_OPTION, INHIBIT_HUNK_MERGE_OPTION, + LEFT_COLUMN_OPTION, LINE_FORMAT_OPTION, NORMAL_OPTION, + SDIFF_MERGE_ASSIST_OPTION, STRIP_TRAILING_CR_OPTION, + SUPPRESS_COMMON_LINES_OPTION, TO_FILE_OPTION, + UNCHANGED_LINE_FORMAT_OPTION, OLD_LINE_FORMAT_OPTION, + NEW_LINE_FORMAT_OPTION, UNCHANGED_GROUP_FORMAT_OPTION, + OLD_GROUP_FORMAT_OPTION, NEW_GROUP_FORMAT_OPTION, + CHANGED_GROUP_FORMAT_OPTION): New constants. + (longopts, main): Use them. + + (longopts, main, option_help_msgid): Add -E, --from-file, --to-file. + + (main): Invoke bindtextdomain and textdomain after setlocale. + Use grep syntax, not Emacs, for regular expressions. + Use exclude.h, not our own functions. + Use ISO 8601 time format in hard locales. + Prepend DIFF_OPTIONS. + Don't update ignore_some_changes. + Use strtoumax instead of numeric_arg. + Use specify_value when appropriate. + error -> try_help when appropriate. + -p now means ^[[:alpha:]$_], not ^[_a-zA-Z$]. + Ignore --inhibit-hunk-merge. + Prefer changed group formats to unchanged ones. + Remove now-unnecessary casts. + Set files_can_be_treated_as_binary. + + (specify_value): Renamed from specify_format. All uses changed. + + (specify_style): Default is now unspecified, not normal. All + uses changed. + + (set_mtime_to_now): New function. + (compare_files): Use it. Use memset, not bzero. + Set stdin mtime to current time even when stdin is not a regular file. + Check for same file attributes, as well as for same file. + Use files_can_be_treated_as_binary. + "write failed" -> "standard output on output failure. + + * src/context.c: Assume C89 or better. + int -> lin for line numbers. + Include inttostr.h, regex.h. + (TIMESPEC_NS): New macro. + (nstrftime): New decl. + (print_context_label): Use nstrftime and time_format to format times. + Print numeric time stamp value if localtime fails. + (print_context_function): New function. + (pr_context_hunk, pr_unidiff_hunk): Use it. + (find_function): Use size_t for sizes, not int. + + * src/cmp.c: Assume C89 or better. + int -> bool for booleans. + long -> off_t for line numbers. + Use angle-brackets when including cmpbuf.h, getopt.h. + Include error.h, freesoft.h, inttostr.h, xalloc.h. + (copyright_string): Use only most recent year. + (authorship_msgid): Wrap in N_(). + (buffer): Now word*, not char*. All uses changed. + (word): Remove macro; now in system.h. + (long_options, option_help_msgid, main): -c --print-chars -> + -b --print-bytes + (check_stdout): "write failed" -> "standard output" + (option_help_msgid): Wrap in N_(). + (main): Invoke bindtextdomain and textdomain after setlocale. + Use strtoumax instead of doing the work ourselves. + Check for same_file_attributes as well as same_file. + (cmp): Use ssize_t for read returns, not size_t. + Do not assume that size_t is not narrower than int. + Do not assume that line numbers fit in 'long'. + (block_compare_and_count, block_compare): + Compiler now checks that buffers are word-aligned. + (block_compare_and_count): Count sizes with size_t, not long. + (sprintc): byte arg is unsigned char, not unsigned. + + * src/analyze.c: Assume C89 or better. + int -> lin for line numbers. + int -> bool for booleans. + unsigned int -> size_t for sizes. + Use angle-brackets when including cmpbuf.h. + Include error.h, regex.h, xalloc.h. + (discard_confusing_lines, diff_2_files): Use zalloc rather + than xalloc+bzero. + (discard_confusing_lines): unsigned int -> lin for values that + are really line numbers. + (shift_boundaries): Do not inhibit hunk merges. + (build_reverse_script, build_script, diff_2_files): Use |, not ||. + (diff_2_files): no_details_flag & ~ignore_some_changes -> + files_can_be_treated_as_binary. Esure that buffer size is a multiple + of sizeof (word). Use file_block_read to read buffers. + (diff_2_files): Abort if output style is not one of the + expected styles. + +2001-11-23 Paul Eggert + + * src/Makefile.am, m4/vararrays.m4: New file. + + * m4/prereq.m4 (jm_PREREQ_READUTMP): + Remove, as it gives autoheader the willies. + + * m4/README, lib/prepargs.h, lib/prepargs.c, lib/offtostr.c, + lib/umaxtostr.c, lib/inttostr.c, lib/inttostr.h, + lib/imaxtostr.c, lib/freesoft.h: New files. + + * lib/freesoft.c: Include config.h, freesoft.h rather than diff.h. + (free_software_msgid): Wrap contents in N_. + + * lib/cmpbuf.h: Use prototypes instead of old-style functions. + + * lib/cmpbuf.c: + Don't include system.h; instead, include config.h, unistd.h. + Use prototypes instead of old-style functions. + (block_read): Don't assume that int is no wider than size_t. + + * lib/Makefile.am, po/POTFILES.in: New file. + +2001-11-22 Paul Eggert + + * pc/config.h: + Define filename_cmp as an object-like macro, not as a function-like + macro. + + * exgettext: Always operate in the C locale. + Set AWK using a method that works even with broken shells. + + * doc/Makefile.am: New file. + + * configure.ac (AC_INIT): + Use src/diff.c, not diff.h, as the source files got removed. + (AM_CONFIG_HEADER): Switch from AC_CONFIG_HEADER. + (AC_ARG_PROGRAM, AC_MINIX): Remove. + + (AC_PREREQ, AM_INIT_AUTOMAKE, ALL_LINGUAS, AC_PROG_AWK, + AM_PROG_CC_STDC, AC_PROG_RANLIB, AC_C_INLINE, AC_C_VARARRAYS, + DEFAULT_DIFF_PROGRAM, DEFAULT_EDITOR_PROGRAM, + AC_STRUCT_ST_MTIM_NSEC): Add. + + (PR_PROGRAM): AC_DEFINE. + + (AC_SYS_LARGEFILE): Use instead of our homebrew version. + + (_GNU_SOURCE): Define if not defined. + + (AC_CHECK_HEADERS): Add stdbool.h, unistd.h. + (AC_CHECK_TYPES): Add ptrdiff_t, uintmax_t. + (AM_GNU_GETTEXT, XGETTEXT): Add. + + (WITH_MVFS_STAT_BUG, WITH_NFS_STAT_BUG): Remove. + (HAVE_MEMCHR): Remove. + (AC_CHECK_FUNCS): Add diraccess. + (AC_REPLACE_FUNCS): Add memchr, waitpid. + (jm_FUNC_GLIBC_UNLOCKED_IO, jm_FUNC_GNU_STRFTIME, jm_FUNC_MALLOC, + jm_FUNC_REALLOC, jm_PREREQ_ERROR, jm_PREREQ_QUOTEARG, jm_PREREQ_REGEX, + jm_PREREQ_TEMPNAME, jm_AC_PREREQ_XSTRTOUMAX, AC_FUNC_FNMATCH): Add. + (fnmatch.h, regex.h): Do not create these files unless we're using + our own fnmatch and regex. + + (AC_OUTPUT): Add doc/Makefile, intl/Makefile, lib/Makefile, + lib/posix/Makefile, m4/Makefile, po/Makefile.in, src/Makefile. + + * Makefile.am: New file. + + * po/en_GB.po: Don't translate "program" to "programme". + +2001-11-20 Paul Eggert + + * m4/prereq.m4: New file. + +2001-03-16 Paul Eggert + + * lib/tempname.c (uint64_t): + Define if not defined, and if UINT64_MAX is not defined. + +2001-02-26 Paul Eggert + + * lib/tempname.c: glibc 1.32 + +2001-02-17 Paul Eggert + + * m4/Makefile.am.in: GNU fileutils 4.1 + +2001-01-09 Paul Eggert + + * lib/tempname.c (struct_stat64): New macro. + (direxists, __gen_tempname): Use it. This avoids a portability problem + with Solaris 8. + + * lib/tempname.c (): Include if HAVE_CONFIG_H. + (, , ): + Include only if STDC_HEADERS || _LIBC. + (): Include only if HAVE_FCNTL_H || _LIBC. + (): Include only if HAVE_UNISTD_H || _LIBC. + (): Include only if HAVE_SYS_TIME_H || _LIBC. + (__set_errno): Define this macro if doesn't. + (P_tmpdir, TMP_MAX, __GT_FILE, __GT_BIGFILE, __GT_DIR, __GT_NOCREATE): + Define these macros if doesn't. + (S_ISDIR, S_IRUSR, S_IWUSR, S_IXUSR): + Define these macros if + doesn't. Ignore S_ISDIR if STAT_MACROS_BROKEN. + (stat64, __getpid, __gettimeofday, __mkdir, __open, __open64, lxstat64, + __xstat64): Define if not _LIBC. + (__secure_getenv): Define if ! (HAVE___SECURE_GETENV || _LIBC). + (__gen_tempname): Invoke gettimeofday only if HAVE_GETTIMEOFDAY + || _LIBC; otherwise, fall back on plain "time". + Use macros like S_IRUSR | S_IWUSR rather than octal values like 0600. + + * lib/mkstemp.c (__GT_FILE): Define to zero if not defined. + +2000-10-25 Paul Eggert + + * lib/hard-locale.c: New file. + +2000-02-05 Paul Eggert + + * exgettext: From GCC repository + +1999-07-06 Paul Eggert + + * lib/mkstemp.c: glibc 2.2 + +1998-12-11 Paul Eggert + + * src/sdiff.c (lf_snarf): + Fix bug when help line wrapped around the input buffer. + +1998-09-15 Paul Eggert + + * diff.texi: Add @dircategory and @direntry. + +1998-09-14 Paul Eggert + + * Makefile.in (VERSION): Version 2.7.2. + (DEFAULT_DIFF_PROGRAM): Renamed from DIFF_PROGRAM. + (PR_PROGRAM): All `configure' to define it. + (srcs): Add $(diffutils_srcs), freesoft.c, quotearg.c instead of + quote.c, quotearg.h. + (distfiles): Add acconfig.h, message/*. + (all): Depend on $(destfiles), not info. + (version.c): Parenthesize `GNU diffutils'. + (common_o): Add freesoft.o + (diff_o): quote.o -> quotearg.o + (diff3_o, sdiff_o): Likewise. + (diff.dvi): Depend on version.texi. + (diff.o diff3.o quotearg.o sdiff.o util.o): + New dependency on quotearg.h + (diff3.o): DIFF_PROGRAM -> DEFAULT_DIFF_PROGRAM. + (sdiff.o): Likewise. + (messages.po): Remove. + (message/msgid.po, message/template.po): New rules. + (maintainer-clean): Renamed from realclean. + (install): Install from source directory, if applicable. + Invoke install-info if needed. + (install-strip): New rule. + (check): Set DIFF. + (stamp-h.in): Don't put the date into the timestamp. + (D_dirs): Add $D/message. + ($D.tar.gz): Compress with gzip -9. + Don't use ln to create distribution; it doesn't work with symlinks. + (srcs, distfiles, diff_o, diff3_o, sdiff_o): Rename quotearg.c to + quotesys.c and quotearg.h to quotesys.h. + + * configure.in (AC_PATH_PROG): Add PR_PROGRAM. + If available, prefer support for large files unless the user specified + one of the CPPFLAGS, LDFLAGS, or LIBS variables. + (AC_STRUCT_ST_RDEV): Add. + (HAVE_ST_FSTYPE_STRING): Add. + (--with-mvfs-stat-bug, --with-nfs-stat-bug): New options. + (HAVE_MEMCHR): New macro. + (AC_CHECK_FUNCS): Add sicprocmask. + + * diff.h (XTERN): Renamed from EXTERN. + (struct filedata): Remove dir_p arg. + (struct comparison): New type. + (diff_2_files, diff_dirs)" Ise ot/ + (error): Add printf attribute if applicable. + (free_software_msgid): New decl. + (pr_program): New decl. + (fatal): Add noreturn attribute. + (pfatal_with_name): Likewise. + + * system.h (__attribute__): New macro. + (getenv): Don't declare if HAVE_STDLIB_H. + (CHAR_MAX): New macro. + (): New include. + (): Include before . + (could_be_mvfs_stat_bug, could_be_nfs_stat_bug, + dev_may_have_duplicate_ino, same_special_file): New macros. + (same_file): Use them. + + * cmp.c (authorship_msgid): New var. + (free_software_msgid): New decl. + (error): Now has printf attribute. + (try_help): Likewise. + (long_options): Don't assume ASCII. + (try_help): Now accepts operand arg. + (main): Check for -1, not EOF, when calling getopt_long. + Report --ignore-initial value when complaining about it. + Output copyright and free software info with -v. + Don't assume ASCII. + Report last operand when one is missing. + Report text of extra operand. + Move block_read into cmpbuf.c. + + * diff.c (authorship_msgid): New var. + (quotesys.h): Include. + (ck_atoi): Remove. + (function_regexp_list, ignore_regexp_list): Now static. + (binary_flag): Renamed from binary_I_O. + (entire_new_file_flag, unidirectional_new_file_flag, + print_file_same_flag): Now static. + (numeric_arg): Renamed from ck_atoi. + New argument specifying the argument type. + (longopts, main): Don't assume ASCII. + (longopts): Remove old aliases --file-label, --entire-new-file, + --ascii, --print. + (main): Check for -1, not EOF, when calling getopt_long. + Use numeric_arg to report errors. + Report error if -l specified but pagination is not supported. + Report error if -S is specified twice with conflicting values. + Have --version conform to the new GNU standards. + Add new --from-file, --to-file, --inhibit-hun,-merge options. + Make the horizon at least as large as the context. + Add casts to pacify gcc -Wall. + (try_help): Add operand arg. + (option_help_msgid): Doc fix to match above. + (usage): Indent option_help_msgid. + (compare_files): Now takes struct comparison + instead of two directory names and a depth. + (NONEXISTENT, UNOPENED, ERRNO_ENCODE, ERRNO_DECODE): + New macros. + (DIR_P): New macro. + Report error if fflush does. + + * cmpbuf.c (block_read): Moved here from cmp.c. + + * cmpbuf.h (block_read): New decl. + + * io.c (cmpbuf.h): Include. + (slurp): Check for arithmetic overflow when computing buffer size. + + * dir.c (diff_dirs): Check for recursive directory loop. + Arg is now struct comparison const *. + (dir_loop): New function + + * analyze.c (no_discards): Remove. + (inhibit): Remove. + (shift_boundaries): Don't inhibit. If inhibit_hunk_merge is nonzero, + don't merge hunks. + (briefly_report): Now returns 2 if trouble, CHANGES otherwise. + (diff_2_files): Now takes struct comparison. If briefly_report reports + trouble, pass it on to caller. + + * side.c (print_half_line): Add brackets to pacify GCC -Wall. + + * sdiff.c (quotesys.h): Include. + (DIFF_PROGRAM, DEFAULT_EDITOR_PROGRAM): Remove. + (free_software_msgid, editor_program, not_found): New vars. + (diffbin, edbin): Remove. + (editor_program): Renamed from edbin. + (edit, interact): Now take extra string arg. + (exiterr, fatal, perror_fatal, try_help): Add noreturn attribute. + (sigset_t, sigemptyset, sigmask, sigaddset, SIG_BLOCK, SIG_SETMASK): + (sigprocmask): New macros, if !HAVE_SIGPROCMASK. + (error): Now has printf attribute. + (longopts, main): Don't assume ASCII. + (try_help): New operand arg. + (usage): Conform to new GNU standards. + (main): Set static vars for editor and diff program. + Compare getopt_long result to -1, not EOF. + -v conforms to new GNU standard. + Complain better about extra and missing operands. + If HAVE_VFORK, block SIGINT and SIGPIPE in the parent, since when + the child munges its handlers it may somp on the parent. + Pass rname to intract. + Translate not-found message before forking. + (give_help): Just output it all at once. + (edit): New args lname, lline, rname, rline. + (edit): New command 'd'. + (interact): New args lname, rname. + + * util.c (quotesys.h): Include. + (PR_PROGRAM): New macro. + (pfatal_with_name): Abort if error returns. + (fatal): Likewise. + (print_message_queue): Free message chain after printing. + (currently_recursive): Renamed from current_depth, and now a boolean. + (begin_output): Report error if fflush does. + Avoid stdio and gettext in child. + + * diff3.c (quotesys.h): Include. + (free_software_msgid): New decl. + (RANGE_START, RANGE_END): Renamed from START and END. + (fatal, perror_with_exit, try_help): Add noreturn attribute. + (error): Add printf attribute. + (diff_program): Now a ptr, not an array. + Initialize to DEFAULT_DIFF_PROGRAM instead of DIFF_PROGRAM. + (longopts, main): Don't assume ASCII. + (main): Use DIFF environment var to specify name of diff program. + Compare getopt_long result to -1, not EOF. + -v now reports version according to new GNU standard. + Report spelling of extra operand, or last operand before missing one. + (try_help): Now takes operand arg. + (option_help_ms): Fix typo: missing comma. + (usage): Update as per current GNU standards. + (environ): Remove decl. + (read_diff): Invoke diff with --inhibit-hunk-merge. + Translate `not found' message before forking. + Quote name of diff program. + Pass horizon lines. + `memory exhausted' -> `Memory exhausted' + + * pc/makefile (%.exe): Remove. + (pc-clean): Remove *.exe + * pc/makefile.sed (DEFAULT_DIFF_PROGRAM): Renamed from DIFF_PROGRAM. + When editing mkinstalldirs rule, look for exec_prefix and prefix. + Add .exe when installing files. + * pc/emx/config.h (same_file): Add. + * pc/config.h (same_file): Remove. + * pc/djgpp/config.h: Adjust to latest patch from eliz. + * pc/djgpp/makefile.sed: Don't alter PROGRAMS. + * pc/pc.c: Update FSF address. + (quote_system_arg): Renamed from system_quote_arg. + + * README: Add --with-mvfs-stat-bug, --with-nfs-stat-bug. + + * getmsgids: Add copyright date and update FSF address. + + * diff.texi: Document recent changes. + The patch doc still corresponds to patch 2.2, unfortunately. + Update GNU bug reporting address. Omit Larry Wall's address; + it's obsolete and he's busy with perl. + + * context.c: Fix spacing. + + * NEWS: Mention --from-file=FILE, --to-file=FILE, ed. + + * acconfig.h, freesoft.c, message/de.po, message/en_UK.po, + message/es.po, message/fr.po, message/pl.po, message/sv.po: + New files. + + * ed.c: Remove `#if 0'ed code. + + * normal.c, waitpid.c: Update FSF address. + +1998-03-15 Paul Eggert + + * quotesys.c: Renamed from quotearg.c. + + * quotesys.h: Renamed from quotearg.h + (__QUOTESYS_P): Renamed from __QUOTEARG_P. + +1997-05-05 Paul Eggert + + * quotesys.c, quotesys.h: New file. + +Mon Nov 14 05:10:56 1994 Paul Eggert + + Add internationalization support. + Several messages have been changed slightly, + to make them more consistent and easier to translate. + All strings that are messages are passed through gettext once before + being used, so that they can be localized. + Each function and macro whose first parameter is a gettext msgid + has had its first parameter's name changed so it ends in `msgid'. + All arrays of msgids have had their names changed to end in `msgid'. + `getmsgids' uses this to determine which strings are msgids. + + * pc/COPYING, pc/INSTALL, pc/config.h, + pc/djgpp/config.h, pc/djgpp/makefile.sed, + pc/emx/config.h, pc/emx/diff.def, pc/emx/gnuregex.def, + pc/emx/makefile.sed, + pc/makefile, pc/makefile.sed, pc/pc.c: New files, for PC support. + + * getmsgids: New file. + + * Makefile.in (PACKAGE, VERSION, diffutils_srcs, D): New vars. + (version.c, version.texi, messages.po): New files. + messages.po is built automatically from source files and `getmsgids'. + (distfiles): Add them, pc/*, and getmsgids. + (diff.info): Now depends on version.texi. + (realclean): Clean messages.po, version.*. + (dist): Just build $D.tar.gz. + ($D.tar.gz): New file, takes over old `dist' function. + Don't assume $(distfiles) are all in same directory. + + * configure.in (AC_CHECK_HEADERS): Add libintl.h, locale.h. + (AC_CHECK_LIB): Check for -lintl. + + * analyze.c (briefly_report): Rewrite `message (A?"B":"C")' as + `if (A) message ("B") : message ("C")'; this is for getmsgids. + (briefly_report, diff_2_files): For label, use file_label if set. + * diff.c (compare_files): Likewise. + + * system.h (gettext): Declare; use a stub if ! HAVE_LIBINTL_H. + (setlocale): Declare; use a stub if ! HAVE_LOCALE_H. + + * cmp.c, diff.c, diff3.c, sdiff.c (main): + Invoke setlocale first thing, to tell library we're internationalized. + (option_help_msgid): New constant. + (usage): Use it, so message is translated one option at a time. + * sdiff (help_msgid, give_help): Likewise. + + * cmp.c (sprintc): Renamed from `printc'. + Now outputs to a buffer instead of stdout. + (cmp): Use new sprintc; it's easier to internationalize. + + * diff.c (main): -D FOO now outputs `/* ! FOO */ instead of + `/* not FOO */'. + + * sdiff.c (version_string): Fix decl typo: `const' was missing. + (trapsigs): Ignore sigaction failure, to be compatible with `signal'. + + * util.c (struct msg, message5, print_message_queue): + Allocate just one block of memory to save a message. + +Wed Nov 9 17:42:44 1994 Paul Eggert + + * sdiff.c (trapsigs): Don't check signal return value, since it's + bogus under djgpp. + +Mon Oct 31 07:27:27 1994 Paul Eggert + + * Makefile.in (srcs, diff_o, diff3_o, sdiff_o): + New files quote.c, quote.o. + + * diff.h (function_regexp, ignore_regexp): Replace lists of compiled + regexps with these single compiled regexps. All users changed. + (regexp_list,function_regexp_list,ignore_regexp_list): Move to diff.c. + * diff.c (add_regexp): Build one big regexp instead of a regexp list. + (summarize_regexp_list): New function. + (regexp_list): Redesigned struct; moved here from diff.h. + (function_regexp_list, ignore_regexp_list): Likewise, for vars. + + * context.c (find_function): Simplify interface: + don't return size of function line. All callers changed. + (print_context_script, find_function): INT_MAX now denotes no + previous match; this is simpler than `- file->prefix_lines - 1'. + + * diff3.c (read_diff): Quote arguments with system_quote_arg. + * sdiff.c (main): Use system_quote_arg to compute command. + * diff.c (option_list): Quote options with system_quote_arg. + * util.c (begin_output): Use system_quote_arg to compute command. + + * util.c (pr_program): New var. + (analyze_hunk): Fix off-by-1 line length bug. + Match with one big regexp instead of a list of regexps. + Use new `trivial_length' local instead of comparing first byte to `\n'. + Help the compiler with linbuf local vars. + + * system.h (system_quote_arg): + New function; replaces SYSTEM_QUOTE_ARG macro. + +Sat Oct 15 20:09:12 1994 Paul Eggert + + * system.h (_tolower): Define if not already defined. + * io.c (find_and_hash_each_line): Change tolower to _tolower; this + speeds up diff -i considerably on some hosts (e.g. Solaris 2.3). + * util.c (line_cmp): Likewise. + * ifdef.c (groups_letter_value): Likewise. + + * diff.h (ignore_some_line_changes): Remove. All users changed. + * io.c (find_and_hash_each_line): Don't invoke line_cmp if the length + differs and -i is in force. Don't assume ISSPACE ('\n') is nonzero. + + * diff.h (xmalloc_exit_failure): New variable. + All `main' programs set this variable at the start. + xmalloc and xrealloc are now taken from GNU library. + * cmp.c (main): Align buffer size to word size; some mallocs care. + * io.c (slurp): Likewise. + * diff.c (add_exclude): Can now assume xrealloc (0, ...) works. + (add_regexp): Free storage on failure. Allocate storage all at one go. + * system.h (malloc, realloc): Remove unused declarations. + * diff3.c, sdiff.c, util.c (xmalloc, xrealloc): Remove. + * sdiff.c (diffarg): Take advantage of cleaner xrealloc semantics. + + * io.c (ROL): Use sizeof to make it more generic. + + * Makefile.in (common_o): New variable. + Link error.o and xmalloc.o into all programs. + (check): Depend on $(PROGRAMS). + + * diff.h (error): Change to GNU library standard. All callers changed. + * diff3.c (main): Use strerror (EISDIR) instead of "Is a directory". + (fatal, perror_with_exit): Use `error'. + * util.c (perror_with_name, fatal): Use GNU `error'. + (error): Remove. + +Wed Oct 12 17:04:40 1994 David J. MacKenzie (djm@duality.gnu.ai.mit.edu) + + * cmp.c (main): Set xmalloc_exit_failure. + +Sat Oct 1 05:24:19 1994 Paul Eggert + + * Version 2.7 released. + + * configure.in (AC_HEADER_SYS_WAIT): Add. + (AC_CHECK_HEADERS): Remove sys/wait.h. + (AC_CHECK_FUNCS): Add tmpnam. + * system.h (, WEXITSTATUS): Use simpler scheme + now that HAVE_SYS_WAIT_H is not set on hosts + that are incompatible with Posix applications. + + * util.c (dir_file_pathname): Use filename_lastdirchar not strrchr. + * sdiff.c (expand_name): Likewise. + (private_tempnam): Use tmpnam if HAVE_TMPNAM; this simplifies porting. + (exists, letters): Omit if HAVE_TMPNAM. + + * diff3.c (read_diff): If STAT_BLOCKSIZE yields zero, + adjust it to a more reasonable value. + +Sat Sep 24 20:36:40 1994 Paul Eggert + + * sdiff.c (exists, private_tempname): Adopt latest GNU libc algorithm. + (private_tempnam): Specialize for sdiff to avoid portability problems. + +Thu Sep 22 16:47:00 1994 Paul Eggert + + * configure.in (AC_ARG_PROGRAM): Added. + (AC_OUTPUT): Add [date > stamp-h]. + + * Makefile.in (DEFAULT_EDITOR_PROGRAM, DIFF_PROGRAM, LIBOBJS, + NULL_DEVICE, PR_PROGRAM, PROGRAMS): New variables. + (check, stamp-h.in, cmp.o, util.o): New targets. + (edit_program_name): New variable; replaces old binprefix method. + (install, uninstall): Use it. + (binprefix): Removed. + (distfiles): Add stamp-h.in. + (clean): Clean stamp-h. + (config.hin, config.h): Use time stamp files. + (cmp_o): Add $(LIBOBJS). + (install): Install info files from srcdir if they're not in `.'. + + * cmp.c, io.c (word): Don't define if already defined. + + * comp.c (main): Use setmode, not open(..., O_BINARY); this gets stdin. + Use NULL_DEVICE instead of "/dev/null". + (cmp): Use %lu instead of %ld when it is more likely to be right. + + * diff.h (PR_FILE_NAME): Rename to PR_PROGRAM and move to Makefile.in, + util.c. + + * diff3.c (main): Give proper diagnostic if too many labels were given. + (read_diff): Use SYSTEM_QUOTE_ARG. + + * system.h: : Include if HAVE_STRING_H, too. + : Include here. All includers changed. + (CTYPE_DOMAIN, ISDIGIT, ISPRINT, ISSPACE, ISUPPER): New macros that + work around common problems. + (O_BINARY): Remove. + (SYSTEM_QUOTE_ARG): New macros. + + * diff.c: Add comment. + + * util.c (PR_PROGRAM): Moved here from diff.h. + (begin_output): Use SYSTEM_QUOTE_ARG. + + * io.c (read_files): Set mode to binary before returning 1. + + * sdiff.c (TMPDIR_ENV): New macro. + (DEFAULT_EDITOR_PROGRAM): Renamed from DEFAULT_EDITOR for consistency. + (expand_name): Change `isdir' to `is_dir' to avoid theoretical ctype + namespace contamination. + (main): Use SYSTEM_QUOTE_ARG. + (private_tempnam): Don't access "/tmp" directly; use PVT_tmpdir. + +Tue Sep 13 18:46:43 1994 Paul Eggert + + * configure.in (AC_FUNC_MEMCHR): Remove. Autoconf didn't adopt this, + since we need not worry about an old experimental library + where memchr didn't work. + (AC_FUNC_MEMCMP): Not needed, since we only test for equality. + (AC_REPLACE_FUNCS): Add test for memchr. + (AC_CHECK_FUNCS): Check for memchr, not memcpy, since it'll be cached. + (AC_CHECK_HEADERS): Add string.h; regex.c uses on some old hosts. + + * system.h (memcmp): Define in terms of bcmp. + Use HAVE_MEMCHR to test for all mem* routines. + + * Makefile.in (srcs): Remove memcmp.c. + We use bcmp if memcmp doesn't work, since we only test for equality. + +Mon Sep 12 15:52:22 1994 Paul Eggert + + * configure.in (AC_CONFIG_HEADER): Rename config.h.in to config.hin. + (AC_ISC_POSIX, AC_MINIX): Go back to these old names for Autoconf 2. + (AC_CHECK_HEADERS): Remove now-redundant check for . + (AC_CHECK_FUNCS): Check for strchr. + (AC_FUNC_MEMCHR, AC_FUNC_MEMCMP, AC_CHECK_FUNCS): Use special-purpose + macros when suitable. + * memcmp.c: New file. + * Makefile.in (CPPFLAGS, DEFS, CFLAGS, LDFLAGS, prefix, exec_prefix): + Default to autoconf-specified strings. + (COMPILE): Use the defaults. + (srcs): Add memcmp.c. + (distfiles): Rename config.h.in->config.hin, install.sh->install-sh. + (Makefile, config.h, config.hin, config.status): Rework for + compatibility with Autoconf 2. + * io.c (binary_file_p): Assume non-broken memchr. + * memchr.c: Assume compiler understands void *; otherwise + we don't match GCC's internal declaration of memchr. + * system.h: Use more modern autoconf approach to standard C headers. + * version.c: Include , not "config.h". + + * diff.c, diff.h (ignore_some_line_changes): + New variable; replaces `length_varies'. + (line_end_char): Replace with '\n'; it wasn't being used consistently. + + * io.c (find_and_hash_each_line): Fix inconsistencies with -b -w -i and + incomplete lines. Put incomplete lines into their own bucket. + This means line_cmp no longer needs line length arguments, + and equivalence classes' line lengths no longer need to include \n. + Invoke line_cmp only if ignore_some_line_changes. + (prepare_text_end): -B no longer ignores missing newlines. + (read_files): Allocate another bucket for incomplete lines. + + * util.c (line_cmp): Now takes just two arguments. No longer + optimizes for common case of exact equality; the caller does that + optimization now. The caller is changed accordingly. + Optimize for the common case of mostly equality. + Use isupper+tolower instead of islower+toupper, for consistency. + + * waitpid.c (waitpid): Fix typo with internal scoping. + +Thu Sep 8 08:23:15 1994 Paul Eggert + + * configure.in: Revamp for Autoconf 2. + * memchr.c, waitpid.c: New source files for substitute functions. + * Makefile.in (diff_o, diff3_o, sdiff_o): Add $(LIBOBJS). + (srcs): Add memchr.c, waitpid.c. + (distfiles): Add install.sh, memchr.c, waitpid.c, install.sh. + * system.h: Use Autoconf 2 style HAVE_DIRENT_H etc. macros for dirs. + * dir.c (dir_sort): Prefer NAMLEN (p) to strlen (p->d_name). + Change VOID_CLOSEDIR to CLOSEDIR_VOID for Autoconf 2. + * sdiff.c, util.c (memchr, waitpid): Remove; use new substitutes. + * diff3.c (read_diff): Use new waitpid substitute. + + * cmp.c, diff.c, diff3.c, sdiff.c (check_stdout, try_help): New fns. + (usage): Just print more detailed usage message; let caller exit. + * diff.c (option_help): New variable. + (filetype): Add Posix.1b file types. + +Fri Sep 2 16:01:49 1994 Paul Eggert + + * configure.in: Switch to new autoconf names. Add sys/file.h test. + * Makefile.in (distclean): Clean config.cache, config.log + (used by new autoconf). + + * diff.c, diff3.c, (main), sdiff.c (trapsigs): If we'll have children, + make sure SIGCHLD isn't ignored. + + * diff3.c (DIFF_CHUNK_SIZE): Removed. Get size from STAT_BLOCKSIZE. + (INT_STRLEN_BOUND): New macro. + + * ifdef.c (format_group, groups_letter_value): + Use * instead of [] in prototypes. + + * system.h: Include only if HAVE_SYS_FILE_H. + (S_IXGRP, S_IXOTH, S_IXUSR): Remove unused macros. + + * util.c (begin_output): Check fdopen result. + + The following changes simplify porting to non-Posix environments. + * cmp.c, diff.c, diff3.c, sdiff.c, (main): Call initialize_main first. + * diff.c (binary_I_O): New variable for --binary option. + (main, usage, compare_files): Support --binary option. + (compare_files): Use filename_lastdirchar to find last + directory char in a file name. + * cmp.c (main), diff.c (compare_files), dir.c (compare_names, + diff_dirs): Use filename_cmp to compare file names. + Use same_file to determine whether two files are the same. + * context.c (print_context_label): Check whether ctime yields 0. + * diff3.c (read_diff), sdiff.c (cleanup, main, waitpid), + util.c (begin_output): Use popen+pclose if !HAVE_FORK. + * io.c (sip): If HAVE_SETMODE, test for binary files in O_BINARY mode. + * sdiff.c (ck_fdopen): Function removed. + (edit): Use system if !HAVE_FORK. + (execdiff): Now assumes caller has pushed all args, plus trailing 0. + All callers changed. + (private_tempnam): Try TMP if TMPDIR isn't defined. + Fit temporary filenames into 8.3 limit. + * system.h (STAT_BLOCKSIZE): Don't define if already defined. + (min, max): Undef if already defined. + (filename_cmp, filename_lastdirchar, HAVE_FORK, HAVE_SETMODE, + initialize_main, O_BINARY, same_file): New macros. + +Fri Jun 17 11:23:53 1994 David J. MacKenzie (djm@geech.gnu.ai.mit.edu) + + * Makefile.in (info, dvi, diff.dvi): New targets. + (clean): Remove TeX output files. + +Fri Jun 17 05:37:52 1994 Paul Eggert (eggert@twinsun.com) + + * cmp.c, io.c (word): Change from typedef to #define, to avoid + collision with Unicos 8.0 , which also typedefs `word'. + +Thu Apr 15 00:53:01 1994 Paul Eggert (eggert@twinsun.com) + + * diff3.c (scan_diff_line), util.c (print_number_range): Don't + rely on promotion to make the old-style parameter type agree + with the prototype parameter type; this doesn't work on + Apollos running bsd4.3. + +Mon Jan 3 02:05:51 1994 Paul Eggert (eggert@twinsun.com) + + * Makefile.in (LDFLAGS): Remove -g. Change all link commands + to use both $(CFLAGS) and $(LDFLAGS). + +Mon Dec 13 12:23:27 1993 Paul Eggert (eggert@twinsun.com) + + * system.h: Don't assume dirent.h exists just because + _POSIX_VERSION is defined. + +Fri Dec 3 18:39:39 1993 Paul Eggert (eggert@twinsun.com) + + * diff.c (main): allow -pu. + +Tue Nov 23 03:51:08 1993 Paul Eggert (eggert@twinsun.com) + + * Makefile.in (distclean): Remove config.h. + +Wed Nov 10 00:28:27 1993 Paul Eggert (eggert@twinsun.com) + + * Version 2.6 released. + + * analyze.c (too_expensive): New variable, for heuristic to + limit the worst-case cost to O(N**1.5 log N) at the price of + producing suboptimal output for large inputs with many differences. + (diff_2_files): Initialize it. + (struct partition): New type. + (SNAKE_LIMIT): New macro; merely documents already-used number 20. + (diag): New `minimal' arg; all callers changed. Put results into + struct partition. Apply `too_expensive' heuristic. Tune. + (compareseq): New `minimal' arg; all callers changed. Tune. + (shift_boundaries): Improve heuristic to also coalesce adjacent runs + of changes more often. + + * diff.c (long_options, main, usage): Add `--help'. + (main): Send version number to stdout, not stderr. + (usage): Send usage to stdout, not stderr. + (compare_files): Initialize `inf' properly. + + * io.c (word): Change to `int'; it makes a big difference on x86. + (sip, slurp): Put off allocating room to hold the whole file until we + have to read the whole file. This wins if the file turns out + to be binary. + + * util.c (xmalloc, xrealloc): "virtual memory" -> "memory" + (primes): Omit large primes if INT_MAX is small. + + * sdiff.c (usage): Send usage to stdout, not stderr. + (long_options, main, usage): Add `--help'. + (main): Send version number to stdout, not stderr. Exit afterwards. + + * diff3.c (usage): Send usage to stdout, not stderr. + (long_options, main, usage): Add `--help'. + (read_diff): Detect integer overflow in buffer size calculations. + + * cmp.c (word): New type. All uses of `long' for + word-at-a-time comparisons changed to `word'. + (long_options, main, usage): Add `--help'. + (usage): Send usage to stdout, not stderr. + (main): Add `-v'. Send version number to stdout, not stderr. + + * configure.in (AC_HAVE_HEADERS): Add unistd.h; remove AC_UNISTD_H. + +Mon Sep 27 07:20:24 1993 Paul Eggert (eggert@twinsun.com) + + * diff.c (add_exclude_file): Cast memchr to (char *) + to suppress bogus warnings on some nonstandard hosts. + + * Makefile.in (cmp): Add version.o. + + * analyze.c (diff_2_files): Work around memcmp bug with size=0. + + * cmp.c (main, usage, version_string): Add --version option. + + * system.h (malloc, realloc): Declare only if !HAVE_STDLIB_H. + (memchr): Declare only if !HAVE_MEMCHR. These changes are + needed to keep some nonstandard hosts happy. + + * util.c (memchr): Make first arg char const * + to match standard. + (xmalloc, xrealloc): Cast malloc, realloc + to (VOID *) to suppress bogus warnings on some nonstandard hosts. + + * diff3.c (xmalloc, xrealloc): Cast malloc, realloc + to (VOID *) to suppress bogus warnings on some nonstandard hosts. + + * sdiff.c (xmalloc, xrealloc): Cast malloc, realloc + to (VOID *) to suppress bogus warnings on some nonstandard hosts. + (lf_copy, lf_skip, lf_snarf): Cast memchr to (char *) + to suppress bogus warnings on some nonstandard hosts. + (memchr): Make first arg char const * + to match standard. + +Mon Sep 27 00:23:37 1993 Paul Eggert (eggert@twinsun.com) + + * Version 2.5 released. + + * analyze.c (diff_2_files): Work around memcmp bug with size=0. + + * cmp.c (main, usage, version_string): Add --version option. + * Makefile.in (cmp): Add version.o. + + * diff.c (add_exclude_file): Cast memchr to (char *) + to suppress bogus warnings on some nonstandard hosts. + * sdiff.c (lf_copy, lf_skip, lf_snarf): Likewise. + + * diff3.c, sdiff.c, util.c (xmalloc, xrealloc): Cast malloc, realloc + to (VOID *) to suppress bogus warnings on some nonstandard hosts. + + * sdiff.c, util.c (memchr): Make first arg char const * + to match standard. + + * system.h (malloc, realloc): Declare only if !HAVE_STDLIB_H. + (memchr): Declare only if !HAVE_MEMCHR. These changes are + needed to keep some nonstandard hosts happy. + + * xmalloc.c: Include always; some nonstandard hosts + need it for size_t even if STDC_HEADERS. + +Sat Sep 18 01:33:07 1993 Paul Eggert (eggert@twinsun.com) + + * configure.in (AC_STAT_MACROS_BROKEN): Add. + * system.h (S_IS{BLK,CHR,DIR,FIFO,REG,SOCK}): Fix defns if + STAT_MACROS_BROKEN. + + * Makefile.in (diff3, sdiff, cmp): Do not link $(ALLOCA). + + * analyze.c (discard_confusing_lines): Make defn static, like decl. + * sdiff.c (xmalloc): Likewise. + + * ifdef.c (format_group): Ensure isdigit argument isn't < 0. + + * side.c (print_half_line): Use isprint, since some hosts lack isgraph. + * util.c (output_1_line): Likewise. Ensure its argument isn't < 0. + (xmalloc, xrealloc): Remove needless casts. + + * system.h (volatile, const): + Define these before including any system headers, + so that they're used consistently in all system includes. + (getenv, malloc, realloc): Declare even if HAVE_STDLIB_H, since some + s don't declare them. + (memchr): Likewise for . + + * cmp.c, diff3.c, diff.h, sdiff.c: Include "system.h" first. + * diff.c: Remove redundant "system.h" inclusion. + + * diff3.c (xmalloc): Now static. + (xmalloc, realloc): Remove needless casts. + (READNUM): Ensure isdigit argument isn't negative. + +Wed Sep 14 07:14:15 1993 Paul Eggert (eggert@twinsun.com) + + * Version 2.4 released. + + * ifdef.c (scan_char_literal): New function, for new %c'x' and + %c'\ooo' format specs. + (format_group, print_ifdef_lines): Use it. Remove %0 format spec. + + * cmp.c (cmp): Don't try to read past end of file; this doesn't + work on ttys. + + * system.h, version.c: #include , not "config.h", to allow + configuring in a separate directory when the source directory has + already been configured. + * Makefile.in (COMPILE): New defn, with proper -I options so that + `#include ' works. + (.c.o, diff3.o, sdiff.o): Use it. + +Mon Sep 13 06:45:43 1993 Paul Eggert (eggert@twinsun.com) + + * diff.c (main, longopts): Add --line-format=FORMAT option. + (specify_format): Args no longer const pointers. All callers changed. + + * ifdef.c: Add support for %?c, %(A=B?T:E), PRINTF_SPECn formats. + (struct group): New struct. + (print_ifdef_lines): Use it to simplify argument passing. + Remove the convention that last arg -1 signifies that the lines + from file 2 are the same as the lines from file 1; this + convention no longer works, now that line numbers might be + printed out, since the line numbers may differ. + Add first FILE * argument to output to. All callers changed. + Use a faster test for the single-fwrite optimization. + (format_group, scan_printf_spec, groups_letter_value): New functions. + + * diff.h (group_format, line_format): No longer const pointers. + (format_ifdef): 1st arg is no longer const pointer. + + * configure.in: Configure HAVE_LIMITS_H, HAVE_STDLIB_H. + * system.h , , : + Include only if HAVE_LIMITS_H etc. + + * system.h (memcmp, memcpy, strchr, strrchr, struct dirent): Prefer + these standard names to the traditional names (bcmp, bcpy, index, + rindex, struct direct). All callers changed. + + * system.h (PARAMS, VOID): + Define earlier so that malloc decl can use VOID. + (STAT_BLOCKSIZE): Simplify ersatz defn; just use 8K. + +Fri Sep 3 00:21:02 1993 Paul Eggert (eggert@twinsun.com) + + * diff.c (compare_files): Two files with the same name must be + the same file; avoid a needless `stat' in that case. + +Fri Aug 27 06:59:03 1993 Paul Eggert (eggert@twinsun.com) + + * Pervasive changes for portability to 64-bit hosts: + Add prototypes to function declarations. + Use size_t, not int, when needed. + + * Other pervasive changes: + Use `const' more often. + Use STD{IN,OUT,ERR}_FILENO instead of [012]. + Use 0, not NULL, for portability to broken hosts. + + * Makefile.in: (srcs, objs, distfiles, cmp): New files cmpbuf.[ch]. + (distfiles): New files config.h.in, mkinstalldirs. + (.c.o): Add -DHAVE_CONFIG_H. + + * analyze.c: (diag): Pacify `gcc -Wall' with a useless assignment. + (diff_2_files): Use l.c.m., not max, of files' buffer sizes. + + * cmp.c: Make globals static when possible. + + (file): Now a 2-element array; replaces `file1' and `file2'. + (file_desc, buffer): Likewise, for file[12]_desc and buf[12]. + (main): Likewise, for stat_buf[12]. Index these variables with `i'. + + (ignore_initial): New var. + (long_options): Now const. Add `--ignore-initial'. + (usage): Sort options and add `--ignore-initial'. + (main, cmp): Add `--ignore-initial' support. + + (main): `cmp - -' now succeeds. + When comparing standard input to a file, and using a shortcut (e.g. + looking at file sizes or inode numbers), take the lseek offset into + account before deciding whether the files are identical. + Avoid mentioning `dev_t', `ino_t' for portability to nonstandard hosts. + Use l.c.m. of files' buffer sizes, not 8 * 1024. + ferror (stdout) does not imply errno has a useful value. + If 2nd file is "-", treat it first, in case stdin is closed. + + (cmp): Always compute `char_number', `smaller' for speed and simplicity. + Say `cmp: EOF on input', not `/usr/gnu/bin/cmp: EOF on input', + as per Posix.2. + + (block_compare_and_count): Increment line_number argument. + Remove end_char argument; it's always '\n'. All callers changed. + Do not assume sizeof(long) == 4; this isn't true on some 64-bit hosts. + (block_compare): Minimize differences with block_compare_and_count. + + (block_read): Coalesce `bp += nread's. + + (printc): Remove `FILE *' arg; output to stdout. All callers changed. + + * configure.in: Configure HAVE_SIGACTION, RETSIGTYPE, HAVE_VPRINTF. + Configure into config.h. + + * context.c (print_context_label): + Standard input's st_mtime is no longer a special case + here, since `compare_files' now sets it to the current time. + + * diff.c (usage): Sort options. + (filetype): New function. + (compare_files): Set stdin's st_mtime to be the current time. + Leave its name "-" instead of changing it to "Standard Input"; + to test whether a file is stdin, we must compare its name to "-" instead + of its desc to 0, since if it's closed other file descs may be 0. + When comparing standard input to a file, and using a shortcut (e.g. + looking at file sizes or inode numbers), take the lseek offset into + account before deciding whether the files are identical. + Pretend that nonexistent files have the same filetype as existing files. + Rename `errorcount' to `failed', since it's boolean. + In directory comparisons, if a file is neither a regular file nor a + directory, just print its type and the other file's type. + + * diff.h (Is_space, textchar): Remove. + (struct msg, msg_chain, msg_chain_end): Move to util.c. + (VOID): Move to system.h. + (line_cmp, version_string, change_letter, print_number_range, + find_change): New decls. + + * diff.texi: + whitespace -> white space. It now stands for whatever isspace yields. + Add --ignore-initial. + + * diff3.c (VOID): Move to system.h. + (version_string): Now char[]. + (usage): Sort options. + (process_diff): Pacify `gcc -Wall' with a useless assignment. + (read_diff): pid is of type pid_t, not int. Use waitpid if available. + (output_diff3): Simplify test for `\ No newline at end of file' message. + + * dir.c (struct dirdata): Rename `files' to `names' to avoid confusion + with external struct file_data `files'. + + * io.c (line_cmp): Move declaration to diff.h. + (textchar): Remove. + (find_and_hash_each_line): Use locale's definition of white space + instead of using one hardwired defn for -b and another for -w. + + * normal.c (change_letter, print_number_range, find_change): + Move decls to diff.h. + (print_normal_hunk): Now static. + + * sdiff.c (SEEK_SET): Move to system.h. + (version_string): Now char[], not char*. + (private_tempnam): Remove hardcoded limit on temporary file names. + (exiterr, perror_fatal, main): When exiting because of a signal, + exit with that signal's status. + (lf_refill, main, skip_white, edit, interact): Check for signal. + (ignore_SIGINT): Renamed from `ignore_signals'. + (NUM_SIGS, initial_handler): New macros. + (initial_action, signal_received, sigs_trapped): New vars. + (catchsig, trapsigs): Use sigaction if possible, since this closes the + windows of vulnerability that `signal' has. Use RETSIGTYPE not void. + When a signal comes in, just set a global variable; this is safer. + (checksigs, untrapsig): New functions. + (edit): Pacify `gcc -Wall' with a useless assignment. + Respond to each empty line with help, not to every other empty line. + (private_tempnam): Remove hardcoded limit on temporary file name length. + Don't assume sizeof (pid_t) <= sizeof (int). + + * system.h: (S_IXOTH, S_IXGRP, S_IXUSR, + SEEK_SET, SEEK_CUR, + STDIN_FILENO, STDOUT_FILENO, STDERR_FILENO): + New macros, if system doesn't define them. + (volatile): Don't define if already defined. + (PARAMS): New macro. + (VOID): Move here from diff.h. + + * util.c (struct msg, msg_chain, msg_chain_end): Moved here from diff.h. + (message5): New function. + (pr_pid): New var. + (begin_output): Allocate `name' more precisely. + Put child pid into pr_pid, so that we can wait for it later. + Don't check execl's return value, since any return must be an error. + (finish_output): Detect and report output errors. + Use waitpid if available. Check pr exit status. + (line_cmp): Use locale's definition of white space + instead of using one hardwired defn for -b and another for -w. + (analyze_cmp): Avoid double negation with `! nontrivial'. + Pacify `gcc -Wall' be rewriting for-loop into do-while-loop. + (dir_file_pathname): New function. + + * version.c (version_string): Now char[], not char*. + +Thu Jul 29 20:44:30 1993 David J. MacKenzie (djm@wookumz.gnu.ai.mit.edu) + + * Makefile.in (config.status): Run config.status --recheck, not + configure, to get the right args passed. + +Thu Jul 22 10:46:30 1993 Paul Eggert (eggert@twinsun.com) + + * Makefile.in (dist): Replace `if [ ! TEST ]; then ACTION; fi' + with `[ TEST ] || ACTION || exit' so that the containing for-loop exits + with proper status for `make'. + +Thu Jul 8 19:47:22 1993 David J. MacKenzie (djm@goldman.gnu.ai.mit.edu) + + * Makefile.in (installdirs): New target. + (install): Use it. + (Makefile, config.status, configure): New targets. + +Sat Jun 5 23:10:40 1993 Paul Eggert (eggert@twinsun.com) + + * Makefile.in (dist): Switch from .z to .gz. + +Wed May 26 17:16:02 1993 Paul Eggert (eggert@twinsun.com) + + * diff.c (main): Cast args to compare_files, for traditional C. + * side.c (print_sdiff_common_lines_print_sdiff_hunk): Likewise. + * analyze.c, diff3.c, sdiff.c, util.c: Don't assume NULL is defined + properly. + +Tue May 25 14:54:05 1993 Paul Eggert (eggert@twinsun.com) + + * analyze.c (diff_2_files): With -q, do not report that files differ + if all their differences are ignored. + (briefly_report): New function. + * diff.h (ignore_some_changes): New variable. + * diff.c (compare_files): Don't use the file size shortcut if + ignore_some_changes is nonzero, since the file size may differ + merely due to ignored changes. + (main): Set ignore_some_changes if we might ignore some changes. + Remove unsystematic assignment of 0 to static vars. + * io.c (read_files): New argument PRETEND_BINARY says whether to + pretend the files are binary. + + * diff3.c (tab_align_flag): New variable, for new -T option. + (main, usage, output_diff3): Add support for -T. + +Sun May 23 15:25:29 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu) + + * dir.c (dir_sort): Always init `data' to avoid GCC warning. + +Sat May 22 15:35:02 1993 Paul Eggert (eggert@twinsun.com) + + * Makefile.in (dist): Change name of package from diff to diffutils. + Don't bother to build .Z dist; .z suffices. + +Fri May 21 16:35:22 1993 Paul Eggert (eggert@twinsun.com) + + * diff.c: Include "system.h" to get memchr declaration. + * system.h (memchr): Declare if !HAVE_MEMCHR, not if + !HAVE_MEMCHR && !STDC_HEADERS. + +Wed May 19 17:43:55 1993 Paul Eggert (eggert@twinsun.com) + + * Version 2.3 released. + +Fri Apr 23 17:18:44 1993 Paul Eggert (eggert@twinsun.com) + + * io.c (find_identical_ends): Do not discard the last HORIZON_LINES + lines of the prefix, or the first HORIZON_LINES lines of the suffix. + * diff.c (main, longopts, usage): Add --horizon-lines option. + * diff3.c (main, process_diff, read_diff): Invoke second diff + with --horizon-lines determined by the first diff. + * diff.h, diff3.c (horizon_lines): New variable. + +Mon Mar 22 16:16:00 1993 Roland McGrath (roland@churchy.gnu.ai.mit.edu) + + * system.h [HAVE_STRING_H || STDC_HEADERS] (bcopy, bcmp, bzero): + Don't define if already defined. + +Fri Mar 5 00:20:16 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu) + + * diff.c (main): Use NULL in arg to compare_files. + +Thu Feb 25 15:26:01 1993 Roland McGrath (roland@churchy.gnu.ai.mit.edu) + + * system.h: Declare memchr #if !HAVE_MEMCHR && !STDC_HEADERS, + not #if !HAVE_MEMCHR || !STDC_HEADERS. + +Mon Feb 22 15:04:46 1993 Richard Stallman (rms@geech.gnu.ai.mit.edu) + + * io.c (find_identical_ends): Move complicated arg outside GUESS_LINES. + +Mon Feb 22 12:56:12 1993 Roland McGrath (roland@churchy.gnu.ai.mit.edu) + + * Makefile.in (.c.o): Add -I$(srcdir); put $(CFLAGS) last before $<. + +Sat Feb 20 19:18:56 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu) + + * io.c (binary_file_p): Return zero if file size is zero. + +Fri Feb 19 17:31:32 1993 Roland McGrath (roland@geech.gnu.ai.mit.edu) + + * Version 2.2 released. + + * system.h [HAVE_STRING_H || STDC_HEADERS] (index, rindex): Don't + define if already defined. + +Wed Feb 17 17:08:00 1993 Roland McGrath (roland@churchy.gnu.ai.mit.edu) + + * Makefile.in (srcs): Remove limits.h. + +Thu Feb 11 03:36:00 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu) + + * diff3.c (xmalloc): No longer static. + + * sdiff.c (edit): Allocate buf dynamically. + + * dir.c (dir_sort): Handle VOID_CLOSEDIR. + +Wed Feb 10 00:15:54 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu) + + * limits.h: File deleted (should never have been there). + +Tue Feb 9 03:53:22 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu) + + * Makefile.in (.c.o, diff3.o, sdiff.o): Put $(CFLAGS) last. + +Wed Feb 3 15:42:10 1993 David J. MacKenzie (djm@goldman.gnu.ai.mit.edu) + + * system.h: Don't #define const; let configure do it. + +Mon Feb 1 02:13:23 1993 Paul Eggert (eggert@hal.gnu.ai.mit.edu) + + * Version 2.1 released. + + * Makefile.in (dist): Survive ln failures. Create .tar.z + (gzipped tar) file as well as .tar.Z (compressed tar) file. + +Fri Jan 8 22:31:41 1993 Paul Eggert (eggert@twinsun.com) + + * side.c (print_half_line): When the input position falls + outside the column, do not output a tab even if the output + position still falls within the column. + +Mon Dec 21 13:54:36 1992 David J. MacKenzie (djm@kropotkin.gnu.ai.mit.edu) + + * Makefile.in (.c.o): Add -I. + +Fri Dec 18 14:08:20 1992 Paul Eggert (eggert@twinsun.com) + + * configure.in: Add HAVE_FCNTL_H, since system.h uses it. + +Tue Nov 24 10:06:48 1992 David J. MacKenzie (djm@goldman.gnu.ai.mit.edu) + + * Makefile.in: Note change from USG to HAVE_STRING_H. + +Mon Nov 23 18:44:00 1992 Paul Eggert (eggert@twinsun.com) + + * io.c (find_and_hash_each_line): When running out of lines, + double the number of allocated lines, instead of just doubling + that number minus the prefix lines. This is more likely to + avoid the need for further memory allocation. + +Wed Nov 18 20:40:28 1992 Paul Eggert (eggert@twinsun.com) + + * dir.c (dir_sort): Plug memory leak: space holding directory + contents was not being reclaimed. Get directory size from + struct file_data for initial guess at memory needed. + Detect errors when reading and closing directory. + (diff_dirs): Pass struct file_data to dir_sort. Finish plugging leak. + * diff.c (compare_files): Pass struct file_data to diff_dirs. + + * io.c (find_and_hash_each_line): Don't assume alloc_lines is + nonzero when allocating more lines. + +Thu Nov 12 16:02:18 1992 Paul Eggert (eggert@twinsun.com) + + * diff.c (main): Add `-U lines' as an alias for `--unified=lines'. + + * diff3.c (usage): Add third --label option in example. + + * util.c (analyze_hunk): Fix test for ignoring blank lines. + + * configure.in, system.h: Avoid USG; use HAVE_TIME_H etc. instead. + +Mon Nov 9 05:13:25 1992 Paul Eggert (eggert@twinsun.com) + + * diff3.c (main, usage): Add -A or --show-all. + -m now defaults to -A, not -E. Allow up to three -L options. + (output_diff3_edscript, output_diff3_merge): + Remove spurious differences between these two functions. + Output ||||||| for -A. Distinguish between conflicts and overlaps. + (dotlines, undotlines): New functions that output `Ns', not `N,Ns'. + (output_diff3_edscript, output_diff3_merge): Use them. + + * io.c (find_identical_ends): shift_boundaries needs an extra + identical line at the end, not at the beginning. + + * sdiff.c (edit): execvp wants char **, not const char **. + +Mon Oct 19 04:39:32 1992 Paul Eggert (eggert@twinsun.com) + + * context.c (print_context_script, find_function): Context + line numbers start with - file->prefix_lines, not 0. + + * io.c (binary_file_p): Undo last change; it was a library bug. + +Sun Oct 18 00:17:29 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu) + + * io.c (binary_file_p): Consider empty file as non-binary. + +Mon Oct 5 05:18:46 1992 Paul Eggert (eggert@twinsun.com) + + * diff3.c (main, make_3way_diff, using_to_diff3_block): Don't + report bogus differences (for one of -mexEX3) just because the + file0-file1 diffs don't line up with the file0-file2 diffs. + (This is entirely possible since we don't use diff's -n + option.) Always compare file1 to file2, so that diff3 sees + those changes directly. Typically, file2 is now the common + file, not file0. + (output_diff3_merge): The input file is file 0, not the common file. + + (FC, FO): New macros; they replace FILE1, FILE0 for two-way diffs, + to distinguish them from three-way diffs. + + * diff3.c (using_to_diff3_block): Fold repeated code into loops. + + * diff3.c (make_3way_diff, process_diff): Have the *_end + variable point to the next field to be changed, not to the last + object allocated; this saves an if-then-else. + + * diff3.c (process_diff): Use D_NUMLINES instead of its definiens. + + * diff3.c: Make fns and vars static unless they must be external. + +Wed Sep 30 09:21:59 1992 Paul Eggert (eggert@twinsun.com) + + * analyze.c (diff_2_files): OUTPUT_IFDEF is now robust. + * diff.h (ROBUST_OUTPUT_STYLE): Likewise. + (default_line_format): Remove. All refs removed. + + * ifdef.c (print_ifdef_lines): Add %L. Optimize %l\n even if user + specified it, as opposed to its being the default. + +Tue Sep 29 19:01:28 1992 Paul Eggert (eggert@twinsun.com) + + * diff.c (longopts, main): --{old,new,unchanged,changed}--group-format + are new options, so that -D is no longer overloaded. Set + no_diff_means_no_output if --unchanged-{line,group}-format allows it. + * diff.h (enum line_class): New type. + (group_format, line_format): Use it to regularize option flags. + All refs changed. + + * ifdef.c (format_ifdef, print_ifdef_lines): %n is no longer a format. + +Mon Sep 28 04:51:42 1992 Paul Eggert (eggert@twinsun.com) + + * diff.c (main, usage): Replace --line-prefix with the more general + --{old,new,unchanged}-line-format options. + * ifdef.c (format_ifdef, print_ifdef_lines): Likewise. + * diff.h (line_format): Renamed from line_prefix. All refs changed. + * diff.h, ifdef.c (default_line_format): New variable. + * util.c (output_1_line): New function. + (print_1_line): Use it. + + * ifdef.c: (format_ifdef, print_ifdef_lines): Add %0 format. + +Sun Sep 27 05:38:13 1992 Paul Eggert (eggert@twinsun.com) + + * diff.c (main): Add -E or --line-prefix option. Add -D'=xxx' + for common lines. Change default -D< format from copy of -D> + format to to -D<%<; similarly for default -D> format. + * diff.h (common_format, line_prefix): New variables. + * ifdef.c (format_ifdef): New function. + (print_ifdef_script, print_ifdef_hunk, print_ifdef_lines): + Use it for -D'=xxx', -E. + + * context.c (find_hunk): Glue together two non-ignorable changes that + are exactly CONTEXT * 2 lines apart. This shortens output, removes + a behavioral discontinuity at CONTEXT = 0, and is more compatible + with traditional diff. + + * io.c (find_identical_ends): Slurp stdin at most once. + + * util.c (print_line_line): line_flag is const char *. + +Thu Sep 24 15:18:07 1992 Paul Eggert (eggert@twinsun.com) + + * ifdef.c (print_ifdef_lines): New function, which fwrites a sequence + of lines all at once for speed. + (print_ifdef_script, print_ifdef_hunk): Use it. + +Thu Sep 24 05:54:14 1992 Paul Eggert (eggert@twinsun.com) + + * diff.c (main): Support new -D options for if-then-else formats. + (specify_format): New function. + * diff.h (ifndef_format, ifdef_format, ifnelse_format): New variables. + * ifdef.c (print_ifdef_hunk): Use the new variables instead of + a hardwired format. + + * side.c (print_1sdiff_line): Represent incomplete lines on output. + (print_sdiff_script): Likewise. Don't print 'q' at end, + since that doesn't work with incomplete lines. + * sdiff.c (interact): Don't assume diff output ends with 'q' line. + * diff.h (ROBUST_OUTPUT_STYLE): OUTPUT_SDIFF is now robust. + + * sdiff.c (lf_copy, lf_snarf): Use memchr instead of index, + to avoid dumping core when files contain null characters. + (memchr): New function (if memchr is missing). + + * io.c (sip): New arg SKIP_TEST to skip test for binary file. + (read_files): Don't bother testing second file if first is binary. + +Thu Sep 17 21:17:49 1992 David J. MacKenzie (djm@nutrimat.gnu.ai.mit.edu) + + * system.h [!USG && !_POSIX_VERSION]: Protect from conflicting + prototype for wait in sys/wait.h. + +Wed Sep 16 12:32:18 1992 David J. MacKenzie (djm@nutrimat.gnu.ai.mit.edu) + + * Makefile.in: Include binprefix in -DDIFF_PROGRAM. + +Tue Sep 15 14:27:25 1992 David J. MacKenzie (djm@nutrimat.gnu.ai.mit.edu) + + * Version 2.0. + +Sat Sep 12 01:31:19 1992 David J. MacKenzie (djm@nutrimat.gnu.ai.mit.edu) + + * util.c, diff.h, system.h [!HAVE_MEMCHR]: Don't use void * + and const when declaring memchr replacement. Declare memchr + if !STDC_HEADERS && !USG. + +Thu Sep 10 15:17:32 1992 David J. MacKenzie (djm@nutrimat.gnu.ai.mit.edu) + + * Makefile.in (uninstall): New target. + + * diff.c (excluded_filename): Use fnmatch, not wildmat. + (usage): Document -x, -X, --exclude, --exclude-from. + Makefile.in: Use fnmatch.c, not wildmat.c. + +Sun Sep 6 23:46:25 1992 Paul Eggert (eggert@twinsun.com) + + * configure.in: Add HAVE_MEMCHR. + * diff.h, util.c: Use it instead of MEMCHR_MISSING. + +Sun Sep 6 07:25:49 1992 Paul Eggert (eggert@twinsun.com) + + * diff.h: (struct line_def): Replace this 3-word struct with char *. + This uses less memory, particularly for large files with short lines. + (struct file_data): New member linbuf_base counts number of lines + in common prefix that are not recorded in linbuf; + this uses less memory if files are identical or differ only at end. + New member buffered_lines counts possibly differing lines. + New member valid_lines counts valid data. + New member alloc_lines - linbuf_base replaces old linbufsize. + linbuf[0] now always points at first differing line. + Remove unused members ltran, suffix_lines. + Add const where appropriate. + (Is_space): New macro, for consistent definition of `white space'. + (excluded_filename, memchr, sip, slurp): New declarations. + * ed.c (print_ed_hunk): Adjust to diff.h's struct changes. + * context.c (pr_context_hunk): Likewise. + * ifdef.c (print_ifdef_script): Likewise. + * side.c (print_sdiff_script, print_half_line): Likewise. + * util.c (analyze_hunk, line_cmp, print_1_line): Likewise. + + * analyze.c (shift_boundaries): Remove unneeded variable `end' and + unnecessary comparisons of `preceding' and `other_preceding' against 0. + (diff_2_files): When comparing files byte-by-byte for equality, + don't slurp them all in at once; just compare them a buffer at a time. + This can win big if they differ early on. + Move some code to compare_files to enable this change. + Use only one buffer for stdin with `diff - -'. + (discard_confusing_lines, diff_2_files): Coalesce malloc/free calls. + (build_script): Remove obsolete OUTPUT_RCS code. + + * diff.c (add_exclude, add_exclude_file, excluded_filename): New fns. + (main): Use them for the new --exclude and --exclude-from options. + (compare_files): Don't open a file unless it must be read. + Treat `diff file file' and `diff file dir' similarly. + Move some code here from diff_2_files to enable this. + Simplify file vs dir warning. + + * dir.c (dir_sort): Support new --exclude* options. + + * io.c (struct equivclass): Put hash code and line length here instead + of struct line_def, so that they can be shared. + (find_and_hash_each_line): Compute equivalence class as we go, + instead of doing it in a separate pass; this thrashes memory less. + Make buckets realloc-able, since we can't preallocate them. + Record one more line start than there are lines, so that we can compute + any line's length by subtracting its start from the next line's, + instead of storing the length explicitly. This saves memory. + Move prefix-handling code to find_identical_ends; + this wins with large prefixes. + Use Is_space, not is_space, for consistent treatment of white space. + (prepare_text_end): New function. + (find_identical_ends): Move slurping here, so it's only done when + needed. Work even if the buffers are the same (because of `diff - -'). + Compare prefixes a word at a time for speed. + (find_equiv_class): Delete; now done by find_and_hash_each_line. + (read_files): Don't slurp unless needed. + find_equiv_class's work is now folded into find_and_hash_each_line. + Don't copy stdin buffer if `diff - -'. + Check for running out of primes. + (sip, slurp): Split first part of `slurp' into another function `sip'. + `sip' sets things up and perhaps reads the first ST_BLKSIZE buffer to + see whether the file is binary; `slurp' now just finishes the job. + This lets diff_2_files compare binary files lazily. + Allocate a one-word sentinel to allow word-at-a-time prefix comparison. + Count prefix lines only if needed, only count the first file's prefix. + Don't bother to count suffix lines; it's never needed. + Set up linbuf[0] to point at first differing line. + (binary_file_p): Change test for binary files: + if it has a null byte in its first buffer, it's binary. + (primes): Add more primes. + + * util.c (line_cmp): Use bcmp for speed. + Use Is_space, not is_space, for consistent treatment of white space. + (translate_line_number): Internal line numbers now count from 0 + starting after the prefix. + (memchr): New function (if memchr is missing). + + * Makefile.in: Document HAVE_ST_BLKSIZE. Link with wildmat.o. + * system.h (STAT_BLOCKSIZE): New macro based on HAVE_ST_BLKSIZE. + * configure.in: Add AC_ST_BLKSIZE. + * wildmat.c: New file. + +Fri Sep 4 01:28:51 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu) + + * sdiff.c (xmalloc): Renamed from ck_malloc. Callers changed. + +Thu Sep 3 15:28:59 1992 David J. MacKenzie (djm@nutrimat.gnu.ai.mit.edu) + + * diff.h: Don't declare free, index, rindex. + +Tue Aug 11 22:18:06 1992 John Gilmore (gnu at cygnus.com) + + * io.c (binary_file_p): Use heuristic to avoid declaring info + files as binary files. Allow about 1.5% non-printing + characters (in info's case, ^_). + +Tue Jul 7 01:09:26 1992 David J. MacKenzie (djm@nutrimat.gnu.ai.mit.edu) + + * diff.h: Replace function_regexp and ignore_regexp with lists + of compiled regexps. + * analyze.c, context.c, util.c: Test whether the lists, not + the old variables, are empty. + * util.c (analyze_hunk), context.c (find_function): Compare + lines with the lists of regexps. + * diff.c (add_regexp): New function. + (main): Use it. + + * diff3: Add -v --version option. + * Makefile.in: Link with version.o. + + * system.h: New file. + * diff.h, cmp.c, diff3.c, sdiff.c: Use it. + + * diff.h, diff3.c: Include string.h or strings.h, as appropriate. + Declare malloc and realloc. + + * diff3.c (perror_with_exit): Include program name in message. + + * diff3.c: Lowercase error messages for GNU standards. + + * sdiff.c [USG || STDC_HEADERS]: Define bcopy in terms of memcpy. + + * sdiff.c: Use the version number from version.c. + * Makefile.in: Link with version.o. + + * cmp.c error.c xmalloc.c: New files from textutils. + * Makefile.in: Add rules for them. + + * diff.c (longopts): --unidirectional-new-file is like -P, not -N. + Rename --file-label to --label (leave old name, but undocumented). + + * sdiff.c, diff.c (usage): Condense messages and fix some errors. + + * diff3.c (main, usage): Add long-named options. + +Fri Jul 3 14:31:18 1992 David J. MacKenzie (djm@nutrimat.gnu.ai.mit.edu) + + * diff.h, diff3.c, sdiff.c: Change FOO_MISSING macros to HAVE_FOO. + +Thu Jun 25 16:59:47 1992 David J. MacKenzie (djm@apple-gunkies.gnu.ai.mit.edu) + + * diff.c: --reversed-ed -> --forward-ed. + +Wed Feb 26 12:17:32 1992 Paul Eggert (eggert@yata.uucp) + + * analyze.c, diff.c, diff.h, io.c: For -y, compare even if same file. + +Fri Feb 14 22:46:38 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu) + + * io.c, diff3.c, analyze.c: Add extra parentheses. + +Sun Feb 9 00:22:42 1992 Richard Stallman (rms@mole.gnu.ai.mit.edu) + + * diff.h (unidirectional_new_file_flag): New variable. + * diff.c (main): Set that for -P. + (compare_files): Support -P, somewhat like -N. + (longopts): Support long name for -P. + +Sat Jan 4 20:10:34 1992 Paul Eggert (eggert at yata.uucp) + + * Makefile.in: Distribute diff.info-* too. + + * README, sdiff.c: version number now matches version.c. + + * configure: Fix and document vfork test. + + * ifdef.c: Don't dump core if `diff -Dx f f'. + +Mon Dec 23 23:36:08 1991 David J. MacKenzie (djm at wookumz.gnu.ai.mit.edu) + + * diff.h, diff3.c, sdiff.c: Change POSIX ifdefs to + HAVE_UNISTD_H and _POSIX_VERSION. + +Wed Dec 18 17:00:31 1991 David J. MacKenzie (djm at wookumz.gnu.ai.mit.edu) + + * Makefile.in (srcs): Add sdiff.c. + (tapefiles): Add diff.texi and diff.info. + + * diff.h, diff3.c, sdiff.c: Use HAVE_VFORK_H instead of + VFORK_HEADER and VFORK_WORKS. + +Tue Dec 17 00:02:59 1991 Paul Eggert (eggert at yata.uucp) + + * Makefile.in (all): Add diff.info, sdiff. + + * configure, diff.c, sdiff.c: + Prefix long options with `--', not `+'. + * diff.c: Regularize option names. + + * configure: Fix check for vfork. + * configure, diff.c, diff.h, diff3.c, sdiff.c: + Use Posix definitions when possible. + + * context.c: Align context with tab if -T is given. Tune. + * diff.c, diff.h, side.c: Calculate column widths so that tabs line up. + * io.c: Add distinction between white space and printing chars. + * side.c: Don't expand tabs unless -t is given. + * side.c, util.c: Tab expansion now knows about '\b', '\f', '\r', '\v'. + * util.c: -w skips all white space. Remove lint. Tune. + + * sdiff.c: Support many more diff options, e.g. `-', `sdiff file dir'. + Ignore interrupts while the subsidiary editor is in control. + Clean up temporary file and kill subsidiary diff if interrupted. + Ensure subsidiary diff doesn't ignore SIGPIPE. + Don't get confused while waiting for two subprocesses. + Don't let buffers overflow. Check for I/O errors. + Convert to GNU style. Tune. + + * sdiff.c, util.c: Don't lose errno. + Don't confuse sdiff with messages like `Binary files differ'. + * sdiff.c, side.c: Don't assume that common lines are identical. + Simplify --sdiff-merge-assist format. + +Mon Sep 16 16:42:01 1991 Tom Lord (lord at churchy.gnu.ai.mit.edu) + + * Makefile.in, sdiff.c: introduced sdiff front end to diff. + + * Makefile.in, analyze.c, diff.c, diff.h, io.c, side.c: Added + sdiff-style output format to diff. + +Mon Aug 26 16:44:55 1991 David J. MacKenzie (djm at pogo.gnu.ai.mit.edu) + + * Makefile.in, configure: Only put $< in Makefile if using VPATH, + because older makes don't understand it. + +Fri Aug 2 12:22:30 1991 David J. MacKenzie (djm at apple-gunkies) + + * configure: Create config.status. Remove it and Makefile if + interrupted while creating them. + +Thu Aug 1 22:24:31 1991 David J. MacKenzie (djm at apple-gunkies) + + * configure: Check for +srcdir etc. arg and look for + Makefile.in in that directory. Set VPATH if srcdir is not `.'. + * Makefile.in: Get rid of $(archpfx). + +Tue Jul 30 21:28:44 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) + + * Makefile.in (prefix): Renamed from DESTDIR. + +Wed Jul 24 23:08:56 1991 David J. MacKenzie (djm at wookumz.gnu.ai.mit.edu) + + * diff.h, diff3.c: Rearrange ifdefs to use POSIX, + STDC_HEADERS, VFORK_MISSING, DIRENT. This way it works on + more systems that aren't pure USG or BSD. + Don't not define const if __GNUC__ is defined -- that would + break with -traditional. + * configure: Check for those features. + +Wed Jul 10 01:39:23 1991 David J. MacKenzie (djm at wookumz.gnu.ai.mit.edu) + + * configure, Makefile.in: $(INSTALLPROG) -> $(INSTALL). + +Sat Jul 6 16:39:04 1991 David J. MacKenzie (djm at geech.gnu.ai.mit.edu) + + * Replace Makefile with configure and Makefile.in. + Update README with current compilation instructions. + +Sat Jul 6 14:03:29 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) + + * util.c (setup_output): Just save the args for later use. + (begin_output): Do the real work, with the values that were saved. + It's safe to call begin_output more than once. + Print the special headers for context format here. + * analyze.c (diff_2_files): Don't print special headers here. + * context.c (pr_context_hunk, pr_unidiff_hunk): Call begin_output. + * ed.c (print_ed_hunk, print_forward_ed_hunk, print_rcs_hunk): + * normal.c (print_normal_hunk): Likewise. + * ifdef.c (print_ifdef_hunk): Likewise. + * util.c (finish_output): Don't die if begin_output was not called. + +Thu Jun 20 23:10:01 1991 David J. MacKenzie (djm at geech.gnu.ai.mit.edu) + + * Makefile: Add TAGS, distclean, and realclean targets. + Set SHELL. + +Tue Apr 30 13:54:36 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu) + + * diff.h (TRUE, FALSE): Undefine these before defining. + +Thu Mar 14 18:27:27 1991 Richard Stallman (rms@mole.ai.mit.edu) + + * Makefile (objs): Include $(ALLOCA). + +Sat Mar 9 22:34:03 1991 Richard Stallman (rms at mole.ai.mit.edu) + + * diff.h: Include regex.h. + +Thu Feb 28 18:59:53 1991 Richard Stallman (rms at mole.ai.mit.edu) + + * Makefile (diff3): Link with GNU getopt. + +Sat Feb 23 12:49:43 1991 Richard Stallman (rms at mole.ai.mit.edu) + + * io.c (find_equiv_class): Make hash code unsigned before mod. + + * diff.h (files): Add EXTERN. + +Sun Jan 13 21:33:01 1991 Richard Stallman (rms at mole.ai.mit.edu) + + * diff.c: +print option renamed +paginate. Remove +all-text. + +Mon Jan 7 06:18:01 1991 David J. MacKenzie (djm at geech.ai.mit.edu) + + * Makefile (dist): New target, replacing diff.tar and + diff.tar.Z, to encode version number in distribution directory + and tar file names. + +Sun Jan 6 18:42:23 1991 Michael I Bushnell (mib at geech.ai.mit.edu) + + * Version 1.15 released. + + * version.c: Updated from 1.15 alpha to 1.15 + + * context.c (print_context_number_range, + print_unidiff_number_range): Don't print N,M when N=M, print + just N instead. + + * README: Updated for version 1.15. + Makefile: Updated for version 1.15. + + * diff3.c (main): Don't get confused if one of the arguments + is a directory. + + * diff.c (compare_files): Don't get confused if comparing + standard input to a directory; print error instead. + + * analyze.c (diff_2_files), context.c (print_context_header, + print_context_script), diff.c (main), diff.h (enum + output_style): Tread unidiff as an output style in its own + right. This also generates an error when both -u and -c are + given. + + * diff.c (main): Better error messages when regexps are bad. + + * diff.c (compare_files): Don't assume stdin is opened. + + * diff3.c (read_diff): Don't assume things about the order of + descriptor assignment and closes. + + * util.c (setup_output): Don't assume things about the order + of descriptor assignment and closes. + + * diff.c (compare_files): Set a flag so that closes don't + happen more than once. + + * diff.c (main): Don't just flush stdout, do a close. That + way on broken systems we can still get errors. + +Mon Dec 24 16:24:17 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * diff.c (usage): Use = for args of long options. + +Mon Dec 17 18:19:20 1990 Michael I Bushnell (mib at geech.ai.mit.edu) + + * context.c (print_context_label): Labels were interchanged badly. + + * context.c (pr_unidiff_hunk): Changes to deal with files + ending in incomplete lines. + * util.c (print_1_line): Other half of the changes. + +Mon Dec 3 14:23:55 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * diff.c (longopts, usage): unidiff => unified. + +Wed Nov 7 17:13:08 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * analyze.c (diff_2_files): No warnings about newlines for -D. + + * diff.c (pr_unidiff_hunk): Remove ref to output_patch_flag. + +Tue Oct 23 23:19:18 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * diff.c (compare_files): For -D, compare even args are same file. + * analyze.c (diff_2_files): Likewise. + Also, output even if files have no differences. + + * analyze.c (diff_2_files): Print missing newline messages last. + Return 2 if a newline is missing. + Print them even if files end with identical text. + +Mon Oct 22 19:40:09 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * diff.c (usage): Return 2. + +Wed Oct 10 20:54:04 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * diff.c (longopts): Add +new-files. + +Sun Sep 23 22:49:29 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * context.c (print_context_script): Handle unidiff_flag. + (print_context_header): Likewise. + (print_unidiff_number_range, pr_unidiff_hunk): New functions. + * diff.c (longopts): Add element for +unidiff. + (main): Handle +unidiff and -u. + (usage): Mention them. + +Wed Sep 5 16:33:22 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * io.c (find_and_hash_each_line): Deal with missing final newline + after buffering necessary context lines. + +Sat Sep 1 16:32:32 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * io.c (find_identical_ends): ROBUST_OUTPUT_FORMAT test was backward. + +Thu Aug 23 17:17:20 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * diff3.c (WIFEXITED): Undef it if WEXITSTATUS is not defined. + * context.c (find_function): Don't try to return values. + +Wed Aug 22 11:54:39 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * diff.h (O_RDONLY): Define if not defined. + +Tue Aug 21 13:49:26 1990 Richard Stallman (rms at mole.ai.mit.edu) + + * Handle -L option. + * context.c (print_context_label): New function. + (print_context_header): Use that. + * diff.c (main): Recognize the option. + (usage): Updated. + * diff.h (file_label): New variable. + * diff3.c (main): Recognize -L instead of -t. + + * diff3.c (main): Support -m without other option. + + * diff3.c (WEXITSTATUS, WIFEXITED): Define whenever not defined. + + * diff3.c (bcopy, index, rindex): Delete definitions; not used. + (D_LINENUM, D_LINELEN): Likewise. + (struct diff_block): lengths includes newlines. + (struct diff3_block): Likewise. + (always_text, merge): New variables. + (read_diff): Return address of end, not size read. Calls changed. + Pass -a to diff if given to diff3. + current_chunk_size now an int. Detect error in `pipe'. + Check for incomplete line of output here. + (scan_diff_line): Don't make scan_ptr + 2 before knowing it is valid. + No need to check validity of diff output here. + Include newline in length of line. + (main): Compute rev_mapping here. Handle -a and -m. + Error message if excess -t operands. Error for incompatible options. + Error if `-' given more than once. + Fix error storing in tag_strings. + (output_diff3): REV_MAPPING is now an arg. Call changed. + Change syntax of "missing newline" message. + Expect length of line to include newline. + (output_diff3_edscript): Return just 0 or 1. + REV_MAPPING is now an arg. Call changed. + (output_diff3_merge): New function. + (process_diff): Better error message for bad diff format. + (fatal, perror_with_exit): Return status 2. + + * analyze.c (diff_2_files): Report missing newline in either + or both files, if not robust output style. + + * util.c (setup_output): Detect error from pipe. + No need to close stdin. + + * util.c (print_1_line): Change format of missing-newline msg. + Change if statements to switch. + + * io.c (slurp): Don't mention differences in final newline if -B. + + * io.c (binary_file_p): Use ISO char set as criterion, not ASCII. + + * io.c (find_identical_ends): Increase value of BEG0 by 1. + Other changes in backwards scan to avoid decrementing pointers + before start of array, and set LINES properly. + + * diff.h (ROBUST_OUTPUT_STYLE): New macro. + * io.c (find_identical_ends, find_and_hash_each_line): Use that macro. + + * diff.h (dup2): Don't define if XENIX. + + * diff.c (main): Check for write error at end. + + * context.c (find_function): Don't return a value. + Use argument FILE rather than global files. + + * analyze.c: Add external function declarations. + * analyze.c (build_script): Turn off explicit check for final newline. + + * analyze.c (discard_confusing_lines): Make integers unsigned. + +Tue Jul 31 21:37:16 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * io.c (find_and_hash_each_line): Correct the criterion + for leaving out the newline from the end of the line. + +Tue May 29 21:28:16 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * dir.c (diff_dirs): Free things only if nonzero. + +Mon Apr 16 18:31:05 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * diff.h (NDIR_IN_SYS): New macro controls location of ndir.h. + + * diff3.c (xmalloc, xrealloc): Don't die if size == 0 returns 0. + +Sun Mar 25 15:58:42 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * analyze.c (discard_confusing_lines): + `many' wasn't being used; use it. + Canceling provisionals near start of run must handle already + canceled provisionals. + Canceling subruns of provisionals was canceling last nonprovisional. + +Sat Mar 24 14:02:51 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * analyze.c (discard_confusing_lines): + Threshold for line occurring many times scales by square root + of total lines. + Within each run, cancel any long subrun of provisionals. + Don't update `provisional' while canceling provisionals. + In big outer loop, handle provisional and nonprovisional separately. + +Thu Mar 22 16:35:33 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * analyze.c (discard_confusing_lines): + The first loops to discard provisionals from ends failed to step. + In second such loops, keep discarding all consecutive provisionals. + Increase threshold for stopping discarding, and also check for + consecutive nondiscardables as separate threshold. + +Fri Mar 16 00:33:08 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * diff3.c (read_diff): Pass -- as first arg to diff. + + * diff3.c: Include wait.h or define equivalent macros. + (read_diff): Don't use stdio printing error in the inferior. + Remember the pid and wait for it. Report failing status. + Report failure of vfork. + +Sun Mar 11 17:10:32 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * diff3.c (main): Accept -t options and pass to output_diff3_edscript. + (usage): Mention -t. + (read_diff): Use vfork. + (vfork): Don't use it on Sparc. + + * diff.h (vfork): Don't use it on Sparc. + +Tue Mar 6 22:37:20 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * diff3.c (dup2): Don't define on Xenix. + + * Makefile: Comments for Xenix. + +Thu Mar 1 17:19:23 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * analyze.c (diff_2_files): `message' requires three args. + +Fri Feb 23 10:56:50 1990 David J. MacKenzie (djm at albert.ai.mit.edu) + + * diff.h, util.c, diff3.c: Change 'void *' to 'VOID *', with + VOID defined as void if __STDC__, char if not. + +Sun Feb 18 20:31:58 1990 David J. MacKenzie (djm at albert.ai.mit.edu) + + * Makefile: Add rules for getopt.c, getopt1.c, getopt.h. + + * getopt.c, getopt.h, getopt1.c: New files. + + * main.c (main, usage): Add long options. + + * analyze.c (shift_boundaries): Remove unused var 'j_end'. + +Thu Feb 8 02:43:16 1990 Jim Kingdon (kingdon at pogo.ai.mit.edu) + + * GNUmakefile: include ../Makerules before Makefile. + +Fri Feb 2 23:21:38 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * analyze.c (diff_2_files): If -B or -I, don't return 1 + if all changes were ignored. + +Wed Jan 24 20:43:57 1990 Richard Stallman (rms at albert.ai.mit.edu) + + * diff3.c (fatal): Output to stderr. + +Thu Jan 11 00:25:56 1990 David J. MacKenzie (djm at hobbes.ai.mit.edu) + + * diff.c (usage): Mention -v. + +Wed Jan 10 16:06:38 1990 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * diff3.c (output_diff3_edscript): Return number of overlaps. + (main): If have overlaps, exit with status 1. + +Sun Dec 24 10:29:20 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * io.c (find_equiv_class): Fix typo that came from changing init of B + to an assignment. + + * version.c: New file. + * diff.c (main): -v prints version number. + + * io.c (binary_file_p): Null char implies binary file. + +Fri Nov 17 23:44:55 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * util.c (print_1_line): Fix off by 1 error. + +Thu Nov 16 13:51:10 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * util.c (xcalloc): Function deleted. + + * io.c (slurp): Null-terminate the buffer. + + * io.c (read_files): Delete unused vars. + + * io.c (find_equiv_class): Don't index by N if too low. + + * dir.c (dir_sort): Delete the extra declaration of compare_names. + + * diff.h: Don't declare xcalloc. Declare some other functions. + + * analyze.c (shift_boundaries): + Test for END at end of range before indexing by it. + Fix misspelling of `preceding' in var names. + +Sat Nov 11 14:04:16 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * diff3.c (using_to_diff3_block): Delete unused vars. + (make_3way_diff, process_diff_control, read_diff, output_diff3): Likewise. + +Mon Nov 6 18:15:50 EST 1989 Jay Fenlason (hack@ai.mit.edu) + + * README Fix typo. + +Fri Nov 3 15:27:47 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * diff.c (usage): Mention -D. + + * ifdef.c (print_ifdef_hunk): Write comments on #else and #endif. + +Sun Oct 29 16:41:07 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * diff.c (compare_files): Don't fflush for identical files. + +Wed Oct 25 17:57:12 1989 Randy Smith (randy at apple-gunkies.ai.mit.edu) + + * diff3.c (using_to_diff3_block): When defaulting lines from + FILE0, only copy up to just under the *lowest* line mentioned + in the next diff. + + * diff3.c (fatal): Add \n to error messages. + +Wed Oct 25 15:05:49 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * Makefile (tapefiles): Add ChangeLog. + +Tue Oct 3 00:51:17 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * diff3.c (process_diff, create_diff3_block): Init ->next field. + +Fri Sep 29 08:16:45 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * util.c (line_cmp): Alter end char of line 2, not line 1. + +Wed Sep 20 00:12:37 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * Makefile (diff.tar): Expect ln to fail on some files; + copy them with cp. + +Mon Sep 18 02:54:29 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * Handle -D option: + * io.c (find_and_hash_each_line): Keep all lines of 1st file. + * diff.c (main): Handle -D option. + (compare_files): Reject -D if files spec'd are directories. + * analyze.c (diff_2_files): Handle OUTPUT_IFDEF case. + +Fri Sep 1 20:15:50 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * diff.c (option_list): Rename arg VECTOR as OPTIONVEC. + +Mon Aug 28 17:58:27 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * diff.c (compare_files): Clear entire inf[i].stat. + +Wed Aug 23 17:48:47 1989 Richard Stallman (rms at apple-gunkies.ai.mit.edu) + + * io.c (find_identical_ends): Sign was backward + determining where to bound the scan for the suffix. + +Wed Aug 16 12:49:16 1989 Richard Stallman (rms at hobbes.ai.mit.edu) + + * analyze.c (diff_2_files): If -q, treat all files as binary. + * diff.c (main): Detect -q, record in no_details_flag. + +Sun Jul 30 23:12:00 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * diff.c (usage): New function. + (main): Call it. + +Wed Jul 26 02:02:19 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * diff.c (main): Make -C imply -c. + +Thu Jul 20 17:57:51 1989 Chris Hanson (cph at kleph) + + * io.c (find_and_hash_each_line): Bug fix in context handling, + introduced by last change. + +Fri Jul 14 17:39:20 1989 Chris Hanson (cph at kleph) + + * analyze.c: To make RCS work correctly on files that don't + necessarily end in newline, introduce some changes that cause + diffs to be sensitive to missing final newline. Because + non-RCS modes don't want to be affected by these changes, they + are conditional on `output_style == OUTPUT_RCS'. + (diff_2_files) [OUTPUT_RCS]: Suppress the "File X missing + newline" message. + (build_script) [OUTPUT_RCS]: Cause the last line to compare as + different if exactly one of the files is missing its final + newline. + + * io.c (find_and_hash_each_line): Bug fix in + ignore_space_change mode. Change line's length to include the + newline. For OUTPUT_RCS, decrement last line's length if + there is no final newline. + (find_identical_ends) [OUTPUT_RCS]: If one of the files is + missing a final newline, make sure it's not included in either + the prefix or suffix. + + * util.c (print_1_line): Change line output routine to account + for line length including the newline. + +Tue Jun 27 02:35:28 1989 Roland McGrath (roland at hobbes.ai.mit.edu) + + * Makefile: Inserted $(archpfx) where appropriate. + +Wed May 17 20:18:43 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * diff3.c [USG]: Include fcntl.h. + + * diff.h [USG]: New compilation flags HAVE_NDIR, HAVE_DIRECT. + +Wed Apr 26 15:35:57 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * dir.c (diff_dirs): Two new args, NONEX1 and NONEX2, say to pretend + nonex dirs are empty. + (dir_sort): New arg NONEX, likewise. + * diff.c (compare_files): Pass those args. + Sometimes call diff_dirs if subdir exists in just one place. + +Wed Apr 12 01:10:27 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * io.c (find_identical_ends): Set END0 *after* last char + during backward scan for suffix. + +Sat Apr 8 15:49:49 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu) + + * diff3.c (using_to_diff3_block): Now find high marks in files 1 + and 2 through mapping off of the last difference instead of the + first. + + * diff3.c: Many trivial changes to spelling inside comments. + +Fri Feb 24 12:38:03 1989 Randall Smith (randy at gluteus.ai.mit.edu) + + * util.c, normal.c, io.c, ed.c, dir.c, diff.h, diff.c, context.c, + analyze.c, Makefile: Changed copyright header to conform with new + GNU General Public license. + * diff3.c: Changed copyright header to conform with new GNU + General Public license. + * COPYING: Made a hard link to /gp/rms/COPYING. + +Fri Feb 24 10:01:58 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * io.c (slurp): Leave 2 chars space at end of buffer, not one. + (find_identical_ends): Special case if either file is empty; + don't try to make a sentinel since could crash. + +Wed Feb 15 14:24:48 1989 Jay Fenlason (hack at apple-gunkies.ai.mit.edu) + + * diff3.c (message) Re-wrote routine to avoid using alloca() + +Wed Feb 15 06:19:14 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * io.c (find_identical_ends): Delete the variable `bytes'. + +Sun Feb 12 11:50:36 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * io.c (slurp): ->bufsize is nominal amount we have room for; + add room for sentinel when calling xmalloc or xrealloc. + + * io.c (find_identical_ends): Do need overrun check in finding suffix. + +Fri Feb 10 01:28:15 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * diff.c (main): -C now takes arg to specify context length. + Now -p to show C function name--Damned IEEE! + Fatal error if context length spec'd twice. + + * ed.c (print_ed_hunk): Now special treatment only for lines containing + precisely a dot and nothing else. Output `..', end the insert, + substitute that one line, then resume the insert if nec. + + * io.c (find_and_hash_lines): When backing up over starting context, + don't move past buffer-beg. + + * io.c (find_identical_ends): Use sentinels to make the loops faster. + If files are identical, skip the 2nd loop and return quickly. + (slurp): Leave 1 char extra space after each buffer. + + * analyze.c (diff_2_files): Mention difference in final newlines. + +Wed Jan 25 22:44:44 1989 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * dir.c (diff_dirs): Use * when calling fcn ptr variable. + +Sat Dec 17 14:12:06 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * Makefile: New vars INSTALL and LIBS used in some rules; + provide default defns plus commented-put defns for sysV. + +Thu Nov 17 16:42:53 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * dir.c (dir_sort): Open-trouble not fatal; just say # files is -1. + (diff_dirs): If dir_sort does that, give up and return 2. + + * diff.c (compare_files): Don't open directories. + Don't close them specially either. + Cross-propagate inf[i].dir_p sooner. + +Sun Nov 13 11:19:36 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) + + * diff.h: Declare index, rindex. + + * diff.c (compare_files): If comparing foodir with b/f, + use foodir/f, not foodir/b/f. + + * diff.c (compare_files): Don't print "are identical" msg for 2 dirs. + Status now 1 if one file is a dir and the other isn't, etc. + +Thu Nov 3 16:30:24 1988 Randall Smith (randy at gluteus.ai.mit.edu) + + * Makefile: Added a define for diff3 to define DIFF_PROGRAM. + + * util.c: Added hack to make sure that perror was not called with + a null pointer. + + * diff.c: Changed S_IFDIR to S_IFMT in masking type of file bits + out. + + * diff3.c: Included USG compatibility defines. + + * diff.h: Moved sys/file.h into #else USG section (not needed or + wanted on System V). + + * ed.c, analyze.c, context.c: Shortened names to 12 characters for + the sake of System V (too simple not to do). + + +Copyright (C) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1997, 1998, 1999, +2000, 2001, 2002 Free Software Foundation, Inc. + +This file is part of GNU Diffutils. + +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 they 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; see the file COPYING. If not, write to +the Free Software Foundation, Inc., 59 Temple Place - Suite 330, +Boston, MA 02111-1307, USA. diff --git a/src/apps/bin/diffutils-2.8.1/INSTALL b/src/apps/bin/diffutils-2.8.1/INSTALL new file mode 100644 index 0000000000..62ea076c1f --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/INSTALL @@ -0,0 +1,231 @@ +Copyright 1994, 1995, 1996, 1999, 2000, 2001 Free Software Foundation, +Inc. + + This file is free documentation; the Free Software Foundation gives +unlimited permission to copy, distribute and modify it. + +Basic Installation +================== + + These are generic installation instructions. + + The `configure' shell script attempts to guess correct values for +various system-dependent variables used during compilation. It uses +those values to create a `Makefile' in each directory of the package. +It may also create one or more `.h' files containing system-dependent +definitions. Finally, it creates a shell script `config.status' that +you can run in the future to recreate the current configuration, 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 only 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. If you're + using `csh' on an old version of System V, you might need to type + `sh ./configure' instead to prevent `csh' from trying to execute + `configure' itself. + + Running `configure' takes awhile. While running, it prints some + messages telling which features it is checking for. + + 2. Type `make' to compile the package. + + 3. Optionally, type `make check' to run any self-tests that come with + the package. + + 4. Type `make install' to install the programs and any data files and + documentation. + + 5. You can remove the program binaries and object files from the + source code directory by typing `make clean'. To also remove the + files that `configure' created (so you can compile the package for + a different kind of computer), type `make distclean'. There is + also a `make maintainer-clean' target, but that is intended mainly + for the package's developers. If you use it, you may have to get + all sorts of other programs in order to regenerate files that came + with the distribution. + +Compilers and Options +===================== + + Some systems require unusual options for compilation or linking that +the `configure' script does not know about. Run `./configure --help' +for details on some of the pertinent environment variables. + + You can give `configure' initial values for variables by setting +them in the environment. You can do that on the command line like this: + + ./configure CC=c89 CFLAGS=-O2 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 must use a version of `make' that +supports the `VPATH' variable, such as GNU `make'. `cd' to the +directory where you want the object files and executables to go and run +the `configure' script. `configure' automatically checks for the +source code in the directory that `configure' is in and in `..'. + + If you have to use a `make' that does not support the `VPATH' +variable, you have to compile the package for one architecture at a +time in the source code directory. After you have installed the +package for one architecture, use `make distclean' before reconfiguring +for another architecture. + +Installation Names +================== + + By default, `make install' will install the package's files in +`/usr/local/bin', `/usr/local/man', etc. You can specify an +installation prefix other than `/usr/local' by giving `configure' the +option `--prefix=PATH'. + + You can specify separate installation prefixes for +architecture-specific files and architecture-independent files. If you +give `configure' the option `--exec-prefix=PATH', the package will use +PATH as the prefix for installing programs and libraries. +Documentation and other data files will still use the regular prefix. + + In addition, if you use an unusual directory layout you can give +options like `--bindir=PATH' to specify different values for particular +kinds of files. Run `configure --help' for a list of the directories +you can set and what kinds of files go in them. + + If the package supports it, you can cause programs to be installed +with an extra prefix or suffix on their names by giving `configure' the +option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'. + +Optional Features +================= + + Some packages pay attention to `--enable-FEATURE' options to +`configure', where FEATURE indicates an optional part of the package. +They may also pay attention to `--with-PACKAGE' options, where PACKAGE +is something like `gnu-as' or `x' (for the X Window System). The +`README' should mention any `--enable-' and `--with-' options that the +package recognizes. + + For packages that use the X Window System, `configure' can usually +find the X include and library files automatically, but if it doesn't, +you can use the `configure' options `--x-includes=DIR' and +`--x-libraries=DIR' to specify their locations. + +Specifying the System Type +========================== + + There may be some features `configure' cannot figure out +automatically, but needs to determine by the type of host the package +will run on. Usually `configure' can figure that out, but if it prints +a message saying it cannot guess the host 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 host type. + + If you are _building_ compiler tools for cross-compiling, you should +use the `--target=TYPE' option 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'. In this case, you should also specify the +build platform with `--build=TYPE', because, in this case, it may not +be possible to guess the build platform (it sometimes involves +compiling and running simple test programs, and this can't be done if +the compiler is a cross compiler). + +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 + +will cause the specified gcc to be used as the C compiler (unless it is +overridden in the site shell script). + +`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/src/apps/bin/diffutils-2.8.1/INSTALLME b/src/apps/bin/diffutils-2.8.1/INSTALLME new file mode 100644 index 0000000000..eab41194c3 --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/INSTALLME @@ -0,0 +1,53 @@ +Installation instructions specific to GNU Diffutils + + Copyright (C) 2001, 2002 Free Software Foundation, Inc. + + This file is part of GNU Diffutils. + + 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; see the file COPYING. If not, write to + the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. + + +Please send comments and problem reports to . + +If you have a problem with internationalization, you might be able to +work around it as described in ABOUT-NLS by invoking `./configure +--disable-nls'. Many of the problems arise from dynamic linking +issues on non-GNU platforms (e.g. with the iconv library). Such +problems tend to be shared by other GNU applications on these +platforms, and can usually be fixed by carefully tweaking your non-GNU +installation. If you have an older version of libiconv, please +upgrade to the latest one, preferably libiconv-1.8 or newer. +(libiconv-1.8 is not yet available as of this writing, but it should +be out soon.) If the problem seems isolated to diffutils, though, +please report a bug. + +This program requires a Standard C compiler (C89 or later); if you +have an older K&R compiler, please install GCC first. + +If you make changes to the source code, you may need recent test +versions of GNU build tools to regenerate the intermediate files. The +following versions were used to generate the intermediate files in +this distribution: + +* GNU Autoconf 2.53 + +* GNU Automake 1.6 + +* GNU gettext 0.11.1 + +* GNU help2man 1.27 + +* GNU texinfo 4.2 diff --git a/src/apps/bin/diffutils-2.8.1/Jamfile b/src/apps/bin/diffutils-2.8.1/Jamfile new file mode 100644 index 0000000000..1215ea7bbe --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/Jamfile @@ -0,0 +1,4 @@ +SubDir OBOS_TOP src apps bin diffutils-2.8.1 ; + +SubInclude OBOS_TOP src apps bin diffutils-2.8.1 lib ; +SubInclude OBOS_TOP src apps bin diffutils-2.8.1 src ; diff --git a/src/apps/bin/diffutils-2.8.1/Makefile b/src/apps/bin/diffutils-2.8.1/Makefile new file mode 100644 index 0000000000..9b2d5e631f --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/Makefile @@ -0,0 +1,455 @@ +# Makefile.in generated by automake 1.6 from Makefile.am. +# Makefile. Generated from Makefile.in by configure. + +# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002 +# Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + + + +# Main Automakefile for GNU diffutils. + +# Copyright (C) 2001, 2002 Free Software Foundation, Inc. +SHELL = /bin/sh + +srcdir = . +top_srcdir = . + +prefix = /usr/local +exec_prefix = ${prefix} + +bindir = ${exec_prefix}/bin +sbindir = ${exec_prefix}/sbin +libexecdir = ${exec_prefix}/libexec +datadir = ${prefix}/share +sysconfdir = ${prefix}/etc +sharedstatedir = ${prefix}/com +localstatedir = ${prefix}/var +libdir = ${exec_prefix}/lib +infodir = ${prefix}/info +mandir = ${prefix}/man +includedir = ${prefix}/include +oldincludedir = /usr/include +pkgdatadir = $(datadir)/diffutils +pkglibdir = $(libdir)/diffutils +pkgincludedir = $(includedir)/diffutils +top_builddir = . + +ACLOCAL = ${SHELL} /boot/home/Development/current/src/apps/bin/diffutils-2.8.1/config/missing --run aclocal-1.6 +AUTOCONF = ${SHELL} /boot/home/Development/current/src/apps/bin/diffutils-2.8.1/config/missing --run autoconf +AUTOMAKE = ${SHELL} /boot/home/Development/current/src/apps/bin/diffutils-2.8.1/config/missing --run automake-1.6 +AUTOHEADER = ${SHELL} /boot/home/Development/current/src/apps/bin/diffutils-2.8.1/config/missing --run autoheader + +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = /bin/install -c +INSTALL_PROGRAM = ${INSTALL} +INSTALL_DATA = ${INSTALL} -m 644 +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +INSTALL_SCRIPT = ${INSTALL} +INSTALL_HEADER = $(INSTALL_DATA) +transform = s,x,x, +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +host_alias = +host_triplet = i586-pc-beos + +EXEEXT = +OBJEXT = o +PATH_SEPARATOR = : +AMTAR = ${SHELL} /boot/home/Development/current/src/apps/bin/diffutils-2.8.1/config/missing --run tar +AWK = gawk +BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@ +CATOBJEXT = @CATOBJEXT@ +CC = gcc +CPP = gcc -E +DATADIRNAME = @DATADIRNAME@ +DEPDIR = .deps +GENCAT = @GENCAT@ +GLIBC21 = @GLIBC21@ +GMSGFMT = : +HAVE_LIB = @HAVE_LIB@ +HELP2MAN = ${SHELL} /boot/home/Development/current/src/apps/bin/diffutils-2.8.1/config/missing --run help2man +INSTALL_STRIP_PROGRAM = ${SHELL} $(install_sh) -c -s +INSTOBJEXT = @INSTOBJEXT@ +INTLBISON = @INTLBISON@ +INTLLIBS = +INTLOBJS = @INTLOBJS@ +INTL_LIBTOOL_SUFFIX_PREFIX = @INTL_LIBTOOL_SUFFIX_PREFIX@ +LIB = @LIB@ +LIBICONV = +LIBINTL = +LIB_CLOCK_GETTIME = +LTLIB = @LTLIB@ +LTLIBICONV = +LTLIBINTL = +MKINSTALLDIRS = config/mkinstalldirs +PACKAGE = diffutils +POSUB = +PR_PROGRAM = /bin/pr +RANLIB = ranlib +STRIP = +U = +USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@ +USE_NLS = no +VERSION = 2.8.1 +am__include = include +am__quote = +install_sh = /boot/home/Development/current/src/apps/bin/diffutils-2.8.1/config/install-sh + +EXTRA_DIST = config/config.rpath exgettext INSTALLME +SUBDIRS = doc lib m4 ms src man po + +ACLOCAL_AMFLAGS = -I m4 +subdir = . +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs +CONFIG_HEADER = config.h +CONFIG_CLEAN_FILES = +DIST_SOURCES = + +RECURSIVE_TARGETS = info-recursive dvi-recursive install-info-recursive \ + uninstall-info-recursive all-recursive install-data-recursive \ + install-exec-recursive installdirs-recursive install-recursive \ + uninstall-recursive check-recursive installcheck-recursive +DIST_COMMON = README ABOUT-NLS AUTHORS COPYING ChangeLog INSTALL \ + Makefile.am Makefile.in NEWS THANKS aclocal.m4 config.hin \ + config/config.guess config/config.rpath config/config.sub \ + config/depcomp config/install-sh config/mdate-sh config/missing \ + config/mkinstalldirs config/texinfo.tex configure configure.ac +DIST_SUBDIRS = $(SUBDIRS) +all: config.h + $(MAKE) $(AM_MAKEFLAGS) all-recursive + +.SUFFIXES: +$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.ac $(ACLOCAL_M4) + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnits Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe) + +$(top_builddir)/config.status: $(srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + $(SHELL) ./config.status --recheck +$(srcdir)/configure: $(srcdir)/configure.ac $(ACLOCAL_M4) $(CONFIGURE_DEPENDENCIES) + cd $(srcdir) && $(AUTOCONF) + +$(ACLOCAL_M4): configure.ac m4/c-bs-a.m4 m4/c-stack.m4 m4/check-decl.m4 m4/codeset.m4 m4/dos.m4 m4/error.m4 m4/fnmatch.m4 m4/gettext.m4 m4/glibc21.m4 m4/gnu-source.m4 m4/iconv.m4 m4/inttypes.m4 m4/jm-glibc-io.m4 m4/lcmessage.m4 m4/lib-ld.m4 m4/lib-link.m4 m4/lib-prefix.m4 m4/longlong.m4 m4/malloc.m4 m4/mbrtowc.m4 m4/mbstate_t.m4 m4/prereq.m4 m4/progtest.m4 m4/realloc.m4 m4/regex.m4 m4/setmode.m4 m4/st_mtim.m4 m4/stdbool.m4 m4/strftime.m4 m4/vararrays.m4 m4/xstrtoumax.m4 + cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) + +config.h: stamp-h1 + @if test ! -f $@; then \ + rm -f stamp-h1; \ + $(MAKE) stamp-h1; \ + else :; fi + +stamp-h1: $(srcdir)/config.hin $(top_builddir)/config.status + @rm -f stamp-h1 + cd $(top_builddir) && $(SHELL) ./config.status config.h + +$(srcdir)/config.hin: $(top_srcdir)/configure.ac $(ACLOCAL_M4) + cd $(top_srcdir) && $(AUTOHEADER) + touch $(srcdir)/config.hin + +distclean-hdr: + -rm -f config.h +uninstall-info-am: + +# This directory's subdirectories are mostly independent; you can cd +# into them and run `make' without going through this Makefile. +# To change the values of `make' variables: instead of editing Makefiles, +# (1) if the variable is set in `config.status', edit `config.status' +# (which will cause the Makefiles to be regenerated when you run `make'); +# (2) otherwise, pass the desired values on the `make' command line. +$(RECURSIVE_TARGETS): + @set fnord $(MAKEFLAGS); amf=$$2; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +mostlyclean-recursive clean-recursive distclean-recursive \ +maintainer-clean-recursive: + @set fnord $(MAKEFLAGS); amf=$$2; \ + dot_seen=no; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + rev=''; for subdir in $$list; do \ + if test "$$subdir" = "."; then :; else \ + rev="$$subdir $$rev"; \ + fi; \ + done; \ + rev="$$rev ."; \ + target=`echo $@ | sed s/-recursive//`; \ + for subdir in $$rev; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ + done && test -z "$$fail" +tags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + done + +ETAGS = etags +ETAGSFLAGS = + +tags: TAGS + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + mkid -fID $$unique + +TAGS: tags-recursive $(HEADERS) $(SOURCES) config.hin $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -f $$subdir/TAGS && tags="$$tags -i $$here/$$subdir/TAGS"; \ + fi; \ + done; \ + list='$(SOURCES) $(HEADERS) config.hin $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + test -z "$(ETAGS_ARGS)$$tags$$unique" \ + || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique + +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 +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) + +top_distdir = . +distdir = $(PACKAGE)-$(VERSION) + +am__remove_distdir = \ + { test ! -d $(distdir) \ + || { find $(distdir) -type d ! -perm -200 -exec chmod u+w {} ';' \ + && rm -fr $(distdir); }; } + +GZIP_ENV = --best +distcleancheck_listfiles = find . -type f -print + +distdir: $(DISTFILES) + @if sed 15q $(srcdir)/NEWS | fgrep -e "$(VERSION)" >/dev/null; \ + then :; else \ + echo "NEWS not updated; not releasing" 1>&2; \ + exit 1; \ + fi + $(am__remove_distdir) + mkdir $(distdir) + $(mkinstalldirs) $(distdir)/config $(distdir)/po + @for file in $(DISTFILES); do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + dir="/$$dir"; \ + $(mkinstalldirs) "$(distdir)$$dir"; \ + else \ + dir=''; \ + fi; \ + if test -d $$d/$$file; then \ + cp -pR $$d/$$file $(distdir)$$dir \ + || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -d $(distdir)/$$subdir \ + || mkdir $(distdir)/$$subdir \ + || exit 1; \ + (cd $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$(top_distdir)" \ + distdir=../$(distdir)/$$subdir \ + distdir) \ + || exit 1; \ + fi; \ + done + -find $(distdir) -type d ! -perm -777 -exec chmod a+rwx {} \; -o \ + ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ + ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ + ! -type d ! -perm -444 -exec $(SHELL) $(install_sh) -c -m a+r {} {} \; \ + || chmod -R a+r $(distdir) +dist-gzip: distdir + $(AMTAR) chof - $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz + $(am__remove_distdir) + +dist dist-all: distdir + $(AMTAR) chof - $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz + $(am__remove_distdir) + +# This target untars the dist file and tries a VPATH configuration. Then +# it guarantees that the distribution is self-contained by making another +# tarfile. +distcheck: dist + $(am__remove_distdir) + GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(AMTAR) xf - + chmod -R a-w $(distdir); chmod a+w $(distdir) + mkdir $(distdir)/=build + mkdir $(distdir)/=inst + chmod a-w $(distdir) + dc_install_base=`$(am__cd) $(distdir)/=inst && pwd` \ + && 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 \ + && (test `find $$dc_install_base -type f -print | wc -l` -le 1 \ + || { echo "ERROR: files left after uninstall:" ; \ + find $$dc_install_base -type f -print ; \ + exit 1; } >&2 ) \ + && $(MAKE) $(AM_MAKEFLAGS) dist-gzip \ + && rm -f $(distdir).tar.gz \ + && $(MAKE) $(AM_MAKEFLAGS) distcleancheck + $(am__remove_distdir) + @echo "$(distdir).tar.gz is ready for distribution" | \ + sed 'h;s/./=/g;p;x;p;x' +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 after distclean:" ; \ + $(distcleancheck_listfiles) ; \ + exit 1; } >&2 +check-am: all-am +check: check-recursive +all-am: Makefile config.h +installdirs: installdirs-recursive +installdirs-am: + +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -rm -f Makefile $(CONFIG_CLEAN_FILES) stamp-h stamp-h[0-9]* + +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 config.status config.cache config.log +distclean-am: clean-am distclean-generic distclean-hdr distclean-tags + +dvi: dvi-recursive + +dvi-am: + +info: info-recursive + +info-am: + +install-data-am: + +install-exec-am: + +install-info: install-info-recursive + +install-man: + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-generic + +uninstall-am: uninstall-info-am + +uninstall-info: uninstall-info-recursive + +.PHONY: $(RECURSIVE_TARGETS) GTAGS all all-am check check-am clean \ + clean-generic clean-recursive dist dist-all dist-gzip distcheck \ + distclean distclean-generic distclean-hdr distclean-recursive \ + distclean-tags distcleancheck distdir dvi dvi-am dvi-recursive \ + info info-am info-recursive install install-am install-data \ + install-data-am install-data-recursive install-exec \ + install-exec-am install-exec-recursive install-info \ + install-info-am install-info-recursive install-man \ + install-recursive install-strip installcheck installcheck-am \ + installdirs installdirs-am installdirs-recursive \ + maintainer-clean maintainer-clean-generic \ + maintainer-clean-recursive mostlyclean mostlyclean-generic \ + mostlyclean-recursive tags tags-recursive uninstall \ + uninstall-am uninstall-info-am uninstall-info-recursive \ + uninstall-recursive + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/src/apps/bin/diffutils-2.8.1/Makefile.am b/src/apps/bin/diffutils-2.8.1/Makefile.am new file mode 100644 index 0000000000..a579b1d5aa --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/Makefile.am @@ -0,0 +1,23 @@ +# Main Automakefile for GNU diffutils. + +# Copyright (C) 2001, 2002 Free Software Foundation, Inc. + +## This program is free software; you can redistribute it and/or modify +## it under the terms of the GNU General Public License as published by +## the Free Software Foundation; either version 2, or (at your option) +## any later version. + +## This program is distributed in the hope that it will be useful, +## but WITHOUT ANY WARRANTY; without even the implied warranty of +## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +## GNU General Public License for more details. + +## You should have received a copy of the GNU General Public License +## along with this program; if not, write to the Free Software +## Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +## 02111-1307, USA. + +EXTRA_DIST = config/config.rpath exgettext INSTALLME +SUBDIRS = doc lib m4 ms src man po + +ACLOCAL_AMFLAGS = -I m4 diff --git a/src/apps/bin/diffutils-2.8.1/Makefile.in b/src/apps/bin/diffutils-2.8.1/Makefile.in new file mode 100644 index 0000000000..75304fd68a --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/Makefile.in @@ -0,0 +1,455 @@ +# Makefile.in generated by automake 1.6 from Makefile.am. +# @configure_input@ + +# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002 +# Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# Main Automakefile for GNU diffutils. + +# Copyright (C) 2001, 2002 Free Software Foundation, Inc. +SHELL = @SHELL@ + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +prefix = @prefix@ +exec_prefix = @exec_prefix@ + +bindir = @bindir@ +sbindir = @sbindir@ +libexecdir = @libexecdir@ +datadir = @datadir@ +sysconfdir = @sysconfdir@ +sharedstatedir = @sharedstatedir@ +localstatedir = @localstatedir@ +libdir = @libdir@ +infodir = @infodir@ +mandir = @mandir@ +includedir = @includedir@ +oldincludedir = /usr/include +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +top_builddir = . + +ACLOCAL = @ACLOCAL@ +AUTOCONF = @AUTOCONF@ +AUTOMAKE = @AUTOMAKE@ +AUTOHEADER = @AUTOHEADER@ + +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = @INSTALL@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_DATA = @INSTALL_DATA@ +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_HEADER = $(INSTALL_DATA) +transform = @program_transform_name@ +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +host_alias = @host_alias@ +host_triplet = @host@ + +EXEEXT = @EXEEXT@ +OBJEXT = @OBJEXT@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +AMTAR = @AMTAR@ +AWK = @AWK@ +BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@ +CATOBJEXT = @CATOBJEXT@ +CC = @CC@ +CPP = @CPP@ +DATADIRNAME = @DATADIRNAME@ +DEPDIR = @DEPDIR@ +GENCAT = @GENCAT@ +GLIBC21 = @GLIBC21@ +GMSGFMT = @GMSGFMT@ +HAVE_LIB = @HAVE_LIB@ +HELP2MAN = @HELP2MAN@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INSTOBJEXT = @INSTOBJEXT@ +INTLBISON = @INTLBISON@ +INTLLIBS = @INTLLIBS@ +INTLOBJS = @INTLOBJS@ +INTL_LIBTOOL_SUFFIX_PREFIX = @INTL_LIBTOOL_SUFFIX_PREFIX@ +LIB = @LIB@ +LIBICONV = @LIBICONV@ +LIBINTL = @LIBINTL@ +LIB_CLOCK_GETTIME = @LIB_CLOCK_GETTIME@ +LTLIB = @LTLIB@ +LTLIBICONV = @LTLIBICONV@ +LTLIBINTL = @LTLIBINTL@ +MKINSTALLDIRS = @MKINSTALLDIRS@ +PACKAGE = @PACKAGE@ +POSUB = @POSUB@ +PR_PROGRAM = @PR_PROGRAM@ +RANLIB = @RANLIB@ +STRIP = @STRIP@ +U = @U@ +USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@ +USE_NLS = @USE_NLS@ +VERSION = @VERSION@ +am__include = @am__include@ +am__quote = @am__quote@ +install_sh = @install_sh@ + +EXTRA_DIST = config/config.rpath exgettext INSTALLME +SUBDIRS = doc lib m4 ms src man po + +ACLOCAL_AMFLAGS = -I m4 +subdir = . +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs +CONFIG_HEADER = config.h +CONFIG_CLEAN_FILES = +DIST_SOURCES = + +RECURSIVE_TARGETS = info-recursive dvi-recursive install-info-recursive \ + uninstall-info-recursive all-recursive install-data-recursive \ + install-exec-recursive installdirs-recursive install-recursive \ + uninstall-recursive check-recursive installcheck-recursive +DIST_COMMON = README ABOUT-NLS AUTHORS COPYING ChangeLog INSTALL \ + Makefile.am Makefile.in NEWS THANKS aclocal.m4 config.hin \ + config/config.guess config/config.rpath config/config.sub \ + config/depcomp config/install-sh config/mdate-sh config/missing \ + config/mkinstalldirs config/texinfo.tex configure configure.ac +DIST_SUBDIRS = $(SUBDIRS) +all: config.h + $(MAKE) $(AM_MAKEFLAGS) all-recursive + +.SUFFIXES: +$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.ac $(ACLOCAL_M4) + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnits Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe) + +$(top_builddir)/config.status: $(srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + $(SHELL) ./config.status --recheck +$(srcdir)/configure: $(srcdir)/configure.ac $(ACLOCAL_M4) $(CONFIGURE_DEPENDENCIES) + cd $(srcdir) && $(AUTOCONF) + +$(ACLOCAL_M4): configure.ac m4/c-bs-a.m4 m4/c-stack.m4 m4/check-decl.m4 m4/codeset.m4 m4/dos.m4 m4/error.m4 m4/fnmatch.m4 m4/gettext.m4 m4/glibc21.m4 m4/gnu-source.m4 m4/iconv.m4 m4/inttypes.m4 m4/jm-glibc-io.m4 m4/lcmessage.m4 m4/lib-ld.m4 m4/lib-link.m4 m4/lib-prefix.m4 m4/longlong.m4 m4/malloc.m4 m4/mbrtowc.m4 m4/mbstate_t.m4 m4/prereq.m4 m4/progtest.m4 m4/realloc.m4 m4/regex.m4 m4/setmode.m4 m4/st_mtim.m4 m4/stdbool.m4 m4/strftime.m4 m4/vararrays.m4 m4/xstrtoumax.m4 + cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) + +config.h: stamp-h1 + @if test ! -f $@; then \ + rm -f stamp-h1; \ + $(MAKE) stamp-h1; \ + else :; fi + +stamp-h1: $(srcdir)/config.hin $(top_builddir)/config.status + @rm -f stamp-h1 + cd $(top_builddir) && $(SHELL) ./config.status config.h + +$(srcdir)/config.hin: $(top_srcdir)/configure.ac $(ACLOCAL_M4) + cd $(top_srcdir) && $(AUTOHEADER) + touch $(srcdir)/config.hin + +distclean-hdr: + -rm -f config.h +uninstall-info-am: + +# This directory's subdirectories are mostly independent; you can cd +# into them and run `make' without going through this Makefile. +# To change the values of `make' variables: instead of editing Makefiles, +# (1) if the variable is set in `config.status', edit `config.status' +# (which will cause the Makefiles to be regenerated when you run `make'); +# (2) otherwise, pass the desired values on the `make' command line. +$(RECURSIVE_TARGETS): + @set fnord $(MAKEFLAGS); amf=$$2; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +mostlyclean-recursive clean-recursive distclean-recursive \ +maintainer-clean-recursive: + @set fnord $(MAKEFLAGS); amf=$$2; \ + dot_seen=no; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + rev=''; for subdir in $$list; do \ + if test "$$subdir" = "."; then :; else \ + rev="$$subdir $$rev"; \ + fi; \ + done; \ + rev="$$rev ."; \ + target=`echo $@ | sed s/-recursive//`; \ + for subdir in $$rev; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ + done && test -z "$$fail" +tags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + done + +ETAGS = etags +ETAGSFLAGS = + +tags: TAGS + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + mkid -fID $$unique + +TAGS: tags-recursive $(HEADERS) $(SOURCES) config.hin $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -f $$subdir/TAGS && tags="$$tags -i $$here/$$subdir/TAGS"; \ + fi; \ + done; \ + list='$(SOURCES) $(HEADERS) config.hin $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + test -z "$(ETAGS_ARGS)$$tags$$unique" \ + || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique + +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 +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) + +top_distdir = . +distdir = $(PACKAGE)-$(VERSION) + +am__remove_distdir = \ + { test ! -d $(distdir) \ + || { find $(distdir) -type d ! -perm -200 -exec chmod u+w {} ';' \ + && rm -fr $(distdir); }; } + +GZIP_ENV = --best +distcleancheck_listfiles = find . -type f -print + +distdir: $(DISTFILES) + @if sed 15q $(srcdir)/NEWS | fgrep -e "$(VERSION)" >/dev/null; \ + then :; else \ + echo "NEWS not updated; not releasing" 1>&2; \ + exit 1; \ + fi + $(am__remove_distdir) + mkdir $(distdir) + $(mkinstalldirs) $(distdir)/config $(distdir)/po + @for file in $(DISTFILES); do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + dir="/$$dir"; \ + $(mkinstalldirs) "$(distdir)$$dir"; \ + else \ + dir=''; \ + fi; \ + if test -d $$d/$$file; then \ + cp -pR $$d/$$file $(distdir)$$dir \ + || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -d $(distdir)/$$subdir \ + || mkdir $(distdir)/$$subdir \ + || exit 1; \ + (cd $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$(top_distdir)" \ + distdir=../$(distdir)/$$subdir \ + distdir) \ + || exit 1; \ + fi; \ + done + -find $(distdir) -type d ! -perm -777 -exec chmod a+rwx {} \; -o \ + ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ + ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ + ! -type d ! -perm -444 -exec $(SHELL) $(install_sh) -c -m a+r {} {} \; \ + || chmod -R a+r $(distdir) +dist-gzip: distdir + $(AMTAR) chof - $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz + $(am__remove_distdir) + +dist dist-all: distdir + $(AMTAR) chof - $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz + $(am__remove_distdir) + +# This target untars the dist file and tries a VPATH configuration. Then +# it guarantees that the distribution is self-contained by making another +# tarfile. +distcheck: dist + $(am__remove_distdir) + GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(AMTAR) xf - + chmod -R a-w $(distdir); chmod a+w $(distdir) + mkdir $(distdir)/=build + mkdir $(distdir)/=inst + chmod a-w $(distdir) + dc_install_base=`$(am__cd) $(distdir)/=inst && pwd` \ + && 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 \ + && (test `find $$dc_install_base -type f -print | wc -l` -le 1 \ + || { echo "ERROR: files left after uninstall:" ; \ + find $$dc_install_base -type f -print ; \ + exit 1; } >&2 ) \ + && $(MAKE) $(AM_MAKEFLAGS) dist-gzip \ + && rm -f $(distdir).tar.gz \ + && $(MAKE) $(AM_MAKEFLAGS) distcleancheck + $(am__remove_distdir) + @echo "$(distdir).tar.gz is ready for distribution" | \ + sed 'h;s/./=/g;p;x;p;x' +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 after distclean:" ; \ + $(distcleancheck_listfiles) ; \ + exit 1; } >&2 +check-am: all-am +check: check-recursive +all-am: Makefile config.h +installdirs: installdirs-recursive +installdirs-am: + +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -rm -f Makefile $(CONFIG_CLEAN_FILES) stamp-h stamp-h[0-9]* + +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 config.status config.cache config.log +distclean-am: clean-am distclean-generic distclean-hdr distclean-tags + +dvi: dvi-recursive + +dvi-am: + +info: info-recursive + +info-am: + +install-data-am: + +install-exec-am: + +install-info: install-info-recursive + +install-man: + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-generic + +uninstall-am: uninstall-info-am + +uninstall-info: uninstall-info-recursive + +.PHONY: $(RECURSIVE_TARGETS) GTAGS all all-am check check-am clean \ + clean-generic clean-recursive dist dist-all dist-gzip distcheck \ + distclean distclean-generic distclean-hdr distclean-recursive \ + distclean-tags distcleancheck distdir dvi dvi-am dvi-recursive \ + info info-am info-recursive install install-am install-data \ + install-data-am install-data-recursive install-exec \ + install-exec-am install-exec-recursive install-info \ + install-info-am install-info-recursive install-man \ + install-recursive install-strip installcheck installcheck-am \ + installdirs installdirs-am installdirs-recursive \ + maintainer-clean maintainer-clean-generic \ + maintainer-clean-recursive mostlyclean mostlyclean-generic \ + mostlyclean-recursive tags tags-recursive uninstall \ + uninstall-am uninstall-info-am uninstall-info-recursive \ + uninstall-recursive + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/src/apps/bin/diffutils-2.8.1/NEWS b/src/apps/bin/diffutils-2.8.1/NEWS new file mode 100644 index 0000000000..348ac82e57 --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/NEWS @@ -0,0 +1,202 @@ +User-visible changes in version 2.8.1: + +* Documentation fixes. + +User-visible changes in version 2.8: + +* cmp and diff now conform to POSIX 1003.1-2001 (IEEE Std 1003.1-2001) + if the underlying system conforms to POSIX and if the _POSIX2_VERSION + environment variable is set to 200112. Conformance removes support + for `diff -NUM', where NUM is a number. Use -C NUM or -U NUM instead. +* cmp now supports trailing operands SKIP1 and SKIP2, like BSD cmp. +* cmp -i or --ignore-initial now accepts SKIP1:SKIP2 option value. +* New cmp option: -n or --bytes. +* cmp's old -c or --print-chars option has been renamed; + use -b or --print-bytes instead. +* cmp now outputs "byte" rather than "char" outside the POSIX locale. +* cmp -l's index column width now adjusts to fit larger (or smaller) files. +* cmp -l -s and cmp -s -l are not allowed. Use cmp -s or cmp -l instead. +* diff uses ISO 8601 style time stamps for output times (e.g. "2001-11-23 + 16:44:36.875702460 -0800") unless in the C or POSIX locale and the + -c style is specified. +* diff's -I and -F options use the regexp syntax of grep, not of Emacs. +* diff now accepts multiple context arguments, and uses their maximum value. +* New diff and sdiff options: + -E --ignore-tab-expansion + --strip-trailing-cr +* New diff options: + --from-file=FILE, --to-file=FILE + --ignore-file-name-case + --no-ignore-file-name-case +* New diff3 and sdiff option: + --diff-program=PROGRAM +* The following diff options are still accepted, but are no longer documented. + They may be withdrawn in future releases. + -h (omit; it has no effect) + -H (use --speed-large-files instead) + -L (use --label instead) + -P (use --unidirectional-new-file instead) + --inhibit-hunk-merge (omit; it has no effect) +* Recursive diffs now sort file names according to the LC_COLLATE locale + category if possible, instead of using native byte comparison. +* Diff printf specs can now use the "0" and "'" flags. +* The new sdiff interactive command `ed' precedes each version with a header. +* On 64-bit hosts, files larger than 2 GB can be compared. +* Some internationalization support has been added, but multibyte locales + are still not completely supported yet. +* Some diagnostics have been reworded slightly for consistency. + Also, `diff -D FOO' now outputs `/* ! FOO */' instead of `/* not FOO */'. +* The `patch' part of the manual now describes `patch' version 2.5.4. +* Man pages are now distributed and installed. +* There is support for DJGPP; see the 'ms' subdirectory and the files + m4/dos.m4 and */setmode.*. + + +User-visible changes in version 2.7: + +* New diff option: --binary (useful only on non-POSIX hosts) +* diff -b and -w now ignore line incompleteness; -B no longer does this. +* cmp -c now uses locale to decide which output characters to quote. +* Help and version messages are reorganized. + + +User-visible changes in version 2.6: + +* New cmp, diff, diff3, sdiff option: --help +* A new heuristic for diff greatly reduces the time needed to compare + large input files that contain many differences. +* Partly as a result, GNU diff's output is not exactly the same as before. + Usually it is a bit smaller, but sometimes it is a bit larger. + + +User-visible changes in version 2.5: + +* New cmp option: -v --version + + +User-visible changes in version 2.4: + +* New cmp option: --ignore-initial=BYTES +* New diff3 option: -T --initial-tab +* New diff option: --line-format=FORMAT +* New diff group format specifications: + [eflmnEFLMN] + A printf spec followed by one of the following letters + causes the integer corresponding to that letter to be + printed according to the printf specification. + E.g. `%5df' prints the number of the first line in the + group in the old file using the "%5d" format. + e: line number just before the group in old file; equals f - 1 + f: first line number in group in the old file + l: last line number in group in the old file + m: line number just after the group in old file; equals l + 1 + n: number of lines in group in the old file; equals l - f + 1 + E, F, L, M, N: likewise, for lines in the new file + %(A=B?T:E) + If A equals B then T else E. A and B are each either a decimal + constant or a single letter interpreted as above. T and E are + arbitrary format strings. This format spec is equivalent to T if + A's value equals B's; otherwise it is equivalent to E. For + example, `%(N=0?no:%dN) line%(N=1?:s)' is equivalent to `no lines' + if N (the number of lines in the group in the the new file) is 0, + to `1 line' if N is 1, and to `%dN lines' otherwise. + %c'C' + where C is a single character, stands for the character C. C may not + be a backslash or an apostrophe. E.g. %c':' stands for a colon. + %c'\O' + where O is a string of 1, 2, or 3 octal digits, stands for the + character with octal code O. E.g. %c'\0' stands for a null character. +* New diff line format specifications: + n + The line number, printed with . + E.g. `%5dn' prints the line number with a "%5d" format. + %c'C' + %c'\O' + The character C, or with octal code O, as above. +* Supported s have the same meaning as with printf, but must + match the extended regular expression %-*[0-9]*(\.[0-9]*)?[doxX]. +* The format spec %0 introduced in version 2.1 has been removed, since it + is incompatible with printf specs like %02d. To represent a null char, + use %c'\0' instead. +* cmp and diff now conform to POSIX 1003.2-1992 (ISO/IEC 9945-2:1993) + if the underlying system conforms to POSIX: + - Some messages' wordings are changed in minor ways. + - ``White space'' is now whatever C's `isspace' says it is. + - When comparing directories, if `diff' finds a file that is not a regular + file or a directory, it reports the file's type instead of diffing it. + (As usual, it follows symbolic links first.) + - When signaled, sdiff exits with the signal's status, not with status 2. +* Now portable to hosts where int, long, pointer, etc. are not all the same + size. +* `cmp - -' now works like `diff - -'. + + +User-visible changes in version 2.3: + +* New diff option: --horizon-lines=lines + + +User-visible changes in version 2.1: + +* New diff options: + --{old,new,unchanged}-line-format='format' + --{old,new,unchanged,changed}-group-format='format' + -U +* New diff3 option: + -A --show-all +* diff3 -m now defaults to -A, not -E. +* diff3 now takes up to three -L or --label options, not just two. + If just two options are given, they refer to the first two input files, + not the first and third input files. +* sdiff and diff -y handle incomplete lines. + + +User-visible changes in version 2.0: + +* Add sdiff and cmp programs. +* Add Texinfo documentation. +* Add configure script. +* Improve diff performance. +* New diff options: +-x --exclude +-X --exclude-from +-P --unidirectional-new-file +-W --width +-y --side-by-side +--left-column +--sdiff-merge-assist +--suppress-common-lines +* diff options renamed: +--label renamed from --file-label +--forward-ed renamed from --reversed-ed +--paginate renamed from --print +--entire-new-file renamed from --entire-new-files +--new-file renamed from --new-files +--all-text removed +* New diff3 options: +-v --version +* Add long-named equivalents for other diff3 options. +* diff options -F (--show-function-line) and -I (--ignore-matching-lines) + can now be given more than once. + + + +Copyright (C) 1993, 1994, 1998, 2001, 2002 Free Software Foundation, +Inc. + +This file is part of GNU Diffutils. + +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 they 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; see the file COPYING. If not, write to +the Free Software Foundation, Inc., 59 Temple Place - Suite 330, +Boston, MA 02111-1307, USA. diff --git a/src/apps/bin/diffutils-2.8.1/README b/src/apps/bin/diffutils-2.8.1/README new file mode 100644 index 0000000000..275a8cfb56 --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/README @@ -0,0 +1,38 @@ +README for GNU DIFF + + Copyright (C) 1992, 1998, 2001, 2002 Free Software Foundation, Inc. + + This file is part of GNU Diffutils. + + 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; see the file COPYING. If not, write to + the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. + + +This directory contains the GNU diff, diff3, sdiff, and cmp utilities. +Their features are a superset of the Unix features and they are +significantly faster. + +Please see the file COPYING for copying conditions. + +Please see the file doc/diff.texi (or doc/diff.info) for documentation +that can be printed with TeX, or read with the `info' program or with +Emacs's `M-x info'. There are no man pages. + +See the file INSTALL for generic compilation and installation instructions, +and the file INSTALLME for instructions specific to GNU diff. + +See the file ABOUT-NLS for notes about translations. + +Please report bugs to . diff --git a/src/apps/bin/diffutils-2.8.1/THANKS b/src/apps/bin/diffutils-2.8.1/THANKS new file mode 100644 index 0000000000..4fc388c2c9 --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/THANKS @@ -0,0 +1,22 @@ +Thanks to all the following for their contributions to GNU diffutils: + +Thomas Bushnell +Wayne Davison +Ulrich Drepper +Paul Eggert +Jay Fenlason +John Gilmore +Torbjorn Granlund +Mike Haertel +Bruno Haible +Chris Hanson +Jim Kingdon +Tom Lord +David J. MacKenzie +Roland McGrath +Jim Meyering +Eugene W. Myers +Randy Smith +Richard Stallman +Leonard H. Tower Jr. +Eli Zaretskii diff --git a/src/apps/bin/diffutils-2.8.1/aclocal.m4 b/src/apps/bin/diffutils-2.8.1/aclocal.m4 new file mode 100644 index 0000000000..6028802234 --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/aclocal.m4 @@ -0,0 +1,3633 @@ +# aclocal.m4 generated automatically by aclocal 1.6 -*- Autoconf -*- + +# Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002 +# Free Software Foundation, Inc. +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +# Like AC_CONFIG_HEADER, but automatically create stamp file. -*- Autoconf -*- + +# Copyright 1996, 1997, 2000, 2001 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + +AC_PREREQ([2.52]) + +# serial 6 + +# 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. We must strip everything past the first ":", +# and everything past the last "/". + +# _AM_DIRNAME(PATH) +# ----------------- +# Like AS_DIRNAME, only do it during macro expansion +AC_DEFUN([_AM_DIRNAME], + [m4_if(regexp([$1], [^.*[^/]//*[^/][^/]*/*$]), -1, + m4_if(regexp([$1], [^//\([^/]\|$\)]), -1, + m4_if(regexp([$1], [^/.*]), -1, + [.], + patsubst([$1], [^\(/\).*], [\1])), + patsubst([$1], [^\(//\)\([^/].*\|$\)], [\1])), + patsubst([$1], [^\(.*[^/]\)//*[^/][^/]*/*$], [\1]))[]dnl +])# _AM_DIRNAME + + +# The stamp files are numbered to have different names. +# We could number them on a directory basis, but that's additional +# complications, let's have a unique counter. +m4_define([_AM_STAMP_Count], [0]) + + +# _AM_STAMP(HEADER) +# ----------------- +# The name of the stamp file for HEADER. +AC_DEFUN([_AM_STAMP], +[m4_define([_AM_STAMP_Count], m4_incr(_AM_STAMP_Count))dnl +AS_ESCAPE(_AM_DIRNAME(patsubst([$1], + [:.*])))/stamp-h[]_AM_STAMP_Count]) + + +# _AM_CONFIG_HEADER(HEADER[:SOURCES], COMMANDS, INIT-COMMANDS) +# ------------------------------------------------------------ +# We used to try to get a real timestamp in stamp-h. But the fear is that +# that will cause unnecessary cvs conflicts. +AC_DEFUN([_AM_CONFIG_HEADER], +[# Add the stamp file to the list of files AC keeps track of, +# along with our hook. +AC_CONFIG_HEADERS([$1], + [# update the timestamp +echo 'timestamp for $1' >"_AM_STAMP([$1])" +$2], + [$3]) +])# _AM_CONFIG_HEADER + + +# AM_CONFIG_HEADER(HEADER[:SOURCES]..., COMMANDS, INIT-COMMANDS) +# -------------------------------------------------------------- +AC_DEFUN([AM_CONFIG_HEADER], +[AC_FOREACH([_AM_File], [$1], [_AM_CONFIG_HEADER(_AM_File, [$2], [$3])]) +])# AM_CONFIG_HEADER + +# Do all the work for Automake. -*- Autoconf -*- + +# This macro actually does too much some checks are only needed if +# your package does certain things. But this isn't really a big deal. + +# Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002 +# Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + +# serial 8 + +# There are a few dirty hacks below to avoid letting `AC_PROG_CC' be +# written in clear, in which case automake, when reading aclocal.m4, +# will think it sees a *use*, and therefore will trigger all it's +# C support machinery. Also note that it means that autoscan, seeing +# CC etc. in the Makefile, will ask for an AC_PROG_CC use... + + +AC_PREREQ([2.52]) + +# Autoconf 2.50 wants to disallow AM_ names. We explicitly allow +# the ones we care about. +m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl + +# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) +# AM_INIT_AUTOMAKE([OPTIONS]) +# ----------------------------------------------- +# The call with PACKAGE and VERSION arguments is the old style +# call (pre autoconf-2.50), which is being phased out. PACKAGE +# and VERSION should now be passed to AC_INIT and removed from +# the call to AM_INIT_AUTOMAKE. +# We support both call styles for the transition. After +# the next Automake release, Autoconf can make the AC_INIT +# arguments mandatory, and then we can depend on a new Autoconf +# release and drop the old call support. +AC_DEFUN([AM_INIT_AUTOMAKE], +[AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl + AC_REQUIRE([AC_PROG_INSTALL])dnl +# test to see if srcdir already configured +if test "`cd $srcdir && pwd`" != "`pwd`" && + test -f $srcdir/config.status; then + AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) +fi + +# Define the identity of the package. +dnl Distinguish between old-style and new-style calls. +m4_ifval([$2], +[m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl + AC_SUBST([PACKAGE], [$1])dnl + AC_SUBST([VERSION], [$2])], +[_AM_SET_OPTIONS([$1])dnl + AC_SUBST([PACKAGE], [AC_PACKAGE_TARNAME])dnl + AC_SUBST([VERSION], [AC_PACKAGE_VERSION])])dnl + +_AM_IF_OPTION([no-define],, +[AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package]) + AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl + +# Some tools Automake needs. +AC_REQUIRE([AM_SANITY_CHECK])dnl +AC_REQUIRE([AC_ARG_PROGRAM])dnl +AM_MISSING_PROG(ACLOCAL, "aclocal-${am__api_version}") +AM_MISSING_PROG(AUTOCONF, autoconf) +AM_MISSING_PROG(AUTOMAKE, "automake-${am__api_version}") +AM_MISSING_PROG(AUTOHEADER, autoheader) +AM_MISSING_PROG(MAKEINFO, makeinfo) +AM_MISSING_PROG(AMTAR, tar) +AM_PROG_INSTALL_SH +AM_PROG_INSTALL_STRIP +# We need awk for the "check" target. The system "awk" is bad on +# some platforms. +AC_REQUIRE([AC_PROG_AWK])dnl +AC_REQUIRE([AC_PROG_MAKE_SET])dnl + +_AM_IF_OPTION([no-dependencies],, +[AC_PROVIDE_IFELSE([AC_PROG_][CC], + [_AM_DEPENDENCIES(CC)], + [define([AC_PROG_][CC], + defn([AC_PROG_][CC])[_AM_DEPENDENCIES(CC)])])dnl +AC_PROVIDE_IFELSE([AC_PROG_][CXX], + [_AM_DEPENDENCIES(CXX)], + [define([AC_PROG_][CXX], + defn([AC_PROG_][CXX])[_AM_DEPENDENCIES(CXX)])])dnl +]) +]) + +# Copyright 2002 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + +# AM_AUTOMAKE_VERSION(VERSION) +# ---------------------------- +# Automake X.Y traces this macro to ensure aclocal.m4 has been +# generated from the m4 files accompanying Automake X.Y. +AC_DEFUN([AM_AUTOMAKE_VERSION],[am__api_version="1.6"]) + +# AM_SET_CURRENT_AUTOMAKE_VERSION +# ------------------------------- +# Call AM_AUTOMAKE_VERSION so it can be traced. +# This function is AC_REQUIREd by AC_INIT_AUTOMAKE. +AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], + [AM_AUTOMAKE_VERSION([1.6])]) + +# Helper functions for option handling. -*- Autoconf -*- + +# Copyright 2001, 2002 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + +# serial 2 + +# _AM_MANGLE_OPTION(NAME) +# ----------------------- +AC_DEFUN([_AM_MANGLE_OPTION], +[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) + +# _AM_SET_OPTION(NAME) +# ------------------------------ +# Set option NAME. Presently that only means defining a flag for this option. +AC_DEFUN([_AM_SET_OPTION], +[m4_define(_AM_MANGLE_OPTION([$1]), 1)]) + +# _AM_SET_OPTIONS(OPTIONS) +# ---------------------------------- +# OPTIONS is a space-separated list of Automake options. +AC_DEFUN([_AM_SET_OPTIONS], +[AC_FOREACH([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) + +# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET]) +# ------------------------------------------- +# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. +AC_DEFUN([_AM_IF_OPTION], +[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) + +# +# Check to make sure that the build environment is sane. +# + +# Copyright 1996, 1997, 2000, 2001 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + +# serial 3 + +# AM_SANITY_CHECK +# --------------- +AC_DEFUN([AM_SANITY_CHECK], +[AC_MSG_CHECKING([whether build environment is sane]) +# Just in case +sleep 1 +echo timestamp > conftest.file +# Do `set' in a subshell so we don't clobber the current shell's +# arguments. Must try -L first in case configure is actually a +# symlink; some systems play weird games with the mod time of symlinks +# (eg FreeBSD returns the mod time of the symlink's containing +# directory). +if ( + set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null` + if test "$[*]" = "X"; then + # -L didn't work. + set X `ls -t $srcdir/configure conftest.file` + fi + rm -f conftest.file + if test "$[*]" != "X $srcdir/configure conftest.file" \ + && test "$[*]" != "X conftest.file $srcdir/configure"; then + + # If neither matched, then we have a broken ls. This can happen + # if, for instance, CONFIG_SHELL is bash and it inherits a + # broken ls alias from the environment. This has actually + # happened. Such a system could not be considered "sane". + AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken +alias in your environment]) + fi + + test "$[2]" = conftest.file + ) +then + # Ok. + : +else + AC_MSG_ERROR([newly created file is older than distributed files! +Check your system clock]) +fi +AC_MSG_RESULT(yes)]) + +# -*- Autoconf -*- + + +# Copyright 1997, 1999, 2000, 2001 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + +# serial 3 + +# AM_MISSING_PROG(NAME, PROGRAM) +# ------------------------------ +AC_DEFUN([AM_MISSING_PROG], +[AC_REQUIRE([AM_MISSING_HAS_RUN]) +$1=${$1-"${am_missing_run}$2"} +AC_SUBST($1)]) + + +# AM_MISSING_HAS_RUN +# ------------------ +# Define MISSING if not defined so far and test if it supports --run. +# If it does, set am_missing_run to use it, otherwise, to nothing. +AC_DEFUN([AM_MISSING_HAS_RUN], +[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing" +# Use eval to expand $SHELL +if eval "$MISSING --run true"; then + am_missing_run="$MISSING --run " +else + am_missing_run= + AC_MSG_WARN([`missing' script is too old or missing]) +fi +]) + +# AM_AUX_DIR_EXPAND + +# Copyright 2001 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + +# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets +# $ac_aux_dir to `$srcdir/foo'. In other projects, it is set to +# `$srcdir', `$srcdir/..', or `$srcdir/../..'. +# +# Of course, Automake must honor this variable whenever it calls a +# tool from the auxiliary directory. The problem is that $srcdir (and +# therefore $ac_aux_dir as well) can be either absolute or relative, +# depending on how configure is run. This is pretty annoying, since +# it makes $ac_aux_dir quite unusable in subdirectories: in the top +# source directory, any form will work fine, but in subdirectories a +# relative path needs to be adjusted first. +# +# $ac_aux_dir/missing +# fails when called from a subdirectory if $ac_aux_dir is relative +# $top_srcdir/$ac_aux_dir/missing +# fails if $ac_aux_dir is absolute, +# fails when called from a subdirectory in a VPATH build with +# a relative $ac_aux_dir +# +# The reason of the latter failure is that $top_srcdir and $ac_aux_dir +# are both prefixed by $srcdir. In an in-source build this is usually +# harmless because $srcdir is `.', but things will broke when you +# start a VPATH build or use an absolute $srcdir. +# +# So we could use something similar to $top_srcdir/$ac_aux_dir/missing, +# iff we strip the leading $srcdir from $ac_aux_dir. That would be: +# am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"` +# and then we would define $MISSING as +# MISSING="\${SHELL} $am_aux_dir/missing" +# This will work as long as MISSING is not called from configure, because +# unfortunately $(top_srcdir) has no meaning in configure. +# However there are other variables, like CC, which are often used in +# configure, and could therefore not use this "fixed" $ac_aux_dir. +# +# Another solution, used here, is to always expand $ac_aux_dir to an +# absolute PATH. The drawback is that using absolute paths prevent a +# configured tree to be moved without reconfiguration. + +# Rely on autoconf to set up CDPATH properly. +AC_PREREQ([2.50]) + +AC_DEFUN([AM_AUX_DIR_EXPAND], [ +# expand $ac_aux_dir to an absolute path +am_aux_dir=`cd $ac_aux_dir && pwd` +]) + +# AM_PROG_INSTALL_SH +# ------------------ +# Define $install_sh. + +# Copyright 2001 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + +AC_DEFUN([AM_PROG_INSTALL_SH], +[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +install_sh=${install_sh-"$am_aux_dir/install-sh"} +AC_SUBST(install_sh)]) + +# AM_PROG_INSTALL_STRIP + +# Copyright 2001 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + +# One issue with vendor `install' (even GNU) is that you can't +# specify the program used to strip binaries. This is especially +# annoying in cross-compiling environments, where the build's strip +# is unlikely to handle the host's binaries. +# Fortunately install-sh will honor a STRIPPROG variable, so we +# always use install-sh in `make install-strip', and initialize +# STRIPPROG with the value of the STRIP variable (set by the user). +AC_DEFUN([AM_PROG_INSTALL_STRIP], +[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl +# Installed binaries are usually stripped using `strip' when the user +# run `make install-strip'. However `strip' might not be the right +# tool to use in cross-compilation environments, therefore Automake +# will honor the `STRIP' environment variable to overrule this program. +dnl Don't test for $cross_compiling = yes, because it might be `maybe'. +if test "$cross_compiling" != no; then + AC_CHECK_TOOL([STRIP], [strip], :) +fi +INSTALL_STRIP_PROGRAM="\${SHELL} \$(install_sh) -c -s" +AC_SUBST([INSTALL_STRIP_PROGRAM])]) + +# serial 4 -*- Autoconf -*- + +# Copyright 1999, 2000, 2001 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + + +# There are a few dirty hacks below to avoid letting `AC_PROG_CC' be +# written in clear, in which case automake, when reading aclocal.m4, +# will think it sees a *use*, and therefore will trigger all it's +# C support machinery. Also note that it means that autoscan, seeing +# CC etc. in the Makefile, will ask for an AC_PROG_CC use... + + + +# _AM_DEPENDENCIES(NAME) +# ---------------------- +# See how the compiler implements dependency checking. +# NAME is "CC", "CXX", "GCJ", or "OBJC". +# We try a few techniques and use that to set a single cache variable. +# +# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was +# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular +# dependency, and given that the user is not expected to run this macro, +# just rely on AC_PROG_CC. +AC_DEFUN([_AM_DEPENDENCIES], +[AC_REQUIRE([AM_SET_DEPDIR])dnl +AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl +AC_REQUIRE([AM_MAKE_INCLUDE])dnl +AC_REQUIRE([AM_DEP_TRACK])dnl + +ifelse([$1], CC, [depcc="$CC" am_compiler_list=], + [$1], CXX, [depcc="$CXX" am_compiler_list=], + [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'] + [$1], GCJ, [depcc="$GCJ" am_compiler_list='gcc3 gcc'], + [depcc="$$1" am_compiler_list=]) + +AC_CACHE_CHECK([dependency style of $depcc], + [am_cv_$1_dependencies_compiler_type], +[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named `D' -- because `-MD' means `put the output + # in D'. + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + + am_cv_$1_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` + fi + for depmode in $am_compiler_list; do + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + echo '#include "conftest.h"' > conftest.c + echo 'int i;' > conftest.h + echo "${am__include} ${am__quote}conftest.Po${am__quote}" > confmf + + case $depmode in + nosideeffect) + # after this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + none) break ;; + esac + # We check with `-c' and `-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle `-M -o', and we need to detect this. + if depmode=$depmode \ + source=conftest.c object=conftest.o \ + depfile=conftest.Po tmpdepfile=conftest.TPo \ + $SHELL ./depcomp $depcc -c conftest.c -o conftest.o >/dev/null 2>&1 && + grep conftest.h conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + am_cv_$1_dependencies_compiler_type=$depmode + break + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_$1_dependencies_compiler_type=none +fi +]) +AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) +]) + + +# AM_SET_DEPDIR +# ------------- +# Choose a directory name for dependency files. +# This macro is AC_REQUIREd in _AM_DEPENDENCIES +AC_DEFUN([AM_SET_DEPDIR], +[rm -f .deps 2>/dev/null +mkdir .deps 2>/dev/null +if test -d .deps; then + DEPDIR=.deps +else + # MS-DOS does not allow filenames that begin with a dot. + DEPDIR=_deps +fi +rmdir .deps 2>/dev/null +AC_SUBST([DEPDIR]) +]) + + +# AM_DEP_TRACK +# ------------ +AC_DEFUN([AM_DEP_TRACK], +[AC_ARG_ENABLE(dependency-tracking, +[ --disable-dependency-tracking Speeds up one-time builds + --enable-dependency-tracking Do not reject slow dependency extractors]) +if test "x$enable_dependency_tracking" != xno; then + am_depcomp="$ac_aux_dir/depcomp" + AMDEPBACKSLASH='\' +fi +AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) +AC_SUBST([AMDEPBACKSLASH]) +]) + +# Generate code to set up dependency tracking. -*- Autoconf -*- + +# Copyright 1999, 2000, 2001, 2002 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + +#serial 2 + +# _AM_OUTPUT_DEPENDENCY_COMMANDS +# ------------------------------ +AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], +[for mf in $CONFIG_FILES; do + # Strip MF so we end up with the name of the file. + mf=`echo "$mf" | sed -e 's/:.*$//'` + if (sed 1q $mf | fgrep 'generated by automake') > /dev/null 2>&1; then + dirpart=`AS_DIRNAME("$mf")` + else + continue + fi + grep '^DEP_FILES *= *[[^ @%:@]]' < "$mf" > /dev/null || continue + # Extract the definition of DEP_FILES from the Makefile without + # running `make'. + DEPDIR=`sed -n -e '/^DEPDIR = / s///p' < "$mf"` + test -z "$DEPDIR" && continue + # When using ansi2knr, U may be empty or an underscore; expand it + U=`sed -n -e '/^U = / s///p' < "$mf"` + test -d "$dirpart/$DEPDIR" || mkdir "$dirpart/$DEPDIR" + # We invoke sed twice because it is the simplest approach to + # changing $(DEPDIR) to its actual value in the expansion. + for file in `sed -n -e ' + /^DEP_FILES = .*\\\\$/ { + s/^DEP_FILES = // + :loop + s/\\\\$// + p + n + /\\\\$/ b loop + p + } + /^DEP_FILES = / s/^DEP_FILES = //p' < "$mf" | \ + sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do + # Make sure the directory exists. + test -f "$dirpart/$file" && continue + fdir=`AS_DIRNAME(["$file"])` + AS_MKDIR_P([$dirpart/$fdir]) + # echo "creating $dirpart/$file" + echo '# dummy' > "$dirpart/$file" + done +done +])# _AM_OUTPUT_DEPENDENCY_COMMANDS + + +# AM_OUTPUT_DEPENDENCY_COMMANDS +# ----------------------------- +# This macro should only be invoked once -- use via AC_REQUIRE. +# +# This code is only required when automatic dependency tracking +# is enabled. FIXME. This creates each `.P' file that we will +# need in order to bootstrap the dependency handling code. +AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], +[AC_CONFIG_COMMANDS([depfiles], + [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], + [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"]) +]) + +# Copyright 2001 Free Software Foundation, Inc. -*- Autoconf -*- + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + +# serial 2 + +# AM_MAKE_INCLUDE() +# ----------------- +# Check to see how make treats includes. +AC_DEFUN([AM_MAKE_INCLUDE], +[am_make=${MAKE-make} +cat > confinc << 'END' +doit: + @echo done +END +# If we don't find an include directive, just comment out the code. +AC_MSG_CHECKING([for style of include used by $am_make]) +am__include="#" +am__quote= +_am_result=none +# First try GNU make style include. +echo "include confinc" > confmf +# We grep out `Entering directory' and `Leaving directory' +# messages which can occur if `w' ends up in MAKEFLAGS. +# In particular we don't look at `^make:' because GNU make might +# be invoked under some other name (usually "gmake"), in which +# case it prints its new name instead of `make'. +if test "`$am_make -s -f confmf 2> /dev/null | fgrep -v 'ing directory'`" = "done"; then + am__include=include + am__quote= + _am_result=GNU +fi +# Now try BSD make style include. +if test "$am__include" = "#"; then + echo '.include "confinc"' > confmf + if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then + am__include=.include + am__quote="\"" + _am_result=BSD + fi +fi +AC_SUBST(am__include) +AC_SUBST(am__quote) +AC_MSG_RESULT($_am_result) +rm -f confinc confmf +]) + +# AM_CONDITIONAL -*- Autoconf -*- + +# Copyright 1997, 2000, 2001 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + +# serial 5 + +AC_PREREQ(2.52) + +# AM_CONDITIONAL(NAME, SHELL-CONDITION) +# ------------------------------------- +# Define a conditional. +AC_DEFUN([AM_CONDITIONAL], +[ifelse([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], + [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl +AC_SUBST([$1_TRUE]) +AC_SUBST([$1_FALSE]) +if $2; then + $1_TRUE= + $1_FALSE='#' +else + $1_TRUE='#' + $1_FALSE= +fi +AC_CONFIG_COMMANDS_PRE( +[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then + AC_MSG_ERROR([conditional \"$1\" was never defined. +Usually this means the macro was only invoked conditionally.]) +fi])]) + +# isc-posix.m4 serial 1 (gettext-0.10.40) +dnl Copyright (C) 1995-2002 Free Software Foundation, Inc. +dnl This file is free software, distributed under the terms of the GNU +dnl General Public License. As a special exception to the GNU General +dnl Public License, this file may be distributed as part of a program +dnl that contains a configuration script generated by Autoconf, under +dnl the same distribution terms as the rest of that program. + +# This test replaces the one in autoconf. +# Currently this macro should have the same name as the autoconf macro +# because gettext's gettext.m4 (distributed in the automake package) +# still uses it. Otherwise, the use in gettext.m4 makes autoheader +# give these diagnostics: +# configure.in:556: AC_TRY_COMPILE was called before AC_ISC_POSIX +# configure.in:556: AC_TRY_RUN was called before AC_ISC_POSIX + +undefine([AC_ISC_POSIX]) + +AC_DEFUN([AC_ISC_POSIX], + [ + dnl This test replaces the obsolescent AC_ISC_POSIX kludge. + AC_CHECK_LIB(cposix, strerror, [LIBS="$LIBS -lcposix"]) + ] +) + + +# Copyright 1996, 1997, 1999, 2000, 2001 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + +# serial 1 + +# @defmac AC_PROG_CC_STDC +# @maindex PROG_CC_STDC +# @ovindex CC +# If the C compiler in not in ANSI C mode by default, try to add an option +# to output variable @code{CC} to make it so. This macro tries various +# options that select ANSI C on some system or another. It considers the +# compiler to be in ANSI C mode if it handles function prototypes correctly. +# +# If you use this macro, you should check after calling it whether the C +# compiler has been set to accept ANSI C; if not, the shell variable +# @code{am_cv_prog_cc_stdc} is set to @samp{no}. If you wrote your source +# code in ANSI C, you can make an un-ANSIfied copy of it by using the +# program @code{ansi2knr}, which comes with Ghostscript. +# @end defmac + +AC_DEFUN([AM_PROG_CC_STDC], +[AC_REQUIRE([AC_PROG_CC]) +AC_BEFORE([$0], [AC_C_INLINE]) +AC_BEFORE([$0], [AC_C_CONST]) +dnl Force this before AC_PROG_CPP. Some cpp's, eg on HPUX, require +dnl a magic option to avoid problems with ANSI preprocessor commands +dnl like #elif. +dnl FIXME: can't do this because then AC_AIX won't work due to a +dnl circular dependency. +dnl AC_BEFORE([$0], [AC_PROG_CPP]) +AC_MSG_CHECKING([for ${CC-cc} option to accept ANSI C]) +AC_CACHE_VAL(am_cv_prog_cc_stdc, +[am_cv_prog_cc_stdc=no +ac_save_CC="$CC" +# Don't try gcc -ansi; that turns off useful extensions and +# breaks some systems' header files. +# AIX -qlanglvl=ansi +# Ultrix and OSF/1 -std1 +# HP-UX 10.20 and later -Ae +# HP-UX older versions -Aa -D_HPUX_SOURCE +# SVR4 -Xc -D__EXTENSIONS__ +for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +do + CC="$ac_save_CC $ac_arg" + AC_TRY_COMPILE( +[#include +#include +#include +#include +/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ +struct buf { int x; }; +FILE * (*rcsopen) (struct buf *, struct stat *, int); +static char *e (p, i) + char **p; + int i; +{ + return p[i]; +} +static char *f (char * (*g) (char **, int), char **p, ...) +{ + char *s; + va_list v; + va_start (v,p); + s = g (p, va_arg (v,int)); + va_end (v); + return s; +} +int test (int i, double x); +struct s1 {int (*f) (int a);}; +struct s2 {int (*f) (double a);}; +int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); +int argc; +char **argv; +], [ +return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; +], +[am_cv_prog_cc_stdc="$ac_arg"; break]) +done +CC="$ac_save_CC" +]) +if test -z "$am_cv_prog_cc_stdc"; then + AC_MSG_RESULT([none needed]) +else + AC_MSG_RESULT([$am_cv_prog_cc_stdc]) +fi +case "x$am_cv_prog_cc_stdc" in + x|xno) ;; + *) CC="$CC $am_cv_prog_cc_stdc" ;; +esac +]) + +#serial 3 +# Make sure _GNU_SOURCE is defined where necessary: as early as possible +# for configure-time tests, as well as for every source file that includes +# config.h. + +# From Jim Meyering. + +AC_DEFUN([AC__GNU_SOURCE], +[ + # Make sure that _GNU_SOURCE is defined for all subsequent + # configure-time compile tests. + # This definition must be emitted (into confdefs.h) before any + # test that involves compilation. + cat >>confdefs.h <<\EOF +#ifndef _GNU_SOURCE +# define _GNU_SOURCE +#endif +EOF + + # Emit this code into config.h.in. + # The ifndef is to avoid redefinition warnings. + AH_VERBATIM([_GNU_SOURCE], [#ifndef _GNU_SOURCE +# define _GNU_SOURCE +#endif]) +]) + +# Check for variable-length arrays. + +#serial 1 + +# From Paul Eggert + +# Copyright (C) 2001 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + +AC_DEFUN([AC_C_VARARRAYS], +[ + AC_CACHE_CHECK([for variable-length arrays], + ac_cv_c_vararrays, + [AC_TRY_COMPILE( + [], + [static int x; char a[++x]; a[sizeof a - 1] = 0; return a[0];], + ac_cv_c_vararrays=yes, + ac_cv_c_vararrays=no)]) + if test $ac_cv_c_vararrays = yes; then + AC_DEFINE(HAVE_C_VARARRAYS, 1, + [Define to 1 if C supports variable-length arrays.]) + fi +]) + +# Check for stdbool.h that conforms to C99. + +# Copyright (C) 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. + +AC_DEFUN([AC_HEADER_STDBOOL], + [AC_CACHE_CHECK([for stdbool.h that conforms to C99], + [ac_cv_header_stdbool_h], + [AC_TRY_COMPILE( + [ + #include + #ifndef bool + "error: bool is not defined" + #endif + #ifndef false + "error: false is not defined" + #endif + #ifndef true + "error: false is not defined" + #endif + #ifndef __bool_true_false_are_defined + "error: __bool_true_false_are_defined is not defined" + #endif + + struct s { _Bool s: 1; _Bool t; } s; + + char a[true == 1 ? 1 : -1]; + char b[false == 0 ? 1 : -1]; + char c[__bool_true_false_are_defined == 1 ? 1 : -1]; + char d[(bool) -0.5 == true ? 1 : -1]; + char e[(bool) &s == true ? 1 : -1]; + char f[(_Bool) -0.0 == false ? 1 : -1]; + char g[true]; + char h[sizeof (_Bool)]; + char i[sizeof s.t]; + ], + [ return !a + !b + !c + !d + !e + !f + !g + !h + !i; ], + [ac_cv_header_stdbool_h=yes], + [ac_cv_header_stdbool_h=no])]) + if test $ac_cv_header_stdbool_h = yes; then + AC_DEFINE(HAVE_STDBOOL_H, 1, [Define to 1 if stdbool.h conforms to C99.]) + fi]) + +#serial 6 + +dnl From Paul Eggert. + +AC_PREREQ(2.52) + +# Define intmax_t to long or long long if doesn't define. + +AC_DEFUN([jm_AC_TYPE_INTMAX_T], +[ + AC_REQUIRE([jm_AC_TYPE_LONG_LONG]) + AC_CHECK_TYPE(intmax_t, , + [test $ac_cv_type_long_long = yes \ + && ac_type='long long' \ + || ac_type='long' + AC_DEFINE_UNQUOTED(intmax_t, $ac_type, + [Define to widest signed type if doesn't define.])]) +]) + +# Define uintmax_t to unsigned long or unsigned long long +# if doesn't define. + +AC_DEFUN([jm_AC_TYPE_UINTMAX_T], +[ + AC_REQUIRE([jm_AC_TYPE_UNSIGNED_LONG_LONG]) + AC_CHECK_TYPE(uintmax_t, , + [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 widest unsigned type if doesn't define.])]) +]) + +#serial 2 + +dnl From Paul Eggert. + +# Define HAVE_LONG_LONG if 'long long' works. + +AC_DEFUN([jm_AC_TYPE_LONG_LONG], +[ + AC_CACHE_CHECK([for long long], ac_cv_type_long_long, + [AC_TRY_LINK([long long ll = 1; 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 +]) + +# Define HAVE_UNSIGNED_LONG_LONG if 'unsigned long long' works. + +AC_DEFUN([jm_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 = 1; 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 +]) + +# gettext.m4 serial 13 (gettext-0.11.1) +dnl Copyright (C) 1995-2002 Free Software Foundation, Inc. +dnl This file is free software, distributed under the terms of the GNU +dnl General Public License. As a special exception to the GNU General +dnl Public License, this file may be distributed as part of a program +dnl that contains a configuration script generated by Autoconf, under +dnl the same distribution terms as the rest of that program. +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-2002. + +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. +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], , + [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]) + + 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) + + 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-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 +extern int _nl_msg_cat_cntr; +extern int *_nl_domain_bindings;], + [bindtextdomain ("", ""); +return (int) gettext ("")]ifelse([$2], [need-ngettext], [ + (int) 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 +extern int _nl_msg_cat_cntr; +extern int *_nl_domain_bindings; +extern +#ifdef __cplusplus +"C" +#endif +const char *_nl_expand_alias ();], + [bindtextdomain ("", ""); +return (int) gettext ("")]ifelse([$2], [need-ngettext], [ + (int) ngettext ("", "", 0)], [])[ + _nl_msg_cat_cntr + *_nl_domain_bindings + *_nl_expand_alias (0)], + 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 +extern int _nl_msg_cat_cntr; +extern int *_nl_domain_bindings; +extern +#ifdef __cplusplus +"C" +#endif +const char *_nl_expand_alias ();], + [bindtextdomain ("", ""); +return (int) gettext ("")]ifelse([$2], [need-ngettext], [ + (int) ngettext ("", "", 0)], [])[ + _nl_msg_cat_cntr + *_nl_domain_bindings + *_nl_expand_alias (0)], + [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; }; 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. + INTLOBJS="\$(GETTOBJS)" + 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 + + 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 "$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 + + 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; 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) + AC_SUBST(INTLOBJS) + + 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 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 po subdirectory, +dnl except for USE_NLS. +AC_DEFUN([AM_PO_SUBDIRS], +[ + AC_REQUIRE([AC_PROG_MAKE_SET])dnl + AC_REQUIRE([AC_PROG_INSTALL])dnl + AC_REQUIRE([AM_MKINSTALLDIRS])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 >/dev/null 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.11 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= /dev/null >/dev/null 2>&1 && + (if $ac_dir/$ac_word --omit-header --copyright-holder= /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 >/dev/null 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= /dev/null >/dev/null 2>&1 && + (if $XGETTEXT --omit-header --copyright-holder= /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 + 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" + # ALL_LINGUAS, POFILES, GMOFILES, UPDATEPOFILES, DUMMYPOFILES 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 "$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" "$ac_given_srcdir/$ac_dir/LINGUAS"` + # Hide the ALL_LINGUAS assigment from automake. + eval 'ALL_LINGUAS''=$ALL_LINGUAS_' + fi + case "$ac_given_srcdir" in + .) srcdirpre= ;; + *) srcdirpre='$(srcdir)/' ;; + esac + POFILES= + GMOFILES= + UPDATEPOFILES= + DUMMYPOFILES= + for lang in $ALL_LINGUAS; do + POFILES="$POFILES $srcdirpre$lang.po" + GMOFILES="$GMOFILES $srcdirpre$lang.gmo" + UPDATEPOFILES="$UPDATEPOFILES $lang.po-update" + DUMMYPOFILES="$DUMMYPOFILES $lang.nop" + 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|@GMOFILES@|$GMOFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@CATALOGS@|$CATALOGS|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, GMOFILES, UPDATEPOFILES, DUMMYPOFILES, CATALOGS. But hide it + # from automake. + eval 'ALL_LINGUAS''="$ALL_LINGUAS"' + # Capture the value of LINGUAS because we need it to compute CATALOGS. + LINGUAS="${LINGUAS-%UNSET%}" + ]) +]) + + +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([AC_PROG_RANLIB])dnl + AC_REQUIRE([AC_ISC_POSIX])dnl + AC_REQUIRE([AC_HEADER_STDC])dnl + AC_REQUIRE([AC_C_CONST])dnl + AC_REQUIRE([AC_C_INLINE])dnl + AC_REQUIRE([AC_TYPE_OFF_T])dnl + AC_REQUIRE([AC_TYPE_SIZE_T])dnl + AC_REQUIRE([AC_FUNC_ALLOCA])dnl + AC_REQUIRE([AC_FUNC_MMAP])dnl + AC_REQUIRE([jm_GLIBC21])dnl + + AC_CHECK_HEADERS([argz.h limits.h locale.h nl_types.h malloc.h stddef.h \ +stdlib.h string.h unistd.h sys/param.h]) + AC_CHECK_FUNCS([feof_unlocked fgets_unlocked getc_unlocked getcwd getegid \ +geteuid getgid getuid mempcpy munmap putenv setenv setlocale stpcpy \ +strcasecmp strdup strtoul tsearch __argz_count __argz_stringify __argz_next]) + + AM_ICONV + AM_LANGINFO_CODESET + AM_LC_MESSAGES + + 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 +]) + + +AC_DEFUN([AM_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 is. + MKINSTALLDIRS= + if test -n "$ac_aux_dir"; then + MKINSTALLDIRS="$ac_aux_dir/mkinstalldirs" + fi + if test -z "$MKINSTALLDIRS"; then + MKINSTALLDIRS="\$(top_srcdir)/mkinstalldirs" + fi + AC_SUBST(MKINSTALLDIRS) +]) + +# lib-prefix.m4 serial 1 (gettext-0.11) +dnl Copyright (C) 2001-2002 Free Software Foundation, Inc. +dnl This file is free software, distributed under the terms of the GNU +dnl General Public License. As a special exception to the GNU General +dnl Public License, this file may be distributed as part of a program +dnl that contains a configuration script generated by Autoconf, under +dnl the same distribution terms as the rest of that program. + +dnl From Bruno Haible. + +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_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*) 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" +]) + +# lib-link.m4 serial 1 (gettext-0.11) +dnl Copyright (C) 2001-2002 Free Software Foundation, Inc. +dnl This file is free software, distributed under the terms of the GNU +dnl General Public License. As a special exception to the GNU General +dnl Public License, this file may be distributed as part of a program +dnl that contains a configuration script generated by Autoconf, under +dnl the same distribution terms as the rest of that program. + +dnl From Bruno Haible. + +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, +dnl sys_lib_search_path_spec, sys_lib_dlsearch_path_spec. +AC_DEFUN([AC_LIB_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" + sys_lib_search_path_spec="$acl_cv_sys_lib_search_path_spec" + sys_lib_dlsearch_path_spec="$acl_cv_sys_lib_dlsearch_path_spec" +]) + +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_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 "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*) 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*) 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 + ;; + -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 +]) + +# lib-ld.m4 serial 1 (gettext-0.11) +dnl Copyright (C) 1996-2002 Free Software Foundation, Inc. +dnl This file is free software, distributed under the terms of the GNU +dnl General Public License. As a special exception to the GNU General +dnl Public License, this file may be distributed as part of a program +dnl that contains a configuration script generated by Autoconf, under +dnl the same distribution terms as the rest of that program. + +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. +if $LD -v 2>&1 &5; then + acl_cv_prog_gnu_ld=yes +else + acl_cv_prog_gnu_ld=no +fi]) +with_gnu_ld=$acl_cv_prog_gnu_ld +]) + +dnl From libtool-1.4. Sets the variable LD. +AC_DEFUN([AC_LIB_PROG_LD], +[AC_ARG_WITH(gnu-ld, +[ --with-gnu-ld assume the C compiler uses GNU ld [default=no]], +test "$withval" = no || with_gnu_ld=yes, with_gnu_ld=no) +AC_REQUIRE([AC_PROG_CC])dnl +AC_REQUIRE([AC_CANONICAL_HOST])dnl +ac_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. + if "$acl_cv_path_LD" -v 2>&1 < /dev/null | egrep '(GNU|with BFD)' > /dev/null; then + test "$with_gnu_ld" != no && break + else + test "$with_gnu_ld" != yes && break + fi + fi + done + IFS="$ac_save_ifs" +else + 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 +]) + +# iconv.m4 serial AM3 (gettext-0.11) +dnl Copyright (C) 2000-2002 Free Software Foundation, Inc. +dnl This file is free software, distributed under the terms of the GNU +dnl General Public License. As a special exception to the GNU General +dnl Public License, this file may be distributed as part of a program +dnl that contains a configuration script generated by Autoconf, under +dnl the same distribution terms as the rest of that program. + +dnl From Bruno Haible. + +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 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]) + + 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], +[ + AC_REQUIRE([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 +]) + +# progtest.m4 serial 2 (gettext-0.10.40) +dnl Copyright (C) 1996-2002 Free Software Foundation, Inc. +dnl This file is free software, distributed under the terms of the GNU +dnl General Public License. As a special exception to the GNU General +dnl Public License, this file may be distributed as part of a program +dnl that contains a configuration script generated by Autoconf, under +dnl the same distribution terms as the rest of that program. +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. + +# 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], +[# Extract the first word of "$2", so it can be a program name with args. +set dummy $2; ac_word=[$]2 +AC_MSG_CHECKING([for $ac_word]) +AC_CACHE_VAL(ac_cv_path_$1, +[case "[$]$1" in + /*) + ac_cv_path_$1="[$]$1" # Let the user override the test with a path. + ;; + *) + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" + for ac_dir in ifelse([$5], , $PATH, [$5]); do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + if [$3]; then + ac_cv_path_$1="$ac_dir/$ac_word" + break + fi + fi + done + IFS="$ac_save_ifs" +dnl If no 4th arg is given, leave the cache variable unset, +dnl so AC_PATH_PROGS will keep looking. +ifelse([$4], , , [ test -z "[$]ac_cv_path_$1" && ac_cv_path_$1="$4" +])dnl + ;; +esac])dnl +$1="$ac_cv_path_$1" +if test ifelse([$4], , [-n "[$]$1"], ["[$]$1" != "$4"]); then + AC_MSG_RESULT([$]$1) +else + AC_MSG_RESULT(no) +fi +AC_SUBST($1)dnl +]) + +# glibc21.m4 serial 2 (fileutils-4.1.3, gettext-0.10.40) +dnl Copyright (C) 2000-2002 Free Software Foundation, Inc. +dnl This file is free software, distributed under the terms of the GNU +dnl General Public License. As a special exception to the GNU General +dnl Public License, this file may be distributed as part of a program +dnl that contains a configuration script generated by Autoconf, under +dnl the same distribution terms as the rest of that program. + +# Test for the GNU C Library, version 2.1 or newer. +# From Bruno Haible. + +AC_DEFUN([jm_GLIBC21], + [ + AC_CACHE_CHECK(whether we are using the GNU C Library 2.1 or newer, + ac_cv_gnu_library_2_1, + [AC_EGREP_CPP([Lucky GNU user], + [ +#include +#ifdef __GNU_LIBRARY__ + #if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2) + Lucky GNU user + #endif +#endif + ], + ac_cv_gnu_library_2_1=yes, + ac_cv_gnu_library_2_1=no) + ] + ) + AC_SUBST(GLIBC21) + GLIBC21="$ac_cv_gnu_library_2_1" + ] +) + +# codeset.m4 serial AM1 (gettext-0.10.40) +dnl Copyright (C) 2000-2002 Free Software Foundation, Inc. +dnl This file is free software, distributed under the terms of the GNU +dnl General Public License. As a special exception to the GNU General +dnl Public License, this file may be distributed as part of a program +dnl that contains a configuration script generated by Autoconf, under +dnl the same distribution terms as the rest of that program. + +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 +]) + +# lcmessage.m4 serial 2 (gettext-0.10.40) +dnl Copyright (C) 1995-2002 Free Software Foundation, Inc. +dnl This file is free software, distributed under the terms of the GNU +dnl General Public License. As a special exception to the GNU General +dnl Public License, this file may be distributed as part of a program +dnl that contains a configuration script generated by Autoconf, under +dnl the same distribution terms as the rest of that program. +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([AM_LC_MESSAGES], + [if test $ac_cv_header_locale_h = yes; then + AC_CACHE_CHECK([for LC_MESSAGES], am_cv_val_LC_MESSAGES, + [AC_TRY_LINK([#include ], [return LC_MESSAGES], + am_cv_val_LC_MESSAGES=yes, am_cv_val_LC_MESSAGES=no)]) + if test $am_cv_val_LC_MESSAGES = yes; then + AC_DEFINE(HAVE_LC_MESSAGES, 1, + [Define if your file defines LC_MESSAGES.]) + fi + fi]) + +#serial 5 + +dnl From Paul Eggert. + +# Define ST_MTIM_NSEC to be the nanoseconds member of struct stat's st_mtim, +# if it exists. + +AC_DEFUN([AC_STRUCT_ST_MTIM_NSEC], + [AC_CACHE_CHECK([for nanoseconds member of struct stat.st_mtim], + ac_cv_struct_st_mtim_nsec, + [ac_save_CPPFLAGS="$CPPFLAGS" + ac_cv_struct_st_mtim_nsec=no + # tv_nsec -- the usual case + # _tv_nsec -- Solaris 2.6, if + # (defined _XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED == 1 + # && !defined __EXTENSIONS__) + # st__tim.tv_nsec -- UnixWare 2.1.2 + for ac_val in tv_nsec _tv_nsec st__tim.tv_nsec; do + CPPFLAGS="$ac_save_CPPFLAGS -DST_MTIM_NSEC=$ac_val" + AC_TRY_COMPILE([#include +#include ], [struct stat s; s.st_mtim.ST_MTIM_NSEC;], + [ac_cv_struct_st_mtim_nsec=$ac_val; break]) + done + CPPFLAGS="$ac_save_CPPFLAGS"]) + + if test $ac_cv_struct_st_mtim_nsec != no; then + AC_DEFINE_UNQUOTED(ST_MTIM_NSEC, $ac_cv_struct_st_mtim_nsec, + [Define to be the nanoseconds member of struct stat's st_mtim, + if it exists.]) + fi + ] +) + +#serial 7 -*- autoconf -*- + +dnl From Jim Meyering. +dnl +dnl See if the glibc *_unlocked I/O macros are available. +dnl Use only those *_unlocked macros that are declared. +dnl + +AC_DEFUN([jm_FUNC_GLIBC_UNLOCKED_IO], + [AC_CHECK_DECLS( + [clearerr_unlocked, feof_unlocked, ferror_unlocked, + fflush_unlocked, fgets_unlocked, fputc_unlocked, fputs_unlocked, + fread_unlocked, fwrite_unlocked, getc_unlocked, + getchar_unlocked, putc_unlocked, putchar_unlocked])]) + +#serial 17 + +dnl This macro is intended to be used solely in this file. +dnl These are the prerequisite macros for GNU's strftime.c replacement. +AC_DEFUN([_jm_STRFTIME_PREREQS], +[ + dnl strftime.c uses localtime_r and the underyling system strftime + dnl if they exist. + AC_CHECK_FUNCS(localtime_r strftime) + + AC_CHECK_HEADERS(limits.h) + AC_CHECK_FUNCS(bcopy tzset mempcpy memcpy memset) + + # This defines (or not) HAVE_TZNAME and HAVE_TM_ZONE. + AC_STRUCT_TIMEZONE + + AC_CHECK_FUNCS(mblen mbrlen) + + AC_CHECK_MEMBER([struct tm.tm_gmtoff], + [AC_DEFINE(HAVE_TM_GMTOFF, 1, + [Define if struct tm has the tm_gmtoff member.])], + , + [#include ]) +]) + +dnl From Jim Meyering. +dnl +AC_DEFUN([jm_FUNC_GNU_STRFTIME], +[AC_REQUIRE([AC_HEADER_TIME])dnl + + _jm_STRFTIME_PREREQS + + AC_REQUIRE([AC_C_CONST])dnl + AC_REQUIRE([AC_HEADER_STDC])dnl + AC_CHECK_HEADERS(sys/time.h) + AC_DEFINE([my_strftime], [nstrftime], + [Define to the name of the strftime replacement function.]) +]) + +AC_DEFUN([jm_FUNC_STRFTIME], +[ + _jm_STRFTIME_PREREQS +]) + +#serial 5 + +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([for working malloc], 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 is broken. + 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 +]) + +#serial 5 + +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([for working realloc], 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 is broken. + 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 +]) + +# Check prerequisites for compiling lib/c-stack.c. + +# Copyright (C) 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. + +AC_DEFUN([AC_SYS_XSI_STACK_OVERFLOW_HEURISTIC], + [# for STACK_DIRECTION + AC_REQUIRE([AC_FUNC_ALLOCA]) + + AC_CACHE_CHECK([for working C stack overflow detection], + ac_cv_sys_xsi_stack_overflow_heuristic, + [AC_TRY_RUN( + [ + #include + #include + + static union + { + char buffer[SIGSTKSZ]; + long double ld; + uintmax_t u; + void *p; + } alternate_signal_stack; + + #if STACK_DIRECTION + # define find_stack_direction(ptr) STACK_DIRECTION + #else + static int + find_stack_direction (char const *addr) + { + char dummy; + return (! addr ? find_stack_direction (&dummy) + : addr < &dummy ? 1 : -1); + } + #endif + + static void + segv_handler (int signo, siginfo_t *info, void *context) + { + if (0 < info->si_code) + { + ucontext_t const *user_context = context; + char const *stack_min = user_context->uc_stack.ss_sp; + size_t stack_size = user_context->uc_stack.ss_size; + char const *faulting_address = info->si_addr; + size_t s = faulting_address - stack_min; + size_t page_size = sysconf (_SC_PAGESIZE); + if (find_stack_direction (0) < 0) + s += page_size; + if (s < stack_size + page_size) + _exit (0); + } + + _exit (1); + } + + static int + c_stack_action (void) + { + stack_t st; + struct sigaction act; + int r; + + st.ss_flags = 0; + st.ss_sp = alternate_signal_stack.buffer; + st.ss_size = sizeof alternate_signal_stack.buffer; + r = sigaltstack (&st, 0); + if (r != 0) + return r; + + sigemptyset (&act.sa_mask); + act.sa_flags = SA_NODEFER | SA_ONSTACK | SA_RESETHAND | SA_SIGINFO; + act.sa_sigaction = segv_handler; + return sigaction (SIGSEGV, &act, 0); + } + + static int + recurse (char *p) + { + char array[500]; + array[0] = 1; + return *p + recurse (array); + } + + int + main (void) + { + c_stack_action (); + return recurse ("\1"); + } + ], + [ac_cv_sys_xsi_stack_overflow_heuristic=yes], + [ac_cv_sys_xsi_stack_overflow_heuristic=no], + [ac_cv_sys_xsi_stack_overflow_heuristic=cross-compiling])]) + + if test $ac_cv_sys_xsi_stack_overflow_heuristic = yes; then + AC_DEFINE(HAVE_XSI_STACK_OVERFLOW_HEURISTIC, 1, + [Define to 1 if extending the stack slightly past the limit causes + a SIGSEGV, and an alternate stack can be established with sigaltstack, + and the signal handler is passed a context that specifies the + run time stack. This behavior is defined by POSIX 1003.1-2001 + with the X/Open System Interface (XSI) option + and is a standardized way to implement a SEGV-based stack + overflow detection heuristic.]) + fi]) + + +AC_DEFUN([jm_PREREQ_C_STACK], + [AC_REQUIRE([jm_AC_TYPE_UINTMAX_T]) + AC_REQUIRE([AC_SYS_XSI_STACK_OVERFLOW_HEURISTIC]) + + # for STACK_DIRECTION + AC_REQUIRE([AC_FUNC_ALLOCA]) + + AC_CHECK_HEADERS(unistd.h) + + AC_CHECK_TYPES([siginfo_t, stack_t], , , [#include ])]) + +#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 +]) + +#serial 22 + +dnl These are the prerequisite macros for files in the lib/ +dnl directories of the fileutils, sh-utils, and textutils packages. + +AC_DEFUN([jm_PREREQ], +[ + jm_PREREQ_ADDEXT + jm_PREREQ_CANON_HOST + jm_PREREQ_DIRNAME + jm_PREREQ_ERROR + jm_PREREQ_EXCLUDE + jm_PREREQ_GETPAGESIZE + jm_PREREQ_HARD_LOCALE + jm_PREREQ_HASH + jm_PREREQ_HUMAN + jm_PREREQ_MBSWIDTH + jm_PREREQ_MEMCHR + jm_PREREQ_PHYSMEM + jm_PREREQ_POSIXVER + jm_PREREQ_QUOTEARG + jm_PREREQ_READUTMP + jm_PREREQ_REGEX + jm_PREREQ_TEMPNAME # called by mkstemp + jm_PREREQ_XGETCWD + jm_PREREQ_XREADLINK +]) + +AC_DEFUN([jm_PREREQ_ADDEXT], +[ + dnl For addext.c. + AC_SYS_LONG_FILE_NAMES + AC_CHECK_FUNCS(pathconf) + AC_CHECK_HEADERS(limits.h string.h unistd.h) +]) + +AC_DEFUN([jm_PREREQ_CANON_HOST], +[ + dnl Add any libraries as early as possible. + dnl In particular, inet_ntoa needs -lnsl at least on Solaris5.5.1, + dnl so we have to add -lnsl to LIBS before checking for that function. + AC_SEARCH_LIBS(gethostbyname, [inet nsl]) + + dnl These come from -lnsl on Solaris5.5.1. + AC_CHECK_FUNCS(gethostbyname gethostbyaddr inet_ntoa) + + AC_CHECK_FUNCS(gethostbyname gethostbyaddr inet_ntoa) + AC_CHECK_HEADERS(unistd.h string.h netdb.h sys/socket.h \ + netinet/in.h arpa/inet.h) +]) + +AC_DEFUN([jm_PREREQ_DIRNAME], +[ + AC_HEADER_STDC + AC_CHECK_HEADERS(string.h) +]) + +AC_DEFUN([jm_PREREQ_EXCLUDE], +[ + jm_FUNC_FNMATCH + AC_HEADER_STDBOOL +]) + +AC_DEFUN([jm_PREREQ_GETPAGESIZE], +[ + AC_CHECK_FUNCS(getpagesize) + AC_CHECK_HEADERS(OS.h unistd.h) +]) + +AC_DEFUN([jm_PREREQ_HARD_LOCALE], +[ + AC_C_PROTOTYPES + AC_CHECK_FUNCS(setlocale) + AC_CHECK_HEADERS(locale.h stdlib.h string.h) +]) + +AC_DEFUN([jm_PREREQ_HASH], +[ + AC_CHECK_HEADERS(stdlib.h) + AC_HEADER_STDBOOL + AC_REQUIRE([jm_CHECK_DECLS]) +]) + +# If you use human.c, you need the following files: +# inttypes.m4 ulonglong.m4 +AC_DEFUN([jm_PREREQ_HUMAN], +[ + AC_CHECK_HEADERS(limits.h stdlib.h string.h) + AC_CHECK_DECLS([getenv]) + AC_REQUIRE([jm_AC_TYPE_UINTMAX_T]) +]) + +AC_DEFUN([jm_PREREQ_MEMCHR], +[ + AC_CHECK_HEADERS(limits.h stdlib.h bp-sym.h) +]) + +AC_DEFUN([jm_PREREQ_PHYSMEM], +[ + AC_CHECK_HEADERS(sys/pstat.h unistd.h) + AC_CHECK_FUNCS(pstat_getstatic pstat_getdynamic) +]) + +AC_DEFUN([jm_PREREQ_POSIXVER], +[ + AC_CHECK_HEADERS(unistd.h) + AC_CHECK_DECLS([getenv]) +]) + +AC_DEFUN([jm_PREREQ_QUOTEARG], +[ + AC_CHECK_FUNCS(isascii iswprint) + jm_FUNC_MBRTOWC + AC_CHECK_HEADERS(limits.h stddef.h stdlib.h string.h wchar.h wctype.h) + AC_HEADER_STDC + AC_C_BACKSLASH_A + AC_MBSTATE_T + AM_C_PROTOTYPES +]) + +AC_DEFUN([jm_PREREQ_REGEX], +[ + dnl FIXME: Maybe provide a btowc replacement someday: solaris-2.5.1 lacks it. + dnl FIXME: Check for wctype and iswctype, and and add -lw if necessary + dnl to get them. + AC_CHECK_FUNCS(bzero bcopy isascii btowc) + AC_CHECK_HEADERS(alloca.h libintl.h wctype.h wchar.h) + AC_HEADER_STDC + AC_FUNC_ALLOCA +]) + +AC_DEFUN([jm_PREREQ_TEMPNAME], +[ + AC_HEADER_STDC + AC_HEADER_STAT + AC_CHECK_HEADERS(fcntl.h sys/time.h stdint.h unistd.h) + AC_CHECK_FUNCS(__secure_getenv gettimeofday) + AC_CHECK_DECLS([getenv]) +]) + +AC_DEFUN([jm_PREREQ_XGETCWD], +[ + AC_C_PROTOTYPES + AC_CHECK_HEADERS(limits.h stdlib.h sys/param.h unistd.h) + AC_CHECK_FUNCS(getcwd) + AC_FUNC_GETCWD_NULL +]) + +AC_DEFUN([jm_PREREQ_XREADLINK], +[ + AC_C_PROTOTYPES + AC_CHECK_HEADERS(limits.h stdlib.h sys/types.h unistd.h) +]) + +#serial 18 + +dnl This is just a wrapper function to encapsulate this kludge. +dnl Putting it in a separate file like this helps share it between +dnl different packages. +AC_DEFUN([jm_CHECK_DECLS], +[ + AC_REQUIRE([_jm_DECL_HEADERS]) + AC_REQUIRE([AC_HEADER_TIME]) + headers=' +#include +#if HAVE_STRING_H +# if !STDC_HEADERS && HAVE_MEMORY_H +# include +# endif +# include +#else +# if HAVE_STRINGS_H +# include +# endif +#endif +#if HAVE_STDLIB_H +# include +#endif +#if HAVE_UNISTD_H +# include +#endif + +#include +#if TIME_WITH_SYS_TIME +# include +# include +#else +# if HAVE_SYS_TIME_H +# include +# else +# include +# endif +#endif + +#if HAVE_UTMP_H +# include +#endif + +#if HAVE_GRP_H +# include +#endif + +#if HAVE_PWD_H +# include +#endif +' + + AC_CHECK_DECLS([ + free, + getenv, + geteuid, + getgrgid, + getlogin, + getpwuid, + getuid, + getutent, + lseek, + malloc, + memchr, + memrchr, + nanosleep, + realloc, + stpcpy, + strndup, + strnlen, + strstr, + strtoul, + strtoull, + ttyname], , , $headers) +]) + +dnl FIXME: when autoconf has support for it. +dnl This is a little helper so we can require these header checks. +AC_DEFUN([_jm_DECL_HEADERS], +[ + AC_REQUIRE([AC_HEADER_STDC]) + AC_CHECK_HEADERS(grp.h memory.h pwd.h string.h strings.h stdlib.h \ + unistd.h sys/time.h utmp.h utmpx.h) +]) + +#serial 4 + +dnl From Paul Eggert + +AC_DEFUN([jm_FUNC_MBRTOWC], +[ + AC_CACHE_CHECK([whether mbrtowc and mbstate_t are properly declared], + jm_cv_func_mbrtowc, + [AC_TRY_LINK( + [#include ], + [mbstate_t state; return ! (sizeof state && mbrtowc);], + jm_cv_func_mbrtowc=yes, + jm_cv_func_mbrtowc=no)]) + if test $jm_cv_func_mbrtowc = yes; then + AC_DEFINE(HAVE_MBRTOWC, 1, + [Define to 1 if mbrtowc and mbstate_t are properly declared.]) + fi +]) + +#serial 4 + +dnl From Paul Eggert. + +AC_DEFUN([AC_C_BACKSLASH_A], +[ + AC_CACHE_CHECK([whether backslash-a works in strings], ac_cv_c_backslash_a, + [AC_TRY_COMPILE([], + [ +#if '\a' == 'a' + syntax error; +#endif + char buf['\a' == 'a' ? -1 : 1]; + buf[0] = '\a'; + return buf[0] != "\a"[0]; + ], + ac_cv_c_backslash_a=yes, + ac_cv_c_backslash_a=no)]) + if test $ac_cv_c_backslash_a = yes; then + AC_DEFINE(HAVE_C_BACKSLASH_A, 1, + [Define if backslash-a works in C strings.]) + fi +]) + +# serial 9 + +# From Paul Eggert. + +# BeOS 5 has but does not define mbstate_t, +# so you can't declare an object of that type. +# Check for this incompatibility with Standard C. + +# Include stdlib.h first, because otherwise this test would fail on Linux +# (at least glibc-2.1.3) because the "_XOPEN_SOURCE 500" definition elicits +# a syntax error in wchar.h due to the use of undefined __int32_t. + +AC_DEFUN([AC_MBSTATE_T], + [ + AC_CHECK_HEADERS(stdlib.h) + + AC_CACHE_CHECK([for mbstate_t], ac_cv_type_mbstate_t, + [AC_TRY_COMPILE([ +#if HAVE_STDLIB_H +# include +#endif +#include ], + [mbstate_t x; return sizeof x;], + ac_cv_type_mbstate_t=yes, + ac_cv_type_mbstate_t=no)]) + if test $ac_cv_type_mbstate_t = no; then + AC_DEFINE(mbstate_t, int, + [Define to a type if does not define.]) + fi]) + + +# Copyright 1996, 1997, 1998, 2000, 2001 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + +# serial 1 + +AC_DEFUN([AM_C_PROTOTYPES], +[AC_REQUIRE([AM_PROG_CC_STDC]) +AC_REQUIRE([AC_PROG_CPP]) +AC_MSG_CHECKING([for function prototypes]) +if test "$am_cv_prog_cc_stdc" != no; then + AC_MSG_RESULT(yes) + AC_DEFINE(PROTOTYPES,1,[Define if compiler has function prototypes]) + U= ANSI2KNR= +else + AC_MSG_RESULT(no) + U=_ ANSI2KNR=./ansi2knr +fi +# Ensure some checks needed by ansi2knr itself. +AC_HEADER_STDC +AC_CHECK_HEADERS(string.h) +AC_SUBST(U)dnl +AC_SUBST(ANSI2KNR)dnl +]) + +#serial 4 + +# autoconf tests required for use of xstrtoumax.c + +AC_DEFUN([jm_AC_PREREQ_XSTRTOUMAX], +[ + AC_REQUIRE([jm_AC_TYPE_INTMAX_T]) + AC_REQUIRE([jm_AC_TYPE_UINTMAX_T]) + AC_REQUIRE([jm_AC_TYPE_LONG_LONG]) + AC_REQUIRE([jm_AC_TYPE_UNSIGNED_LONG_LONG]) + AC_CHECK_DECLS([strtol, strtoul, strtoull, strtoimax, strtoumax]) + AC_CHECK_HEADERS(limits.h stdlib.h inttypes.h) + + AC_CACHE_CHECK([whether defines strtoumax as a macro], + jm_cv_func_strtoumax_macro, + AC_EGREP_CPP([inttypes_h_defines_strtoumax], [#include +#ifdef strtoumax + inttypes_h_defines_strtoumax +#endif], + jm_cv_func_strtoumax_macro=yes, + jm_cv_func_strtoumax_macro=no)) + + if test "$jm_cv_func_strtoumax_macro" != yes; then + AC_REPLACE_FUNCS(strtoumax) + fi + + dnl Only the replacement strtoumax invokes strtoul and strtoull, + dnl so we need the replacements only if strtoumax does not exist. + case "$jm_cv_func_strtoumax_macro,$ac_cv_func_strtoumax" in + no,no) + AC_REPLACE_FUNCS(strtoul) + + dnl We don't need (and can't compile) the replacement strtoull + dnl unless the type `unsigned long long' exists. + if test "$ac_cv_type_unsigned_long_long" = yes; then + AC_REPLACE_FUNCS(strtoull) + fi + ;; + esac +]) + +# Check for fnmatch. + +# This is a modified version of autoconf's AC_FUNC_FNMATCH; +# it also checks for FNM_CASEFOLD or FNM_IGNORECASE. + +# Copyright (C) 2000, 2001 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + +# AC_FUNC_FNMATCH +# --------------- +# We look for fnmatch.h to avoid that the test fails in C++. +AC_DEFUN([AC_FUNC_FNMATCH], +[AC_CACHE_CHECK([for working GNU-style fnmatch], + [ac_cv_func_fnmatch_works], +# Some versions of Solaris, SCO, and the GNU C Library +# have a broken or incompatible fnmatch. +# So we run a test program. If we are cross-compiling, take no chance. +# Thanks to John Oleynick, Franc,ois Pinard, and Paul Eggert for this test. +[AC_RUN_IFELSE([AC_LANG_PROGRAM([@%:@include ], + [exit (fnmatch ("a*", "abc", 0) != 0 + || fnmatch ("xxXX", "xXxX", FNM_CASEFOLD) != 0 + || fnmatch ("d*/*1", "d/s/1", FNM_FILE_NAME) != FNM_NOMATCH + || fnmatch ("*", "x", FNM_FILE_NAME | FNM_LEADING_DIR) != 0 + || fnmatch ("x*", "x/y/z", FNM_FILE_NAME | FNM_LEADING_DIR) != 0 + || fnmatch ("*c*", "c/x", FNM_FILE_NAME | FNM_LEADING_DIR) != 0);])], + [ac_cv_func_fnmatch_works=yes], + [ac_cv_func_fnmatch_works=no], + [ac_cv_func_fnmatch_works=no])]) +if test $ac_cv_func_fnmatch_works = yes; then + AC_DEFINE(HAVE_FNMATCH, 1, + [Define to 1 if your system has a working `fnmatch' function.]) +fi +])# AC_FUNC_FNMATCH + +#serial 12 + +dnl Initially derived from code in GNU grep. +dnl Mostly written by Jim Meyering. + +dnl Usage: jm_INCLUDED_REGEX([lib/regex.c]) +dnl +AC_DEFUN([jm_INCLUDED_REGEX], + [ + dnl Even packages that don't use regex.c can use this macro. + dnl Of course, for them it doesn't do anything. + + # Assume we'll default to using the included regex.c. + ac_use_included_regex=yes + + # However, if the system regex support is good enough that it passes the + # the following run test, then default to *not* using the included regex.c. + # If cross compiling, assume the test would fail and use the included + # regex.c. The first failing regular expression is from `Spencer ere + # test #75' in grep-2.3. + AC_CACHE_CHECK([for working re_compile_pattern], + jm_cv_func_working_re_compile_pattern, + AC_TRY_RUN( +[#include +#include + int + main () + { + static struct re_pattern_buffer regex; + const char *s; + struct re_registers regs; + re_set_syntax (RE_SYNTAX_POSIX_EGREP); + [s = re_compile_pattern ("a[[:@:>@:]]b\n", 9, ®ex);] + /* This should fail with _Invalid character class name_ error. */ + if (!s) + exit (1); + + /* This should succeed, but doesn't for e.g. glibc-2.1.3. */ + s = re_compile_pattern ("{1", 2, ®ex); + + if (s) + exit (1); + + /* The following example is derived from a problem report + against gawk from Jorge Stolfi . */ + s = re_compile_pattern ("[[anù]]*n", 7, ®ex); + if (s) + exit (1); + + /* This should match, but doesn't for e.g. glibc-2.2.1. */ + if (re_match (®ex, "an", 2, 0, ®s) != 2) + exit (1); + + exit (0); + } + ], + jm_cv_func_working_re_compile_pattern=yes, + jm_cv_func_working_re_compile_pattern=no, + dnl When crosscompiling, assume it's broken. + jm_cv_func_working_re_compile_pattern=no)) + if test $jm_cv_func_working_re_compile_pattern = yes; then + ac_use_included_regex=no + fi + + test -n "$1" || AC_MSG_ERROR([missing argument]) + m4_syscmd([test -f $1]) + ifelse(m4_sysval, 0, + [ + AC_ARG_WITH(included-regex, + [ --without-included-regex don't compile regex; this is the default on + systems with version 2 of the GNU C library + (use with caution on other system)], + jm_with_regex=$withval, + jm_with_regex=$ac_use_included_regex) + if test "$jm_with_regex" = yes; then + AC_LIBOBJ(regex) + fi + ], + ) + ] +) + +#serial 5 + +# Define some macros required for proper operation of code in lib/*.c +# on MSDOS/Windows systems. + +# From Jim Meyering. + +AC_DEFUN([jm_AC_DOS], + [ + AC_CACHE_CHECK([whether system is Windows or MSDOS], [ac_cv_win_or_dos], + [ + AC_TRY_COMPILE([], + [#if !defined _WIN32 && !defined __WIN32__ && !defined __MSDOS__ +neither MSDOS nor Windows +#endif], + [ac_cv_win_or_dos=yes], + [ac_cv_win_or_dos=no]) + ]) + + if test x"$ac_cv_win_or_dos" = xyes; then + ac_fs_accepts_drive_letter_prefix=1 + ac_fs_backslash_is_file_name_separator=1 + else + ac_fs_accepts_drive_letter_prefix=0 + ac_fs_backslash_is_file_name_separator=0 + fi + + AH_VERBATIM(FILESYSTEM_PREFIX_LEN, + [#if FILESYSTEM_ACCEPTS_DRIVE_LETTER_PREFIX +# define FILESYSTEM_PREFIX_LEN(Filename) \ + ((Filename)[0] && (Filename)[1] == ':' ? 2 : 0) +#else +# define FILESYSTEM_PREFIX_LEN(Filename) 0 +#endif]) + + AC_DEFINE_UNQUOTED([FILESYSTEM_ACCEPTS_DRIVE_LETTER_PREFIX], + $ac_fs_accepts_drive_letter_prefix, + [Define on systems for which file names may have a so-called + `drive letter' prefix, define this to compute the length of that + prefix, including the colon.]) + + AH_VERBATIM(ISSLASH, + [#if FILESYSTEM_BACKSLASH_IS_FILE_NAME_SEPARATOR +# define ISSLASH(C) ((C) == '/' || (C) == '\\') +#else +# define ISSLASH(C) ((C) == '/') +#endif]) + + AC_DEFINE_UNQUOTED([FILESYSTEM_BACKSLASH_IS_FILE_NAME_SEPARATOR], + $ac_fs_backslash_is_file_name_separator, + [Define if the backslash character may also serve as a file name + component separator.]) + ]) + +# Check for setmode, DOS style. + +# Copyright (C) 2001, 2002 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + +AC_DEFUN([AC_FUNC_SETMODE_DOS], + [AC_CHECK_HEADERS(fcntl.h unistd.h) + AC_CACHE_CHECK([for DOS-style setmode], + [ac_cv_func_setmode_dos], + [AC_TRY_LINK( + [#include + #if HAVE_FCNTL_H + # include + #endif + #if HAVE_UNISTD_H + # include + #endif], + [int ret = setmode && setmode (1, O_BINARY);], + [ac_cv_func_setmode_dos=yes], + [ac_cv_func_setmode_dos=no])]) + if test $ac_cv_func_setmode_dos = yes; then + AC_DEFINE(HAVE_SETMODE_DOS, 1, + [Define to 1 if you have the DOS-style `setmode' function.]) + fi]) + diff --git a/src/apps/bin/diffutils-2.8.1/config.h b/src/apps/bin/diffutils-2.8.1/config.h new file mode 100644 index 0000000000..19a7a1b26b --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/config.h @@ -0,0 +1,1436 @@ +/* config.h. Generated by configure. */ +/* config.hin. Generated from configure.ac by autoheader. */ + +/* Define if you have the Andrew File System. */ +/* #undef AFS */ + +/* Define to the function xargmatch calls on failures. */ +#define ARGMATCH_DIE usage (1) + +/* Define to the declaration of the xargmatch failure function. */ +#define ARGMATCH_DIE_DECL extern void usage () + +/* 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 1 if using `getloadavg.c'. */ +#define C_GETLOADAVG 1 + +/* Define to 1 for DGUX with . */ +/* #undef DGUX */ + +/* the name of the file descriptor member of DIR */ +/* #undef DIR_FD_MEMBER_NAME */ + +#ifdef DIR_FD_MEMBER_NAME +# define DIR_TO_FD(Dir_p) ((Dir_p)->DIR_FD_MEMBER_NAME) +#else +# define DIR_TO_FD(Dir_p) -1 +#endif + +#define getpagesize() 4096 + +/* Define if there is a member named d_ino in the struct describing directory + headers. */ +#define D_INO_IN_DIRENT 1 + +/* Define to 1 if translation of program messages to the user's native + language is requested. */ +/* #undef ENABLE_NLS */ + +/* Define on systems for which file names may have a so-called `drive letter' + prefix, define this to compute the length of that prefix, including the + colon. */ +#define FILESYSTEM_ACCEPTS_DRIVE_LETTER_PREFIX 0 + +/* Define if the backslash character may also serve as a file name component + separator. */ +#define FILESYSTEM_BACKSLASH_IS_FILE_NAME_SEPARATOR 0 + +#if FILESYSTEM_ACCEPTS_DRIVE_LETTER_PREFIX +# define FILESYSTEM_PREFIX_LEN(Filename) \ + ((Filename)[0] && (Filename)[1] == ':' ? 2 : 0) +#else +# define FILESYSTEM_PREFIX_LEN(Filename) 0 +#endif + +/* Define to the type of elements in the array set by `getgroups'. Usually + this is either `int' or `gid_t'. */ +#define GETGROUPS_T gid_t + +/* Define to 1 if the `getloadavg' function needs to be run setuid or setgid. + */ +/* #undef GETLOADAVG_PRIVILEGED */ + +/* Define if gettimeofday clobbers localtime's static buffer. */ +/* #undef GETTIMEOFDAY_CLOBBERS_LOCALTIME_BUFFER */ + +/* The concatenation of the strings `GNU ', and PACKAGE. */ +#define GNU_PACKAGE "GNU coreutils" + +/* Define if your system defines TIOCGWINSZ in sys/ioctl.h. */ +/* #undef GWINSZ_IN_SYS_IOCTL */ + +/* Define if your system defines TIOCGWINSZ in sys/pty.h. */ +/* #undef GWINSZ_IN_SYS_PTY */ + +/* Define to 1 if you have the `acl' function. */ +/* #undef HAVE_ACL */ + +/* Define to 1 if you have the `alarm' function. */ +#define HAVE_ALARM 1 + +/* Define to 1 if you have `alloca', as a function or macro. */ +#define HAVE_ALLOCA 1 + +/* Define to 1 if you have and it should be used (not on Ultrix). + */ +#define HAVE_ALLOCA_H 1 + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_ARPA_INET_H */ + +/* Define to 1 if you have the `atexit' function. */ +#define HAVE_ATEXIT 1 + +/* Define to 1 if you have the `bcopy' function. */ +#define HAVE_BCOPY 1 + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_BP_SYM_H */ + +/* Define to 1 if you have the `btowc' function. */ +#define HAVE_BTOWC 1 + +/* Define to 1 if you have the `chroot' function. */ +/* #undef HAVE_CHROOT */ + +/* Define to 1 if you have the `chsize' function. */ +/* #undef HAVE_CHSIZE */ + +/* Define to 1 if you have the `clock_gettime' function. */ +/* #undef HAVE_CLOCK_GETTIME */ + +/* Define to 1 if you have the `clock_settime' function. */ +/* #undef HAVE_CLOCK_SETTIME */ + +/* Define if backslash-a works in C strings. */ +#define HAVE_C_BACKSLASH_A 1 + +/* FIXME */ +#define HAVE_C_LINE 1 + +/* Define if the GNU dcgettext() function is already present or preinstalled. + */ +/* #undef HAVE_DCGETTEXT */ + +/* Define to 1 if you have the declaration of `clearerr_unlocked', and to 0 if + you don't. */ +#define HAVE_DECL_CLEARERR_UNLOCKED 1 + +/* Define to 1 if you have the declaration of `dirfd', and to 0 if you don't. + */ +#define HAVE_DECL_DIRFD 0 + +/* Define to 1 if you have the declaration of `euidaccess', and to 0 if you + don't. */ +#define HAVE_DECL_EUIDACCESS 0 + +/* Define to 1 if you have the declaration of `feof_unlocked', and to 0 if you + don't. */ +#define HAVE_DECL_FEOF_UNLOCKED 1 + +/* Define to 1 if you have the declaration of `ferror_unlocked', and to 0 if + you don't. */ +#define HAVE_DECL_FERROR_UNLOCKED 1 + +/* Define to 1 if you have the declaration of `fflush_unlocked', and to 0 if + you don't. */ +#define HAVE_DECL_FFLUSH_UNLOCKED 1 + +/* Define to 1 if you have the declaration of `fgets_unlocked', and to 0 if + you don't. */ +#define HAVE_DECL_FGETS_UNLOCKED 0 + +/* Define to 1 if you have the declaration of `fputc_unlocked', and to 0 if + you don't. */ +#define HAVE_DECL_FPUTC_UNLOCKED 1 + +/* Define to 1 if you have the declaration of `fputs_unlocked', and to 0 if + you don't. */ +#define HAVE_DECL_FPUTS_UNLOCKED 0 + +/* Define to 1 if you have the declaration of `fread_unlocked', and to 0 if + you don't. */ +#define HAVE_DECL_FREAD_UNLOCKED 1 + +/* Define to 1 if you have the declaration of `free', and to 0 if you don't. + */ +#define HAVE_DECL_FREE 1 + +/* Define to 1 if you have the declaration of `fwrite_unlocked', and to 0 if + you don't. */ +#define HAVE_DECL_FWRITE_UNLOCKED 1 + +/* Define to 1 if you have the declaration of `getchar_unlocked', and to 0 if + you don't. */ +#define HAVE_DECL_GETCHAR_UNLOCKED 1 + +/* Define to 1 if you have the declaration of `getcwd', and to 0 if you don't. + */ +#define HAVE_DECL_GETCWD 1 + +/* Define to 1 if you have the declaration of `getc_unlocked', and to 0 if you + don't. */ +#define HAVE_DECL_GETC_UNLOCKED 1 + +/* Define to 1 if you have the declaration of `getenv', and to 0 if you don't. + */ +#define HAVE_DECL_GETENV 1 + +/* Define to 1 if you have the declaration of `geteuid', and to 0 if you + don't. */ +#define HAVE_DECL_GETEUID 1 + +/* Define to 1 if you have the declaration of `getgrgid', and to 0 if you + don't. */ +#define HAVE_DECL_GETGRGID 1 + +/* Define to 1 if you have the declaration of `getlogin', and to 0 if you + don't. */ +#define HAVE_DECL_GETLOGIN 1 + +/* Define to 1 if you have the declaration of `getpwuid', and to 0 if you + don't. */ +#define HAVE_DECL_GETPWUID 1 + +/* Define to 1 if you have the declaration of `getuid', and to 0 if you don't. + */ +#define HAVE_DECL_GETUID 1 + +/* Define to 1 if you have the declaration of `getutent', and to 0 if you + don't. */ +#define HAVE_DECL_GETUTENT 0 + +/* Define to 1 if you have the declaration of `lseek', and to 0 if you don't. + */ +#define HAVE_DECL_LSEEK 1 + +/* Define to 1 if you have the declaration of `malloc', and to 0 if you don't. + */ +#define HAVE_DECL_MALLOC 1 + +/* Define to 1 if you have the declaration of `memchr', and to 0 if you don't. + */ +#define HAVE_DECL_MEMCHR 1 + +/* Define to 1 if you have the declaration of `memrchr', and to 0 if you + don't. */ +#define HAVE_DECL_MEMRCHR 0 + +/* Define to 1 if you have the declaration of `nanosleep', and to 0 if you + don't. */ +#define HAVE_DECL_NANOSLEEP 0 + +/* Define to 1 if you have the declaration of `putchar_unlocked', and to 0 if + you don't. */ +#define HAVE_DECL_PUTCHAR_UNLOCKED 1 + +/* Define to 1 if you have the declaration of `putc_unlocked', and to 0 if you + don't. */ +#define HAVE_DECL_PUTC_UNLOCKED 1 + +/* Define to 1 if you have the declaration of `realloc', and to 0 if you + don't. */ +#define HAVE_DECL_REALLOC 1 + +/* Define to 1 if you have the declaration of `stpcpy', and to 0 if you don't. + */ +#define HAVE_DECL_STPCPY 1 + +/* Define to 1 if you have the declaration of `strerror', and to 0 if you + don't. */ +#define HAVE_DECL_STRERROR 1 + +/* Define to 1 if you have the declaration of `strerror_r', and to 0 if you + don't. */ +#define HAVE_DECL_STRERROR_R 1 + +/* Define to 1 if you have the declaration of `strndup', and to 0 if you + don't. */ +#define HAVE_DECL_STRNDUP 0 + +/* Define to 1 if you have the declaration of `strnlen', and to 0 if you + don't. */ +#define HAVE_DECL_STRNLEN 0 + +/* Define to 1 if you have the declaration of `strsignal', and to 0 if you + don't. */ +#define HAVE_DECL_STRSIGNAL 1 + +/* Define to 1 if you have the declaration of `strstr', and to 0 if you don't. + */ +#define HAVE_DECL_STRSTR 1 + +/* Define to 1 if you have the declaration of `strtoimax', and to 0 if you + don't. */ +#define HAVE_DECL_STRTOIMAX 1 + +/* Define to 1 if you have the declaration of `strtol', and to 0 if you don't. + */ +#define HAVE_DECL_STRTOL 1 + +/* Define to 1 if you have the declaration of `strtoll', and to 0 if you + don't. */ +#define HAVE_DECL_STRTOLL 1 + +/* Define to 1 if you have the declaration of `strtoul', and to 0 if you + don't. */ +#define HAVE_DECL_STRTOUL 1 + +/* Define to 1 if you have the declaration of `strtoull', and to 0 if you + don't. */ +#define HAVE_DECL_STRTOULL 1 + +/* Define to 1 if you have the declaration of `strtoumax', and to 0 if you + don't. */ +#define HAVE_DECL_STRTOUMAX 1 + +/* Define to 1 if you have the declaration of `sys_siglist', and to 0 if you + don't. */ +#define HAVE_DECL_SYS_SIGLIST 0 + +/* Define to 1 if you have the declaration of `ttyname', and to 0 if you + don't. */ +#define HAVE_DECL_TTYNAME 1 + +/* Define to 1 if you have the declaration of wcwidth(), and to 0 otherwise. + */ +#define HAVE_DECL_WCWIDTH 0 + +/* Define to 1 if you have the declaration of `_sys_siglist', and to 0 if you + don't. */ +#define HAVE_DECL__SYS_SIGLIST 0 + +/* Define to 1 if you have the declaration of `__fpending', and to 0 if you + don't. */ +#define HAVE_DECL___FPENDING 0 + +/* Define to 1 if you have the header file, and it defines `DIR'. + */ +#define HAVE_DIRENT_H 1 + +/* Define to 1 if you have the `dirfd' function. */ +#define HAVE_DIRFD 1 + +/* Define to 1 if you don't have `vprintf' but do have `_doprnt.' */ +/* #undef HAVE_DOPRNT */ + +/* Define to 1 if you have the `dup2' function. */ +#define HAVE_DUP2 1 + +/* Define to 1 if you have the `endgrent' function. */ +#define HAVE_ENDGRENT 1 + +/* Define to 1 if you have the `endpwent' function. */ +#define HAVE_ENDPWENT 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_ERRNO_H 1 + +/* Define to 1 if you have the `euidaccess' function. */ +/* #undef HAVE_EUIDACCESS */ + +/* Define to 1 if you have the `fchdir' function. */ +/* #undef HAVE_FCHDIR */ + +/* Define to 1 if you have the header file. */ +#define HAVE_FCNTL_H 1 + +/* Define to 1 if you have the `fdatasync' function. */ +/* #undef HAVE_FDATASYNC */ + +/* Define to 1 if you have the `fesetround' function. */ +#define HAVE_FESETROUND 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_FLOAT_H 1 + +/* Define to 1 if you have the `floor' function. */ +/* #undef HAVE_FLOOR */ + +/* Define to 1 if fseeko (and presumably ftello) exists and is declared. */ +/* #undef HAVE_FSEEKO */ + +/* Define to 1 if you have the header file. */ +#define HAVE_FS_INFO_H 1 + +/* Define to 1 if you have the `fs_stat_dev' function. */ +#define HAVE_FS_STAT_DEV 1 + +/* Define to 1 if you have the `ftime' function. */ +#define HAVE_FTIME 1 + +/* Define to 1 if you have the `ftruncate' function. */ +#define HAVE_FTRUNCATE 1 + +/* Define if struct statfs has the f_fstypename member. */ +/* #undef HAVE_F_FSTYPENAME_IN_STATFS */ + +/* Define to 1 if you have the `getcwd' function. */ +#define HAVE_GETCWD 1 + +/* Define if getcwd (NULL, 0) allocates memory for result. */ +#define HAVE_GETCWD_NULL 1 + +/* Define to 1 if you have the `getdelim' function. */ +/* #undef HAVE_GETDELIM */ + +/* Define to 1 if your system has a working `getgroups' function. */ +#define HAVE_GETGROUPS 1 + +/* Define to 1 if you have the `gethostbyaddr' function. */ +#define HAVE_GETHOSTBYADDR 1 + +/* Define to 1 if you have the `gethostbyname' function. */ +#define HAVE_GETHOSTBYNAME 1 + +/* Define to 1 if you have the `gethostid' function. */ +/* #undef HAVE_GETHOSTID */ + +/* Define to 1 if you have the `gethostname' function. */ +#define HAVE_GETHOSTNAME 1 + +/* Define to 1 if you have the `gethrtime' function. */ +/* #undef HAVE_GETHRTIME */ + +/* Define to 1 if you have the `getloadavg' function. */ +/* #undef HAVE_GETLOADAVG */ + +/* Define to 1 if you have the `getmntent' function. */ +/* #undef HAVE_GETMNTENT */ + +/* Define to 1 if you have the `getmntinfo' function. */ +/* #undef HAVE_GETMNTINFO */ + +/* Define to 1 if you have the `getpagesize' function. */ +/* #undef HAVE_GETPAGESIZE */ + +/* Define to 1 if you have the `getpass' function. */ +/* #undef HAVE_GETPASS */ + +/* Define to 1 if you have the `getspnam' function. */ +/* #undef HAVE_GETSPNAM */ + +/* Define to 1 if you have the `getsysinfo' function. */ +/* #undef HAVE_GETSYSINFO */ + +/* Define if the GNU gettext() function is already present or preinstalled. */ +/* #undef HAVE_GETTEXT */ + +/* Define to 1 if you have the `gettimeofday' function. */ +#define HAVE_GETTIMEOFDAY 1 + +/* Define to 1 if you have the `getusershell' function. */ +/* #undef HAVE_GETUSERSHELL */ + +/* Define to 1 if you have the header file. */ +#define HAVE_GRP_H 1 + +/* Define to 1 if you have the `hasmntopt' function. */ +/* #undef HAVE_HASMNTOPT */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_HURD_H */ + +/* Define if you have the iconv() function. */ +/* #undef HAVE_ICONV */ + +/* Define to 1 if you have the `inet_ntoa' function. */ +#define HAVE_INET_NTOA 1 + +/* Define to 1 if you have the `initgroups' function. */ +/* #undef HAVE_INITGROUPS */ + +/* Define to 1 if you have the header file. */ +#define HAVE_INTTYPES_H 1 + +/* Define to 1 if you have the `isascii' function. */ +#define HAVE_ISASCII 1 + +/* Define to 1 if you have the `iswcntrl' function. */ +#define HAVE_ISWCNTRL 1 + +/* Define to 1 if you have the `iswprint' function. */ +#define HAVE_ISWPRINT 1 + +/* Define to 1 if you have the `iswspace' function. */ +#define HAVE_ISWSPACE 1 + +/* Define if you have and nl_langinfo(CODESET). */ +/* #undef HAVE_LANGINFO_CODESET */ + +/* Define to 1 if you have the `lchown' function. */ +/* #undef HAVE_LCHOWN */ + +/* Define to 1 if you have the `dgc' library (-ldgc). */ +/* #undef HAVE_LIBDGC */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_LIBINTL_H */ + +/* Define to 1 if you have the `kstat' library (-lkstat). */ +/* #undef HAVE_LIBKSTAT */ + +/* Define to 1 if you have the `ldgc' library (-lldgc). */ +/* #undef HAVE_LIBLDGC */ + +/* Define to 1 if you have the `os' library (-los). */ +/* #undef HAVE_LIBOS */ + +/* Define to 1 if you have the `ypsec' library (-lypsec). */ +/* #undef HAVE_LIBYPSEC */ + +/* Define to 1 if you have the header file. */ +#define HAVE_LIMITS_H 1 + +/* Define to 1 if you have the `listmntent' function. */ +/* #undef HAVE_LISTMNTENT */ + +/* Define to 1 if you have the `localeconv' function. */ +#define HAVE_LOCALECONV 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_LOCALE_H 1 + +/* Define to 1 if you have the `localtime_r' function. */ +#define HAVE_LOCALTIME_R 1 + +/* Define to 1 if long double works and has more range or precision than + double. */ +/* #undef HAVE_LONG_DOUBLE */ + +/* Define to 1 if you support file names longer than 14 characters. */ +#define HAVE_LONG_FILE_NAMES 1 + +/* Define if you have the long long type. */ +#define HAVE_LONG_LONG 1 + +/* Define if lstat has the bug that it succeeds when given the zero-length + file name argument. The lstat from SunOS4.1.4 and the Hurd as of + 1998-11-01) do this. */ +/* #undef HAVE_LSTAT_EMPTY_STRING_BUG */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_MACHINE_HAL_SYSINFO_H */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_MACH_MACH_H */ + +/* Define to 1 if your system has a GNU libc compatible `malloc' function, and + to 0 otherwise. */ +#define HAVE_MALLOC 1 + +/* Define to 1 if you have the `mblen' function. */ +#define HAVE_MBLEN 1 + +/* Define to 1 if you have the `mbrlen' function. */ +#define HAVE_MBRLEN 1 + +/* Define to 1 if mbrtowc and mbstate_t are properly declared. */ +/* #undef HAVE_MBRTOWC */ + +/* Define to 1 if you have the `mbsinit' function. */ +#define HAVE_MBSINIT 1 + +/* Define to 1 if you have the `mbsrtowcs' function. */ +#define HAVE_MBSRTOWCS 1 + +/* Define to 1 if declares mbstate_t. */ +/* #undef HAVE_MBSTATE_T */ + +/* Define to 1 if you have the `memchr' function. */ +#define HAVE_MEMCHR 1 + +/* Define to 1 if you have the `memcmp' function. */ +#define HAVE_MEMCMP 1 + +/* Define to 1 if you have the `memcpy' function. */ +#define HAVE_MEMCPY 1 + +/* Define to 1 if you have the `memmove' function. */ +#define HAVE_MEMMOVE 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_MEMORY_H 1 + +/* Define to 1 if you have the `mempcpy' function. */ +/* #undef HAVE_MEMPCPY */ + +/* Define to 1 if you have the `memrchr' function. */ +/* #undef HAVE_MEMRCHR */ + +/* Define to 1 if you have the `memset' function. */ +#define HAVE_MEMSET 1 + +/* Define to 1 if you have the `mkfifo' function. */ +#define HAVE_MKFIFO 1 + +/* Define to 1 if you have the `mkstemp' function. */ +#define HAVE_MKSTEMP 1 + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_MNTENT_H */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_MNTTAB_H */ + +/* Define to 1 if you have the `modf' function. */ +/* #undef HAVE_MODF */ + +/* 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. */ +#define HAVE_NETDB_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_NETINET_IN_H 1 + +/* Define to 1 if you have the `next_dev' function. */ +#define HAVE_NEXT_DEV 1 + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_NLIST_H */ + +/* Define to 1 if libc includes obstacks. */ +#define HAVE_OBSTACK 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_OS_H 1 + +/* Define to 1 if you have the `pathconf' function. */ +#define HAVE_PATHCONF 1 + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_PATHS_H */ + +/* Define if your system has the /proc/uptime special file. */ +/* #undef HAVE_PROC_UPTIME */ + +/* Define to 1 if you have the `pstat_getdynamic' function. */ +/* #undef HAVE_PSTAT_GETDYNAMIC */ + +/* Define to 1 if you have the `pstat_getstatic' function. */ +/* #undef HAVE_PSTAT_GETSTATIC */ + +/* Define to 1 if you have the header file. */ +#define HAVE_PWD_H 1 + +/* Define to 1 if you have the `raise' function. */ +#define HAVE_RAISE 1 + +/* Define to 1 if your system has a GNU libc compatible `realloc' function, + and to 0 otherwise. */ +#define HAVE_REALLOC 1 + +/* Define to 1 if you have the `realpath' function. */ +/* #undef HAVE_REALPATH */ + +/* Define to 1 if you have the `resolvepath' function. */ +/* #undef HAVE_RESOLVEPATH */ + +/* Define to 1 if you have the `rint' function. */ +/* #undef HAVE_RINT */ + +/* Define to 1 if you have the `rmdir' function. */ +#define HAVE_RMDIR 1 + +/* Define to 1 if you have the `rpmatch' function. */ +/* #undef HAVE_RPMATCH */ + +/* Define to 1 if you have the `sethostname' function. */ +/* #undef HAVE_SETHOSTNAME */ + +/* Define to 1 if you have the `setlocale' function. */ +#define HAVE_SETLOCALE 1 + +/* Define to 1 if you have the `setregid' function. */ +/* #undef HAVE_SETREGID */ + +/* Define to 1 if you have the `setreuid' function. */ +/* #undef HAVE_SETREUID */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_SHADOW_H */ + +/* Define to 1 if you have the `sig2str' function. */ +/* #undef HAVE_SIG2STR */ + +/* Define to 1 if you have the `sqrt' function. */ +#define HAVE_SQRT 1 + +/* Define to 1 if you have the `statvfs' function. */ +#define HAVE_STATVFS 1 + +/* Define if stat has the bug that it succeeds when given the zero-length file + name argument. The stat from SunOS4.1.4 and the Hurd as of 1998-11-01) do + this. */ +/* #undef HAVE_STAT_EMPTY_STRING_BUG */ + +/* Define to 1 if stdbool.h conforms to C99. */ +// #define HAVE_STDBOOL_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STDDEF_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STDINT_H 1 + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_STDIO_EXT_H */ + +/* Define to 1 if you have the header file. */ +#define HAVE_STDLIB_H 1 + +/* Define to 1 if you have the `stpcpy' function. */ +#define HAVE_STPCPY 1 + +/* Define to 1 if you have the `strcasecmp' function. */ +#define HAVE_STRCASECMP 1 + +/* Define to 1 if you have the `strchr' function. */ +#define HAVE_STRCHR 1 + +/* Define to 1 if you have the `strcspn' function. */ +#define HAVE_STRCSPN 1 + +/* Define to 1 if you have the `strdup' function. */ +#define HAVE_STRDUP 1 + +/* Define to 1 if you have the `strerror' function. */ +#define HAVE_STRERROR 1 + +/* Define to 1 if you have the `strerror_r' function. */ +#define HAVE_STRERROR_R 1 + +/* Define to 1 if you have the `strftime' function. */ +#define HAVE_STRFTIME 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STRINGS_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STRING_H 1 + +/* Define to 1 if you have the `strncasecmp' function. */ +#define HAVE_STRNCASECMP 1 + +/* Define to 1 if you have the `strndup' function. */ +/* #undef HAVE_STRNDUP */ + +/* Define to 1 if you have the `strpbrk' function. */ +#define HAVE_STRPBRK 1 + +/* Define to 1 if you have the `strrchr' function. */ +#define HAVE_STRRCHR 1 + +/* Define to 1 if you have the `strstr' function. */ +#define HAVE_STRSTR 1 + +/* Define to 1 if you have the `strtoimax' function. */ +#define HAVE_STRTOIMAX 1 + +/* Define to 1 if you have the `strtol' function. */ +#define HAVE_STRTOL 1 + +/* Define to 1 if you have the `strtoll' function. */ +/* #undef HAVE_STRTOLL */ + +/* Define to 1 if you have the `strtoul' function. */ +#define HAVE_STRTOUL 1 + +/* Define to 1 if you have the `strtoull' function. */ +/* #undef HAVE_STRTOULL */ + +/* Define to 1 if you have the `strtoumax' function. */ +#define HAVE_STRTOUMAX 1 + +/* Define if there is a member named d_type in the struct describing directory + headers. */ +/* #undef HAVE_STRUCT_DIRENT_D_TYPE */ + +/* Define to 1 if `f_fstypename' is member of `struct fsstat'. */ +/* #undef HAVE_STRUCT_FSSTAT_F_FSTYPENAME */ + +/* Define to 1 if `n_un.n_name' is member of `struct nlist'. */ +/* #undef HAVE_STRUCT_NLIST_N_UN_N_NAME */ + +/* Define to 1 if `sp_pwdp' is member of `struct spwd'. */ +/* #undef HAVE_STRUCT_SPWD_SP_PWDP */ + +/* Define to 1 if `f_basetype' is member of `struct statfs'. */ +/* #undef HAVE_STRUCT_STATFS_F_BASETYPE */ + +/* Define to 1 if `f_fsid.__val' is member of `struct statfs'. */ +/* #undef HAVE_STRUCT_STATFS_F_FSID___VAL */ + +/* Define to 1 if `f_fstypename' is member of `struct statfs'. */ +/* #undef HAVE_STRUCT_STATFS_F_FSTYPENAME */ + +/* Define to 1 if `f_namelen' is member of `struct statfs'. */ +/* #undef HAVE_STRUCT_STATFS_F_NAMELEN */ + +/* Define to 1 if `f_namemax' is member of `struct statfs'. */ +/* #undef HAVE_STRUCT_STATFS_F_NAMEMAX */ + +/* Define to 1 if `f_type' is member of `struct statfs'. */ +/* #undef HAVE_STRUCT_STATFS_F_TYPE */ + +/* Define to 1 if `f_basetype' is member of `struct statvfs'. */ +/* #undef HAVE_STRUCT_STATVFS_F_BASETYPE */ + +/* Define to 1 if `f_fsid.__val' is member of `struct statvfs'. */ +/* #undef HAVE_STRUCT_STATVFS_F_FSID___VAL */ + +/* Define to 1 if `f_namelen' is member of `struct statvfs'. */ +/* #undef HAVE_STRUCT_STATVFS_F_NAMELEN */ + +/* Define to 1 if `f_namemax' is member of `struct statvfs'. */ +#define HAVE_STRUCT_STATVFS_F_NAMEMAX 1 + +/* Define to 1 if `f_type' is member of `struct statvfs'. */ +/* #undef HAVE_STRUCT_STATVFS_F_TYPE */ + +/* Define to 1 if `st_author' is member of `struct stat'. */ +/* #undef HAVE_STRUCT_STAT_ST_AUTHOR */ + +/* Define to 1 if `st_blksize' is member of `struct stat'. */ +#define HAVE_STRUCT_STAT_ST_BLKSIZE 1 + +/* Define to 1 if `st_blocks' is member of `struct stat'. */ +/* #undef HAVE_STRUCT_STAT_ST_BLOCKS */ + +/* Define if struct timespec is declared in . */ +#define HAVE_STRUCT_TIMESPEC 1 + +/* Define to 1 if `tm_zone' is member of `struct tm'. */ +#define HAVE_STRUCT_TM_TM_ZONE 1 + +/* Define if struct utimbuf is declared -- usually in . Some systems + have utime.h but don't declare the struct anywhere. */ +#define HAVE_STRUCT_UTIMBUF 1 + +/* Define to 1 if `ut_exit.e_exit' is member of `struct utmpx'. */ +/* #undef HAVE_STRUCT_UTMPX_UT_EXIT_E_EXIT */ + +/* Define to 1 if `ut_exit.e_termination' is member of `struct utmpx'. */ +/* #undef HAVE_STRUCT_UTMPX_UT_EXIT_E_TERMINATION */ + +/* Define to 1 if `ut_exit.ut_exit' is member of `struct utmpx'. */ +/* #undef HAVE_STRUCT_UTMPX_UT_EXIT_UT_EXIT */ + +/* Define to 1 if `ut_exit.ut_termination' is member of `struct utmpx'. */ +/* #undef HAVE_STRUCT_UTMPX_UT_EXIT_UT_TERMINATION */ + +/* Define to 1 if `ut_id' is member of `struct utmpx'. */ +/* #undef HAVE_STRUCT_UTMPX_UT_ID */ + +/* Define to 1 if `ut_name' is member of `struct utmpx'. */ +/* #undef HAVE_STRUCT_UTMPX_UT_NAME */ + +/* Define to 1 if `ut_pid' is member of `struct utmpx'. */ +/* #undef HAVE_STRUCT_UTMPX_UT_PID */ + +/* Define to 1 if `ut_type' is member of `struct utmpx'. */ +/* #undef HAVE_STRUCT_UTMPX_UT_TYPE */ + +/* Define to 1 if `ut_user' is member of `struct utmpx'. */ +/* #undef HAVE_STRUCT_UTMPX_UT_USER */ + +/* Define to 1 if `ut_exit.e_exit' is member of `struct utmp'. */ +/* #undef HAVE_STRUCT_UTMP_UT_EXIT_E_EXIT */ + +/* Define to 1 if `ut_exit.e_termination' is member of `struct utmp'. */ +/* #undef HAVE_STRUCT_UTMP_UT_EXIT_E_TERMINATION */ + +/* Define to 1 if `ut_exit.ut_exit' is member of `struct utmp'. */ +/* #undef HAVE_STRUCT_UTMP_UT_EXIT_UT_EXIT */ + +/* Define to 1 if `ut_exit.ut_termination' is member of `struct utmp'. */ +/* #undef HAVE_STRUCT_UTMP_UT_EXIT_UT_TERMINATION */ + +/* Define to 1 if `ut_id' is member of `struct utmp'. */ +/* #undef HAVE_STRUCT_UTMP_UT_ID */ + +/* Define to 1 if `ut_name' is member of `struct utmp'. */ +/* #undef HAVE_STRUCT_UTMP_UT_NAME */ + +/* Define to 1 if `ut_pid' is member of `struct utmp'. */ +/* #undef HAVE_STRUCT_UTMP_UT_PID */ + +/* Define to 1 if `ut_type' is member of `struct utmp'. */ +/* #undef HAVE_STRUCT_UTMP_UT_TYPE */ + +/* Define to 1 if `ut_user' is member of `struct utmp'. */ +/* #undef HAVE_STRUCT_UTMP_UT_USER */ + +/* Define to 1 if you have the `strverscmp' function. */ +/* #undef HAVE_STRVERSCMP */ + +/* Define to 1 if your `struct stat' has `st_blocks'. Deprecated, use + `HAVE_STRUCT_STAT_ST_BLOCKS' instead. */ +/* #undef HAVE_ST_BLOCKS */ + +/* Define if struct stat has an st_dm_mode member. */ +/* #undef HAVE_ST_DM_MODE */ + +/* Define to 1 if you have the `sysctl' function. */ +/* #undef HAVE_SYSCTL */ + +/* Define to 1 if you have the `sysinfo' function. */ +/* #undef HAVE_SYSINFO */ + +/* FIXME */ +/* #undef HAVE_SYSLOG */ + +/* Define to 1 if you have the header file. */ +#define HAVE_SYSLOG_H 1 + +/* Define to 1 if you have the `sysmp' function. */ +/* #undef HAVE_SYSMP */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_SYS_ACL_H */ + +/* 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. */ +/* #undef HAVE_SYS_FILSYS_H */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_SYS_FSTYP_H */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_SYS_FS_S5PARAM_H */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_SYS_FS_TYPES_H */ + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_IOCTL_H 1 + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_SYS_MNTENT_H */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_SYS_MOUNT_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. */ +#define HAVE_SYS_PARAM_H 1 + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_SYS_PSTAT_H */ + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_RESOURCE_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_SOCKET_H 1 + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_SYS_STATFS_H */ + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_STATVFS_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_STAT_H 1 + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_SYS_SYSCTL_H */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_SYS_SYSINFO_H */ + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_SYSMACROS_H 1 + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_SYS_SYSMP_H */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_SYS_SYSTEMCFG_H */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_SYS_SYSTEMINFO_H */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_SYS_TABLE_H */ + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_TIMEB_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_TIME_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_TYPES_H 1 + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_SYS_UCRED_H */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_SYS_VFS_H */ + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_WAIT_H 1 + +/* Define to 1 if you have the `table' function. */ +/* #undef HAVE_TABLE */ + +/* Define to 1 if you have the header file. */ +#define HAVE_TERMIOS_H 1 + +/* Define if struct tm has the tm_gmtoff member. */ +#define HAVE_TM_GMTOFF 1 + +/* Define to 1 if your `struct tm' has `tm_zone'. Deprecated, use + `HAVE_STRUCT_TM_TM_ZONE' instead. */ +#define HAVE_TM_ZONE 1 + +/* Define to 1 if you don't have `tm_zone' but do have the external array + `tzname'. */ +/* #undef HAVE_TZNAME */ + +/* Define to 1 if you have the `tzset' function. */ +#define HAVE_TZSET 1 + +/* Define to 1 if you have the `uname' function. */ +#define HAVE_UNAME 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_UNISTD_H 1 + +/* Define if you have the unsigned long long type. */ +#define HAVE_UNSIGNED_LONG_LONG 1 + +/* Define to 1 if you have the `utime' function. */ +/* #undef HAVE_UTIME */ +#define HAVE_UTIME 1 + +/* Define if utimes accepts a null argument */ +/* #undef HAVE_UTIMES_NULL */ + +/* Define to 1 if you have the header file. */ +#define HAVE_UTIME_H 1 + +/* Define to 1 if `utime(file, NULL)' sets file's timestamp to the present. */ +#define HAVE_UTIME_NULL 1 + +/* Define to 1 if you have the `utmpname' function. */ +/* #undef HAVE_UTMPNAME */ + +/* Define to 1 if you have the `utmpxname' function. */ +/* #undef HAVE_UTMPXNAME */ + +/* FIXME */ +/* #undef HAVE_UTMPX_H */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_UTMP_H */ + +/* FIXME */ +/* #undef HAVE_UT_HOST */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_VALUES_H */ + +/* Define to 1 if you have the `vprintf' function. */ +#define HAVE_VPRINTF 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_WCHAR_H 1 + +/* Define to 1 if you have the `wcrtomb' function. */ +#define HAVE_WCRTOMB 1 + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_WCTYPE_H */ + +/* Define to 1 if you have the `wcwidth' function. */ +/* #undef HAVE_WCWIDTH */ + +/* Define to 1 if you have the `wmempcpy' function. */ +/* #undef HAVE_WMEMPCPY */ + +/* Define to 1 if you have the external variable, _system_configuration with a + member named physmem. */ +/* #undef HAVE__SYSTEM_CONFIGURATION */ + +/* Define to 1 if you have the `__fpending' function. */ +/* #undef HAVE___FPENDING */ + +/* Define to 1 if you have the `__secure_getenv' function. */ +/* #undef HAVE___SECURE_GETENV */ + +/* The host operating system. */ +#define HOST_OPERATING_SYSTEM "BeOS" + +/* Define as const if the declaration of iconv() needs const. */ +/* #undef ICONV_CONST */ + +#if FILESYSTEM_BACKSLASH_IS_FILE_NAME_SEPARATOR +# define ISSLASH(C) ((C) == '/' || (C) == '\\') +#else +# define ISSLASH(C) ((C) == '/') +#endif + +/* Define if `link(2)' dereferences symbolic links. */ +/* #undef LINK_FOLLOWS_SYMLINKS */ + +/* FIXME */ +#define LOCALTIME_CACHE 1 + +/* Define to 1 if `lstat' dereferences a symlink specified with a trailing + slash. */ +#define LSTAT_FOLLOWS_SLASHED_SYMLINK 1 + +/* Define to 1 if `major', `minor', and `makedev' are declared in . + */ +/* #undef MAJOR_IN_MKDEV */ + +/* Define to 1 if `major', `minor', and `makedev' are declared in + . */ +#define MAJOR_IN_SYSMACROS 1 + +/* Define if there is no specific function for reading the list of mounted + filesystems. fread will be used to read /etc/mnttab. (SVR2) */ +/* #undef MOUNTED_FREAD */ + +/* Define if (like SVR2) there is no specific function for reading the list of + mounted filesystems, and your system has these header files: + and . (SVR3) */ +/* #undef MOUNTED_FREAD_FSTYP */ + +/* Define if there are functions named next_dev and fs_stat_dev for reading + the list of mounted filesystems. (BeOS) */ +#define MOUNTED_FS_STAT_DEV 1 + +/* Define if there is a function named getfsstat for reading the list of + mounted filesystems. (DEC Alpha running OSF/1) */ +/* #undef MOUNTED_GETFSSTAT */ + +/* Define if there is a function named getmnt for reading the list of mounted + filesystems. (Ultrix) */ +/* #undef MOUNTED_GETMNT */ + +/* Define if there is a function named getmntent for reading the list of + mounted filesystems, and that function takes a single argument. (4.3BSD, + SunOS, HP-UX, Dynix, Irix) */ +/* #undef MOUNTED_GETMNTENT1 */ + +/* Define if there is a function named getmntent for reading the list of + mounted filesystems, and that function takes two arguments. (SVR4) */ +/* #undef MOUNTED_GETMNTENT2 */ + +/* Define if there is a function named getmntinfo for reading the list of + mounted filesystems. (4.4BSD, Darwin) */ +/* #undef MOUNTED_GETMNTINFO */ + +/* Define if there is a function named listmntent that can be used to list all + mounted filesystems. (UNICOS) */ +/* #undef MOUNTED_LISTMNTENT */ + +/* Define if there is a function named mntctl that can be used to read the + list of mounted filesystems, and there is a system header file that + declares `struct vmount.' (AIX) */ +/* #undef MOUNTED_VMOUNT */ + +/* Define to 1 if assertions should be disabled. */ +/* #undef NDEBUG */ + +/* FIXME */ +/* #undef NICE_PRIORITY */ + +/* Define to 1 if your `struct nlist' has an `n_un' member. Obsolete, depend + on `HAVE_STRUCT_NLIST_N_UN_N_NAME */ +/* #undef NLIST_NAME_UNION */ + +/* Name of package */ +#define PACKAGE "coreutils" + +/* Define to the address where bug reports for this package should be sent. */ +#define PACKAGE_BUGREPORT "bug-coreutils@gnu.org" + +/* Define to the full name of this package. */ +#define PACKAGE_NAME "GNU coreutils" + +/* Define to the full name and version of this package. */ +#define PACKAGE_STRING "GNU coreutils 5.0" + +/* Define to the one symbol short name of this package. */ +#define PACKAGE_TARNAME "coreutils" + +/* Define to the version of this package. */ +#define PACKAGE_VERSION "5.0" + +/* the number of pending output bytes on stream `fp' */ +#define PENDING_OUTPUT_N_BYTES fp->_IO_write_ptr - fp->_IO_write_base + +/* Define if exists and defines unusable PRI* macros. */ +/* #undef PRI_MACROS_BROKEN */ + +/* Define to 1 if the C compiler supports function prototypes. */ +#define PROTOTYPES 1 + +/* Define if rename does not work for source paths with a trailing slash, like + the one from SunOS 4.1.1_U1. */ +#define RENAME_TRAILING_SLASH_BUG 1 + +/* Define as the return type of signal handlers (`int' or `void'). */ +#define RETSIGTYPE void + +/* the value to which errno is set when rmdir fails on a nonempty directory */ +#define RMDIR_ERRNO_NOT_EMPTY -2147459066 + +/* Define to 1 if the `setvbuf' function takes the buffering type as its + second argument and the buffer pointer as the third, as on System V before + release 3. */ +/* #undef SETVBUF_REVERSED */ + +/* If using the C implementation of alloca, define if you know the + direction of stack growth for your system; otherwise it will be + automatically deduced at run-time. + STACK_DIRECTION > 0 => grows toward higher addresses + STACK_DIRECTION < 0 => grows toward lower addresses + STACK_DIRECTION = 0 => direction of growth unknown */ +/* #undef STACK_DIRECTION */ + +/* Define if the block counts reported by statfs may be truncated to 2GB and + the correct values may be stored in the f_spare array. (SunOS 4.1.2, 4.1.3, + and 4.1.3_U1 are reported to have this problem. SunOS 4.1.1 seems not to be + affected.) */ +/* #undef STATFS_TRUNCATES_BLOCK_COUNTS */ + +/* Define to 1 if the `S_IS*' macros in do not work properly. */ +/* #undef STAT_MACROS_BROKEN */ + +/* Define if there is no specific function for reading filesystems usage + information and you have the header file. (SVR2) */ +/* #undef STAT_READ_FILSYS */ + +/* Define if statfs takes 2 args and struct statfs has a field named f_bsize. + (4.3BSD, SunOS 4, HP-UX, AIX PS/2) */ +/* #undef STAT_STATFS2_BSIZE */ + +/* Define if statfs takes 2 args and struct statfs has a field named f_fsize. + (4.4BSD, NetBSD) */ +/* #undef STAT_STATFS2_FSIZE */ + +/* Define if statfs takes 2 args and the second argument has type struct + fs_data. (Ultrix) */ +/* #undef STAT_STATFS2_FS_DATA */ + +/* Define if statfs takes 3 args. (DEC Alpha running OSF/1) */ +/* #undef STAT_STATFS3_OSF1 */ + +/* Define if statfs takes 4 args. (SVR3, Dynix, Irix, Dolphin) */ +/* #undef STAT_STATFS4 */ + +/* Define if there is a function named statvfs. (SVR4) */ +#define STAT_STATVFS 1 + +/* Define to 1 if you have the ANSI C header files. */ +#define STDC_HEADERS 1 + +/* Define to 1 if strerror_r returns char *. */ +#define STRERROR_R_CHAR_P 1 + +/* Define to be the nanoseconds member of struct stat's st_mtim, if it exists. + */ +/* #undef ST_MTIM_NSEC */ + +/* Define to 1 on System V Release 4. */ +/* #undef SVR4 */ + +/* FIXME */ +/* #undef TERMIOS_NEEDS_XOPEN_SOURCE */ + +/* Define to 1 if you can safely include both and . */ +#define TIME_WITH_SYS_TIME 1 + +/* Define to 1 if your declares `struct tm'. */ +/* #undef TM_IN_SYS_TIME */ + +/* Define to 1 for Encore UMAX. */ +/* #undef UMAX */ + +/* Define to 1 for Encore UMAX 4.3 that has instead of + . */ +/* #undef UMAX4_3 */ + +/* the maximum number of simultaneously open files per process */ +#define UTILS_OPEN_MAX 122 + +/* Version number of package */ +#define VERSION "5.0" + +/* Define if sys/ptem.h is required for struct winsize. */ +/* #undef WINSIZE_IN_PTEM */ + +/* 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 */ + +/* Enable GNU extensions on systems that have them. */ +#ifndef _GNU_SOURCE +# define _GNU_SOURCE 1 +#endif + +/* 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 like PROTOTYPES; this can be used by system headers. */ +#define __PROTOTYPES 1 + +/* Define to rpl_chown if the replacement function should be used. */ +#define chown rpl_chown + +/* Define to empty if `const' does not conform to ANSI C. */ +/* #undef const */ + +/* Define to rpl_fnmatch if the replacement function should be used. */ +#define fnmatch rpl_fnmatch + +/* Define to rpl_getcwd if the wrapper function should be used. */ +#define getcwd rpl_getcwd + +/* Define as rpl_getgroups if getgroups doesn't work right. */ +/* #undef getgroups */ + +/* Define to rpl_gettimeofday if the replacement function should be used. */ +/* #undef gettimeofday */ + +/* Define to `int' if doesn't define. */ +/* #undef gid_t */ + +/* Define as `__inline' if that's what the C compiler calls it, or to nothing + if it is not supported. */ +/* #undef inline */ + +/* Define to `unsigned long' if does not define. */ +/* #undef ino_t */ + +/* Define to widest signed type if doesn't define. */ +/* #undef intmax_t */ + +/* Define to rpl_localtime if the replacement function should be used. */ +/* #undef localtime */ + +/* Define to `unsigned int' if does not define. */ +#define major_t unsigned int + +/* Define to rpl_malloc if the replacement function should be used. */ +/* #undef malloc */ + +/* Define to a type if does not define. */ +#define mbstate_t int + +/* Define to rpl_memcmp if the replacement function should be used. */ +/* #undef memcmp */ + +/* Define to `unsigned int' if does not define. */ +#define minor_t unsigned int + +/* Define to rpl_mkdir if the replacement function should be used. */ +#define mkdir rpl_mkdir + +/* Define to rpl_mkstemp if the replacement function should be used. */ +/* #undef mkstemp */ + +/* Define to rpl_mktime if the replacement function should be used. */ +#define mktime rpl_mktime + +/* Define to `int' if does not define. */ +/* #undef mode_t */ + +/* Define to the name of the strftime replacement function. */ +#define my_strftime nstrftime + +/* Define to rpl_nanosleep if the replacement function should be used. */ +#define nanosleep rpl_nanosleep + +/* Define to `long' if does not define. */ +/* #undef off_t */ + +/* Define to `int' if does not define. */ +/* #undef pid_t */ + +/* Define to rpl_putenv if the replacement function should be used. */ +#define putenv rpl_putenv + +/* Define to rpl_realloc if the replacement function should be used. */ +/* #undef realloc */ + +/* Define to equivalent of C99 restrict keyword, or to nothing if this is not + supported. Do not define if restrict is supported directly. */ +#define restrict __restrict__ + +/* Define to `unsigned' if does not define. */ +/* #undef size_t */ + +/* Define to `int' if does not define. */ +/* #undef ssize_t */ + +/* Define to `int' if doesn't define. */ +/* #undef uid_t */ + +/* Define to widest unsigned type if doesn't define. */ +/* #undef uintmax_t */ + +/* Define to empty if the keyword `volatile' does not work. Warning: valid + code using `volatile' can become incorrect without. Disable with care. */ +/* #undef volatile */ + + + +#define HAVE_DONE_WORKING_MALLOC_CHECK 1 +#define HAVE_DONE_WORKING_REALLOC_CHECK 1 diff --git a/src/apps/bin/diffutils-2.8.1/config.hin b/src/apps/bin/diffutils-2.8.1/config.hin new file mode 100644 index 0000000000..0b2e261af5 --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/config.hin @@ -0,0 +1,514 @@ +/* config.hin. 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 + +/* Name of "diff" program, unless overridden. */ +#undef DEFAULT_DIFF_PROGRAM + +/* Name of editor program, unless overridden. */ +#undef DEFAULT_EDITOR_PROGRAM + +/* Define to 1 if translation of program messages to the user's native + language is requested. */ +#undef ENABLE_NLS + +/* Define on systems for which file names may have a so-called `drive letter' + prefix, define this to compute the length of that prefix, including the + colon. */ +#undef FILESYSTEM_ACCEPTS_DRIVE_LETTER_PREFIX + +/* Define if the backslash character may also serve as a file name component + separator. */ +#undef FILESYSTEM_BACKSLASH_IS_FILE_NAME_SEPARATOR + +#if FILESYSTEM_ACCEPTS_DRIVE_LETTER_PREFIX +# define FILESYSTEM_PREFIX_LEN(Filename) \ + ((Filename)[0] && (Filename)[1] == ':' ? 2 : 0) +#else +# define FILESYSTEM_PREFIX_LEN(Filename) 0 +#endif + +/* 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 `bcopy' function. */ +#undef HAVE_BCOPY + +/* Define to 1 if you have the `btowc' function. */ +#undef HAVE_BTOWC + +/* Define to 1 if you have the `bzero' function. */ +#undef HAVE_BZERO + +/* Define to 1 if you have the `clock_gettime' function. */ +#undef HAVE_CLOCK_GETTIME + +/* Define if backslash-a works in C strings. */ +#undef HAVE_C_BACKSLASH_A + +/* Define to 1 if C supports variable-length arrays. */ +#undef HAVE_C_VARARRAYS + +/* Define if the GNU dcgettext() function is already present or preinstalled. + */ +#undef HAVE_DCGETTEXT + +/* Define to 1 if you have the declaration of `clearerr_unlocked', and to 0 if + you don't. */ +#undef HAVE_DECL_CLEARERR_UNLOCKED + +/* 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 `ferror_unlocked', and to 0 if + you don't. */ +#undef HAVE_DECL_FERROR_UNLOCKED + +/* Define to 1 if you have the declaration of `fflush_unlocked', and to 0 if + you don't. */ +#undef HAVE_DECL_FFLUSH_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 `fputc_unlocked', and to 0 if + you don't. */ +#undef HAVE_DECL_FPUTC_UNLOCKED + +/* Define to 1 if you have the declaration of `fputs_unlocked', and to 0 if + you don't. */ +#undef HAVE_DECL_FPUTS_UNLOCKED + +/* Define to 1 if you have the declaration of `fread_unlocked', and to 0 if + you don't. */ +#undef HAVE_DECL_FREAD_UNLOCKED + +/* Define to 1 if you have the declaration of `fwrite_unlocked', and to 0 if + you don't. */ +#undef HAVE_DECL_FWRITE_UNLOCKED + +/* Define to 1 if you have the declaration of `getchar_unlocked', and to 0 if + you don't. */ +#undef HAVE_DECL_GETCHAR_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 `getenv', and to 0 if you don't. + */ +#undef HAVE_DECL_GETENV + +/* Define to 1 if you have the declaration of `putchar_unlocked', and to 0 if + you don't. */ +#undef HAVE_DECL_PUTCHAR_UNLOCKED + +/* Define to 1 if you have the declaration of `putc_unlocked', and to 0 if you + don't. */ +#undef HAVE_DECL_PUTC_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 `strtoul', and to 0 if you + don't. */ +#undef HAVE_DECL_STRTOUL + +/* Define to 1 if you have the declaration of `strtoull', and to 0 if you + don't. */ +#undef HAVE_DECL_STRTOULL + +/* 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 `diraccess' function. */ +#undef HAVE_DIRACCESS + +/* 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 have the `doprnt' function. */ +#undef HAVE_DOPRNT + +/* Define to 1 if you have the `dup2' function. */ +#undef HAVE_DUP2 + +/* Define to 1 if you have the header file. */ +#undef HAVE_FCNTL_H + +/* Define to 1 if your system has a working `fnmatch' function. */ +#undef HAVE_FNMATCH + +/* Define to 1 if you have the `fork' function. */ +#undef HAVE_FORK + +/* Define if the GNU gettext() function is already present or preinstalled. */ +#undef HAVE_GETTEXT + +/* Define to 1 if you have the `gettimeofday' function. */ +#undef HAVE_GETTIMEOFDAY + +/* Define if you have the iconv() function. */ +#undef HAVE_ICONV + +/* Define to 1 if you have the header file. */ +#undef HAVE_INTTYPES_H + +/* Define to 1 if you have the `isascii' function. */ +#undef HAVE_ISASCII + +/* Define to 1 if you have the `iswprint' function. */ +#undef HAVE_ISWPRINT + +/* Define to 1 if you have the header file. */ +#undef HAVE_LIBINTL_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_LIMITS_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_LOCALE_H + +/* Define to 1 if you have the `localtime_r' function. */ +#undef HAVE_LOCALTIME_R + +/* Define if you have the long long type. */ +#undef HAVE_LONG_LONG + +/* Define to 1 if you have the `mblen' function. */ +#undef HAVE_MBLEN + +/* Define to 1 if you have the `mbrlen' function. */ +#undef HAVE_MBRLEN + +/* Define to 1 if mbrtowc and mbstate_t are properly declared. */ +#undef HAVE_MBRTOWC + +/* Define to 1 if you have the `memchr' function. */ +#undef HAVE_MEMCHR + +/* 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 `mkstemp' function. */ +#undef HAVE_MKSTEMP + +/* Define to 1 if you have the header file, and it defines `DIR'. */ +#undef HAVE_NDIR_H + +/* Define to 1 if you have the `setlocale' function. */ +#undef HAVE_SETLOCALE + +/* Define to 1 if you have the DOS-style `setmode' function. */ +#undef HAVE_SETMODE_DOS + +/* Define to 1 if you have the `sigaction' function. */ +#undef HAVE_SIGACTION + +/* Define to 1 if the system has the type `siginfo_t'. */ +#undef HAVE_SIGINFO_T + +/* Define to 1 if you have the `sigprocmask' function. */ +#undef HAVE_SIGPROCMASK + +/* Define to 1 if the system has the type `stack_t'. */ +#undef HAVE_STACK_T + +/* Define to 1 if stdbool.h conforms to C99. */ +#undef HAVE_STDBOOL_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STDDEF_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STDINT_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STDLIB_H + +/* Define to 1 if you have the `strcasecmp' function. */ +#undef HAVE_STRCASECMP + +/* Define to 1 if you have the `strchr' function. */ +#undef HAVE_STRCHR + +/* 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 `strtoul' function. */ +#undef HAVE_STRTOUL + +/* Define to 1 if you have the `strtoull' function. */ +#undef HAVE_STRTOULL + +/* Define to 1 if you have the `strtoumax' function. */ +#undef HAVE_STRTOUMAX + +/* Define to 1 if `st_blksize' is member of `struct stat'. */ +#undef HAVE_STRUCT_STAT_ST_BLKSIZE + +/* Define to 1 if `st_rdev' is member of `struct stat'. */ +#undef HAVE_STRUCT_STAT_ST_RDEV + +/* 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. */ +#undef HAVE_SYS_FILE_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_STAT_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_TIME_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_TYPES_H + +/* Define to 1 if you have that is POSIX.1 compatible. */ +#undef HAVE_SYS_WAIT_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_TIME_H + +/* Define to 1 if you have the `tmpnam' function. */ +#undef HAVE_TMPNAM + +/* Define if struct tm has the tm_gmtoff member. */ +#undef HAVE_TM_GMTOFF + +/* 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 don't have `tm_zone' but do have the external array + `tzname'. */ +#undef HAVE_TZNAME + +/* Define to 1 if you have the `tzset' function. */ +#undef HAVE_TZSET + +/* 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 `vfork' function. */ +#undef HAVE_VFORK + +/* Define to 1 if you have the header file. */ +#undef HAVE_VFORK_H + +/* Define to 1 if you have the `vprintf' function. */ +#undef HAVE_VPRINTF + +/* Define to 1 if you have the `waitpid' function. */ +#undef HAVE_WAITPID + +/* Define to 1 if you have the header file. */ +#undef HAVE_WCHAR_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_WCTYPE_H + +/* Define to 1 if `fork' works. */ +#undef HAVE_WORKING_FORK + +/* Define to 1 if `vfork' works. */ +#undef HAVE_WORKING_VFORK + +/* Define to 1 if extending the stack slightly past the limit causes a + SIGSEGV, and an alternate stack can be established with sigaltstack, and + the signal handler is passed a context that specifies the run time stack. + This behavior is defined by POSIX 1003.1-2001 with the X/Open System + Interface (XSI) option and is a standardized way to implement a SEGV-based + stack overflow detection heuristic. */ +#undef HAVE_XSI_STACK_OVERFLOW_HEURISTIC + +/* Define to 1 if you have the `__secure_getenv' function. */ +#undef HAVE___SECURE_GETENV + +#if FILESYSTEM_BACKSLASH_IS_FILE_NAME_SEPARATOR +# define ISSLASH(C) ((C) == '/' || (C) == '\\') +#else +# define ISSLASH(C) ((C) == '/') +#endif + +/* 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 compiler has function prototypes */ +#undef PROTOTYPES + +/* Name of "pr" program. */ +#undef PR_PROGRAM + +/* Define to 1 to avoid alloca in the regular-expression implementation. */ +#undef REGEX_MALLOC + +/* Define as the return type of signal handlers (`int' or `void'). */ +#undef RETSIGTYPE + +/* If using the C implementation of alloca, define if you know the + direction of stack growth for your system; otherwise it will be + automatically deduced at run-time. + STACK_DIRECTION > 0 => grows toward higher addresses + STACK_DIRECTION < 0 => grows toward lower addresses + STACK_DIRECTION = 0 => direction of growth unknown */ +#undef STACK_DIRECTION + +/* Define to 1 if 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 be the nanoseconds member of struct stat's st_mtim, if it exists. + */ +#undef ST_MTIM_NSEC + +/* Define to 1 if you can safely include both and . */ +#undef TIME_WITH_SYS_TIME + +/* Define to 1 if your declares `struct tm'. */ +#undef TM_IN_SYS_TIME + +/* Version number of package */ +#undef VERSION + +/* Number of bits in a file offset, on hosts where this is settable. */ +#undef _FILE_OFFSET_BITS + +#ifndef _GNU_SOURCE +# define _GNU_SOURCE +#endif + +/* Define for large files, on AIX-style hosts. */ +#undef _LARGE_FILES + +/* Enable Solaris extensions. */ +#undef __EXTENSIONS__ + +/* Define like PROTOTYPES; this can be used by system headers. */ +#undef __PROTOTYPES + +/* Define to empty if `const' does not conform to ANSI C. */ +#undef const + +/* Define as `__inline' if that's what the C compiler calls it, or to nothing + if it is not supported. */ +#undef inline + +/* Define to widest signed type if doesn't define. */ +#undef intmax_t + +/* Define to rpl_malloc if the replacement function should be used. */ +#undef malloc + +/* Define to a type if does not define. */ +#undef mbstate_t + +/* Define to the name of the strftime replacement function. */ +#undef my_strftime + +/* Define to `int' if does not define. */ +#undef pid_t + +/* Define to `int' if does not define. */ +#undef ptrdiff_t + +/* Define to rpl_realloc if the replacement function should be used. */ +#undef realloc + +/* Define to `int' if does not define. */ +#undef ssize_t + +/* Define to widest unsigned type if doesn't define. */ +#undef uintmax_t + +/* Define as `fork' if `vfork' does not work. */ +#undef vfork diff --git a/src/apps/bin/diffutils-2.8.1/config.log b/src/apps/bin/diffutils-2.8.1/config.log new file mode 100644 index 0000000000..a10642d4ca --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/config.log @@ -0,0 +1,2590 @@ +This file contains any messages produced by compilers while +running configure, to aid debugging if configure makes a mistake. + +It was created by GNU diffutils configure 2.8.1, which was +generated by GNU Autoconf 2.53. Invocation command line was + + $ ./configure + +## --------- ## +## Platform. ## +## --------- ## + +hostname = +uname -m = BePC +uname -r = 5.0 +uname -s = BeOS +uname -v = 1000009 + +/usr/bin/uname -p = unknown +/bin/uname -X = unknown + +/bin/arch = unknown +/usr/bin/arch -k = unknown +/usr/convex/getsysinfo = unknown +hostinfo = unknown +/bin/machine = unknown +/usr/bin/oslevel = unknown +/bin/universe = unknown + +PATH: . +PATH: /boot/home/config/bin +PATH: /bin +PATH: /boot/apps +PATH: /boot/preferences +PATH: /boot/beos/apps +PATH: /boot/beos/preferences +PATH: /boot/develop/tools/gnupro/bin +PATH: /boot/apps/X11R6.4/bin +PATH: /boot/apps/GeekGadgets/bin +PATH: /boot/home/bin + + +## ----------- ## +## Core tests. ## +## ----------- ## + +configure:1275: checking for a BSD-compatible install +configure:1329: result: /bin/install -c +configure:1340: checking whether build environment is sane +configure:1383: result: yes +configure:1416: checking for gawk +configure:1432: found /bin/gawk +configure:1442: result: gawk +configure:1452: checking whether make sets ${MAKE} +configure:1472: result: yes +configure:1622: checking for gawk +configure:1648: result: gawk +configure:1704: checking for gcc +configure:1720: found /boot/develop/tools/gnupro/bin/gcc +configure:1730: result: gcc +configure:1974: checking for C compiler version +configure:1977: gcc --version &5 +2.9-beos-991026 +configure:1980: $? = 0 +configure:1982: gcc -v &5 +Reading specs from /boot/develop/tools/gnupro/lib/gcc-lib/i586-beos/2.9-beos-991026/specs +gcc version 2.9-beos-991026 +configure:1985: $? = 0 +configure:1987: gcc -V &5 +gcc: argument to `-V' is missing +configure:1990: $? = 1 +configure:2016: checking for C compiler default output +configure:2019: gcc conftest.c >&5 +configure:2022: $? = 0 +configure:2055: result: conftest +configure:2060: checking whether the C compiler works +configure:2066: ./conftest +configure:2069: $? = 0 +configure:2084: result: yes +configure:2091: checking whether we are cross compiling +configure:2093: result: no +configure:2096: checking for suffix of executables +configure:2098: gcc -o conftest conftest.c >&5 +configure:2101: $? = 0 +configure:2123: result: +configure:2129: checking for suffix of object files +configure:2153: gcc -c conftest.c >&5 +configure:2156: $? = 0 +configure:2175: result: o +configure:2179: checking whether we are using the GNU C compiler +configure:2206: gcc -c conftest.c >&5 +configure:2209: $? = 0 +configure:2212: test -s conftest.o +configure:2215: $? = 0 +configure:2227: result: yes +configure:2233: checking whether gcc accepts -g +configure:2257: gcc -c -g conftest.c >&5 +configure:2260: $? = 0 +configure:2263: test -s conftest.o +configure:2266: $? = 0 +configure:2276: result: yes +configure:2303: gcc -c -g -O2 conftest.c >&5 +/boot/home/Development/current/src/apps/bin/diffutils-2.8.1/conftest.c:2: parse error before `me' +configure:2306: $? = 1 +configure: failed program was: +#ifndef __cplusplus + choke me +#endif +configure:2435: checking for style of include used by make +configure:2463: result: GNU +configure:2491: checking dependency style of gcc +configure:2553: result: gcc +configure:2560: checking for strerror in -lcposix +configure:2593: gcc -o conftest -g -O2 conftest.c -lcposix >&5 +/boot/develop/tools/gnupro/bin/ld: cannot open -lcposix: No such file or directory +collect2: ld returned 1 exit status +configure:2596: $? = 1 +configure: failed program was: +#line 2567 "configure" +#include "confdefs.h" + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char strerror (); +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +strerror (); + ; + return 0; +} +configure:2613: result: no +configure:2624: checking for gcc option to accept ANSI C +configure:2690: gcc -c -g -O2 conftest.c >&5 +configure:2693: $? = 0 +configure:2696: test -s conftest.o +configure:2699: $? = 0 +configure:2713: result: none needed +configure:2729: checking how to run the C preprocessor +configure:2755: gcc -E conftest.c +configure:2761: $? = 0 +configure:2788: gcc -E conftest.c +/boot/home/Development/current/src/apps/bin/diffutils-2.8.1/configure:2784: ac_nonexistent.h: No such file or directory +configure:2794: $? = 1 +configure: failed program was: +#line 2783 "configure" +#include "confdefs.h" +#include +configure:2831: result: gcc -E +configure:2846: gcc -E conftest.c +configure:2852: $? = 0 +configure:2879: gcc -E conftest.c +/boot/home/Development/current/src/apps/bin/diffutils-2.8.1/configure:2875: ac_nonexistent.h: No such file or directory +configure:2885: $? = 1 +configure: failed program was: +#line 2874 "configure" +#include "confdefs.h" +#include +configure:2939: checking for a BSD-compatible install +configure:2993: result: /bin/install -c +configure:3045: checking for ranlib +configure:3061: found /boot/develop/tools/gnupro/bin/ranlib +configure:3072: result: ranlib +configure:3113: checking for special C compiler options needed for large files +configure:3193: result: no +configure:3199: checking for _FILE_OFFSET_BITS value needed for large files +configure:3233: gcc -c -g -O2 conftest.c >&5 +configure:3236: $? = 0 +configure:3239: test -s conftest.o +configure:3242: $? = 0 +configure:3298: result: no +configure:3308: checking for _LARGE_FILES value needed for large files +configure:3342: gcc -c -g -O2 conftest.c >&5 +configure:3345: $? = 0 +configure:3348: test -s conftest.o +configure:3351: $? = 0 +configure:3407: result: no +configure:3420: checking for gcc option to accept ANSI C +configure:3483: gcc -c -g -O2 conftest.c >&5 +configure:3486: $? = 0 +configure:3489: test -s conftest.o +configure:3492: $? = 0 +configure:3509: result: none needed +configure:3517: checking for an ANSI C-conforming const +configure:3587: gcc -c -g -O2 conftest.c >&5 +configure:3590: $? = 0 +configure:3593: test -s conftest.o +configure:3596: $? = 0 +configure:3606: result: yes +configure:3616: checking for inline +configure:3633: gcc -c -g -O2 conftest.c >&5 +configure:3636: $? = 0 +configure:3639: test -s conftest.o +configure:3642: $? = 0 +configure:3653: result: inline +configure:3669: checking for variable-length arrays +configure:3693: gcc -c -g -O2 conftest.c >&5 +configure:3696: $? = 0 +configure:3699: test -s conftest.o +configure:3702: $? = 0 +configure:3712: result: yes +configure:3737: checking for pr +configure:3755: found /bin/pr +configure:3768: result: /bin/pr +configure:3781: checking for stdbool.h that conforms to C99 +configure:3831: gcc -c -g -O2 conftest.c >&5 +/boot/home/Development/current/src/apps/bin/diffutils-2.8.1/configure:3790: parse error before string constant +/boot/home/Development/current/src/apps/bin/diffutils-2.8.1/configure:3802: warning: data definition has no type or storage class +/boot/home/Development/current/src/apps/bin/diffutils-2.8.1/configure:3802: warning: data definition has no type or storage class +/boot/home/Development/current/src/apps/bin/diffutils-2.8.1/configure:3807: size of array `d' is negative +/boot/home/Development/current/src/apps/bin/diffutils-2.8.1/configure:3808: variable-size type declared outside of any function +/boot/home/Development/current/src/apps/bin/diffutils-2.8.1/configure:3809: `_Bool' undeclared here (not in a function) +/boot/home/Development/current/src/apps/bin/diffutils-2.8.1/configure:3811: `_Bool' undeclared here (not in a function) +/boot/home/Development/current/src/apps/bin/diffutils-2.8.1/configure:3812: request for member `t' in something not a structure or union +configure:3834: $? = 1 +configure: failed program was: +#line 3786 "configure" +#include "confdefs.h" + + #include + #ifndef bool + "error: bool is not defined" + #endif + #ifndef false + "error: false is not defined" + #endif + #ifndef true + "error: false is not defined" + #endif + #ifndef __bool_true_false_are_defined + "error: __bool_true_false_are_defined is not defined" + #endif + + struct s { _Bool s: 1; _Bool t; } s; + + char a[true == 1 ? 1 : -1]; + char b[false == 0 ? 1 : -1]; + char c[__bool_true_false_are_defined == 1 ? 1 : -1]; + char d[(bool) -0.5 == true ? 1 : -1]; + char e[(bool) &s == true ? 1 : -1]; + char f[(_Bool) -0.0 == false ? 1 : -1]; + char g[true]; + char h[sizeof (_Bool)]; + char i[sizeof s.t]; + +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ + return !a + !b + !c + !d + !e + !f + !g + !h + !i; + ; + return 0; +} +configure:3850: result: no +configure:3860: checking for ANSI C header files +configure:3874: gcc -E conftest.c +configure:3880: $? = 0 +configure:3965: gcc -o conftest -g -O2 conftest.c >&5 +configure:3968: $? = 0 +configure:3970: ./conftest +configure:3973: $? = 0 +configure:3987: result: yes +configure:4011: checking for sys/types.h +configure:4024: gcc -c -g -O2 conftest.c >&5 +configure:4027: $? = 0 +configure:4030: test -s conftest.o +configure:4033: $? = 0 +configure:4043: result: yes +configure:4011: checking for sys/stat.h +configure:4024: gcc -c -g -O2 conftest.c >&5 +configure:4027: $? = 0 +configure:4030: test -s conftest.o +configure:4033: $? = 0 +configure:4043: result: yes +configure:4011: checking for stdlib.h +configure:4024: gcc -c -g -O2 conftest.c >&5 +configure:4027: $? = 0 +configure:4030: test -s conftest.o +configure:4033: $? = 0 +configure:4043: result: yes +configure:4011: checking for string.h +configure:4024: gcc -c -g -O2 conftest.c >&5 +configure:4027: $? = 0 +configure:4030: test -s conftest.o +configure:4033: $? = 0 +configure:4043: result: yes +configure:4011: checking for memory.h +configure:4024: gcc -c -g -O2 conftest.c >&5 +configure:4027: $? = 0 +configure:4030: test -s conftest.o +configure:4033: $? = 0 +configure:4043: result: yes +configure:4011: checking for strings.h +configure:4024: gcc -c -g -O2 conftest.c >&5 +configure:4027: $? = 0 +configure:4030: test -s conftest.o +configure:4033: $? = 0 +configure:4043: result: yes +configure:4011: checking for inttypes.h +configure:4024: gcc -c -g -O2 conftest.c >&5 +configure:4027: $? = 0 +configure:4030: test -s conftest.o +configure:4033: $? = 0 +configure:4043: result: yes +configure:4011: checking for stdint.h +configure:4024: gcc -c -g -O2 conftest.c >&5 +/boot/home/Development/current/src/apps/bin/diffutils-2.8.1/configure:4052: stdint.h: No such file or directory +configure:4027: $? = 1 +configure: failed program was: +#line 4016 "configure" +#include "confdefs.h" +#include +#if HAVE_SYS_TYPES_H +# include +#endif +#if HAVE_SYS_STAT_H +# include +#endif +#if STDC_HEADERS +# include +# include +#else +# if HAVE_STDLIB_H +# include +# endif +#endif +#if HAVE_STRING_H +# if !STDC_HEADERS && HAVE_MEMORY_H +# include +# endif +# include +#endif +#if HAVE_STRINGS_H +# include +#endif +#if HAVE_INTTYPES_H +# include +#else +# if HAVE_STDINT_H +# include +# endif +#endif +#if HAVE_UNISTD_H +# include +#endif + +#include +configure:4043: result: no +configure:4011: checking for unistd.h +configure:4024: gcc -c -g -O2 conftest.c >&5 +configure:4027: $? = 0 +configure:4030: test -s conftest.o +configure:4033: $? = 0 +configure:4043: result: yes +configure:4078: checking fcntl.h usability +configure:4087: gcc -c -g -O2 conftest.c >&5 +configure:4090: $? = 0 +configure:4093: test -s conftest.o +configure:4096: $? = 0 +configure:4105: result: yes +configure:4109: checking fcntl.h presence +configure:4116: gcc -E conftest.c +configure:4122: $? = 0 +configure:4140: result: yes +configure:4158: checking for fcntl.h +configure:4165: result: yes +configure:4078: checking libintl.h usability +configure:4087: gcc -c -g -O2 conftest.c >&5 +/boot/home/Development/current/src/apps/bin/diffutils-2.8.1/configure:4115: libintl.h: No such file or directory +configure:4090: $? = 1 +configure: failed program was: +#line 4080 "configure" +#include "confdefs.h" +#include +#if HAVE_SYS_TYPES_H +# include +#endif +#if HAVE_SYS_STAT_H +# include +#endif +#if STDC_HEADERS +# include +# include +#else +# if HAVE_STDLIB_H +# include +# endif +#endif +#if HAVE_STRING_H +# if !STDC_HEADERS && HAVE_MEMORY_H +# include +# endif +# include +#endif +#if HAVE_STRINGS_H +# include +#endif +#if HAVE_INTTYPES_H +# include +#else +# if HAVE_STDINT_H +# include +# endif +#endif +#if HAVE_UNISTD_H +# include +#endif +#include +configure:4105: result: no +configure:4109: checking libintl.h presence +configure:4116: gcc -E conftest.c +/boot/home/Development/current/src/apps/bin/diffutils-2.8.1/configure:4112: libintl.h: No such file or directory +configure:4122: $? = 1 +configure: failed program was: +#line 4111 "configure" +#include "confdefs.h" +#include +configure:4140: result: no +configure:4158: checking for libintl.h +configure:4165: result: no +configure:4078: checking limits.h usability +configure:4087: gcc -c -g -O2 conftest.c >&5 +configure:4090: $? = 0 +configure:4093: test -s conftest.o +configure:4096: $? = 0 +configure:4105: result: yes +configure:4109: checking limits.h presence +configure:4116: gcc -E conftest.c +configure:4122: $? = 0 +configure:4140: result: yes +configure:4158: checking for limits.h +configure:4165: result: yes +configure:4078: checking locale.h usability +configure:4087: gcc -c -g -O2 conftest.c >&5 +configure:4090: $? = 0 +configure:4093: test -s conftest.o +configure:4096: $? = 0 +configure:4105: result: yes +configure:4109: checking locale.h presence +configure:4116: gcc -E conftest.c +configure:4122: $? = 0 +configure:4140: result: yes +configure:4158: checking for locale.h +configure:4165: result: yes +configure:4069: checking for stdlib.h +configure:4074: result: yes +configure:4069: checking for string.h +configure:4074: result: yes +configure:4078: checking sys/file.h usability +configure:4087: gcc -c -g -O2 conftest.c >&5 +configure:4090: $? = 0 +configure:4093: test -s conftest.o +configure:4096: $? = 0 +configure:4105: result: yes +configure:4109: checking sys/file.h presence +configure:4116: gcc -E conftest.c +configure:4122: $? = 0 +configure:4140: result: yes +configure:4158: checking for sys/file.h +configure:4165: result: yes +configure:4078: checking time.h usability +configure:4087: gcc -c -g -O2 conftest.c >&5 +configure:4090: $? = 0 +configure:4093: test -s conftest.o +configure:4096: $? = 0 +configure:4105: result: yes +configure:4109: checking time.h presence +configure:4116: gcc -E conftest.c +configure:4122: $? = 0 +configure:4140: result: yes +configure:4158: checking for time.h +configure:4165: result: yes +configure:4069: checking for unistd.h +configure:4074: result: yes +configure:4178: checking for struct stat.st_blksize +configure:4204: gcc -c -g -O2 conftest.c >&5 +configure:4207: $? = 0 +configure:4210: test -s conftest.o +configure:4213: $? = 0 +configure:4223: result: yes +configure:4234: checking for struct stat.st_rdev +configure:4260: gcc -c -g -O2 conftest.c >&5 +configure:4263: $? = 0 +configure:4266: test -s conftest.o +configure:4269: $? = 0 +configure:4279: result: yes +configure:4290: checking for ptrdiff_t +configure:4317: gcc -c -g -O2 conftest.c >&5 +configure:4320: $? = 0 +configure:4323: test -s conftest.o +configure:4326: $? = 0 +configure:4336: result: yes +configure:4348: checking for ssize_t +configure:4375: gcc -c -g -O2 conftest.c >&5 +configure:4378: $? = 0 +configure:4381: test -s conftest.o +configure:4384: $? = 0 +configure:4394: result: yes +configure:4407: checking for unsigned long long +configure:4432: gcc -o conftest -g -O2 conftest.c >&5 +configure:4435: $? = 0 +configure:4438: test -s conftest +configure:4441: $? = 0 +configure:4451: result: yes +configure:4463: checking for uintmax_t +configure:4490: gcc -c -g -O2 conftest.c >&5 +configure:4493: $? = 0 +configure:4496: test -s conftest.o +configure:4499: $? = 0 +configure:4509: result: yes +configure:4540: checking for msgfmt +configure:4571: result: no +configure:4577: checking for gmsgfmt +configure:4608: result: : +configure:4618: checking for xgettext +configure:4649: result: no +configure:4657: checking for msgmerge +configure:4687: result: no +configure:4741: checking build system type +configure:4759: result: i586-pc-beos +configure:4767: checking host system type +configure:4781: result: i586-pc-beos +configure:4800: checking for ld used by GCC +configure:4863: result: /boot/develop/tools/gnupro/bin/ld +configure:4872: checking if the linker (/boot/develop/tools/gnupro/bin/ld) is GNU ld +GNU ld version 2.9-beos-991026 (with BFD 2.9-beos-991026) +configure:4884: result: yes +configure:4890: checking for shared library run path origin +configure:4903: result: done +configure:4926: checking whether NLS is requested +configure:4935: result: yes +configure:4952: checking for GNU gettext in libc +configure:4979: gcc -o conftest -g -O2 conftest.c >&5 +/boot/home/Development/current/src/apps/bin/diffutils-2.8.1/configure:4958: libintl.h: No such file or directory +configure:4982: $? = 1 +configure: failed program was: +#line 4957 "configure" +#include "confdefs.h" +#include +extern int _nl_msg_cat_cntr; +extern int *_nl_domain_bindings; +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +bindtextdomain ("", ""); +return (int) gettext ("") + _nl_msg_cat_cntr + *_nl_domain_bindings + ; + return 0; +} +configure:4998: result: no +configure:5387: checking for iconv +configure:5417: gcc -o conftest -g -O2 conftest.c >&5 +/boot/home/Development/current/src/apps/bin/diffutils-2.8.1/configure:5397: iconv.h: No such file or directory +configure:5420: $? = 1 +configure: failed program was: +#line 5395 "configure" +#include "confdefs.h" +#include +#include +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +iconv_t cd = iconv_open("",""); + iconv(cd,NULL,NULL,NULL,NULL); + iconv_close(cd); + ; + return 0; +} +configure:5459: gcc -o conftest -g -O2 conftest.c -liconv >&5 +/boot/home/Development/current/src/apps/bin/diffutils-2.8.1/configure:5439: iconv.h: No such file or directory +configure:5462: $? = 1 +configure: failed program was: +#line 5437 "configure" +#include "confdefs.h" +#include +#include +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +iconv_t cd = iconv_open("",""); + iconv(cd,NULL,NULL,NULL,NULL); + iconv_close(cd); + ; + return 0; +} +configure:5481: result: no, consider installing GNU libiconv +configure:5857: checking for GNU gettext in libintl +configure:5893: gcc -o conftest -g -O2 conftest.c -lintl >&5 +/boot/home/Development/current/src/apps/bin/diffutils-2.8.1/configure:5867: libintl.h: No such file or directory +configure:5896: $? = 1 +configure: failed program was: +#line 5866 "configure" +#include "confdefs.h" +#include +extern int _nl_msg_cat_cntr; +extern int *_nl_domain_bindings; +extern +#ifdef __cplusplus +"C" +#endif +const char *_nl_expand_alias (); +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +bindtextdomain ("", ""); +return (int) gettext ("") + _nl_msg_cat_cntr + *_nl_domain_bindings + *_nl_expand_alias (0) + ; + return 0; +} +configure:5964: result: no +configure:6058: checking for dirent.h that defines DIR +configure:6085: gcc -c -g -O2 conftest.c >&5 +configure:6088: $? = 0 +configure:6091: test -s conftest.o +configure:6094: $? = 0 +configure:6104: result: yes +configure:6117: checking for library containing opendir +configure:6150: gcc -o conftest -g -O2 conftest.c >&5 +configure:6153: $? = 0 +configure:6156: test -s conftest +configure:6159: $? = 0 +configure:6218: result: none required +configure:6336: checking whether stat file-mode macros are broken +configure:6381: result: no +configure:6391: checking for sys/wait.h that is POSIX.1 compatible +configure:6425: gcc -c -g -O2 conftest.c >&5 +configure:6428: $? = 0 +configure:6431: test -s conftest.o +configure:6434: $? = 0 +configure:6444: result: yes +configure:6454: checking for nanoseconds member of struct stat.st_mtim +configure:6488: gcc -c -g -O2 -DST_MTIM_NSEC=tv_nsec conftest.c >&5 +/boot/home/Development/current/src/apps/bin/diffutils-2.8.1/configure: In function `main': +/boot/home/Development/current/src/apps/bin/diffutils-2.8.1/configure:6480: structure has no member named `st_mtim' +configure:6491: $? = 1 +configure: failed program was: +#line 6468 "configure" +#include "confdefs.h" +#include +#include +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +struct stat s; s.st_mtim.ST_MTIM_NSEC; + ; + return 0; +} +configure:6488: gcc -c -g -O2 -DST_MTIM_NSEC=_tv_nsec conftest.c >&5 +/boot/home/Development/current/src/apps/bin/diffutils-2.8.1/configure: In function `main': +/boot/home/Development/current/src/apps/bin/diffutils-2.8.1/configure:6480: structure has no member named `st_mtim' +configure:6491: $? = 1 +configure: failed program was: +#line 6468 "configure" +#include "confdefs.h" +#include +#include +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +struct stat s; s.st_mtim.ST_MTIM_NSEC; + ; + return 0; +} +configure:6488: gcc -c -g -O2 -DST_MTIM_NSEC=st__tim.tv_nsec conftest.c >&5 +/boot/home/Development/current/src/apps/bin/diffutils-2.8.1/configure: In function `main': +/boot/home/Development/current/src/apps/bin/diffutils-2.8.1/configure:6480: structure has no member named `st_mtim' +configure:6491: $? = 1 +configure: failed program was: +#line 6468 "configure" +#include "confdefs.h" +#include +#include +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +struct stat s; s.st_mtim.ST_MTIM_NSEC; + ; + return 0; +} +configure:6508: result: no +configure:6520: checking for pid_t +configure:6547: gcc -c -g -O2 conftest.c >&5 +configure:6550: $? = 0 +configure:6553: test -s conftest.o +configure:6556: $? = 0 +configure:6566: result: yes +configure:6578: checking return type of signal handlers +configure:6612: gcc -c -g -O2 conftest.c >&5 +configure:6615: $? = 0 +configure:6618: test -s conftest.o +configure:6621: $? = 0 +configure:6631: result: void +configure:6652: checking for diraccess +configure:6695: gcc -o conftest -g -O2 conftest.c >&5 +/tmp/cc2mHzIr.o: In function `main': +/boot/home/Development/current/src/apps/bin/diffutils-2.8.1/configure:6685: undefined reference to `diraccess' +collect2: ld returned 1 exit status +configure:6698: $? = 1 +configure: failed program was: +#line 6657 "configure" +#include "confdefs.h" +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char diraccess (); below. */ +#include +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char diraccess (); +char (*f) (); + +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +/* 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_diraccess) || defined (__stub___diraccess) +choke me +#else +f = diraccess; +#endif + + ; + return 0; +} +configure:6714: result: no +configure:6652: checking for dup2 +configure:6695: gcc -o conftest -g -O2 conftest.c >&5 +configure:6698: $? = 0 +configure:6701: test -s conftest +configure:6704: $? = 0 +configure:6714: result: yes +configure:6652: checking for gettimeofday +configure:6695: gcc -o conftest -g -O2 conftest.c >&5 +configure:6698: $? = 0 +configure:6701: test -s conftest +configure:6704: $? = 0 +configure:6714: result: yes +configure:6652: checking for sigaction +configure:6695: gcc -o conftest -g -O2 conftest.c >&5 +configure:6698: $? = 0 +configure:6701: test -s conftest +configure:6704: $? = 0 +configure:6714: result: yes +configure:6652: checking for sigprocmask +configure:6695: gcc -o conftest -g -O2 conftest.c >&5 +configure:6698: $? = 0 +configure:6701: test -s conftest +configure:6704: $? = 0 +configure:6714: result: yes +configure:6652: checking for strchr +configure:6695: gcc -o conftest -g -O2 conftest.c >&5 +configure:6698: $? = 0 +configure:6701: test -s conftest +configure:6704: $? = 0 +configure:6714: result: yes +configure:6652: checking for strerror +configure:6695: gcc -o conftest -g -O2 conftest.c >&5 +configure:6698: $? = 0 +configure:6701: test -s conftest +configure:6704: $? = 0 +configure:6714: result: yes +configure:6652: checking for tmpnam +configure:6695: gcc -o conftest -g -O2 conftest.c >&5 +configure:6698: $? = 0 +configure:6701: test -s conftest +configure:6704: $? = 0 +configure:6714: result: yes +configure:6731: checking for memchr +configure:6774: gcc -o conftest -g -O2 conftest.c >&5 +configure:6777: $? = 0 +configure:6780: test -s conftest +configure:6783: $? = 0 +configure:6793: result: yes +configure:6731: checking for mkstemp +configure:6774: gcc -o conftest -g -O2 conftest.c >&5 +configure:6777: $? = 0 +configure:6780: test -s conftest +configure:6783: $? = 0 +configure:6793: result: yes +configure:6731: checking for strcasecmp +configure:6774: gcc -o conftest -g -O2 conftest.c >&5 +configure:6777: $? = 0 +configure:6780: test -s conftest +configure:6783: $? = 0 +configure:6793: result: yes +configure:6731: checking for waitpid +configure:6774: gcc -o conftest -g -O2 conftest.c >&5 +configure:6777: $? = 0 +configure:6780: test -s conftest +configure:6783: $? = 0 +configure:6793: result: yes +configure:6809: checking whether closedir returns void +configure:6841: gcc -o conftest -g -O2 conftest.c >&5 +configure:6844: $? = 0 +configure:6846: ./conftest +configure:6849: $? = 0 +configure:6862: result: no +configure:6878: checking for unistd.h +configure:6883: result: yes +configure:6887: checking vfork.h usability +configure:6896: gcc -c -g -O2 conftest.c >&5 +/boot/home/Development/current/src/apps/bin/diffutils-2.8.1/configure:6924: vfork.h: No such file or directory +configure:6899: $? = 1 +configure: failed program was: +#line 6889 "configure" +#include "confdefs.h" +#include +#if HAVE_SYS_TYPES_H +# include +#endif +#if HAVE_SYS_STAT_H +# include +#endif +#if STDC_HEADERS +# include +# include +#else +# if HAVE_STDLIB_H +# include +# endif +#endif +#if HAVE_STRING_H +# if !STDC_HEADERS && HAVE_MEMORY_H +# include +# endif +# include +#endif +#if HAVE_STRINGS_H +# include +#endif +#if HAVE_INTTYPES_H +# include +#else +# if HAVE_STDINT_H +# include +# endif +#endif +#if HAVE_UNISTD_H +# include +#endif +#include +configure:6914: result: no +configure:6918: checking vfork.h presence +configure:6925: gcc -E conftest.c +/boot/home/Development/current/src/apps/bin/diffutils-2.8.1/configure:6921: vfork.h: No such file or directory +configure:6931: $? = 1 +configure: failed program was: +#line 6920 "configure" +#include "confdefs.h" +#include +configure:6949: result: no +configure:6967: checking for vfork.h +configure:6974: result: no +configure:6992: checking for fork +configure:7035: gcc -o conftest -g -O2 conftest.c >&5 +configure:7038: $? = 0 +configure:7041: test -s conftest +configure:7044: $? = 0 +configure:7054: result: yes +configure:6992: checking for vfork +configure:7035: gcc -o conftest -g -O2 conftest.c >&5 +/tmp/ccR4UB3q.o: In function `main': +/boot/home/Development/current/src/apps/bin/diffutils-2.8.1/configure:7025: undefined reference to `vfork' +collect2: ld returned 1 exit status +configure:7038: $? = 1 +configure: failed program was: +#line 6997 "configure" +#include "confdefs.h" +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char vfork (); below. */ +#include +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char vfork (); +char (*f) (); + +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +/* 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_vfork) || defined (__stub___vfork) +choke me +#else +f = vfork; +#endif + + ; + return 0; +} +configure:7054: result: no +configure:7066: checking for working fork +configure:7110: result: yes +configure:7291: checking for vprintf +configure:7334: gcc -o conftest -g -O2 conftest.c >&5 +configure:7337: $? = 0 +configure:7340: test -s conftest +configure:7343: $? = 0 +configure:7353: result: yes +configure:7360: checking for _doprnt +configure:7403: gcc -o conftest -g -O2 conftest.c >&5 +/tmp/ccxwh45h.o: In function `main': +/boot/home/Development/current/src/apps/bin/diffutils-2.8.1/configure:7393: undefined reference to `_doprnt' +collect2: ld returned 1 exit status +configure:7406: $? = 1 +configure: failed program was: +#line 7365 "configure" +#include "confdefs.h" +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char _doprnt (); below. */ +#include +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char _doprnt (); +char (*f) (); + +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub__doprnt) || defined (__stub____doprnt) +choke me +#else +f = _doprnt; +#endif + + ; + return 0; +} +configure:7422: result: no +configure:7436: checking whether clearerr_unlocked is declared +configure:7463: gcc -c -g -O2 conftest.c >&5 +configure:7466: $? = 0 +configure:7469: test -s conftest.o +configure:7472: $? = 0 +configure:7482: result: yes +configure:7498: checking whether feof_unlocked is declared +configure:7525: gcc -c -g -O2 conftest.c >&5 +configure:7528: $? = 0 +configure:7531: test -s conftest.o +configure:7534: $? = 0 +configure:7544: result: yes +configure:7560: checking whether ferror_unlocked is declared +configure:7587: gcc -c -g -O2 conftest.c >&5 +configure:7590: $? = 0 +configure:7593: test -s conftest.o +configure:7596: $? = 0 +configure:7606: result: yes +configure:7622: checking whether fflush_unlocked is declared +configure:7649: gcc -c -g -O2 conftest.c >&5 +configure:7652: $? = 0 +configure:7655: test -s conftest.o +configure:7658: $? = 0 +configure:7668: result: yes +configure:7684: checking whether fgets_unlocked is declared +configure:7711: gcc -c -g -O2 conftest.c >&5 +/boot/home/Development/current/src/apps/bin/diffutils-2.8.1/configure: In function `main': +/boot/home/Development/current/src/apps/bin/diffutils-2.8.1/configure:7734: `fgets_unlocked' undeclared (first use in this function) +/boot/home/Development/current/src/apps/bin/diffutils-2.8.1/configure:7734: (Each undeclared identifier is reported only once +/boot/home/Development/current/src/apps/bin/diffutils-2.8.1/configure:7734: for each function it appears in.) +configure:7714: $? = 1 +configure: failed program was: +#line 7689 "configure" +#include "confdefs.h" +#include +#if HAVE_SYS_TYPES_H +# include +#endif +#if HAVE_SYS_STAT_H +# include +#endif +#if STDC_HEADERS +# include +# include +#else +# if HAVE_STDLIB_H +# include +# endif +#endif +#if HAVE_STRING_H +# if !STDC_HEADERS && HAVE_MEMORY_H +# include +# endif +# include +#endif +#if HAVE_STRINGS_H +# include +#endif +#if HAVE_INTTYPES_H +# include +#else +# if HAVE_STDINT_H +# include +# endif +#endif +#if HAVE_UNISTD_H +# include +#endif +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +#ifndef fgets_unlocked + char *p = (char *) fgets_unlocked; +#endif + + ; + return 0; +} +configure:7730: result: no +configure:7746: checking whether fputc_unlocked is declared +configure:7773: gcc -c -g -O2 conftest.c >&5 +configure:7776: $? = 0 +configure:7779: test -s conftest.o +configure:7782: $? = 0 +configure:7792: result: yes +configure:7808: checking whether fputs_unlocked is declared +configure:7835: gcc -c -g -O2 conftest.c >&5 +/boot/home/Development/current/src/apps/bin/diffutils-2.8.1/configure: In function `main': +/boot/home/Development/current/src/apps/bin/diffutils-2.8.1/configure:7858: `fputs_unlocked' undeclared (first use in this function) +/boot/home/Development/current/src/apps/bin/diffutils-2.8.1/configure:7858: (Each undeclared identifier is reported only once +/boot/home/Development/current/src/apps/bin/diffutils-2.8.1/configure:7858: for each function it appears in.) +configure:7838: $? = 1 +configure: failed program was: +#line 7813 "configure" +#include "confdefs.h" +#include +#if HAVE_SYS_TYPES_H +# include +#endif +#if HAVE_SYS_STAT_H +# include +#endif +#if STDC_HEADERS +# include +# include +#else +# if HAVE_STDLIB_H +# include +# endif +#endif +#if HAVE_STRING_H +# if !STDC_HEADERS && HAVE_MEMORY_H +# include +# endif +# include +#endif +#if HAVE_STRINGS_H +# include +#endif +#if HAVE_INTTYPES_H +# include +#else +# if HAVE_STDINT_H +# include +# endif +#endif +#if HAVE_UNISTD_H +# include +#endif +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +#ifndef fputs_unlocked + char *p = (char *) fputs_unlocked; +#endif + + ; + return 0; +} +configure:7854: result: no +configure:7870: checking whether fread_unlocked is declared +configure:7897: gcc -c -g -O2 conftest.c >&5 +configure:7900: $? = 0 +configure:7903: test -s conftest.o +configure:7906: $? = 0 +configure:7916: result: yes +configure:7932: checking whether fwrite_unlocked is declared +configure:7959: gcc -c -g -O2 conftest.c >&5 +configure:7962: $? = 0 +configure:7965: test -s conftest.o +configure:7968: $? = 0 +configure:7978: result: yes +configure:7994: checking whether getc_unlocked is declared +configure:8021: gcc -c -g -O2 conftest.c >&5 +configure:8024: $? = 0 +configure:8027: test -s conftest.o +configure:8030: $? = 0 +configure:8040: result: yes +configure:8056: checking whether getchar_unlocked is declared +configure:8083: gcc -c -g -O2 conftest.c >&5 +configure:8086: $? = 0 +configure:8089: test -s conftest.o +configure:8092: $? = 0 +configure:8102: result: yes +configure:8118: checking whether putc_unlocked is declared +configure:8145: gcc -c -g -O2 conftest.c >&5 +configure:8148: $? = 0 +configure:8151: test -s conftest.o +configure:8154: $? = 0 +configure:8164: result: yes +configure:8180: checking whether putchar_unlocked is declared +configure:8207: gcc -c -g -O2 conftest.c >&5 +configure:8210: $? = 0 +configure:8213: test -s conftest.o +configure:8216: $? = 0 +configure:8226: result: yes +configure:8244: checking whether time.h and sys/time.h may both be included +configure:8272: gcc -c -g -O2 conftest.c >&5 +configure:8275: $? = 0 +configure:8278: test -s conftest.o +configure:8281: $? = 0 +configure:8291: result: yes +configure:8301: checking whether struct tm is in sys/time.h or time.h +configure:8327: gcc -c -g -O2 conftest.c >&5 +configure:8330: $? = 0 +configure:8333: test -s conftest.o +configure:8336: $? = 0 +configure:8346: result: time.h +configure:8363: checking for localtime_r +configure:8406: gcc -o conftest -g -O2 conftest.c >&5 +configure:8409: $? = 0 +configure:8412: test -s conftest +configure:8415: $? = 0 +configure:8425: result: yes +configure:8363: checking for strftime +configure:8406: gcc -o conftest -g -O2 conftest.c >&5 +configure:8409: $? = 0 +configure:8412: test -s conftest +configure:8415: $? = 0 +configure:8425: result: yes +configure:8441: checking for limits.h +configure:8446: result: yes +configure:8558: checking for bcopy +configure:8601: gcc -o conftest -g -O2 conftest.c >&5 +configure:8604: $? = 0 +configure:8607: test -s conftest +configure:8610: $? = 0 +configure:8620: result: yes +configure:8558: checking for tzset +configure:8601: gcc -o conftest -g -O2 conftest.c >&5 +configure:8604: $? = 0 +configure:8607: test -s conftest +configure:8610: $? = 0 +configure:8620: result: yes +configure:8558: checking for mempcpy +configure:8601: gcc -o conftest -g -O2 conftest.c >&5 +/tmp/ccHZh6Sr.o: In function `main': +/boot/home/Development/current/src/apps/bin/diffutils-2.8.1/configure:8591: undefined reference to `mempcpy' +collect2: ld returned 1 exit status +configure:8604: $? = 1 +configure: failed program was: +#line 8563 "configure" +#include "confdefs.h" +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char mempcpy (); below. */ +#include +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char mempcpy (); +char (*f) (); + +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +/* 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_mempcpy) || defined (__stub___mempcpy) +choke me +#else +f = mempcpy; +#endif + + ; + return 0; +} +configure:8620: result: no +configure:8558: checking for memcpy +configure:8601: gcc -o conftest -g -O2 conftest.c >&5 +/boot/home/Development/current/src/apps/bin/diffutils-2.8.1/configure:8573: warning: conflicting types for built-in function `memcpy' +configure:8604: $? = 0 +configure:8607: test -s conftest +configure:8610: $? = 0 +configure:8620: result: yes +configure:8558: checking for memset +configure:8601: gcc -o conftest -g -O2 conftest.c >&5 +/boot/home/Development/current/src/apps/bin/diffutils-2.8.1/configure:8573: warning: conflicting types for built-in function `memset' +configure:8604: $? = 0 +configure:8607: test -s conftest +configure:8610: $? = 0 +configure:8620: result: yes +configure:8632: checking for struct tm.tm_zone +configure:8661: gcc -c -g -O2 conftest.c >&5 +configure:8664: $? = 0 +configure:8667: test -s conftest.o +configure:8670: $? = 0 +configure:8680: result: yes +configure:8762: checking for mblen +configure:8805: gcc -o conftest -g -O2 conftest.c >&5 +configure:8808: $? = 0 +configure:8811: test -s conftest +configure:8814: $? = 0 +configure:8824: result: yes +configure:8762: checking for mbrlen +configure:8805: gcc -o conftest -g -O2 conftest.c >&5 +configure:8808: $? = 0 +configure:8811: test -s conftest +configure:8814: $? = 0 +configure:8824: result: yes +configure:8835: checking for struct tm.tm_gmtoff +configure:8862: gcc -c -g -O2 conftest.c >&5 +configure:8865: $? = 0 +configure:8868: test -s conftest.o +configure:8871: $? = 0 +configure:8881: result: yes +configure:8907: checking sys/time.h usability +configure:8916: gcc -c -g -O2 conftest.c >&5 +configure:8919: $? = 0 +configure:8922: test -s conftest.o +configure:8925: $? = 0 +configure:8934: result: yes +configure:8938: checking sys/time.h presence +configure:8945: gcc -E conftest.c +configure:8951: $? = 0 +configure:8969: result: yes +configure:8987: checking for sys/time.h +configure:8994: result: yes +configure:9021: checking for working malloc +configure:9042: gcc -o conftest -g -O2 conftest.c >&5 +configure:9045: $? = 0 +configure:9047: ./conftest +configure:9050: $? = 0 +configure:9064: result: yes +configure:9082: checking for working realloc +configure:9103: gcc -o conftest -g -O2 conftest.c >&5 +configure:9106: $? = 0 +configure:9108: ./conftest +configure:9111: $? = 0 +configure:9125: result: yes +configure:9138: checking for working alloca.h +configure:9162: gcc -o conftest -g -O2 conftest.c >&5 +configure:9165: $? = 0 +configure:9168: test -s conftest +configure:9171: $? = 0 +configure:9181: result: yes +configure:9191: checking for alloca +configure:9235: gcc -o conftest -g -O2 conftest.c >&5 +configure:9238: $? = 0 +configure:9241: test -s conftest +configure:9244: $? = 0 +configure:9254: result: yes +configure:9447: checking for working C stack overflow detection +configure:9539: gcc -o conftest -g -O2 conftest.c >&5 +/boot/home/Development/current/src/apps/bin/diffutils-2.8.1/configure:9458: ucontext.h: No such file or directory +configure:9542: $? = 1 +configure: program exited with status 1 +configure: failed program was: +#line 9455 "configure" +#include "confdefs.h" + + #include + #include + + static union + { + char buffer[SIGSTKSZ]; + long double ld; + uintmax_t u; + void *p; + } alternate_signal_stack; + + #if STACK_DIRECTION + # define find_stack_direction(ptr) STACK_DIRECTION + #else + static int + find_stack_direction (char const *addr) + { + char dummy; + return (! addr ? find_stack_direction (&dummy) + : addr < &dummy ? 1 : -1); + } + #endif + + static void + segv_handler (int signo, siginfo_t *info, void *context) + { + if (0 < info->si_code) + { + ucontext_t const *user_context = context; + char const *stack_min = user_context->uc_stack.ss_sp; + size_t stack_size = user_context->uc_stack.ss_size; + char const *faulting_address = info->si_addr; + size_t s = faulting_address - stack_min; + size_t page_size = sysconf (_SC_PAGESIZE); + if (find_stack_direction (0) < 0) + s += page_size; + if (s < stack_size + page_size) + _exit (0); + } + + _exit (1); + } + + static int + c_stack_action (void) + { + stack_t st; + struct sigaction act; + int r; + + st.ss_flags = 0; + st.ss_sp = alternate_signal_stack.buffer; + st.ss_size = sizeof alternate_signal_stack.buffer; + r = sigaltstack (&st, 0); + if (r != 0) + return r; + + sigemptyset (&act.sa_mask); + act.sa_flags = SA_NODEFER | SA_ONSTACK | SA_RESETHAND | SA_SIGINFO; + act.sa_sigaction = segv_handler; + return sigaction (SIGSEGV, &act, 0); + } + + static int + recurse (char *p) + { + char array[500]; + array[0] = 1; + return *p + recurse (array); + } + + int + main (void) + { + c_stack_action (); + return recurse ("\1"); + } + +configure:9560: result: no +configure:9581: checking for unistd.h +configure:9586: result: yes +configure:9691: checking for siginfo_t +configure:9719: gcc -c -g -O2 conftest.c >&5 +/boot/home/Development/current/src/apps/bin/diffutils-2.8.1/configure: In function `main': +/boot/home/Development/current/src/apps/bin/diffutils-2.8.1/configure:9708: `siginfo_t' undeclared (first use in this function) +/boot/home/Development/current/src/apps/bin/diffutils-2.8.1/configure:9708: (Each undeclared identifier is reported only once +/boot/home/Development/current/src/apps/bin/diffutils-2.8.1/configure:9708: for each function it appears in.) +/boot/home/Development/current/src/apps/bin/diffutils-2.8.1/configure:9708: parse error before `)' +configure:9722: $? = 1 +configure: failed program was: +#line 9696 "configure" +#include "confdefs.h" +#include + +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +if ((siginfo_t *) 0) + return 0; +if (sizeof (siginfo_t)) + return 0; + ; + return 0; +} +configure:9738: result: no +configure:9748: checking for stack_t +configure:9776: gcc -c -g -O2 conftest.c >&5 +configure:9779: $? = 0 +configure:9782: test -s conftest.o +configure:9785: $? = 0 +configure:9795: result: yes +configure:9813: checking for strerror +configure:9875: result: yes +configure:9813: checking for vprintf +configure:9875: result: yes +configure:9813: checking for doprnt +configure:9856: gcc -o conftest -g -O2 conftest.c >&5 +/tmp/ccHUZySq.o: In function `main': +/boot/home/Development/current/src/apps/bin/diffutils-2.8.1/configure:9846: undefined reference to `doprnt' +collect2: ld returned 1 exit status +configure:9859: $? = 1 +configure: failed program was: +#line 9818 "configure" +#include "confdefs.h" +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char doprnt (); below. */ +#include +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char doprnt (); +char (*f) (); + +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_doprnt) || defined (__stub___doprnt) +choke me +#else +f = doprnt; +#endif + + ; + return 0; +} +configure:9875: result: no +configure:9885: checking whether strerror is declared +configure:9912: gcc -c -g -O2 conftest.c >&5 +configure:9915: $? = 0 +configure:9918: test -s conftest.o +configure:9921: $? = 0 +configure:9931: result: yes +configure:9949: checking whether strerror_r is declared +configure:9976: gcc -c -g -O2 conftest.c >&5 +/boot/home/Development/current/src/apps/bin/diffutils-2.8.1/configure: In function `main': +/boot/home/Development/current/src/apps/bin/diffutils-2.8.1/configure:9999: `strerror_r' undeclared (first use in this function) +/boot/home/Development/current/src/apps/bin/diffutils-2.8.1/configure:9999: (Each undeclared identifier is reported only once +/boot/home/Development/current/src/apps/bin/diffutils-2.8.1/configure:9999: for each function it appears in.) +configure:9979: $? = 1 +configure: failed program was: +#line 9954 "configure" +#include "confdefs.h" +#include +#if HAVE_SYS_TYPES_H +# include +#endif +#if HAVE_SYS_STAT_H +# include +#endif +#if STDC_HEADERS +# include +# include +#else +# if HAVE_STDLIB_H +# include +# endif +#endif +#if HAVE_STRING_H +# if !STDC_HEADERS && HAVE_MEMORY_H +# include +# endif +# include +#endif +#if HAVE_STRINGS_H +# include +#endif +#if HAVE_INTTYPES_H +# include +#else +# if HAVE_STDINT_H +# include +# endif +#endif +#if HAVE_UNISTD_H +# include +#endif +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +#ifndef strerror_r + char *p = (char *) strerror_r; +#endif + + ; + return 0; +} +configure:9995: result: no +configure:10017: checking for strerror_r +configure:10060: gcc -o conftest -g -O2 conftest.c >&5 +configure:10063: $? = 0 +configure:10066: test -s conftest +configure:10069: $? = 0 +configure:10079: result: yes +configure:10089: checking whether strerror_r returns char * +configure:10169: gcc -o conftest -g -O2 conftest.c >&5 +configure:10172: $? = 0 +configure:10174: ./conftest +configure:10177: $? = 0 +configure:10190: result: yes +configure:10200: checking for ANSI C header files +configure:10327: result: yes +configure:10339: checking for function prototypes +configure:10342: result: yes +configure:10363: checking for setlocale +configure:10406: gcc -o conftest -g -O2 conftest.c >&5 +configure:10409: $? = 0 +configure:10412: test -s conftest +configure:10415: $? = 0 +configure:10425: result: yes +configure:10442: checking for locale.h +configure:10447: result: yes +configure:10442: checking for stdlib.h +configure:10447: result: yes +configure:10442: checking for string.h +configure:10447: result: yes +configure:10558: checking for isascii +configure:10601: gcc -o conftest -g -O2 conftest.c >&5 +configure:10604: $? = 0 +configure:10607: test -s conftest +configure:10610: $? = 0 +configure:10620: result: yes +configure:10558: checking for iswprint +configure:10601: gcc -o conftest -g -O2 conftest.c >&5 +configure:10604: $? = 0 +configure:10607: test -s conftest +configure:10610: $? = 0 +configure:10620: result: yes +configure:10631: checking whether mbrtowc and mbstate_t are properly declared +configure:10655: gcc -o conftest -g -O2 conftest.c >&5 +/boot/home/Development/current/src/apps/bin/diffutils-2.8.1/configure: In function `main': +/boot/home/Development/current/src/apps/bin/diffutils-2.8.1/configure:10647: `mbstate_t' undeclared (first use in this function) +/boot/home/Development/current/src/apps/bin/diffutils-2.8.1/configure:10647: (Each undeclared identifier is reported only once +/boot/home/Development/current/src/apps/bin/diffutils-2.8.1/configure:10647: for each function it appears in.) +/boot/home/Development/current/src/apps/bin/diffutils-2.8.1/configure:10647: parse error before `state' +/boot/home/Development/current/src/apps/bin/diffutils-2.8.1/configure:10647: `state' undeclared (first use in this function) +/boot/home/Development/current/src/apps/bin/diffutils-2.8.1/configure:10647: `mbrtowc' undeclared (first use in this function) +configure:10658: $? = 1 +configure: failed program was: +#line 10636 "configure" +#include "confdefs.h" +#include +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +mbstate_t state; return ! (sizeof state && mbrtowc); + ; + return 0; +} +configure:10674: result: no +configure:10694: checking for limits.h +configure:10699: result: yes +configure:10703: checking stddef.h usability +configure:10712: gcc -c -g -O2 conftest.c >&5 +configure:10715: $? = 0 +configure:10718: test -s conftest.o +configure:10721: $? = 0 +configure:10730: result: yes +configure:10734: checking stddef.h presence +configure:10741: gcc -E conftest.c +configure:10747: $? = 0 +configure:10765: result: yes +configure:10783: checking for stddef.h +configure:10790: result: yes +configure:10694: checking for stdlib.h +configure:10699: result: yes +configure:10694: checking for string.h +configure:10699: result: yes +configure:10703: checking wchar.h usability +configure:10712: gcc -c -g -O2 conftest.c >&5 +configure:10715: $? = 0 +configure:10718: test -s conftest.o +configure:10721: $? = 0 +configure:10730: result: yes +configure:10734: checking wchar.h presence +configure:10741: gcc -E conftest.c +configure:10747: $? = 0 +configure:10765: result: yes +configure:10783: checking for wchar.h +configure:10790: result: yes +configure:10703: checking wctype.h usability +configure:10712: gcc -c -g -O2 conftest.c >&5 +/boot/home/Development/current/src/apps/bin/diffutils-2.8.1/configure:10740: wctype.h: No such file or directory +configure:10715: $? = 1 +configure: failed program was: +#line 10705 "configure" +#include "confdefs.h" +#include +#if HAVE_SYS_TYPES_H +# include +#endif +#if HAVE_SYS_STAT_H +# include +#endif +#if STDC_HEADERS +# include +# include +#else +# if HAVE_STDLIB_H +# include +# endif +#endif +#if HAVE_STRING_H +# if !STDC_HEADERS && HAVE_MEMORY_H +# include +# endif +# include +#endif +#if HAVE_STRINGS_H +# include +#endif +#if HAVE_INTTYPES_H +# include +#else +# if HAVE_STDINT_H +# include +# endif +#endif +#if HAVE_UNISTD_H +# include +#endif +#include +configure:10730: result: no +configure:10734: checking wctype.h presence +configure:10741: gcc -E conftest.c +/boot/home/Development/current/src/apps/bin/diffutils-2.8.1/configure:10737: wctype.h: No such file or directory +configure:10747: $? = 1 +configure: failed program was: +#line 10736 "configure" +#include "confdefs.h" +#include +configure:10765: result: no +configure:10783: checking for wctype.h +configure:10790: result: no +configure:10803: checking for ANSI C header files +configure:10930: result: yes +configure:10941: checking whether backslash-a works in strings +configure:10972: gcc -c -g -O2 conftest.c >&5 +configure:10975: $? = 0 +configure:10978: test -s conftest.o +configure:10981: $? = 0 +configure:10991: result: yes +configure:11007: checking for stdlib.h +configure:11012: result: yes +configure:11117: checking for mbstate_t +configure:11145: gcc -c -g -O2 conftest.c >&5 +/boot/home/Development/current/src/apps/bin/diffutils-2.8.1/configure: In function `main': +/boot/home/Development/current/src/apps/bin/diffutils-2.8.1/configure:11137: `mbstate_t' undeclared (first use in this function) +/boot/home/Development/current/src/apps/bin/diffutils-2.8.1/configure:11137: (Each undeclared identifier is reported only once +/boot/home/Development/current/src/apps/bin/diffutils-2.8.1/configure:11137: for each function it appears in.) +/boot/home/Development/current/src/apps/bin/diffutils-2.8.1/configure:11137: parse error before `x' +/boot/home/Development/current/src/apps/bin/diffutils-2.8.1/configure:11137: `x' undeclared (first use in this function) +configure:11148: $? = 1 +configure: failed program was: +#line 11122 "configure" +#include "confdefs.h" + +#if HAVE_STDLIB_H +# include +#endif +#include +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +mbstate_t x; return sizeof x; + ; + return 0; +} +configure:11164: result: no +configure:11175: checking for function prototypes +configure:11178: result: yes +configure:11192: checking for ANSI C header files +configure:11319: result: yes +configure:11334: checking for string.h +configure:11339: result: yes +configure:11453: checking for bzero +configure:11496: gcc -o conftest -g -O2 conftest.c >&5 +configure:11499: $? = 0 +configure:11502: test -s conftest +configure:11505: $? = 0 +configure:11515: result: yes +configure:11453: checking for bcopy +configure:11515: result: yes +configure:11453: checking for isascii +configure:11515: result: yes +configure:11453: checking for btowc +configure:11496: gcc -o conftest -g -O2 conftest.c >&5 +configure:11499: $? = 0 +configure:11502: test -s conftest +configure:11505: $? = 0 +configure:11515: result: yes +configure:11542: checking alloca.h usability +configure:11551: gcc -c -g -O2 conftest.c >&5 +configure:11554: $? = 0 +configure:11557: test -s conftest.o +configure:11560: $? = 0 +configure:11569: result: yes +configure:11573: checking alloca.h presence +configure:11580: gcc -E conftest.c +configure:11586: $? = 0 +configure:11604: result: yes +configure:11622: checking for alloca.h +configure:11629: result: yes +configure:11533: checking for libintl.h +configure:11538: result: no +configure:11533: checking for wctype.h +configure:11538: result: no +configure:11533: checking for wchar.h +configure:11538: result: yes +configure:11642: checking for ANSI C header files +configure:11769: result: yes +configure:11781: checking for working alloca.h +configure:11824: result: yes +configure:11834: checking for alloca +configure:11897: result: yes +configure:12094: checking for ANSI C header files +configure:12221: result: yes +configure:12231: checking whether stat file-mode macros are broken +configure:12276: result: no +configure:12294: checking for fcntl.h +configure:12299: result: yes +configure:12294: checking for sys/time.h +configure:12299: result: yes +configure:12294: checking for stdint.h +configure:12299: result: no +configure:12294: checking for unistd.h +configure:12299: result: yes +configure:12408: checking for __secure_getenv +configure:12451: gcc -o conftest -g -O2 conftest.c >&5 +/tmp/ccScM0ti.o: In function `main': +/boot/home/Development/current/src/apps/bin/diffutils-2.8.1/configure:12441: undefined reference to `__secure_getenv' +collect2: ld returned 1 exit status +configure:12454: $? = 1 +configure: failed program was: +#line 12413 "configure" +#include "confdefs.h" +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char __secure_getenv (); below. */ +#include +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char __secure_getenv (); +char (*f) (); + +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +/* 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___secure_getenv) || defined (__stub_____secure_getenv) +choke me +#else +f = __secure_getenv; +#endif + + ; + return 0; +} +configure:12470: result: no +configure:12408: checking for gettimeofday +configure:12470: result: yes +configure:12480: checking whether getenv is declared +configure:12507: gcc -c -g -O2 conftest.c >&5 +configure:12510: $? = 0 +configure:12513: test -s conftest.o +configure:12516: $? = 0 +configure:12526: result: yes +configure:12546: checking for long long +configure:12571: gcc -o conftest -g -O2 conftest.c >&5 +configure:12574: $? = 0 +configure:12577: test -s conftest +configure:12580: $? = 0 +configure:12590: result: yes +configure:12602: checking for intmax_t +configure:12629: gcc -c -g -O2 conftest.c >&5 +configure:12632: $? = 0 +configure:12635: test -s conftest.o +configure:12638: $? = 0 +configure:12648: result: yes +configure:12669: checking whether strtol is declared +configure:12696: gcc -c -g -O2 conftest.c >&5 +configure:12699: $? = 0 +configure:12702: test -s conftest.o +configure:12705: $? = 0 +configure:12715: result: yes +configure:12731: checking whether strtoul is declared +configure:12758: gcc -c -g -O2 conftest.c >&5 +configure:12761: $? = 0 +configure:12764: test -s conftest.o +configure:12767: $? = 0 +configure:12777: result: yes +configure:12793: checking whether strtoull is declared +configure:12820: gcc -c -g -O2 conftest.c >&5 +configure:12823: $? = 0 +configure:12826: test -s conftest.o +configure:12829: $? = 0 +configure:12839: result: yes +configure:12855: checking whether strtoimax is declared +configure:12882: gcc -c -g -O2 conftest.c >&5 +configure:12885: $? = 0 +configure:12888: test -s conftest.o +configure:12891: $? = 0 +configure:12901: result: yes +configure:12917: checking whether strtoumax is declared +configure:12944: gcc -c -g -O2 conftest.c >&5 +configure:12947: $? = 0 +configure:12950: test -s conftest.o +configure:12953: $? = 0 +configure:12963: result: yes +configure:12988: checking for limits.h +configure:12993: result: yes +configure:12988: checking for stdlib.h +configure:12993: result: yes +configure:12988: checking for inttypes.h +configure:12993: result: yes +configure:13098: checking whether defines strtoumax as a macro +configure:13120: result: no +configure:13128: checking for strtoumax +configure:13171: gcc -o conftest -g -O2 conftest.c >&5 +configure:13174: $? = 0 +configure:13177: test -s conftest +configure:13180: $? = 0 +configure:13190: result: yes +configure:13375: checking for library containing clock_gettime +configure:13408: gcc -o conftest -g -O2 conftest.c >&5 +/tmp/ccCZIDrs.o: In function `main': +/boot/home/Development/current/src/apps/bin/diffutils-2.8.1/configure:13400: undefined reference to `clock_gettime' +collect2: ld returned 1 exit status +configure:13411: $? = 1 +configure: failed program was: +#line 13382 "configure" +#include "confdefs.h" + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char clock_gettime (); +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +clock_gettime (); + ; + return 0; +} +configure:13454: gcc -o conftest -g -O2 conftest.c -lrt >&5 +/boot/develop/tools/gnupro/bin/ld: cannot open -lrt: No such file or directory +collect2: ld returned 1 exit status +configure:13457: $? = 1 +configure: failed program was: +#line 13428 "configure" +#include "confdefs.h" + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char clock_gettime (); +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +clock_gettime (); + ; + return 0; +} +configure:13454: gcc -o conftest -g -O2 conftest.c -lposix4 >&5 +/boot/develop/tools/gnupro/bin/ld: cannot open -lposix4: No such file or directory +collect2: ld returned 1 exit status +configure:13457: $? = 1 +configure: failed program was: +#line 13428 "configure" +#include "confdefs.h" + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char clock_gettime (); +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +clock_gettime (); + ; + return 0; +} +configure:13476: result: no +configure:13494: checking for clock_gettime +configure:13537: gcc -o conftest -g -O2 conftest.c >&5 +/tmp/ccWIEkli.o: In function `main': +/boot/home/Development/current/src/apps/bin/diffutils-2.8.1/configure:13527: undefined reference to `clock_gettime' +collect2: ld returned 1 exit status +configure:13540: $? = 1 +configure: failed program was: +#line 13499 "configure" +#include "confdefs.h" +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char clock_gettime (); below. */ +#include +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char clock_gettime (); +char (*f) (); + +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +/* 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_clock_gettime) || defined (__stub___clock_gettime) +choke me +#else +f = clock_gettime; +#endif + + ; + return 0; +} +configure:13556: result: no +configure:13569: checking for working GNU-style fnmatch +configure:13605: gcc -o conftest -g -O2 conftest.c >&5 +/boot/home/Development/current/src/apps/bin/diffutils-2.8.1/configure:13582: fnmatch.h: No such file or directory +configure:13608: $? = 1 +configure: program exited with status 1 +configure: failed program was: +#line 13581 "configure" +#include "confdefs.h" +#include +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +exit (fnmatch ("a*", "abc", 0) != 0 + || fnmatch ("xxXX", "xXxX", FNM_CASEFOLD) != 0 + || fnmatch ("d*/*1", "d/s/1", FNM_FILE_NAME) != FNM_NOMATCH + || fnmatch ("*", "x", FNM_FILE_NAME | FNM_LEADING_DIR) != 0 + || fnmatch ("x*", "x/y/z", FNM_FILE_NAME | FNM_LEADING_DIR) != 0 + || fnmatch ("*c*", "c/x", FNM_FILE_NAME | FNM_LEADING_DIR) != 0); + ; + return 0; +} +configure:13626: result: no +configure:13655: checking for working re_compile_pattern +configure:13701: gcc -o conftest -g -O2 conftest.c >&5 +configure:13704: $? = 0 +configure:13706: ./conftest +configure:13709: $? = 1 +configure: program exited with status 1 +configure: failed program was: +#line 13663 "configure" +#include "confdefs.h" +#include +#include + int + main () + { + static struct re_pattern_buffer regex; + const char *s; + struct re_registers regs; + re_set_syntax (RE_SYNTAX_POSIX_EGREP); + s = re_compile_pattern ("a[[:]:]]b\n", 9, ®ex); + /* This should fail with _Invalid character class name_ error. */ + if (!s) + exit (1); + + /* This should succeed, but doesn't for e.g. glibc-2.1.3. */ + s = re_compile_pattern ("{1", 2, ®ex); + + if (s) + exit (1); + + /* The following example is derived from a problem report + against gawk from Jorge Stolfi . */ + s = re_compile_pattern ("[anù]*n", 7, ®ex); + if (s) + exit (1); + + /* This should match, but doesn't for e.g. glibc-2.2.1. */ + if (re_match (®ex, "an", 2, 0, ®s) != 2) + exit (1); + + exit (0); + } + +configure:13722: result: no +configure:13755: checking whether system is Windows or MSDOS +configure:13782: gcc -c -g -O2 conftest.c >&5 +/boot/home/Development/current/src/apps/bin/diffutils-2.8.1/configure: In function `main': +/boot/home/Development/current/src/apps/bin/diffutils-2.8.1/configure:13773: `neither' undeclared (first use in this function) +/boot/home/Development/current/src/apps/bin/diffutils-2.8.1/configure:13773: (Each undeclared identifier is reported only once +/boot/home/Development/current/src/apps/bin/diffutils-2.8.1/configure:13773: for each function it appears in.) +/boot/home/Development/current/src/apps/bin/diffutils-2.8.1/configure:13773: parse error before `MSDOS' +configure:13785: $? = 1 +configure: failed program was: +#line 13761 "configure" +#include "confdefs.h" + +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +#if !defined _WIN32 && !defined __WIN32__ && !defined __MSDOS__ +neither MSDOS nor Windows +#endif + ; + return 0; +} +configure:13802: result: no +configure:13837: checking for fcntl.h +configure:13842: result: yes +configure:13837: checking for unistd.h +configure:13842: result: yes +configure:13946: checking for DOS-style setmode +configure:13976: gcc -o conftest -g -O2 conftest.c >&5 +/boot/home/Development/current/src/apps/bin/diffutils-2.8.1/configure:13952: io.h: No such file or directory +configure:13979: $? = 1 +configure: failed program was: +#line 13951 "configure" +#include "confdefs.h" +#include + #if HAVE_FCNTL_H + # include + #endif + #if HAVE_UNISTD_H + # include + #endif +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +int ret = setmode && setmode (1, O_BINARY); + ; + return 0; +} +configure:13995: result: no +configure:14096: creating ./config.status + +## ---------------------- ## +## Running config.status. ## +## ---------------------- ## + +This file was extended by GNU diffutils config.status 2.8.1, which was +generated by GNU Autoconf 2.53. Invocation command line was + + CONFIG_FILES = + CONFIG_HEADERS = + CONFIG_LINKS = + CONFIG_COMMANDS = + $ ./config.status + +on + +config.status:657: creating Makefile +config.status:657: creating doc/Makefile +config.status:657: creating lib/Makefile +config.status:657: creating lib/posix/Makefile +config.status:657: creating man/Makefile +config.status:657: creating m4/Makefile +config.status:657: creating ms/Makefile +config.status:657: creating po/Makefile.in +config.status:657: creating src/Makefile +config.status:761: creating config.h +config.status:1235: linking ./lib/fnmatch.hin to lib/fnmatch.h +config.status:1235: linking ./lib/regex.hin to lib/regex.h +config.status:1380: executing depfiles commands +config.status:1380: executing default-1 commands +config.status:1380: executing default commands + +## ---------------- ## +## Cache variables. ## +## ---------------- ## + +ac_cv_build=i586-pc-beos +ac_cv_build_alias=i586-pc-beos +ac_cv_c_backslash_a=yes +ac_cv_c_compiler_gnu=yes +ac_cv_c_const=yes +ac_cv_c_inline=inline +ac_cv_c_vararrays=yes +ac_cv_env_CC_set= +ac_cv_env_CC_value= +ac_cv_env_CFLAGS_set= +ac_cv_env_CFLAGS_value= +ac_cv_env_CPPFLAGS_set= +ac_cv_env_CPPFLAGS_value= +ac_cv_env_CPP_set= +ac_cv_env_CPP_value= +ac_cv_env_LDFLAGS_set= +ac_cv_env_LDFLAGS_value= +ac_cv_env_build_alias_set= +ac_cv_env_build_alias_value= +ac_cv_env_host_alias_set= +ac_cv_env_host_alias_value= +ac_cv_env_target_alias_set= +ac_cv_env_target_alias_value= +ac_cv_exeext= +ac_cv_func___secure_getenv=no +ac_cv_func__doprnt=no +ac_cv_func_alloca_works=yes +ac_cv_func_bcopy=yes +ac_cv_func_btowc=yes +ac_cv_func_bzero=yes +ac_cv_func_clock_gettime=no +ac_cv_func_closedir_void=no +ac_cv_func_diraccess=no +ac_cv_func_doprnt=no +ac_cv_func_dup2=yes +ac_cv_func_fnmatch_works=no +ac_cv_func_fork=yes +ac_cv_func_fork_works=yes +ac_cv_func_gettimeofday=yes +ac_cv_func_isascii=yes +ac_cv_func_iswprint=yes +ac_cv_func_localtime_r=yes +ac_cv_func_mblen=yes +ac_cv_func_mbrlen=yes +ac_cv_func_memchr=yes +ac_cv_func_memcpy=yes +ac_cv_func_mempcpy=no +ac_cv_func_memset=yes +ac_cv_func_mkstemp=yes +ac_cv_func_setlocale=yes +ac_cv_func_setmode_dos=no +ac_cv_func_sigaction=yes +ac_cv_func_sigprocmask=yes +ac_cv_func_strcasecmp=yes +ac_cv_func_strchr=yes +ac_cv_func_strerror=yes +ac_cv_func_strerror_r=yes +ac_cv_func_strerror_r_char_p=yes +ac_cv_func_strftime=yes +ac_cv_func_strtoumax=yes +ac_cv_func_tmpnam=yes +ac_cv_func_tzset=yes +ac_cv_func_vfork=no +ac_cv_func_vfork_works=no +ac_cv_func_vprintf=yes +ac_cv_func_waitpid=yes +ac_cv_have_decl_clearerr_unlocked=yes +ac_cv_have_decl_feof_unlocked=yes +ac_cv_have_decl_ferror_unlocked=yes +ac_cv_have_decl_fflush_unlocked=yes +ac_cv_have_decl_fgets_unlocked=no +ac_cv_have_decl_fputc_unlocked=yes +ac_cv_have_decl_fputs_unlocked=no +ac_cv_have_decl_fread_unlocked=yes +ac_cv_have_decl_fwrite_unlocked=yes +ac_cv_have_decl_getc_unlocked=yes +ac_cv_have_decl_getchar_unlocked=yes +ac_cv_have_decl_getenv=yes +ac_cv_have_decl_putc_unlocked=yes +ac_cv_have_decl_putchar_unlocked=yes +ac_cv_have_decl_strerror=yes +ac_cv_have_decl_strerror_r=no +ac_cv_have_decl_strtoimax=yes +ac_cv_have_decl_strtol=yes +ac_cv_have_decl_strtoul=yes +ac_cv_have_decl_strtoull=yes +ac_cv_have_decl_strtoumax=yes +ac_cv_header_alloca_h=yes +ac_cv_header_dirent_dirent_h=yes +ac_cv_header_fcntl_h=yes +ac_cv_header_inttypes_h=yes +ac_cv_header_libintl_h=no +ac_cv_header_limits_h=yes +ac_cv_header_locale_h=yes +ac_cv_header_memory_h=yes +ac_cv_header_stat_broken=no +ac_cv_header_stdbool_h=no +ac_cv_header_stdc=yes +ac_cv_header_stddef_h=yes +ac_cv_header_stdint_h=no +ac_cv_header_stdlib_h=yes +ac_cv_header_string_h=yes +ac_cv_header_strings_h=yes +ac_cv_header_sys_file_h=yes +ac_cv_header_sys_stat_h=yes +ac_cv_header_sys_time_h=yes +ac_cv_header_sys_types_h=yes +ac_cv_header_sys_wait_h=yes +ac_cv_header_time=yes +ac_cv_header_time_h=yes +ac_cv_header_unistd_h=yes +ac_cv_header_vfork_h=no +ac_cv_header_wchar_h=yes +ac_cv_header_wctype_h=no +ac_cv_host=i586-pc-beos +ac_cv_host_alias=i586-pc-beos +ac_cv_lib_cposix_strerror=no +ac_cv_member_struct_stat_st_blksize=yes +ac_cv_member_struct_stat_st_rdev=yes +ac_cv_member_struct_tm_tm_gmtoff=yes +ac_cv_member_struct_tm_tm_zone=yes +ac_cv_objext=o +ac_cv_path_GMSGFMT=: +ac_cv_path_MSGFMT=: +ac_cv_path_MSGMERGE=: +ac_cv_path_PR_PROGRAM=/bin/pr +ac_cv_path_XGETTEXT=: +ac_cv_path_install='/bin/install -c' +ac_cv_prog_AWK=gawk +ac_cv_prog_CPP='gcc -E' +ac_cv_prog_ac_ct_CC=gcc +ac_cv_prog_ac_ct_RANLIB=ranlib +ac_cv_prog_cc_g=yes +ac_cv_prog_cc_stdc= +ac_cv_prog_make_make_set=yes +ac_cv_search_clock_gettime=no +ac_cv_search_opendir='none required' +ac_cv_struct_st_mtim_nsec=no +ac_cv_struct_tm=time.h +ac_cv_sys_file_offset_bits=no +ac_cv_sys_large_files=no +ac_cv_sys_largefile_CC=no +ac_cv_sys_xsi_stack_overflow_heuristic=no +ac_cv_type_intmax_t=yes +ac_cv_type_long_long=yes +ac_cv_type_mbstate_t=no +ac_cv_type_pid_t=yes +ac_cv_type_ptrdiff_t=yes +ac_cv_type_siginfo_t=no +ac_cv_type_signal=void +ac_cv_type_ssize_t=yes +ac_cv_type_stack_t=yes +ac_cv_type_uintmax_t=yes +ac_cv_type_unsigned_long_long=yes +ac_cv_win_or_dos=no +ac_cv_working_alloca_h=yes +acl_cv_hardcode_direct=no +acl_cv_hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' +acl_cv_hardcode_libdir_separator= +acl_cv_hardcode_minus_L=no +acl_cv_libext=a +acl_cv_path_LD=/boot/develop/tools/gnupro/bin/ld +acl_cv_prog_gnu_ld=yes +acl_cv_rpath=done +acl_cv_shlibext=so +acl_cv_sys_lib_dlsearch_path_spec='/lib /usr/lib' +acl_cv_sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib' +acl_cv_wl=-Wl, +am_cv_CC_dependencies_compiler_type=gcc +am_cv_func_iconv='no, consider installing GNU libiconv' +am_cv_lib_iconv=no +am_cv_prog_cc_stdc= +gt_cv_func_gnugettext1_libc=no +gt_cv_func_gnugettext1_libintl=no +jm_cv_func_mbrtowc=no +jm_cv_func_strtoumax_macro=no +jm_cv_func_working_malloc=yes +jm_cv_func_working_re_compile_pattern=no +jm_cv_func_working_realloc=yes + +## ----------- ## +## confdefs.h. ## +## ----------- ## + +#define PACKAGE_NAME "GNU diffutils" +#define PACKAGE_TARNAME "diffutils" +#define PACKAGE_VERSION "2.8.1" +#define PACKAGE_STRING "GNU diffutils 2.8.1" +#define PACKAGE_BUGREPORT "bug-gnu-utils@gnu.org" +#define PACKAGE "diffutils" +#define VERSION "2.8.1" +#ifndef _GNU_SOURCE +# define _GNU_SOURCE +#endif +#define __EXTENSIONS__ 1 +#define HAVE_C_VARARRAYS 1 +#define DEFAULT_DIFF_PROGRAM "diff" +#define DEFAULT_EDITOR_PROGRAM "ed" +#define PR_PROGRAM "/bin/pr" +#define STDC_HEADERS 1 +#define HAVE_SYS_TYPES_H 1 +#define HAVE_SYS_STAT_H 1 +#define HAVE_STDLIB_H 1 +#define HAVE_STRING_H 1 +#define HAVE_MEMORY_H 1 +#define HAVE_STRINGS_H 1 +#define HAVE_INTTYPES_H 1 +#define HAVE_UNISTD_H 1 +#define HAVE_FCNTL_H 1 +#define HAVE_LIMITS_H 1 +#define HAVE_LOCALE_H 1 +#define HAVE_STDLIB_H 1 +#define HAVE_STRING_H 1 +#define HAVE_SYS_FILE_H 1 +#define HAVE_TIME_H 1 +#define HAVE_UNISTD_H 1 +#define HAVE_STRUCT_STAT_ST_BLKSIZE 1 +#define HAVE_STRUCT_STAT_ST_RDEV 1 +#define HAVE_UNSIGNED_LONG_LONG 1 +#define HAVE_DIRENT_H 1 +#define HAVE_SYS_WAIT_H 1 +#define RETSIGTYPE void +#define HAVE_DUP2 1 +#define HAVE_GETTIMEOFDAY 1 +#define HAVE_SIGACTION 1 +#define HAVE_SIGPROCMASK 1 +#define HAVE_STRCHR 1 +#define HAVE_STRERROR 1 +#define HAVE_TMPNAM 1 +#define HAVE_MEMCHR 1 +#define HAVE_MKSTEMP 1 +#define HAVE_STRCASECMP 1 +#define HAVE_WAITPID 1 +#define HAVE_UNISTD_H 1 +#define HAVE_FORK 1 +#define vfork fork +#define HAVE_WORKING_FORK 1 +#define HAVE_VPRINTF 1 +#define HAVE_DECL_CLEARERR_UNLOCKED 1 +#define HAVE_DECL_FEOF_UNLOCKED 1 +#define HAVE_DECL_FERROR_UNLOCKED 1 +#define HAVE_DECL_FFLUSH_UNLOCKED 1 +#define HAVE_DECL_FGETS_UNLOCKED 0 +#define HAVE_DECL_FPUTC_UNLOCKED 1 +#define HAVE_DECL_FPUTS_UNLOCKED 0 +#define HAVE_DECL_FREAD_UNLOCKED 1 +#define HAVE_DECL_FWRITE_UNLOCKED 1 +#define HAVE_DECL_GETC_UNLOCKED 1 +#define HAVE_DECL_GETCHAR_UNLOCKED 1 +#define HAVE_DECL_PUTC_UNLOCKED 1 +#define HAVE_DECL_PUTCHAR_UNLOCKED 1 +#define TIME_WITH_SYS_TIME 1 +#define HAVE_LOCALTIME_R 1 +#define HAVE_STRFTIME 1 +#define HAVE_LIMITS_H 1 +#define HAVE_BCOPY 1 +#define HAVE_TZSET 1 +#define HAVE_MEMCPY 1 +#define HAVE_MEMSET 1 +#define HAVE_STRUCT_TM_TM_ZONE 1 +#define HAVE_TM_ZONE 1 +#define HAVE_MBLEN 1 +#define HAVE_MBRLEN 1 +#define HAVE_TM_GMTOFF 1 +#define HAVE_SYS_TIME_H 1 +#define my_strftime nstrftime +#define HAVE_DONE_WORKING_MALLOC_CHECK 1 +#define HAVE_DONE_WORKING_REALLOC_CHECK 1 +#define HAVE_ALLOCA_H 1 +#define HAVE_ALLOCA 1 +#define HAVE_UNISTD_H 1 +#define HAVE_STACK_T 1 +#define HAVE_STRERROR 1 +#define HAVE_VPRINTF 1 +#define HAVE_DECL_STRERROR 1 +#define HAVE_DECL_STRERROR_R 0 +#define HAVE_STRERROR_R 1 +#define STRERROR_R_CHAR_P 1 +#define STDC_HEADERS 1 +#define PROTOTYPES 1 +#define __PROTOTYPES 1 +#define HAVE_SETLOCALE 1 +#define HAVE_LOCALE_H 1 +#define HAVE_STDLIB_H 1 +#define HAVE_STRING_H 1 +#define HAVE_ISASCII 1 +#define HAVE_ISWPRINT 1 +#define HAVE_LIMITS_H 1 +#define HAVE_STDDEF_H 1 +#define HAVE_STDLIB_H 1 +#define HAVE_STRING_H 1 +#define HAVE_WCHAR_H 1 +#define STDC_HEADERS 1 +#define HAVE_C_BACKSLASH_A 1 +#define HAVE_STDLIB_H 1 +#define mbstate_t int +#define PROTOTYPES 1 +#define STDC_HEADERS 1 +#define HAVE_STRING_H 1 +#define HAVE_BZERO 1 +#define HAVE_BCOPY 1 +#define HAVE_ISASCII 1 +#define HAVE_BTOWC 1 +#define HAVE_ALLOCA_H 1 +#define HAVE_WCHAR_H 1 +#define STDC_HEADERS 1 +#define HAVE_ALLOCA_H 1 +#define HAVE_ALLOCA 1 +#define REGEX_MALLOC 1 +#define STDC_HEADERS 1 +#define HAVE_FCNTL_H 1 +#define HAVE_SYS_TIME_H 1 +#define HAVE_UNISTD_H 1 +#define HAVE_GETTIMEOFDAY 1 +#define HAVE_DECL_GETENV 1 +#define HAVE_LONG_LONG 1 +#define HAVE_DECL_STRTOL 1 +#define HAVE_DECL_STRTOUL 1 +#define HAVE_DECL_STRTOULL 1 +#define HAVE_DECL_STRTOIMAX 1 +#define HAVE_DECL_STRTOUMAX 1 +#define HAVE_LIMITS_H 1 +#define HAVE_STDLIB_H 1 +#define HAVE_INTTYPES_H 1 +#define HAVE_STRTOUMAX 1 +#define FILESYSTEM_ACCEPTS_DRIVE_LETTER_PREFIX 0 +#define FILESYSTEM_BACKSLASH_IS_FILE_NAME_SEPARATOR 0 +#define HAVE_FCNTL_H 1 +#define HAVE_UNISTD_H 1 + +configure: exit 0 diff --git a/src/apps/bin/diffutils-2.8.1/config.status b/src/apps/bin/diffutils-2.8.1/config.status new file mode 100755 index 0000000000..bee3cff518 --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/config.status @@ -0,0 +1,1568 @@ +#! /bin/sh +# Generated by configure. +# 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 +SHELL=${CONFIG_SHELL-/bin/sh} + +## --------------------- ## +## M4sh Initialization. ## +## --------------------- ## + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: +elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then + set -o posix +fi + +# NLS nuisances. +# Support unset when possible. +if (FOO=FOO; unset FOO) >/dev/null 2>&1; then + as_unset=unset +else + as_unset=false +fi + +(set +x; test -n "`(LANG=C; export LANG) 2>&1`") && + { $as_unset LANG || test "${LANG+set}" != set; } || + { LANG=C; export LANG; } +(set +x; test -n "`(LC_ALL=C; export LC_ALL) 2>&1`") && + { $as_unset LC_ALL || test "${LC_ALL+set}" != set; } || + { LC_ALL=C; export LC_ALL; } +(set +x; test -n "`(LC_TIME=C; export LC_TIME) 2>&1`") && + { $as_unset LC_TIME || test "${LC_TIME+set}" != set; } || + { LC_TIME=C; export LC_TIME; } +(set +x; test -n "`(LC_CTYPE=C; export LC_CTYPE) 2>&1`") && + { $as_unset LC_CTYPE || test "${LC_CTYPE+set}" != set; } || + { LC_CTYPE=C; export LC_CTYPE; } +(set +x; test -n "`(LANGUAGE=C; export LANGUAGE) 2>&1`") && + { $as_unset LANGUAGE || test "${LANGUAGE+set}" != set; } || + { LANGUAGE=C; export LANGUAGE; } +(set +x; test -n "`(LC_COLLATE=C; export LC_COLLATE) 2>&1`") && + { $as_unset LC_COLLATE || test "${LC_COLLATE+set}" != set; } || + { LC_COLLATE=C; export LC_COLLATE; } +(set +x; test -n "`(LC_NUMERIC=C; export LC_NUMERIC) 2>&1`") && + { $as_unset LC_NUMERIC || test "${LC_NUMERIC+set}" != set; } || + { LC_NUMERIC=C; export LC_NUMERIC; } +(set +x; test -n "`(LC_MESSAGES=C; export LC_MESSAGES) 2>&1`") && + { $as_unset LC_MESSAGES || test "${LC_MESSAGES+set}" != set; } || + { LC_MESSAGES=C; export LC_MESSAGES; } + + +# Name of the executable. +as_me=`(basename "$0") 2>/dev/null || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)$' \| \ + . : '\(.\)' 2>/dev/null || +echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } + /^X\/\(\/\/\)$/{ s//\1/; q; } + /^X\/\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + +# PATH needs CR, and LINENO needs CR and PATH. +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + echo "#! /bin/sh" >conftest.sh + echo "exit 0" >>conftest.sh + chmod +x conftest.sh + if (PATH=".;."; conftest.sh) >/dev/null 2>&1; then + PATH_SEPARATOR=';' + else + PATH_SEPARATOR=: + fi + rm -f conftest.sh +fi + + + as_lineno_1=$LINENO + as_lineno_2=$LINENO + as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x$as_lineno_3" = "x$as_lineno_2" || { + # Find who we are. Look in the path if we contain no path at all + # relative or not. + case $0 in + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break +done + + ;; + esac + # We did not find ourselves, most probably we were run as `sh COMMAND' + # in which case we are not to be found in the path. + if test "x$as_myself" = x; then + as_myself=$0 + fi + if test ! -f "$as_myself"; then + { { echo "$as_me:$LINENO: error: cannot find myself; rerun with an absolute path" >&5 +echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2;} + { (exit 1); exit 1; }; } + fi + case $CONFIG_SHELL in + '') + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for as_base in sh bash ksh sh5; do + case $as_dir in + /*) + if ("$as_dir/$as_base" -c ' + as_lineno_1=$LINENO + as_lineno_2=$LINENO + as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then + CONFIG_SHELL=$as_dir/$as_base + export CONFIG_SHELL + exec "$CONFIG_SHELL" "$0" ${1+"$@"} + fi;; + esac + done +done +;; + esac + + # Create $as_me.lineno as a copy of $as_myself, but with $LINENO + # uniformly replaced by the line number. The first 'sed' inserts a + # line-number line before each line; the second 'sed' does the real + # work. The second script uses 'N' to pair each line-number line + # with the numbered line, and appends trailing '-' during + # substitution so that $LINENO is not a special case at line end. + # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the + # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) + sed '=' <$as_myself | + sed ' + N + s,$,-, + : loop + s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, + t loop + s,-$,, + s,^['$as_cr_digits']*\n,, + ' >$as_me.lineno && + chmod +x $as_me.lineno || + { { echo "$as_me:$LINENO: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&5 +echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2;} + { (exit 1); exit 1; }; } + + # Don't try to exec as it changes $[0], causing all sort of problems + # (the dirname of $[0] is not the place where we might find the + # original and so on. Autoconf is especially sensible to this). + . ./$as_me.lineno + # Exit status is that of the last command. + exit +} + + +case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in + *c*,-n*) ECHO_N= ECHO_C=' +' ECHO_T=' ' ;; + *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; + *) ECHO_N= ECHO_C='\c' ECHO_T= ;; +esac + +if expr a : '\(a\)' >/dev/null 2>&1; then + as_expr=expr +else + as_expr=false +fi + +rm -f conf$$ conf$$.exe conf$$.file +echo >conf$$.file +if ln -s conf$$.file conf$$ 2>/dev/null; then + # We could just check for DJGPP; but this test a) works b) is more generic + # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). + if test -f conf$$.exe; then + # Don't use ln at all; we don't have any links + as_ln_s='cp -p' + else + as_ln_s='ln -s' + fi +elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln +else + as_ln_s='cp -p' +fi +rm -f conf$$ conf$$.exe conf$$.file + +as_executable_p="test -f" + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="sed y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="sed y%*+%pp%;s%[^_$as_cr_alnum]%_%g" + + +# IFS +# We need space, tab and new line, in precisely that order. +as_nl=' +' +IFS=" $as_nl" + +# CDPATH. +$as_unset CDPATH || test "${CDPATH+set}" != set || { CDPATH=$PATH_SEPARATOR; export CDPATH; } + +exec 6>&1 + +# Open the log real soon, to keep \$[0] and so on meaningful, and to +# report actual input values of CONFIG_FILES etc. instead of their +# values after options handling. Logging --version etc. is OK. +exec 5>>config.log +{ + echo + sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX +## Running $as_me. ## +_ASBOX +} >&5 +cat >&5 <<_CSEOF + +This file was extended by GNU diffutils $as_me 2.8.1, which was +generated by GNU Autoconf 2.53. Invocation command line was + + CONFIG_FILES = $CONFIG_FILES + CONFIG_HEADERS = $CONFIG_HEADERS + CONFIG_LINKS = $CONFIG_LINKS + CONFIG_COMMANDS = $CONFIG_COMMANDS + $ $0 $@ + +_CSEOF +echo "on `(hostname || uname -n) 2>/dev/null | sed 1q`" >&5 +echo >&5 +config_files=" Makefile doc/Makefile lib/Makefile lib/posix/Makefile man/Makefile m4/Makefile ms/Makefile po/Makefile.in src/Makefile" +config_headers=" config.h:config.hin" +config_links=" lib/fnmatch.h:lib/fnmatch.hin lib/regex.h:lib/regex.hin" +config_commands=" depfiles default-1 default" + +ac_cs_usage="\ +\`$as_me' instantiates files from templates according to the +current configuration. + +Usage: $0 [OPTIONS] [FILE]... + + -h, --help print this help, then exit + -V, --version print version number, then exit + -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 links: +$config_links + +Configuration commands: +$config_commands + +Report bugs to ." +ac_cs_version="\ +GNU diffutils config.status 2.8.1 +configured by ./configure, generated by GNU Autoconf 2.53, + with options \"\" + +Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001 +Free Software Foundation, Inc. +This config.status script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it." +srcdir=. +INSTALL="/bin/install -c" +# 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[^=]*=\(.*\)'` + shift + set dummy "$ac_option" "$ac_optarg" ${1+"$@"} + shift + ;; + -*);; + *) # This is not an option, so the user has probably given explicit + # arguments. + ac_need_defaults=false;; + esac + + case $1 in + # Handling of the options. + -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) + echo "running /bin/sh ./configure " " --no-create --no-recursion" + exec /bin/sh ./configure --no-create --no-recursion ;; + --version | --vers* | -V ) + echo "$ac_cs_version"; exit 0 ;; + --he | --h) + # Conflict between --help and --header + { { echo "$as_me:$LINENO: error: ambiguous option: $1 +Try \`$0 --help' for more information." >&5 +echo "$as_me: error: ambiguous option: $1 +Try \`$0 --help' for more information." >&2;} + { (exit 1); exit 1; }; };; + --help | --hel | -h ) + echo "$ac_cs_usage"; exit 0 ;; + --debug | --d* | -d ) + debug=: ;; + --file | --fil | --fi | --f ) + shift + CONFIG_FILES="$CONFIG_FILES $1" + ac_need_defaults=false;; + --header | --heade | --head | --hea ) + shift + CONFIG_HEADERS="$CONFIG_HEADERS $1" + ac_need_defaults=false;; + + # This is an error. + -*) { { echo "$as_me:$LINENO: error: unrecognized option: $1 +Try \`$0 --help' for more information." >&5 +echo "$as_me: error: unrecognized option: $1 +Try \`$0 --help' for more information." >&2;} + { (exit 1); exit 1; }; } ;; + + *) ac_config_targets="$ac_config_targets $1" ;; + + esac + shift +done + +# +# INIT-COMMANDS section. +# + +AMDEP_TRUE="" ac_aux_dir="config" +# Capture the value of obsolete because we need it to compute + # POFILES, GMOFILES, UPDATEPOFILES, DUMMYPOFILES, CATALOGS. But hide it + # from automake. + eval 'ALL_LINGUAS''=""' + # Capture the value of LINGUAS because we need it to compute CATALOGS. + LINGUAS="%UNSET%" + + +for ac_config_target in $ac_config_targets +do + case "$ac_config_target" in + # Handling of arguments. + "Makefile" ) CONFIG_FILES="$CONFIG_FILES Makefile" ;; + "doc/Makefile" ) CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;; + "lib/Makefile" ) CONFIG_FILES="$CONFIG_FILES lib/Makefile" ;; + "lib/posix/Makefile" ) CONFIG_FILES="$CONFIG_FILES lib/posix/Makefile" ;; + "man/Makefile" ) CONFIG_FILES="$CONFIG_FILES man/Makefile" ;; + "m4/Makefile" ) CONFIG_FILES="$CONFIG_FILES m4/Makefile" ;; + "ms/Makefile" ) CONFIG_FILES="$CONFIG_FILES ms/Makefile" ;; + "po/Makefile.in" ) CONFIG_FILES="$CONFIG_FILES po/Makefile.in" ;; + "src/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/Makefile" ;; + "lib/fnmatch.h" ) CONFIG_LINKS="$CONFIG_LINKS lib/fnmatch.h:lib/fnmatch.hin" ;; + "lib/regex.h" ) CONFIG_LINKS="$CONFIG_LINKS lib/regex.h:lib/regex.hin" ;; + "depfiles" ) CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; + "default-1" ) CONFIG_COMMANDS="$CONFIG_COMMANDS default-1" ;; + "default" ) CONFIG_COMMANDS="$CONFIG_COMMANDS default" ;; + "config.h" ) CONFIG_HEADERS="$CONFIG_HEADERS config.h:config.hin" ;; + *) { { 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_LINKS+set}" = set || CONFIG_LINKS=$config_links + test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands +fi + +# Create a temporary directory, and hook for its removal unless debugging. +$debug || +{ + trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0 + trap '{ (exit 1); exit 1; }' 1 2 13 15 +} + +# Create a (secure) tmp directory for tmp files. +: ${TMPDIR=/tmp} +{ + tmp=`(umask 077 && mktemp -d -q "$TMPDIR/csXXXXXX") 2>/dev/null` && + test -n "$tmp" && test -d "$tmp" +} || +{ + tmp=$TMPDIR/cs$$-$RANDOM + (umask 077 && mkdir $tmp) +} || +{ + echo "$me: cannot create a temporary directory in $TMPDIR" >&2 + { (exit 1); exit 1; } +} + + +# +# CONFIG_FILES section. +# + +# No need to generate the scripts if there are no CONFIG_FILES. +# This happens for instance when ./config.status config.h +if test -n "$CONFIG_FILES"; then + # Protect against being on the right side of a sed subst in config.status. + sed 's/,@/@@/; s/@,/@@/; s/,;t t$/@;t t/; /@;t t$/s/[\\&,]/\\&/g; + s/@@/,@/; s/@@/@,/; s/@;t t$/,;t t/' >$tmp/subs.sed <<\CEOF +s,@SHELL@,/bin/sh,;t t +s,@PATH_SEPARATOR@,:,;t t +s,@PACKAGE_NAME@,GNU diffutils,;t t +s,@PACKAGE_TARNAME@,diffutils,;t t +s,@PACKAGE_VERSION@,2.8.1,;t t +s,@PACKAGE_STRING@,GNU diffutils 2.8.1,;t t +s,@PACKAGE_BUGREPORT@,bug-gnu-utils@gnu.org,;t t +s,@exec_prefix@,${prefix},;t t +s,@prefix@,/usr/local,;t t +s,@program_transform_name@,s,x,x,,;t t +s,@bindir@,${exec_prefix}/bin,;t t +s,@sbindir@,${exec_prefix}/sbin,;t t +s,@libexecdir@,${exec_prefix}/libexec,;t t +s,@datadir@,${prefix}/share,;t t +s,@sysconfdir@,${prefix}/etc,;t t +s,@sharedstatedir@,${prefix}/com,;t t +s,@localstatedir@,${prefix}/var,;t t +s,@libdir@,${exec_prefix}/lib,;t t +s,@includedir@,${prefix}/include,;t t +s,@oldincludedir@,/usr/include,;t t +s,@infodir@,${prefix}/info,;t t +s,@mandir@,${prefix}/man,;t t +s,@build_alias@,,;t t +s,@host_alias@,,;t t +s,@target_alias@,,;t t +s,@DEFS@,-DHAVE_CONFIG_H,;t t +s,@ECHO_C@,,;t t +s,@ECHO_N@,-n,;t t +s,@ECHO_T@,,;t t +s,@LIBS@,,;t t +s,@INSTALL_PROGRAM@,${INSTALL},;t t +s,@INSTALL_SCRIPT@,${INSTALL},;t t +s,@INSTALL_DATA@,${INSTALL} -m 644,;t t +s,@PACKAGE@,diffutils,;t t +s,@VERSION@,2.8.1,;t t +s,@ACLOCAL@,${SHELL} /boot/home/Development/current/src/apps/bin/diffutils-2.8.1/config/missing --run aclocal-1.6,;t t +s,@AUTOCONF@,${SHELL} /boot/home/Development/current/src/apps/bin/diffutils-2.8.1/config/missing --run autoconf,;t t +s,@AUTOMAKE@,${SHELL} /boot/home/Development/current/src/apps/bin/diffutils-2.8.1/config/missing --run automake-1.6,;t t +s,@AUTOHEADER@,${SHELL} /boot/home/Development/current/src/apps/bin/diffutils-2.8.1/config/missing --run autoheader,;t t +s,@MAKEINFO@,${SHELL} /boot/home/Development/current/src/apps/bin/diffutils-2.8.1/config/missing --run makeinfo,;t t +s,@AMTAR@,${SHELL} /boot/home/Development/current/src/apps/bin/diffutils-2.8.1/config/missing --run tar,;t t +s,@install_sh@,/boot/home/Development/current/src/apps/bin/diffutils-2.8.1/config/install-sh,;t t +s,@STRIP@,,;t t +s,@ac_ct_STRIP@,,;t t +s,@INSTALL_STRIP_PROGRAM@,${SHELL} $(install_sh) -c -s,;t t +s,@AWK@,gawk,;t t +s,@SET_MAKE@,,;t t +s,@CC@,gcc,;t t +s,@CFLAGS@,-g -O2,;t t +s,@LDFLAGS@,,;t t +s,@CPPFLAGS@,,;t t +s,@ac_ct_CC@,gcc,;t t +s,@EXEEXT@,,;t t +s,@OBJEXT@,o,;t t +s,@DEPDIR@,.deps,;t t +s,@am__include@,include,;t t +s,@am__quote@,,;t t +s,@AMDEP_TRUE@,,;t t +s,@AMDEP_FALSE@,#,;t t +s,@AMDEPBACKSLASH@,\,;t t +s,@CCDEPMODE@,depmode=gcc,;t t +s,@CPP@,gcc -E,;t t +s,@HELP2MAN@,${SHELL} /boot/home/Development/current/src/apps/bin/diffutils-2.8.1/config/missing --run help2man,;t t +s,@RANLIB@,ranlib,;t t +s,@ac_ct_RANLIB@,ranlib,;t t +s,@PR_PROGRAM@,/bin/pr,;t t +s,@MKINSTALLDIRS@,config/mkinstalldirs,;t t +s,@MSGFMT@,:,;t t +s,@GMSGFMT@,:,;t t +s,@XGETTEXT@,AWK='gawk' $(SHELL) $(top_srcdir)/exgettext :,;t t +s,@MSGMERGE@,:,;t t +s,@build@,i586-pc-beos,;t t +s,@build_cpu@,i586,;t t +s,@build_vendor@,pc,;t t +s,@build_os@,beos,;t t +s,@host@,i586-pc-beos,;t t +s,@host_cpu@,i586,;t t +s,@host_vendor@,pc,;t t +s,@host_os@,beos,;t t +s,@USE_NLS@,no,;t t +s,@LIBICONV@,,;t t +s,@LTLIBICONV@,,;t t +s,@INTLLIBS@,,;t t +s,@LIBINTL@,,;t t +s,@LTLIBINTL@,,;t t +s,@POSUB@,,;t t +s,@LIBOBJS@, fnmatch.o regex.o,;t t +s,@ALLOCA@,,;t t +s,@U@,,;t t +s,@ANSI2KNR@,,;t t +s,@LIB_CLOCK_GETTIME@,,;t t +CEOF + + # Split the substitutions into bite-sized pieces for seds with + # small command number limits, like on Digital OSF/1 and HP-UX. + ac_max_sed_lines=48 + ac_sed_frag=1 # Number of current file. + ac_beg=1 # First line for current file. + ac_end=$ac_max_sed_lines # Line after last line for current file. + ac_more_lines=: + ac_sed_cmds= + while $ac_more_lines; do + if test $ac_beg -gt 1; then + sed "1,${ac_beg}d; ${ac_end}q" $tmp/subs.sed >$tmp/subs.frag + else + sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag + fi + if test ! -s $tmp/subs.frag; then + ac_more_lines=false + else + # The purpose of the label and of the branching condition is to + # speed up the sed processing (if there are no `@' at all, there + # is no need to browse any of the substitutions). + # These are the two extra sed commands mentioned above. + (echo ':t + /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed + if test -z "$ac_sed_cmds"; then + ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed" + else + ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed" + fi + ac_sed_frag=`expr $ac_sed_frag + 1` + ac_beg=$ac_end + ac_end=`expr $ac_end + $ac_max_sed_lines` + fi + done + if test -z "$ac_sed_cmds"; then + ac_sed_cmds=cat + fi +fi # test -n "$CONFIG_FILES" + +for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue + # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". + case $ac_file in + - | *:- | *:-:* ) # input from stdin + cat >$tmp/stdin + ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; + *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; + * ) ac_file_in=$ac_file.in ;; + esac + + # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories. + ac_dir=`(dirname "$ac_file") 2>/dev/null || +$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + { if $as_mkdir_p; then + mkdir -p "$ac_dir" + else + as_dir="$ac_dir" + as_dirs= + while test ! -d "$as_dir"; do + as_dirs="$as_dir $as_dirs" + as_dir=`(dirname "$as_dir") 2>/dev/null || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + done + test ! -n "$as_dirs" || mkdir $as_dirs + fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 +echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} + { (exit 1); exit 1; }; }; } + + ac_builddir=. + +if test "$ac_dir" != .; then + ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` + # A "../" for each directory in $ac_dir_suffix. + ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` +else + ac_dir_suffix= ac_top_builddir= +fi + +case $srcdir in + .) # No --srcdir option. We are building in place. + ac_srcdir=. + if test -z "$ac_top_builddir"; then + ac_top_srcdir=. + else + ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` + fi ;; + [\\/]* | ?:[\\/]* ) # Absolute path. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir ;; + *) # Relative path. + ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_builddir$srcdir ;; +esac +# Don't blindly perform a `cd "$ac_dir"/$ac_foo && pwd` since $ac_foo can be +# absolute. +ac_abs_builddir=`cd "$ac_dir" && cd $ac_builddir && pwd` +ac_abs_top_builddir=`cd "$ac_dir" && cd $ac_top_builddir && pwd` +ac_abs_srcdir=`cd "$ac_dir" && cd $ac_srcdir && pwd` +ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd` + + + case $INSTALL in + [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; + *) ac_INSTALL=$ac_top_builddir$INSTALL ;; + esac + + if test x"$ac_file" != x-; then + { echo "$as_me:$LINENO: creating $ac_file" >&5 +echo "$as_me: creating $ac_file" >&6;} + rm -f "$ac_file" + fi + # Let's still pretend it is `configure' which instantiates (i.e., don't + # use $as_me), people would be surprised to read: + # /* config.h. Generated by config.status. */ + if test x"$ac_file" = x-; then + configure_input= + else + configure_input="$ac_file. " + fi + configure_input=$configure_input"Generated from `echo $ac_file_in | + sed 's,.*/,,'` by configure." + + # First look for the input files in the build tree, otherwise in the + # src tree. + ac_file_inputs=`IFS=: + for f in $ac_file_in; do + case $f in + -) echo $tmp/stdin ;; + [\\/$]*) + # Absolute (can't be DOS-style, as IFS=:) + test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +echo "$as_me: error: cannot find input file: $f" >&2;} + { (exit 1); exit 1; }; } + echo $f;; + *) # Relative + if test -f "$f"; then + # Build tree + echo $f + elif test -f "$srcdir/$f"; then + # Source tree + echo $srcdir/$f + else + # /dev/null tree + { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +echo "$as_me: error: cannot find input file: $f" >&2;} + { (exit 1); exit 1; }; } + fi;; + esac + done` || { (exit 1); exit 1; } + sed "/^[ ]*VPATH[ ]*=/{ +s/:*\$(srcdir):*/:/; +s/:*\${srcdir}:*/:/; +s/:*@srcdir@:*/:/; +s/^\([^=]*=[ ]*\):*/\1/; +s/:*$//; +s/^[^=]*=[ ]*$//; +} + +:t +/@[a-zA-Z_][a-zA-Z_0-9]*@/!b +s,@configure_input@,$configure_input,;t t +s,@srcdir@,$ac_srcdir,;t t +s,@abs_srcdir@,$ac_abs_srcdir,;t t +s,@top_srcdir@,$ac_top_srcdir,;t t +s,@abs_top_srcdir@,$ac_abs_top_srcdir,;t t +s,@builddir@,$ac_builddir,;t t +s,@abs_builddir@,$ac_abs_builddir,;t t +s,@top_builddir@,$ac_top_builddir,;t t +s,@abs_top_builddir@,$ac_abs_top_builddir,;t t +s,@INSTALL@,$ac_INSTALL,;t t +" $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out + rm -f $tmp/stdin + if test x"$ac_file" != x-; then + mv $tmp/out $ac_file + else + cat $tmp/out + rm -f $tmp/out + fi + +done + +# +# CONFIG_HEADER section. +# + +# These sed commands are passed to sed as "A NAME B NAME C VALUE D", where +# NAME is the cpp macro being defined and VALUE is the value it is being given. +# +# ac_d sets the value in "#define NAME VALUE" lines. +ac_dA='s,^\([ ]*\)#\([ ]*define[ ][ ]*\)' +ac_dB='[ ].*$,\1#\2' +ac_dC=' ' +ac_dD=',;t' +# ac_u turns "#undef NAME" without trailing blanks into "#define NAME VALUE". +ac_uA='s,^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)' +ac_uB='$,\1#\2define\3' +ac_uC=' ' +ac_uD=',;t' + +for ac_file in : $CONFIG_HEADERS; do test "x$ac_file" = x: && continue + # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". + case $ac_file in + - | *:- | *:-:* ) # input from stdin + cat >$tmp/stdin + ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; + *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; + * ) ac_file_in=$ac_file.in ;; + esac + + test x"$ac_file" != x- && { echo "$as_me:$LINENO: creating $ac_file" >&5 +echo "$as_me: creating $ac_file" >&6;} + + # First look for the input files in the build tree, otherwise in the + # src tree. + ac_file_inputs=`IFS=: + for f in $ac_file_in; do + case $f in + -) echo $tmp/stdin ;; + [\\/$]*) + # Absolute (can't be DOS-style, as IFS=:) + test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +echo "$as_me: error: cannot find input file: $f" >&2;} + { (exit 1); exit 1; }; } + echo $f;; + *) # Relative + if test -f "$f"; then + # Build tree + echo $f + elif test -f "$srcdir/$f"; then + # Source tree + echo $srcdir/$f + else + # /dev/null tree + { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +echo "$as_me: error: cannot find input file: $f" >&2;} + { (exit 1); exit 1; }; } + fi;; + esac + done` || { (exit 1); exit 1; } + # Remove the trailing spaces. + sed 's/[ ]*$//' $ac_file_inputs >$tmp/in + + # Handle all the #define templates only if necessary. + if egrep "^[ ]*#[ ]*define" $tmp/in >/dev/null; then + # If there are no defines, we may have an empty if/fi + : + cat >$tmp/defines.sed <$tmp/out + rm -f $tmp/in + mv $tmp/out $tmp/in + + cat >$tmp/defines.sed <$tmp/out + rm -f $tmp/in + mv $tmp/out $tmp/in + + cat >$tmp/defines.sed <$tmp/out + rm -f $tmp/in + mv $tmp/out $tmp/in + + cat >$tmp/defines.sed <$tmp/out + rm -f $tmp/in + mv $tmp/out $tmp/in + + fi # egrep + + # Handle all the #undef templates + cat >$tmp/undefs.sed <$tmp/out + rm -f $tmp/in + mv $tmp/out $tmp/in + + cat >$tmp/undefs.sed <$tmp/out + rm -f $tmp/in + mv $tmp/out $tmp/in + + cat >$tmp/undefs.sed <$tmp/out + rm -f $tmp/in + mv $tmp/out $tmp/in + + cat >$tmp/undefs.sed <$tmp/out + rm -f $tmp/in + mv $tmp/out $tmp/in + + # Let's still pretend it is `configure' which instantiates (i.e., don't + # use $as_me), people would be surprised to read: + # /* config.h. Generated by config.status. */ + if test x"$ac_file" = x-; then + echo "/* Generated by configure. */" >$tmp/config.h + else + echo "/* $ac_file. Generated by configure. */" >$tmp/config.h + fi + cat $tmp/in >>$tmp/config.h + rm -f $tmp/in + if test x"$ac_file" != x-; then + if cmp -s $ac_file $tmp/config.h 2>/dev/null; then + { echo "$as_me:$LINENO: $ac_file is unchanged" >&5 +echo "$as_me: $ac_file is unchanged" >&6;} + else + ac_dir=`(dirname "$ac_file") 2>/dev/null || +$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + { if $as_mkdir_p; then + mkdir -p "$ac_dir" + else + as_dir="$ac_dir" + as_dirs= + while test ! -d "$as_dir"; do + as_dirs="$as_dir $as_dirs" + as_dir=`(dirname "$as_dir") 2>/dev/null || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + done + test ! -n "$as_dirs" || mkdir $as_dirs + fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 +echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} + { (exit 1); exit 1; }; }; } + + rm -f $ac_file + mv $tmp/config.h $ac_file + fi + else + cat $tmp/config.h + rm -f $tmp/config.h + fi + # Run the commands associated with the file. + case $ac_file in + config.h ) # update the timestamp +echo 'timestamp for config.h:config.hin' >"./stamp-h1" + ;; + esac +done + +# +# CONFIG_LINKS section. +# + +for ac_file in : $CONFIG_LINKS; do test "x$ac_file" = x: && continue + ac_dest=`echo "$ac_file" | sed 's,:.*,,'` + ac_source=`echo "$ac_file" | sed 's,[^:]*:,,'` + + { echo "$as_me:$LINENO: linking $srcdir/$ac_source to $ac_dest" >&5 +echo "$as_me: linking $srcdir/$ac_source to $ac_dest" >&6;} + + if test ! -r $srcdir/$ac_source; then + { { echo "$as_me:$LINENO: error: $srcdir/$ac_source: file not found" >&5 +echo "$as_me: error: $srcdir/$ac_source: file not found" >&2;} + { (exit 1); exit 1; }; } + fi + rm -f $ac_dest + + # Make relative symlinks. + ac_dest_dir=`(dirname "$ac_dest") 2>/dev/null || +$as_expr X"$ac_dest" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_dest" : 'X\(//\)[^/]' \| \ + X"$ac_dest" : 'X\(//\)$' \| \ + X"$ac_dest" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$ac_dest" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + { if $as_mkdir_p; then + mkdir -p "$ac_dest_dir" + else + as_dir="$ac_dest_dir" + as_dirs= + while test ! -d "$as_dir"; do + as_dirs="$as_dir $as_dirs" + as_dir=`(dirname "$as_dir") 2>/dev/null || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + done + test ! -n "$as_dirs" || mkdir $as_dirs + fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dest_dir\"" >&5 +echo "$as_me: error: cannot create directory \"$ac_dest_dir\"" >&2;} + { (exit 1); exit 1; }; }; } + + ac_builddir=. + +if test "$ac_dest_dir" != .; then + ac_dir_suffix=/`echo "$ac_dest_dir" | sed 's,^\.[\\/],,'` + # A "../" for each directory in $ac_dir_suffix. + ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` +else + ac_dir_suffix= ac_top_builddir= +fi + +case $srcdir in + .) # No --srcdir option. We are building in place. + ac_srcdir=. + if test -z "$ac_top_builddir"; then + ac_top_srcdir=. + else + ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` + fi ;; + [\\/]* | ?:[\\/]* ) # Absolute path. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir ;; + *) # Relative path. + ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_builddir$srcdir ;; +esac +# Don't blindly perform a `cd "$ac_dest_dir"/$ac_foo && pwd` since $ac_foo can be +# absolute. +ac_abs_builddir=`cd "$ac_dest_dir" && cd $ac_builddir && pwd` +ac_abs_top_builddir=`cd "$ac_dest_dir" && cd $ac_top_builddir && pwd` +ac_abs_srcdir=`cd "$ac_dest_dir" && cd $ac_srcdir && pwd` +ac_abs_top_srcdir=`cd "$ac_dest_dir" && cd $ac_top_srcdir && pwd` + + + case $srcdir in + [\\/$]* | ?:[\\/]* ) ac_rel_source=$srcdir/$ac_source ;; + *) ac_rel_source=$ac_top_builddir$srcdir/$ac_source ;; + esac + + # Make a symlink if possible; otherwise try a hard link. + ln -s $ac_rel_source $ac_dest 2>/dev/null || + ln $srcdir/$ac_source $ac_dest || + { { echo "$as_me:$LINENO: error: cannot link $ac_dest to $srcdir/$ac_source" >&5 +echo "$as_me: error: cannot link $ac_dest to $srcdir/$ac_source" >&2;} + { (exit 1); exit 1; }; } +done + +# +# CONFIG_COMMANDS section. +# +for ac_file in : $CONFIG_COMMANDS; do test "x$ac_file" = x: && continue + ac_dest=`echo "$ac_file" | sed 's,:.*,,'` + ac_source=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_dir=`(dirname "$ac_dest") 2>/dev/null || +$as_expr X"$ac_dest" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_dest" : 'X\(//\)[^/]' \| \ + X"$ac_dest" : 'X\(//\)$' \| \ + X"$ac_dest" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$ac_dest" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + ac_builddir=. + +if test "$ac_dir" != .; then + ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` + # A "../" for each directory in $ac_dir_suffix. + ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` +else + ac_dir_suffix= ac_top_builddir= +fi + +case $srcdir in + .) # No --srcdir option. We are building in place. + ac_srcdir=. + if test -z "$ac_top_builddir"; then + ac_top_srcdir=. + else + ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` + fi ;; + [\\/]* | ?:[\\/]* ) # Absolute path. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir ;; + *) # Relative path. + ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_builddir$srcdir ;; +esac +# Don't blindly perform a `cd "$ac_dir"/$ac_foo && pwd` since $ac_foo can be +# absolute. +ac_abs_builddir=`cd "$ac_dir" && cd $ac_builddir && pwd` +ac_abs_top_builddir=`cd "$ac_dir" && cd $ac_top_builddir && pwd` +ac_abs_srcdir=`cd "$ac_dir" && cd $ac_srcdir && pwd` +ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd` + + + { echo "$as_me:$LINENO: executing $ac_dest commands" >&5 +echo "$as_me: executing $ac_dest commands" >&6;} + case $ac_dest in + depfiles ) test x"$AMDEP_TRUE" != x"" || for mf in $CONFIG_FILES; do + # Strip MF so we end up with the name of the file. + mf=`echo "$mf" | sed -e 's/:.*$//'` + if (sed 1q $mf | fgrep 'generated by automake') > /dev/null 2>&1; then + dirpart=`(dirname "$mf") 2>/dev/null || +$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$mf" : 'X\(//\)[^/]' \| \ + X"$mf" : 'X\(//\)$' \| \ + X"$mf" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$mf" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + else + continue + fi + grep '^DEP_FILES *= *[^ #]' < "$mf" > /dev/null || continue + # Extract the definition of DEP_FILES from the Makefile without + # running `make'. + DEPDIR=`sed -n -e '/^DEPDIR = / s///p' < "$mf"` + test -z "$DEPDIR" && continue + # When using ansi2knr, U may be empty or an underscore; expand it + U=`sed -n -e '/^U = / s///p' < "$mf"` + test -d "$dirpart/$DEPDIR" || mkdir "$dirpart/$DEPDIR" + # We invoke sed twice because it is the simplest approach to + # changing $(DEPDIR) to its actual value in the expansion. + for file in `sed -n -e ' + /^DEP_FILES = .*\\\\$/ { + s/^DEP_FILES = // + :loop + s/\\\\$// + p + n + /\\\\$/ b loop + p + } + /^DEP_FILES = / s/^DEP_FILES = //p' < "$mf" | \ + sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do + # Make sure the directory exists. + test -f "$dirpart/$file" && continue + fdir=`(dirname "$file") 2>/dev/null || +$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$file" : 'X\(//\)[^/]' \| \ + X"$file" : 'X\(//\)$' \| \ + X"$file" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + { if $as_mkdir_p; then + mkdir -p $dirpart/$fdir + else + as_dir=$dirpart/$fdir + as_dirs= + while test ! -d "$as_dir"; do + as_dirs="$as_dir $as_dirs" + as_dir=`(dirname "$as_dir") 2>/dev/null || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + done + test ! -n "$as_dirs" || mkdir $as_dirs + fi || { { echo "$as_me:$LINENO: error: cannot create directory $dirpart/$fdir" >&5 +echo "$as_me: error: cannot create directory $dirpart/$fdir" >&2;} + { (exit 1); exit 1; }; }; } + + # echo "creating $dirpart/$file" + echo '# dummy' > "$dirpart/$file" + done +done + ;; + default-1 ) + for ac_file in $CONFIG_FILES; do + # Support "outfile[:infile[:infile...]]" + case "$ac_file" in + *:*) ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; + esac + # PO directories have a Makefile.in generated from Makefile.in.in. + case "$ac_file" in */Makefile.in) + # Adjust a relative srcdir. + ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'` + ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`" + ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'` + # In autoconf-2.13 it is called $ac_given_srcdir. + # In autoconf-2.50 it is called $srcdir. + test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir" + case "$ac_given_srcdir" in + .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;; + /*) top_srcdir="$ac_given_srcdir" ;; + *) top_srcdir="$ac_dots$ac_given_srcdir" ;; + esac + if test -f "$ac_given_srcdir/$ac_dir/POTFILES.in"; then + rm -f "$ac_dir/POTFILES" + test -n "$as_me" && echo "$as_me: creating $ac_dir/POTFILES" || echo "creating $ac_dir/POTFILES" + cat "$ac_given_srcdir/$ac_dir/POTFILES.in" | sed -e "/^#/d" -e "/^[ ]*\$/d" -e "s,.*, $top_srcdir/& \\\\," | sed -e "\$s/\(.*\) \\\\/\1/" > "$ac_dir/POTFILES" + # ALL_LINGUAS, POFILES, GMOFILES, UPDATEPOFILES, DUMMYPOFILES 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 "$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" "$ac_given_srcdir/$ac_dir/LINGUAS"` + # Hide the ALL_LINGUAS assigment from automake. + eval 'ALL_LINGUAS''=$ALL_LINGUAS_' + fi + case "$ac_given_srcdir" in + .) srcdirpre= ;; + *) srcdirpre='$(srcdir)/' ;; + esac + POFILES= + GMOFILES= + UPDATEPOFILES= + DUMMYPOFILES= + for lang in $ALL_LINGUAS; do + POFILES="$POFILES $srcdirpre$lang.po" + GMOFILES="$GMOFILES $srcdirpre$lang.gmo" + UPDATEPOFILES="$UPDATEPOFILES $lang.po-update" + DUMMYPOFILES="$DUMMYPOFILES $lang.nop" + 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|@GMOFILES@|$GMOFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@CATALOGS@|$CATALOGS|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 ;; + default ) date > stamp-h ;; + esac +done + +{ (exit 0); exit 0; } diff --git a/src/apps/bin/diffutils-2.8.1/config/config.guess b/src/apps/bin/diffutils-2.8.1/config/config.guess new file mode 100644 index 0000000000..ed2e03b7f2 --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/config/config.guess @@ -0,0 +1,1321 @@ +#! /bin/sh +# Attempt to guess a canonical system name. +# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, +# 2000, 2001, 2002 Free Software Foundation, Inc. + +timestamp='2002-03-20' + +# This file is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# Originally written by Per Bothner . +# Please send patches to . Submit a context +# diff and a properly formatted ChangeLog entry. +# +# This script attempts to guess a canonical system name similar to +# config.sub. If it succeeds, it prints the system name on stdout, and +# exits with 0. Otherwise, it exits with 1. +# +# The plan is that this can be called by configure scripts if you +# don't specify an explicit build system type. + +me=`echo "$0" | sed -e 's,.*/,,'` + +usage="\ +Usage: $0 [OPTION] + +Output the configuration name of the system \`$me' is run on. + +Operation modes: + -h, --help print this help, then exit + -t, --time-stamp print date of last modification, then exit + -v, --version print version number, then exit + +Report bugs and patches to ." + +version="\ +GNU config.guess ($timestamp) + +Originally written by Per Bothner. +Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 +Free Software Foundation, Inc. + +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." + +help=" +Try \`$me --help' for more information." + +# Parse command line +while test $# -gt 0 ; do + case $1 in + --time-stamp | --time* | -t ) + echo "$timestamp" ; exit 0 ;; + --version | -v ) + echo "$version" ; exit 0 ;; + --help | --h* | -h ) + echo "$usage"; exit 0 ;; + -- ) # Stop option processing + shift; break ;; + - ) # Use stdin as input. + break ;; + -* ) + echo "$me: invalid option $1$help" >&2 + exit 1 ;; + * ) + break ;; + esac +done + +if test $# != 0; then + echo "$me: too many arguments$help" >&2 + exit 1 +fi + + +dummy=dummy-$$ +trap 'rm -f $dummy.c $dummy.o $dummy.rel $dummy; exit 1' 1 2 15 + +# CC_FOR_BUILD -- compiler used by this script. +# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still +# use `HOST_CC' if defined, but it is deprecated. + +set_cc_for_build='case $CC_FOR_BUILD,$HOST_CC,$CC in + ,,) echo "int dummy(){}" > $dummy.c ; + for c in cc gcc c89 c99 ; do + ($c $dummy.c -c -o $dummy.o) >/dev/null 2>&1 ; + if test $? = 0 ; then + CC_FOR_BUILD="$c"; break ; + fi ; + done ; + rm -f $dummy.c $dummy.o $dummy.rel ; + 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' + +# 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 + arm*) machine=arm-unknown ;; + sh3el) machine=shl-unknown ;; + sh3eb) machine=sh-unknown ;; + *) machine=${UNAME_MACHINE_ARCH}-unknown ;; + esac + # The Operating System including object format, if it has switched + # to ELF recently, or will in the future. + case "${UNAME_MACHINE_ARCH}" in + arm*|i386|m68k|ns32k|sh3*|sparc|vax) + eval $set_cc_for_build + if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep __ELF__ >/dev/null + then + # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). + # Return netbsd for either. FIX? + os=netbsd + else + os=netbsdelf + fi + ;; + *) + os=netbsd + ;; + esac + # The OS release + release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` + # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: + # contains redundant information, the shorter form: + # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. + echo "${machine}-${os}${release}" + exit 0 ;; + amiga:OpenBSD:*:*) + echo m68k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + arc:OpenBSD:*:*) + echo mipsel-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + hp300:OpenBSD:*:*) + echo m68k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + mac68k:OpenBSD:*:*) + echo m68k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + macppc:OpenBSD:*:*) + echo powerpc-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + mvme68k:OpenBSD:*:*) + echo m68k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + mvme88k:OpenBSD:*:*) + echo m88k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + mvmeppc:OpenBSD:*:*) + echo powerpc-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + pmax:OpenBSD:*:*) + echo mipsel-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + sgi:OpenBSD:*:*) + echo mipseb-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + sun3:OpenBSD:*:*) + echo m68k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + wgrisc:OpenBSD:*:*) + echo mipsel-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + *:OpenBSD:*:*) + echo ${UNAME_MACHINE}-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + alpha:OSF1:*:*) + if test $UNAME_RELEASE = "V4.0"; then + UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` + fi + # A Vn.n version is a released version. + # A Tn.n version is a released field test version. + # A Xn.n version is an unreleased experimental baselevel. + # 1.2 uses "1.2" for uname -r. + cat <$dummy.s + .data +\$Lformat: + .byte 37,100,45,37,120,10,0 # "%d-%x\n" + + .text + .globl main + .align 4 + .ent main +main: + .frame \$30,16,\$26,0 + ldgp \$29,0(\$27) + .prologue 1 + .long 0x47e03d80 # implver \$0 + lda \$2,-1 + .long 0x47e20c21 # amask \$2,\$1 + lda \$16,\$Lformat + mov \$0,\$17 + not \$1,\$18 + jsr \$26,printf + ldgp \$29,0(\$26) + mov 0,\$16 + jsr \$26,exit + .end main +EOF + eval $set_cc_for_build + $CC_FOR_BUILD $dummy.s -o $dummy 2>/dev/null + if test "$?" = 0 ; then + case `./$dummy` in + 0-0) + UNAME_MACHINE="alpha" + ;; + 1-0) + UNAME_MACHINE="alphaev5" + ;; + 1-1) + UNAME_MACHINE="alphaev56" + ;; + 1-101) + UNAME_MACHINE="alphapca56" + ;; + 2-303) + UNAME_MACHINE="alphaev6" + ;; + 2-307) + UNAME_MACHINE="alphaev67" + ;; + 2-1307) + UNAME_MACHINE="alphaev68" + ;; + esac + fi + rm -f $dummy.s $dummy + echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[VTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` + exit 0 ;; + Alpha\ *:Windows_NT*:*) + # How do we know it's Interix rather than the generic POSIX subsystem? + # Should we change UNAME_MACHINE based on the output of uname instead + # of the specific Alpha model? + echo alpha-pc-interix + exit 0 ;; + 21064:Windows_NT:50:3) + echo alpha-dec-winnt3.5 + exit 0 ;; + Amiga*:UNIX_System_V:4.0:*) + echo m68k-unknown-sysv4 + exit 0;; + *:[Aa]miga[Oo][Ss]:*:*) + echo ${UNAME_MACHINE}-unknown-amigaos + exit 0 ;; + *:[Mm]orph[Oo][Ss]:*:*) + echo ${UNAME_MACHINE}-unknown-morphos + exit 0 ;; + *:OS/390:*:*) + echo i370-ibm-openedition + exit 0 ;; + arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) + echo arm-acorn-riscix${UNAME_RELEASE} + exit 0;; + SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) + echo hppa1.1-hitachi-hiuxmpp + exit 0;; + Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) + # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. + if test "`(/bin/universe) 2>/dev/null`" = att ; then + echo pyramid-pyramid-sysv3 + else + echo pyramid-pyramid-bsd + fi + exit 0 ;; + NILE*:*:*:dcosx) + echo pyramid-pyramid-svr4 + exit 0 ;; + sun4H:SunOS:5.*:*) + echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit 0 ;; + sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) + echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit 0 ;; + i86pc:SunOS:5.*:*) + echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit 0 ;; + sun4*:SunOS:6*:*) + # According to config.sub, this is the proper way to canonicalize + # SunOS6. Hard to guess exactly what SunOS6 will be like, but + # it's likely to be more like Solaris than SunOS4. + echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit 0 ;; + sun4*:SunOS:*:*) + case "`/usr/bin/arch -k`" in + Series*|S4*) + UNAME_RELEASE=`uname -v` + ;; + esac + # Japanese Language versions have a version number like `4.1.3-JL'. + echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` + exit 0 ;; + sun3*:SunOS:*:*) + echo m68k-sun-sunos${UNAME_RELEASE} + exit 0 ;; + sun*:*:4.2BSD:*) + UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` + test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 + case "`/bin/arch`" in + sun3) + echo m68k-sun-sunos${UNAME_RELEASE} + ;; + sun4) + echo sparc-sun-sunos${UNAME_RELEASE} + ;; + esac + exit 0 ;; + aushp:SunOS:*:*) + echo sparc-auspex-sunos${UNAME_RELEASE} + exit 0 ;; + # The situation for MiNT is a little confusing. The machine name + # can be virtually everything (everything which is not + # "atarist" or "atariste" at least should have a processor + # > m68000). The system name ranges from "MiNT" over "FreeMiNT" + # to the lowercase version "mint" (or "freemint"). Finally + # the system name "TOS" denotes a system which is actually not + # MiNT. But MiNT is downward compatible to TOS, so this should + # be no problem. + atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit 0 ;; + atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit 0 ;; + *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit 0 ;; + milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) + echo m68k-milan-mint${UNAME_RELEASE} + exit 0 ;; + hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) + echo m68k-hades-mint${UNAME_RELEASE} + exit 0 ;; + *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) + echo m68k-unknown-mint${UNAME_RELEASE} + exit 0 ;; + powerpc:machten:*:*) + echo powerpc-apple-machten${UNAME_RELEASE} + exit 0 ;; + RISC*:Mach:*:*) + echo mips-dec-mach_bsd4.3 + exit 0 ;; + RISC*:ULTRIX:*:*) + echo mips-dec-ultrix${UNAME_RELEASE} + exit 0 ;; + VAX*:ULTRIX*:*:*) + echo vax-dec-ultrix${UNAME_RELEASE} + exit 0 ;; + 2020:CLIX:*:* | 2430:CLIX:*:*) + echo clipper-intergraph-clix${UNAME_RELEASE} + exit 0 ;; + mips:*:*:UMIPS | mips:*:*:RISCos) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c +#ifdef __cplusplus +#include /* for printf() prototype */ + int main (int argc, char *argv[]) { +#else + int main (argc, argv) int argc; char *argv[]; { +#endif + #if defined (host_mips) && defined (MIPSEB) + #if defined (SYSTYPE_SYSV) + printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); + #endif + #if defined (SYSTYPE_SVR4) + printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); + #endif + #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) + printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); + #endif + #endif + exit (-1); + } +EOF + $CC_FOR_BUILD $dummy.c -o $dummy \ + && ./$dummy `echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` \ + && rm -f $dummy.c $dummy && exit 0 + rm -f $dummy.c $dummy + echo mips-mips-riscos${UNAME_RELEASE} + exit 0 ;; + Motorola:PowerMAX_OS:*:*) + echo powerpc-motorola-powermax + exit 0 ;; + Night_Hawk:Power_UNIX:*:*) + echo powerpc-harris-powerunix + exit 0 ;; + m88k:CX/UX:7*:*) + echo m88k-harris-cxux7 + exit 0 ;; + m88k:*:4*:R4*) + echo m88k-motorola-sysv4 + exit 0 ;; + m88k:*:3*:R3*) + echo m88k-motorola-sysv3 + exit 0 ;; + AViiON:dgux:*:*) + # DG/UX returns AViiON for all architectures + UNAME_PROCESSOR=`/usr/bin/uname -p` + if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] + then + if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ + [ ${TARGET_BINARY_INTERFACE}x = x ] + then + echo m88k-dg-dgux${UNAME_RELEASE} + else + echo m88k-dg-dguxbcs${UNAME_RELEASE} + fi + else + echo i586-dg-dgux${UNAME_RELEASE} + fi + exit 0 ;; + M88*:DolphinOS:*:*) # DolphinOS (SVR3) + echo m88k-dolphin-sysv3 + exit 0 ;; + M88*:*:R3*:*) + # Delta 88k system running SVR3 + echo m88k-motorola-sysv3 + exit 0 ;; + XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) + echo m88k-tektronix-sysv3 + exit 0 ;; + Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) + echo m68k-tektronix-bsd + exit 0 ;; + *:IRIX*:*:*) + echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` + exit 0 ;; + ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. + echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id + exit 0 ;; # Note that: echo "'`uname -s`'" gives 'AIX ' + i*86:AIX:*:*) + echo i386-ibm-aix + exit 0 ;; + ia64:AIX:*:*) + if [ -x /usr/bin/oslevel ] ; then + IBM_REV=`/usr/bin/oslevel` + else + IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} + fi + echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} + exit 0 ;; + *:AIX:2:3) + if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #include + + main() + { + if (!__power_pc()) + exit(1); + puts("powerpc-ibm-aix3.2.5"); + exit(0); + } +EOF + $CC_FOR_BUILD $dummy.c -o $dummy && ./$dummy && rm -f $dummy.c $dummy && exit 0 + rm -f $dummy.c $dummy + echo rs6000-ibm-aix3.2.5 + elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then + echo rs6000-ibm-aix3.2.4 + else + echo rs6000-ibm-aix3.2 + fi + exit 0 ;; + *:AIX:*:[45]) + IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` + if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then + IBM_ARCH=rs6000 + else + IBM_ARCH=powerpc + fi + if [ -x /usr/bin/oslevel ] ; then + IBM_REV=`/usr/bin/oslevel` + else + IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} + fi + echo ${IBM_ARCH}-ibm-aix${IBM_REV} + exit 0 ;; + *:AIX:*:*) + echo rs6000-ibm-aix + exit 0 ;; + ibmrt:4.4BSD:*|romp-ibm:BSD:*) + echo romp-ibm-bsd4.4 + exit 0 ;; + ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and + echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to + exit 0 ;; # report: romp-ibm BSD 4.3 + *:BOSX:*:*) + echo rs6000-bull-bosx + exit 0 ;; + DPX/2?00:B.O.S.:*:*) + echo m68k-bull-sysv3 + exit 0 ;; + 9000/[34]??:4.3bsd:1.*:*) + echo m68k-hp-bsd + exit 0 ;; + hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) + echo m68k-hp-bsd4.4 + exit 0 ;; + 9000/[34678]??:HP-UX:*:*) + HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` + case "${UNAME_MACHINE}" in + 9000/31? ) HP_ARCH=m68000 ;; + 9000/[34]?? ) HP_ARCH=m68k ;; + 9000/[678][0-9][0-9]) + if [ -x /usr/bin/getconf ]; then + sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` + sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` + case "${sc_cpu_version}" in + 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 + 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 + 532) # CPU_PA_RISC2_0 + case "${sc_kernel_bits}" in + 32) HP_ARCH="hppa2.0n" ;; + 64) HP_ARCH="hppa2.0w" ;; + '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20 + esac ;; + esac + fi + if [ "${HP_ARCH}" = "" ]; then + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + + #define _HPUX_SOURCE + #include + #include + + int main () + { + #if defined(_SC_KERNEL_BITS) + long bits = sysconf(_SC_KERNEL_BITS); + #endif + long cpu = sysconf (_SC_CPU_VERSION); + + switch (cpu) + { + case CPU_PA_RISC1_0: puts ("hppa1.0"); break; + case CPU_PA_RISC1_1: puts ("hppa1.1"); break; + case CPU_PA_RISC2_0: + #if defined(_SC_KERNEL_BITS) + switch (bits) + { + case 64: puts ("hppa2.0w"); break; + case 32: puts ("hppa2.0n"); break; + default: puts ("hppa2.0"); break; + } break; + #else /* !defined(_SC_KERNEL_BITS) */ + puts ("hppa2.0"); break; + #endif + default: puts ("hppa1.0"); break; + } + exit (0); + } +EOF + (CCOPTS= $CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null) && HP_ARCH=`./$dummy` + if test -z "$HP_ARCH"; then HP_ARCH=hppa; fi + rm -f $dummy.c $dummy + fi ;; + esac + echo ${HP_ARCH}-hp-hpux${HPUX_REV} + exit 0 ;; + ia64:HP-UX:*:*) + HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` + echo ia64-hp-hpux${HPUX_REV} + exit 0 ;; + 3050*:HI-UX:*:*) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #include + int + main () + { + long cpu = sysconf (_SC_CPU_VERSION); + /* The order matters, because CPU_IS_HP_MC68K erroneously returns + true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct + results, however. */ + if (CPU_IS_PA_RISC (cpu)) + { + switch (cpu) + { + case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; + case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; + case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; + default: puts ("hppa-hitachi-hiuxwe2"); break; + } + } + else if (CPU_IS_HP_MC68K (cpu)) + puts ("m68k-hitachi-hiuxwe2"); + else puts ("unknown-hitachi-hiuxwe2"); + exit (0); + } +EOF + $CC_FOR_BUILD $dummy.c -o $dummy && ./$dummy && rm -f $dummy.c $dummy && exit 0 + rm -f $dummy.c $dummy + echo unknown-hitachi-hiuxwe2 + exit 0 ;; + 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) + echo hppa1.1-hp-bsd + exit 0 ;; + 9000/8??:4.3bsd:*:*) + echo hppa1.0-hp-bsd + exit 0 ;; + *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) + echo hppa1.0-hp-mpeix + exit 0 ;; + hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) + echo hppa1.1-hp-osf + exit 0 ;; + hp8??:OSF1:*:*) + echo hppa1.0-hp-osf + exit 0 ;; + i*86:OSF1:*:*) + if [ -x /usr/sbin/sysversion ] ; then + echo ${UNAME_MACHINE}-unknown-osf1mk + else + echo ${UNAME_MACHINE}-unknown-osf1 + fi + exit 0 ;; + parisc*:Lites*:*:*) + echo hppa1.1-hp-lites + exit 0 ;; + C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) + echo c1-convex-bsd + exit 0 ;; + C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) + if getsysinfo -f scalar_acc + then echo c32-convex-bsd + else echo c2-convex-bsd + fi + exit 0 ;; + C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) + echo c34-convex-bsd + exit 0 ;; + C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) + echo c38-convex-bsd + exit 0 ;; + C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) + echo c4-convex-bsd + exit 0 ;; + CRAY*Y-MP:*:*:*) + echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit 0 ;; + CRAY*[A-Z]90:*:*:*) + echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ + | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ + -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ + -e 's/\.[^.]*$/.X/' + exit 0 ;; + CRAY*TS:*:*:*) + echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit 0 ;; + CRAY*T3D:*:*:*) + echo alpha-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit 0 ;; + CRAY*T3E:*:*:*) + echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit 0 ;; + CRAY*SV1:*:*:*) + echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit 0 ;; + F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) + FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` + FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` + FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` + echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" + exit 0 ;; + i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) + echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} + exit 0 ;; + sparc*:BSD/OS:*:*) + echo sparc-unknown-bsdi${UNAME_RELEASE} + exit 0 ;; + *:BSD/OS:*:*) + echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} + exit 0 ;; + *:FreeBSD:*:*) + echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` + exit 0 ;; + i*:CYGWIN*:*) + echo ${UNAME_MACHINE}-pc-cygwin + exit 0 ;; + i*:MINGW*:*) + echo ${UNAME_MACHINE}-pc-mingw32 + exit 0 ;; + i*:PW*:*) + echo ${UNAME_MACHINE}-pc-pw32 + exit 0 ;; + x86:Interix*:3*) + echo i386-pc-interix3 + exit 0 ;; + i*:Windows_NT*:* | Pentium*:Windows_NT*:*) + # How do we know it's Interix rather than the generic POSIX subsystem? + # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we + # UNAME_MACHINE based on the output of uname instead of i386? + echo i386-pc-interix + exit 0 ;; + i*:UWIN*:*) + echo ${UNAME_MACHINE}-pc-uwin + exit 0 ;; + p*:CYGWIN*:*) + echo powerpcle-unknown-cygwin + exit 0 ;; + prep*:SunOS:5.*:*) + echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit 0 ;; + *:GNU:*:*) + echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` + exit 0 ;; + i*86:Minix:*:*) + echo ${UNAME_MACHINE}-pc-minix + exit 0 ;; + arm*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit 0 ;; + ia64:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit 0 ;; + m68*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit 0 ;; + mips:Linux:*:*) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #undef CPU + #undef mips + #undef mipsel + #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) + CPU=mipsel + #else + #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) + CPU=mips + #else + CPU= + #endif + #endif +EOF + eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=` + rm -f $dummy.c + test x"${CPU}" != x && echo "${CPU}-pc-linux-gnu" && exit 0 + ;; + ppc:Linux:*:*) + echo powerpc-unknown-linux-gnu + exit 0 ;; + ppc64:Linux:*:*) + echo powerpc64-unknown-linux-gnu + exit 0 ;; + alpha:Linux:*:*) + case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in + EV5) UNAME_MACHINE=alphaev5 ;; + EV56) UNAME_MACHINE=alphaev56 ;; + PCA56) UNAME_MACHINE=alphapca56 ;; + PCA57) UNAME_MACHINE=alphapca56 ;; + EV6) UNAME_MACHINE=alphaev6 ;; + EV67) UNAME_MACHINE=alphaev67 ;; + EV68*) UNAME_MACHINE=alphaev68 ;; + esac + objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null + if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi + echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} + exit 0 ;; + parisc:Linux:*:* | hppa:Linux:*:*) + # Look for CPU level + case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in + PA7*) echo hppa1.1-unknown-linux-gnu ;; + PA8*) echo hppa2.0-unknown-linux-gnu ;; + *) echo hppa-unknown-linux-gnu ;; + esac + exit 0 ;; + parisc64:Linux:*:* | hppa64:Linux:*:*) + echo hppa64-unknown-linux-gnu + exit 0 ;; + s390:Linux:*:* | s390x:Linux:*:*) + echo ${UNAME_MACHINE}-ibm-linux + exit 0 ;; + sh*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit 0 ;; + sparc:Linux:*:* | sparc64:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit 0 ;; + x86_64:Linux:*:*) + echo x86_64-unknown-linux-gnu + exit 0 ;; + i*86:Linux:*:*) + # The BFD linker knows what the default object file format is, so + # first see if it will tell us. cd to the root directory to prevent + # problems with other programs or directories called `ld' in the path. + # Set LC_ALL=C to ensure ld outputs messages in English. + ld_supported_targets=`cd /; LC_ALL=C ld --help 2>&1 \ + | sed -ne '/supported targets:/!d + s/[ ][ ]*/ /g + s/.*supported targets: *// + s/ .*// + p'` + case "$ld_supported_targets" in + elf32-i386) + TENTATIVE="${UNAME_MACHINE}-pc-linux-gnu" + ;; + a.out-i386-linux) + echo "${UNAME_MACHINE}-pc-linux-gnuaout" + exit 0 ;; + coff-i386) + echo "${UNAME_MACHINE}-pc-linux-gnucoff" + exit 0 ;; + "") + # Either a pre-BFD a.out linker (linux-gnuoldld) or + # one that does not give us useful --help. + echo "${UNAME_MACHINE}-pc-linux-gnuoldld" + exit 0 ;; + esac + # Determine whether the default compiler is a.out or elf + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #include + #ifdef __ELF__ + # ifdef __GLIBC__ + # if __GLIBC__ >= 2 + LIBC=gnu + # else + LIBC=gnulibc1 + # endif + # else + LIBC=gnulibc1 + # endif + #else + #ifdef __INTEL_COMPILER + LIBC=gnu + #else + LIBC=gnuaout + #endif + #endif +EOF + eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=` + rm -f $dummy.c + test x"${LIBC}" != x && echo "${UNAME_MACHINE}-pc-linux-${LIBC}" && exit 0 + test x"${TENTATIVE}" != x && echo "${TENTATIVE}" && exit 0 + ;; + i*86:DYNIX/ptx:4*:*) + # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. + # earlier versions are messed up and put the nodename in both + # sysname and nodename. + echo i386-sequent-sysv4 + exit 0 ;; + i*86:UNIX_SV:4.2MP:2.*) + # Unixware is an offshoot of SVR4, but it has its own version + # number series starting with 2... + # I am not positive that other SVR4 systems won't match this, + # I just have to hope. -- rms. + # Use sysv4.2uw... so that sysv4* matches it. + echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} + exit 0 ;; + i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) + UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` + if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then + echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL} + else + echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} + fi + exit 0 ;; + i*86:*:5:[78]*) + case `/bin/uname -X | grep "^Machine"` in + *486*) UNAME_MACHINE=i486 ;; + *Pentium) UNAME_MACHINE=i586 ;; + *Pent*|*Celeron) UNAME_MACHINE=i686 ;; + esac + echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} + exit 0 ;; + i*86:*:3.2:*) + if test -f /usr/options/cb.name; then + UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then + UNAME_REL=`(/bin/uname -X|egrep Release|sed -e 's/.*= //')` + (/bin/uname -X|egrep i80486 >/dev/null) && UNAME_MACHINE=i486 + (/bin/uname -X|egrep '^Machine.*Pentium' >/dev/null) \ + && UNAME_MACHINE=i586 + (/bin/uname -X|egrep '^Machine.*Pent ?II' >/dev/null) \ + && UNAME_MACHINE=i686 + (/bin/uname -X|egrep '^Machine.*Pentium Pro' >/dev/null) \ + && UNAME_MACHINE=i686 + echo ${UNAME_MACHINE}-pc-sco$UNAME_REL + else + echo ${UNAME_MACHINE}-pc-sysv32 + fi + exit 0 ;; + i*86:*DOS:*:*) + echo ${UNAME_MACHINE}-pc-msdosdjgpp + exit 0 ;; + pc:*:*:*) + # Left here for compatibility: + # uname -m prints for DJGPP always 'pc', but it prints nothing about + # the processor, so we play safe by assuming i386. + echo i386-pc-msdosdjgpp + exit 0 ;; + Intel:Mach:3*:*) + echo i386-pc-mach3 + exit 0 ;; + paragon:*:*:*) + echo i860-intel-osf1 + exit 0 ;; + i860:*:4.*:*) # i860-SVR4 + if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then + echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 + else # Add other i860-SVR4 vendors below as they are discovered. + echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 + fi + exit 0 ;; + mini*:CTIX:SYS*5:*) + # "miniframe" + echo m68010-convergent-sysv + exit 0 ;; + M68*:*:R3V[567]*:*) + test -r /sysV68 && echo 'm68k-motorola-sysv' && exit 0 ;; + 3[34]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0) + OS_REL='' + test -r /etc/.relid \ + && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && echo i486-ncr-sysv4.3${OS_REL} && exit 0 + /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ + && echo i586-ncr-sysv4.3${OS_REL} && exit 0 ;; + 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && echo i486-ncr-sysv4 && exit 0 ;; + m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) + echo m68k-unknown-lynxos${UNAME_RELEASE} + exit 0 ;; + mc68030:UNIX_System_V:4.*:*) + echo m68k-atari-sysv4 + exit 0 ;; + i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*) + echo i386-unknown-lynxos${UNAME_RELEASE} + exit 0 ;; + TSUNAMI:LynxOS:2.*:*) + echo sparc-unknown-lynxos${UNAME_RELEASE} + exit 0 ;; + rs6000:LynxOS:2.*:*) + echo rs6000-unknown-lynxos${UNAME_RELEASE} + exit 0 ;; + PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*) + echo powerpc-unknown-lynxos${UNAME_RELEASE} + exit 0 ;; + SM[BE]S:UNIX_SV:*:*) + echo mips-dde-sysv${UNAME_RELEASE} + exit 0 ;; + RM*:ReliantUNIX-*:*:*) + echo mips-sni-sysv4 + exit 0 ;; + RM*:SINIX-*:*:*) + echo mips-sni-sysv4 + exit 0 ;; + *:SINIX-*:*:*) + if uname -p 2>/dev/null >/dev/null ; then + UNAME_MACHINE=`(uname -p) 2>/dev/null` + echo ${UNAME_MACHINE}-sni-sysv4 + else + echo ns32k-sni-sysv + fi + exit 0 ;; + PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort + # says + echo i586-unisys-sysv4 + exit 0 ;; + *:UNIX_System_V:4*:FTX*) + # From Gerald Hewes . + # How about differentiating between stratus architectures? -djm + echo hppa1.1-stratus-sysv4 + exit 0 ;; + *:*:*:FTX*) + # From seanf@swdc.stratus.com. + echo i860-stratus-sysv4 + exit 0 ;; + *:VOS:*:*) + # From Paul.Green@stratus.com. + echo hppa1.1-stratus-vos + exit 0 ;; + mc68*:A/UX:*:*) + echo m68k-apple-aux${UNAME_RELEASE} + exit 0 ;; + news*:NEWS-OS:6*:*) + echo mips-sony-newsos6 + exit 0 ;; + R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) + if [ -d /usr/nec ]; then + echo mips-nec-sysv${UNAME_RELEASE} + else + echo mips-unknown-sysv${UNAME_RELEASE} + fi + exit 0 ;; + BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. + echo powerpc-be-beos + exit 0 ;; + BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. + echo powerpc-apple-beos + exit 0 ;; + BePC:BeOS:*:*) # BeOS running on Intel PC compatible. + echo i586-pc-beos + exit 0 ;; + SX-4:SUPER-UX:*:*) + echo sx4-nec-superux${UNAME_RELEASE} + exit 0 ;; + SX-5:SUPER-UX:*:*) + echo sx5-nec-superux${UNAME_RELEASE} + exit 0 ;; + Power*:Rhapsody:*:*) + echo powerpc-apple-rhapsody${UNAME_RELEASE} + exit 0 ;; + *:Rhapsody:*:*) + echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} + exit 0 ;; + *:Darwin:*:*) + echo `uname -p`-apple-darwin${UNAME_RELEASE} + exit 0 ;; + *:procnto*:*:* | *:QNX:[0123456789]*:*) + UNAME_PROCESSOR=`uname -p` + if test "$UNAME_PROCESSOR" = "x86"; then + UNAME_PROCESSOR=i386 + UNAME_MACHINE=pc + fi + echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} + exit 0 ;; + *:QNX:*:4*) + echo i386-pc-qnx + exit 0 ;; + NSR-[GKLNPTVW]:NONSTOP_KERNEL:*:*) + echo nsr-tandem-nsk${UNAME_RELEASE} + exit 0 ;; + *:NonStop-UX:*:*) + echo mips-compaq-nonstopux + exit 0 ;; + BS2000:POSIX*:*:*) + echo bs2000-siemens-sysv + exit 0 ;; + DS/*:UNIX_System_V:*:*) + echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} + exit 0 ;; + *:Plan9:*:*) + # "uname -m" is not consistent, so use $cputype instead. 386 + # is converted to i386 for consistency with other x86 + # operating systems. + if test "$cputype" = "386"; then + UNAME_MACHINE=i386 + else + UNAME_MACHINE="$cputype" + fi + echo ${UNAME_MACHINE}-unknown-plan9 + exit 0 ;; + i*86:OS/2:*:*) + # If we were able to find `uname', then EMX Unix compatibility + # is probably installed. + echo ${UNAME_MACHINE}-pc-os2-emx + exit 0 ;; + *:TOPS-10:*:*) + echo pdp10-unknown-tops10 + exit 0 ;; + *:TENEX:*:*) + echo pdp10-unknown-tenex + exit 0 ;; + KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) + echo pdp10-dec-tops20 + exit 0 ;; + XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) + echo pdp10-xkl-tops20 + exit 0 ;; + *:TOPS-20:*:*) + echo pdp10-unknown-tops20 + exit 0 ;; + *:ITS:*:*) + echo pdp10-unknown-its + exit 0 ;; + i*86:XTS-300:*:STOP) + echo ${UNAME_MACHINE}-unknown-stop + exit 0 ;; + i*86:atheos:*:*) + echo ${UNAME_MACHINE}-unknown-atheos + exit 0 ;; +esac + +#echo '(No uname command or uname output not recognized.)' 1>&2 +#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2 + +eval $set_cc_for_build +cat >$dummy.c < +# include +#endif +main () +{ +#if defined (sony) +#if defined (MIPSEB) + /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, + I don't know.... */ + printf ("mips-sony-bsd\n"); exit (0); +#else +#include + printf ("m68k-sony-newsos%s\n", +#ifdef NEWSOS4 + "4" +#else + "" +#endif + ); exit (0); +#endif +#endif + +#if defined (__arm) && defined (__acorn) && defined (__unix) + printf ("arm-acorn-riscix"); exit (0); +#endif + +#if defined (hp300) && !defined (hpux) + printf ("m68k-hp-bsd\n"); exit (0); +#endif + +#if defined (NeXT) +#if !defined (__ARCHITECTURE__) +#define __ARCHITECTURE__ "m68k" +#endif + int version; + version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; + if (version < 4) + printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); + else + printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version); + exit (0); +#endif + +#if defined (MULTIMAX) || defined (n16) +#if defined (UMAXV) + printf ("ns32k-encore-sysv\n"); exit (0); +#else +#if defined (CMU) + printf ("ns32k-encore-mach\n"); exit (0); +#else + printf ("ns32k-encore-bsd\n"); exit (0); +#endif +#endif +#endif + +#if defined (__386BSD__) + printf ("i386-pc-bsd\n"); exit (0); +#endif + +#if defined (sequent) +#if defined (i386) + printf ("i386-sequent-dynix\n"); exit (0); +#endif +#if defined (ns32000) + printf ("ns32k-sequent-dynix\n"); exit (0); +#endif +#endif + +#if defined (_SEQUENT_) + struct utsname un; + + uname(&un); + + if (strncmp(un.version, "V2", 2) == 0) { + printf ("i386-sequent-ptx2\n"); exit (0); + } + if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ + printf ("i386-sequent-ptx1\n"); exit (0); + } + printf ("i386-sequent-ptx\n"); exit (0); + +#endif + +#if defined (vax) +# if !defined (ultrix) +# include +# if defined (BSD) +# if BSD == 43 + printf ("vax-dec-bsd4.3\n"); exit (0); +# else +# if BSD == 199006 + printf ("vax-dec-bsd4.3reno\n"); exit (0); +# else + printf ("vax-dec-bsd\n"); exit (0); +# endif +# endif +# else + printf ("vax-dec-bsd\n"); exit (0); +# endif +# else + printf ("vax-dec-ultrix\n"); exit (0); +# endif +#endif + +#if defined (alliant) && defined (i860) + printf ("i860-alliant-bsd\n"); exit (0); +#endif + + exit (1); +} +EOF + +$CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null && ./$dummy && rm -f $dummy.c $dummy && exit 0 +rm -f $dummy.c $dummy + +# Apollos put the system type in the environment. + +test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit 0; } + +# Convex versions that predate uname can use getsysinfo(1) + +if [ -x /usr/convex/getsysinfo ] +then + case `getsysinfo -f cpu_type` in + c1*) + echo c1-convex-bsd + exit 0 ;; + c2*) + if getsysinfo -f scalar_acc + then echo c32-convex-bsd + else echo c2-convex-bsd + fi + exit 0 ;; + c34*) + echo c34-convex-bsd + exit 0 ;; + c38*) + echo c38-convex-bsd + exit 0 ;; + c4*) + echo c4-convex-bsd + exit 0 ;; + esac +fi + +cat >&2 < in order to provide the needed +information to handle your system. + +config.guess timestamp = $timestamp + +uname -m = `(uname -m) 2>/dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null` + +hostinfo = `(hostinfo) 2>/dev/null` +/bin/universe = `(/bin/universe) 2>/dev/null` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` +/bin/arch = `(/bin/arch) 2>/dev/null` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` + +UNAME_MACHINE = ${UNAME_MACHINE} +UNAME_RELEASE = ${UNAME_RELEASE} +UNAME_SYSTEM = ${UNAME_SYSTEM} +UNAME_VERSION = ${UNAME_VERSION} +EOF + +exit 1 + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "timestamp='" +# time-stamp-format: "%:y-%02m-%02d" +# time-stamp-end: "'" +# End: diff --git a/src/apps/bin/diffutils-2.8.1/config/config.rpath b/src/apps/bin/diffutils-2.8.1/config/config.rpath new file mode 100755 index 0000000000..5ead7586a7 --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/config/config.rpath @@ -0,0 +1,513 @@ +#! /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-2002 Free Software Foundation, Inc. +# Taken from GNU libtool, 2001 +# Originally by Gordon Matzigkeit , 1996 +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. +# +# 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. + +# All known linkers require a `.a' archive for static linking (except M$VC, +# which needs '.lib'). +libext=a +shlibext= + +host="$1" +host_cpu=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` +host_vendor=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` +host_os=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` + +wl= +if test "$GCC" = yes; then + wl='-Wl,' +else + case "$host_os" in + aix3* | aix4* | aix5*) + wl='-Wl,' + ;; + hpux9* | hpux10* | hpux11*) + wl='-Wl,' + ;; + irix5* | irix6*) + wl='-Wl,' + ;; + linux*) + echo '__INTEL_COMPILER' > conftest.$ac_ext + if $CC -E conftest.$ac_ext >/dev/null | grep __INTEL_COMPILER >/dev/null + then + : + else + # Intel icc + wl='-Qoption,ld,' + fi + ;; + osf3* | osf4* | osf5*) + wl='-Wl,' + ;; + solaris*) + wl='-Wl,' + ;; + sunos4*) + wl='-Qoption ld ' + ;; + sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + if test "x$host_vendor" = xsni; then + wl='-LD' + else + wl='-Wl,' + fi + ;; + esac +fi + +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, the GNU linker is very broken + ld_shlibs=no + ;; + 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 can use + # them. + ld_shlibs=no + ;; + beos*) + if $LD --help 2>&1 | egrep ': 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' + ;; + solaris* | sysv5*) + if $LD -v 2>&1 | egrep 'BFD 2\.8' > /dev/null; then + ld_shlibs=no + elif $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then + : + else + ld_shlibs=no + fi + ;; + sunos4*) + hardcode_direct=yes + ;; + *) + if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then + : + else + ld_shlibs=no + fi + ;; + esac + if test "$ld_shlibs" = yes; then + 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 + if test "$aix_use_runtimelinking" = yes; then + hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:/usr/lib:/lib' + else + if test "$host_cpu" = ia64; then + hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' + else + hardcode_libdir_flag_spec='${wl}-bnolibpath ${wl}-blibpath:$libdir:/usr/lib:/lib' + 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 + ;; + 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=yes + ;; + freebsd1*) + ld_shlibs=no + ;; + freebsd2.2*) + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + ;; + freebsd2*) + hardcode_direct=yes + hardcode_minus_L=yes + ;; + freebsd*) + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + ;; + hpux9* | hpux10* | hpux11*) + hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' + hardcode_libdir_separator=: + hardcode_direct=yes + hardcode_minus_L=yes # Not in the search PATH, but as the default + # location of the library. + ;; + irix5* | irix6*) + 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) + if test "x$host_vendor" = xsno; then + hardcode_direct=yes # is this really true??? + else + hardcode_direct=no # Motorola manual says yes, but my tests say they lie + fi + ;; + sysv4.3*) + ;; + sysv5*) + hardcode_libdir_flag_spec= + ;; + uts4*) + hardcode_libdir_flag_spec='-L$libdir' + ;; + dgux*) + hardcode_libdir_flag_spec='-L$libdir' + ;; + sysv4*MP*) + if test -d /usr/nec; then + ld_shlibs=yes + fi + ;; + sysv4.2uw2*) + hardcode_direct=yes + hardcode_minus_L=no + ;; + sysv5uw7* | unixware7*) + ;; + *) + ld_shlibs=no + ;; + esac +fi + +# Check dynamic linker characteristics +libname_spec='lib$name' +sys_lib_dlsearch_path_spec="/lib /usr/lib" +sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" +case "$host_os" in + aix3*) + shlibext=so + ;; + aix4* | aix5*) + shlibext=so + ;; + amigaos*) + shlibext=ixlibrary + ;; + beos*) + shlibext=so + ;; + bsdi4*) + shlibext=so + sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" + sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" + ;; + cygwin* | mingw* | pw32*) + case $GCC,$host_os in + yes,cygwin*) + shlibext=dll.a + ;; + yes,mingw*) + shlibext=dll + sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | sed -e "s/^libraries://" -e "s/;/ /g"` + ;; + yes,pw32*) + shlibext=dll + ;; + *) + shlibext=dll + ;; + esac + ;; + darwin* | rhapsody*) + shlibext=dylib + ;; + freebsd1*) + ;; + freebsd*) + shlibext=so + ;; + gnu*) + shlibext=so + ;; + hpux9* | hpux10* | hpux11*) + shlibext=sl + ;; + irix5* | irix6*) + shlibext=so + case "$host_os" in + irix5*) + libsuff= shlibsuff= + ;; + *) + case $LD in + *-32|*"-32 ") libsuff= shlibsuff= ;; + *-n32|*"-n32 ") libsuff=32 shlibsuff=N32 ;; + *-64|*"-64 ") libsuff=64 shlibsuff=64 ;; + *) libsuff= shlibsuff= ;; + esac + ;; + esac + sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" + sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" + ;; + linux-gnuoldld* | linux-gnuaout* | linux-gnucoff*) + ;; + linux-gnu*) + shlibext=so + ;; + netbsd*) + shlibext=so + ;; + newsos6) + shlibext=so + ;; + openbsd*) + shlibext=so + ;; + os2*) + libname_spec='$name' + shlibext=dll + ;; + osf3* | osf4* | osf5*) + shlibext=so + sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" + sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" + ;; + sco3.2v5*) + shlibext=so + ;; + solaris*) + shlibext=so + ;; + sunos4*) + shlibext=so + ;; + sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + shlibext=so + case "$host_vendor" in + motorola) + sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' + ;; + esac + ;; + uts4*) + shlibext=so + ;; + dgux*) + shlibext=so + ;; + sysv4*MP*) + if test -d /usr/nec; then + shlibext=so + fi + ;; +esac + +sed_quote_subst='s/\(["`$\\]\)/\\\1/g' +escaped_wl=`echo "X$wl" | sed -e 's/^X//' -e "$sed_quote_subst"` +escaped_hardcode_libdir_flag_spec=`echo "X$hardcode_libdir_flag_spec" | sed -e 's/^X//' -e "$sed_quote_subst"` +escaped_sys_lib_search_path_spec=`echo "X$sys_lib_search_path_spec" | sed -e 's/^X//' -e "$sed_quote_subst"` +escaped_sys_lib_dlsearch_path_spec=`echo "X$sys_lib_dlsearch_path_spec" | sed -e 's/^X//' -e "$sed_quote_subst"` + +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 +Free Software Foundation, Inc. + +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." + +help=" +Try \`$me --help' for more information." + +# Parse command line +while test $# -gt 0 ; do + case $1 in + --time-stamp | --time* | -t ) + echo "$timestamp" ; exit 0 ;; + --version | -v ) + echo "$version" ; exit 0 ;; + --help | --h* | -h ) + echo "$usage"; exit 0 ;; + -- ) # Stop option processing + shift; break ;; + - ) # Use stdin as input. + break ;; + -* ) + echo "$me: invalid option $1$help" + exit 1 ;; + + *local*) + # First pass through any local machine types. + echo $1 + exit 0;; + + * ) + break ;; + esac +done + +case $# in + 0) echo "$me: missing argument$help" >&2 + exit 1;; + 1) ;; + *) echo "$me: too many arguments$help" >&2 + exit 1;; +esac + +# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). +# Here we must recognize all the valid KERNEL-OS combinations. +maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` +case $maybe_os in + nto-qnx* | linux-gnu* | storm-chaos* | os2-emx* | windows32-* | rtmk-nova*) + os=-$maybe_os + basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` + ;; + *) + basic_machine=`echo $1 | sed 's/-[^-]*$//'` + if [ $basic_machine != $1 ] + then os=`echo $1 | sed 's/.*-/-/'` + else os=; fi + ;; +esac + +### Let's recognize common machines as not being operating systems so +### that things like config.sub decstation-3100 work. We also +### recognize some manufacturers as not being operating systems, so we +### can provide default operating systems below. +case $os in + -sun*os*) + # Prevent following clause from handling this invalid input. + ;; + -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ + -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ + -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ + -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ + -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ + -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ + -apple | -axis) + os= + basic_machine=$1 + ;; + -sim | -cisco | -oki | -wec | -winbond) + os= + basic_machine=$1 + ;; + -scout) + ;; + -wrs) + os=-vxworks + basic_machine=$1 + ;; + -chorusos*) + os=-chorusos + basic_machine=$1 + ;; + -chorusrdb) + os=-chorusrdb + basic_machine=$1 + ;; + -hiux*) + os=-hiuxwe2 + ;; + -sco5) + os=-sco3.2v5 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco4) + os=-sco3.2v4 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco3.2.[4-9]*) + os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco3.2v[4-9]*) + # Don't forget version if it is 3.2v4 or newer. + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco*) + os=-sco3.2v2 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -udk*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -isc) + os=-isc2.2 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -clix*) + basic_machine=clipper-intergraph + ;; + -isc*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -lynx*) + os=-lynxos + ;; + -ptx*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` + ;; + -windowsnt*) + os=`echo $os | sed -e 's/windowsnt/winnt/'` + ;; + -psos*) + os=-psos + ;; + -mint | -mint[0-9]*) + basic_machine=m68k-atari + os=-mint + ;; +esac + +# Decode aliases for certain CPU-COMPANY combinations. +case $basic_machine in + # Recognize the basic CPU types without company name. + # Some are omitted here because they have special meanings below. + 1750a | 580 \ + | a29k \ + | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ + | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ + | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr \ + | c4x | clipper \ + | d10v | d30v | dsp16xx \ + | fr30 \ + | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ + | i370 | i860 | i960 | ia64 \ + | m32r | m68000 | m68k | m88k | mcore \ + | mips | mips16 | mips64 | mips64el | mips64orion | mips64orionel \ + | mips64vr4100 | mips64vr4100el | mips64vr4300 \ + | mips64vr4300el | mips64vr5000 | mips64vr5000el \ + | mipsbe | mipseb | mipsel | mipsle | mipstx39 | mipstx39el \ + | mipsisa32 | mipsisa64 \ + | mn10200 | mn10300 \ + | ns16k | ns32k \ + | openrisc | or32 \ + | pdp10 | pdp11 | pj | pjl \ + | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \ + | pyramid \ + | sh | sh[34] | sh[34]eb | shbe | shle | sh64 \ + | sparc | sparc64 | sparc86x | sparclet | sparclite | sparcv9 | sparcv9b \ + | strongarm \ + | tahoe | thumb | tic80 | tron \ + | v850 | v850e \ + | we32k \ + | x86 | xscale | xstormy16 | xtensa \ + | z8k) + basic_machine=$basic_machine-unknown + ;; + m6811 | m68hc11 | m6812 | m68hc12) + # Motorola 68HC11/12. + basic_machine=$basic_machine-unknown + os=-none + ;; + m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) + ;; + + # We use `pc' rather than `unknown' + # because (1) that's what they normally are, and + # (2) the word "unknown" tends to confuse beginning users. + i*86 | x86_64) + basic_machine=$basic_machine-pc + ;; + # Object if more than one company name word. + *-*-*) + echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 + exit 1 + ;; + # Recognize the basic CPU types with company name. + 580-* \ + | a29k-* \ + | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ + | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ + | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \ + | arm-* | armbe-* | armle-* | armv*-* \ + | avr-* \ + | bs2000-* \ + | c[123]* | c30-* | [cjt]90-* | c54x-* \ + | clipper-* | cydra-* \ + | d10v-* | d30v-* \ + | elxsi-* \ + | f30[01]-* | f700-* | fr30-* | fx80-* \ + | h8300-* | h8500-* \ + | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ + | i*86-* | i860-* | i960-* | ia64-* \ + | m32r-* \ + | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ + | m88110-* | m88k-* | mcore-* \ + | mips-* | mips16-* | mips64-* | mips64el-* | mips64orion-* \ + | mips64orionel-* | mips64vr4100-* | mips64vr4100el-* \ + | mips64vr4300-* | mips64vr4300el-* | mipsbe-* | mipseb-* \ + | mipsle-* | mipsel-* | mipstx39-* | mipstx39el-* \ + | none-* | np1-* | ns16k-* | ns32k-* \ + | orion-* \ + | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ + | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \ + | pyramid-* \ + | romp-* | rs6000-* \ + | sh-* | sh[34]-* | sh[34]eb-* | shbe-* | shle-* | sh64-* \ + | sparc-* | sparc64-* | sparc86x-* | sparclet-* | sparclite-* \ + | sparcv9-* | sparcv9b-* | strongarm-* | sv1-* | sx?-* \ + | tahoe-* | thumb-* | tic30-* | tic54x-* | tic80-* | tron-* \ + | v850-* | v850e-* | vax-* \ + | we32k-* \ + | x86-* | x86_64-* | xps100-* | xscale-* | xstormy16-* \ + | xtensa-* \ + | ymp-* \ + | z8k-*) + ;; + # Recognize the various machine names and aliases which stand + # for a CPU type and a company and sometimes even an OS. + 386bsd) + basic_machine=i386-unknown + os=-bsd + ;; + 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) + basic_machine=m68000-att + ;; + 3b*) + basic_machine=we32k-att + ;; + a29khif) + basic_machine=a29k-amd + os=-udi + ;; + adobe68k) + basic_machine=m68010-adobe + os=-scout + ;; + alliant | fx80) + basic_machine=fx80-alliant + ;; + altos | altos3068) + basic_machine=m68k-altos + ;; + am29k) + basic_machine=a29k-none + os=-bsd + ;; + amdahl) + basic_machine=580-amdahl + os=-sysv + ;; + amiga | amiga-*) + basic_machine=m68k-unknown + ;; + amigaos | amigados) + basic_machine=m68k-unknown + os=-amigaos + ;; + amigaunix | amix) + basic_machine=m68k-unknown + os=-sysv4 + ;; + apollo68) + basic_machine=m68k-apollo + os=-sysv + ;; + apollo68bsd) + basic_machine=m68k-apollo + os=-bsd + ;; + aux) + basic_machine=m68k-apple + os=-aux + ;; + balance) + basic_machine=ns32k-sequent + os=-dynix + ;; + c90) + basic_machine=c90-cray + os=-unicos + ;; + convex-c1) + basic_machine=c1-convex + os=-bsd + ;; + convex-c2) + basic_machine=c2-convex + os=-bsd + ;; + convex-c32) + basic_machine=c32-convex + os=-bsd + ;; + convex-c34) + basic_machine=c34-convex + os=-bsd + ;; + convex-c38) + basic_machine=c38-convex + os=-bsd + ;; + cray | j90) + basic_machine=j90-cray + os=-unicos + ;; + crds | unos) + basic_machine=m68k-crds + ;; + cris | cris-* | etrax*) + basic_machine=cris-axis + ;; + da30 | da30-*) + basic_machine=m68k-da30 + ;; + decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) + basic_machine=mips-dec + ;; + decsystem10* | dec10*) + basic_machine=pdp10-dec + os=-tops10 + ;; + decsystem20* | dec20*) + basic_machine=pdp10-dec + os=-tops20 + ;; + delta | 3300 | motorola-3300 | motorola-delta \ + | 3300-motorola | delta-motorola) + basic_machine=m68k-motorola + ;; + delta88) + basic_machine=m88k-motorola + os=-sysv3 + ;; + dpx20 | dpx20-*) + basic_machine=rs6000-bull + os=-bosx + ;; + dpx2* | dpx2*-bull) + basic_machine=m68k-bull + os=-sysv3 + ;; + ebmon29k) + basic_machine=a29k-amd + os=-ebmon + ;; + elxsi) + basic_machine=elxsi-elxsi + os=-bsd + ;; + encore | umax | mmax) + basic_machine=ns32k-encore + ;; + es1800 | OSE68k | ose68k | ose | OSE) + basic_machine=m68k-ericsson + os=-ose + ;; + fx2800) + basic_machine=i860-alliant + ;; + genix) + basic_machine=ns32k-ns + ;; + gmicro) + basic_machine=tron-gmicro + os=-sysv + ;; + go32) + basic_machine=i386-pc + os=-go32 + ;; + h3050r* | hiux*) + basic_machine=hppa1.1-hitachi + os=-hiuxwe2 + ;; + h8300hms) + basic_machine=h8300-hitachi + os=-hms + ;; + h8300xray) + basic_machine=h8300-hitachi + os=-xray + ;; + h8500hms) + basic_machine=h8500-hitachi + os=-hms + ;; + harris) + basic_machine=m88k-harris + os=-sysv3 + ;; + hp300-*) + basic_machine=m68k-hp + ;; + hp300bsd) + basic_machine=m68k-hp + os=-bsd + ;; + hp300hpux) + basic_machine=m68k-hp + os=-hpux + ;; + hp3k9[0-9][0-9] | hp9[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hp9k2[0-9][0-9] | hp9k31[0-9]) + basic_machine=m68000-hp + ;; + hp9k3[2-9][0-9]) + basic_machine=m68k-hp + ;; + hp9k6[0-9][0-9] | hp6[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hp9k7[0-79][0-9] | hp7[0-79][0-9]) + basic_machine=hppa1.1-hp + ;; + hp9k78[0-9] | hp78[0-9]) + # FIXME: really hppa2.0-hp + basic_machine=hppa1.1-hp + ;; + hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) + # FIXME: really hppa2.0-hp + basic_machine=hppa1.1-hp + ;; + hp9k8[0-9][13679] | hp8[0-9][13679]) + basic_machine=hppa1.1-hp + ;; + hp9k8[0-9][0-9] | hp8[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hppa-next) + os=-nextstep3 + ;; + hppaosf) + basic_machine=hppa1.1-hp + os=-osf + ;; + hppro) + basic_machine=hppa1.1-hp + os=-proelf + ;; + i370-ibm* | ibm*) + basic_machine=i370-ibm + ;; +# I'm not sure what "Sysv32" means. Should this be sysv3.2? + i*86v32) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv32 + ;; + i*86v4*) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv4 + ;; + i*86v) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv + ;; + i*86sol2) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-solaris2 + ;; + i386mach) + basic_machine=i386-mach + os=-mach + ;; + i386-vsta | vsta) + basic_machine=i386-unknown + os=-vsta + ;; + iris | iris4d) + basic_machine=mips-sgi + case $os in + -irix*) + ;; + *) + os=-irix4 + ;; + esac + ;; + isi68 | isi) + basic_machine=m68k-isi + os=-sysv + ;; + m88k-omron*) + basic_machine=m88k-omron + ;; + magnum | m3230) + basic_machine=mips-mips + os=-sysv + ;; + merlin) + basic_machine=ns32k-utek + os=-sysv + ;; + mingw32) + basic_machine=i386-pc + os=-mingw32 + ;; + miniframe) + basic_machine=m68000-convergent + ;; + *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) + basic_machine=m68k-atari + os=-mint + ;; + mips3*-*) + basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` + ;; + mips3*) + basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown + ;; + mmix*) + basic_machine=mmix-knuth + os=-mmixware + ;; + monitor) + basic_machine=m68k-rom68k + os=-coff + ;; + morphos) + basic_machine=powerpc-unknown + os=-morphos + ;; + msdos) + basic_machine=i386-pc + os=-msdos + ;; + mvs) + basic_machine=i370-ibm + os=-mvs + ;; + ncr3000) + basic_machine=i486-ncr + os=-sysv4 + ;; + netbsd386) + basic_machine=i386-unknown + os=-netbsd + ;; + netwinder) + basic_machine=armv4l-rebel + os=-linux + ;; + news | news700 | news800 | news900) + basic_machine=m68k-sony + os=-newsos + ;; + news1000) + basic_machine=m68030-sony + os=-newsos + ;; + news-3600 | risc-news) + basic_machine=mips-sony + os=-newsos + ;; + necv70) + basic_machine=v70-nec + os=-sysv + ;; + next | m*-next ) + basic_machine=m68k-next + case $os in + -nextstep* ) + ;; + -ns2*) + os=-nextstep2 + ;; + *) + os=-nextstep3 + ;; + esac + ;; + nh3000) + basic_machine=m68k-harris + os=-cxux + ;; + nh[45]000) + basic_machine=m88k-harris + os=-cxux + ;; + nindy960) + basic_machine=i960-intel + os=-nindy + ;; + mon960) + basic_machine=i960-intel + os=-mon960 + ;; + nonstopux) + basic_machine=mips-compaq + os=-nonstopux + ;; + np1) + basic_machine=np1-gould + ;; + nsr-tandem) + basic_machine=nsr-tandem + ;; + op50n-* | op60c-*) + basic_machine=hppa1.1-oki + os=-proelf + ;; + or32 | or32-*) + basic_machine=or32-unknown + os=-coff + ;; + OSE68000 | ose68000) + basic_machine=m68000-ericsson + os=-ose + ;; + os68k) + basic_machine=m68k-none + os=-os68k + ;; + pa-hitachi) + basic_machine=hppa1.1-hitachi + os=-hiuxwe2 + ;; + paragon) + basic_machine=i860-intel + os=-osf + ;; + pbd) + basic_machine=sparc-tti + ;; + pbb) + basic_machine=m68k-tti + ;; + pc532 | pc532-*) + basic_machine=ns32k-pc532 + ;; + pentium | p5 | k5 | k6 | nexgen | viac3) + basic_machine=i586-pc + ;; + pentiumpro | p6 | 6x86 | athlon) + basic_machine=i686-pc + ;; + pentiumii | pentium2) + basic_machine=i686-pc + ;; + pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) + basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentiumpro-* | p6-* | 6x86-* | athlon-*) + basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentiumii-* | pentium2-*) + basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pn) + basic_machine=pn-gould + ;; + power) basic_machine=power-ibm + ;; + ppc) basic_machine=powerpc-unknown + ;; + ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ppcle | powerpclittle | ppc-le | powerpc-little) + basic_machine=powerpcle-unknown + ;; + ppcle-* | powerpclittle-*) + basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ppc64) basic_machine=powerpc64-unknown + ;; + ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ppc64le | powerpc64little | ppc64-le | powerpc64-little) + basic_machine=powerpc64le-unknown + ;; + ppc64le-* | powerpc64little-*) + basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ps2) + basic_machine=i386-ibm + ;; + pw32) + basic_machine=i586-unknown + os=-pw32 + ;; + rom68k) + basic_machine=m68k-rom68k + os=-coff + ;; + rm[46]00) + basic_machine=mips-siemens + ;; + rtpc | rtpc-*) + basic_machine=romp-ibm + ;; + s390 | s390-*) + basic_machine=s390-ibm + ;; + s390x | s390x-*) + basic_machine=s390x-ibm + ;; + sa29200) + basic_machine=a29k-amd + os=-udi + ;; + sequent) + basic_machine=i386-sequent + ;; + sh) + basic_machine=sh-hitachi + os=-hms + ;; + sparclite-wrs | simso-wrs) + basic_machine=sparclite-wrs + os=-vxworks + ;; + sps7) + basic_machine=m68k-bull + os=-sysv2 + ;; + spur) + basic_machine=spur-unknown + ;; + st2000) + basic_machine=m68k-tandem + ;; + stratus) + basic_machine=i860-stratus + os=-sysv4 + ;; + sun2) + basic_machine=m68000-sun + ;; + sun2os3) + basic_machine=m68000-sun + os=-sunos3 + ;; + sun2os4) + basic_machine=m68000-sun + os=-sunos4 + ;; + sun3os3) + basic_machine=m68k-sun + os=-sunos3 + ;; + sun3os4) + basic_machine=m68k-sun + os=-sunos4 + ;; + sun4os3) + basic_machine=sparc-sun + os=-sunos3 + ;; + sun4os4) + basic_machine=sparc-sun + os=-sunos4 + ;; + sun4sol2) + basic_machine=sparc-sun + os=-solaris2 + ;; + sun3 | sun3-*) + basic_machine=m68k-sun + ;; + sun4) + basic_machine=sparc-sun + ;; + sun386 | sun386i | roadrunner) + basic_machine=i386-sun + ;; + sv1) + basic_machine=sv1-cray + os=-unicos + ;; + symmetry) + basic_machine=i386-sequent + os=-dynix + ;; + t3d) + basic_machine=alpha-cray + os=-unicos + ;; + t3e) + basic_machine=alphaev5-cray + os=-unicos + ;; + t90) + basic_machine=t90-cray + os=-unicos + ;; + tic54x | c54x*) + basic_machine=tic54x-unknown + os=-coff + ;; + tx39) + basic_machine=mipstx39-unknown + ;; + tx39el) + basic_machine=mipstx39el-unknown + ;; + toad1) + basic_machine=pdp10-xkl + os=-tops20 + ;; + tower | tower-32) + basic_machine=m68k-ncr + ;; + udi29k) + basic_machine=a29k-amd + os=-udi + ;; + ultra3) + basic_machine=a29k-nyu + os=-sym1 + ;; + v810 | necv810) + basic_machine=v810-nec + os=-none + ;; + vaxv) + basic_machine=vax-dec + os=-sysv + ;; + vms) + basic_machine=vax-dec + os=-vms + ;; + vpp*|vx|vx-*) + basic_machine=f301-fujitsu + ;; + vxworks960) + basic_machine=i960-wrs + os=-vxworks + ;; + vxworks68) + basic_machine=m68k-wrs + os=-vxworks + ;; + vxworks29k) + basic_machine=a29k-wrs + os=-vxworks + ;; + w65*) + basic_machine=w65-wdc + os=-none + ;; + w89k-*) + basic_machine=hppa1.1-winbond + os=-proelf + ;; + windows32) + basic_machine=i386-pc + os=-windows32-msvcrt + ;; + xps | xps100) + basic_machine=xps100-honeywell + ;; + ymp) + basic_machine=ymp-cray + os=-unicos + ;; + z8k-*-coff) + basic_machine=z8k-unknown + os=-sim + ;; + none) + basic_machine=none-none + os=-none + ;; + +# Here we handle the default manufacturer of certain CPU types. It is in +# some cases the only manufacturer, in others, it is the most popular. + w89k) + basic_machine=hppa1.1-winbond + ;; + op50n) + basic_machine=hppa1.1-oki + ;; + op60c) + basic_machine=hppa1.1-oki + ;; + romp) + basic_machine=romp-ibm + ;; + rs6000) + basic_machine=rs6000-ibm + ;; + vax) + basic_machine=vax-dec + ;; + pdp10) + # there are many clones, so DEC is not a safe bet + basic_machine=pdp10-unknown + ;; + pdp11) + basic_machine=pdp11-dec + ;; + we32k) + basic_machine=we32k-att + ;; + sh3 | sh4 | sh3eb | sh4eb) + basic_machine=sh-unknown + ;; + sh64) + basic_machine=sh64-unknown + ;; + sparc | sparcv9 | sparcv9b) + basic_machine=sparc-sun + ;; + cydra) + basic_machine=cydra-cydrome + ;; + orion) + basic_machine=orion-highlevel + ;; + orion105) + basic_machine=clipper-highlevel + ;; + mac | mpw | mac-mpw) + basic_machine=m68k-apple + ;; + pmac | pmac-mpw) + basic_machine=powerpc-apple + ;; + c4x*) + basic_machine=c4x-none + os=-coff + ;; + *-unknown) + # Make sure to match an already-canonicalized machine name. + ;; + *) + echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 + exit 1 + ;; +esac + +# Here we canonicalize certain aliases for manufacturers. +case $basic_machine in + *-digital*) + basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` + ;; + *-commodore*) + basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` + ;; + *) + ;; +esac + +# Decode manufacturer-specific aliases for certain operating systems. + +if [ x"$os" != x"" ] +then +case $os in + # First match some system type aliases + # that might get confused with valid system types. + # -solaris* is a basic system type, with this one exception. + -solaris1 | -solaris1.*) + os=`echo $os | sed -e 's|solaris1|sunos4|'` + ;; + -solaris) + os=-solaris2 + ;; + -svr4*) + os=-sysv4 + ;; + -unixware*) + os=-sysv4.2uw + ;; + -gnu/linux*) + os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` + ;; + # First accept the basic system types. + # The portable systems comes first. + # Each alternative MUST END IN A *, to match a version number. + # -sysv* is not here because it comes later, after sysvr4. + -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ + | -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\ + | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \ + | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ + | -aos* \ + | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ + | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ + | -hiux* | -386bsd* | -netbsd* | -openbsd* | -freebsd* | -riscix* \ + | -lynxos* | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ + | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ + | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ + | -chorusos* | -chorusrdb* \ + | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ + | -mingw32* | -linux-gnu* | -uxpv* | -beos* | -mpeix* | -udk* \ + | -interix* | -uwin* | -rhapsody* | -darwin* | -opened* \ + | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ + | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ + | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ + | -morphos* | -superux* | -rtmk* | -rtmk-nova*) + # Remember, each alternative MUST END IN *, to match a version number. + ;; + -qnx*) + case $basic_machine in + x86-* | i*86-*) + ;; + *) + os=-nto$os + ;; + esac + ;; + -nto*) + os=-nto-qnx + ;; + -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ + | -windows* | -osx | -abug | -netware* | -os9* | -beos* \ + | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) + ;; + -mac*) + os=`echo $os | sed -e 's|mac|macos|'` + ;; + -linux*) + os=`echo $os | sed -e 's|linux|linux-gnu|'` + ;; + -sunos5*) + os=`echo $os | sed -e 's|sunos5|solaris2|'` + ;; + -sunos6*) + os=`echo $os | sed -e 's|sunos6|solaris3|'` + ;; + -opened*) + os=-openedition + ;; + -wince*) + os=-wince + ;; + -osfrose*) + os=-osfrose + ;; + -osf*) + os=-osf + ;; + -utek*) + os=-bsd + ;; + -dynix*) + os=-bsd + ;; + -acis*) + os=-aos + ;; + -atheos*) + os=-atheos + ;; + -386bsd) + os=-bsd + ;; + -ctix* | -uts*) + os=-sysv + ;; + -nova*) + os=-rtmk-nova + ;; + -ns2 ) + os=-nextstep2 + ;; + -nsk*) + os=-nsk + ;; + # Preserve the version number of sinix5. + -sinix5.*) + os=`echo $os | sed -e 's|sinix|sysv|'` + ;; + -sinix*) + os=-sysv4 + ;; + -triton*) + os=-sysv3 + ;; + -oss*) + os=-sysv3 + ;; + -svr4) + os=-sysv4 + ;; + -svr3) + os=-sysv3 + ;; + -sysvr4) + os=-sysv4 + ;; + # This must come after -sysvr4. + -sysv*) + ;; + -ose*) + os=-ose + ;; + -es1800*) + os=-ose + ;; + -xenix) + os=-xenix + ;; + -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) + os=-mint + ;; + -none) + ;; + *) + # Get rid of the `-' at the beginning of $os. + os=`echo $os | sed 's/[^-]*-//'` + echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 + exit 1 + ;; +esac +else + +# Here we handle the default operating systems that come with various machines. +# The value should be what the vendor currently ships out the door with their +# machine or put another way, the most popular os provided with the machine. + +# Note that if you're going to try to match "-MANUFACTURER" here (say, +# "-sun"), then you have to tell the case statement up towards the top +# that MANUFACTURER isn't an operating system. Otherwise, code above +# will signal an error saying that MANUFACTURER isn't an operating +# system, and we'll never get to this point. + +case $basic_machine in + *-acorn) + os=-riscix1.2 + ;; + arm*-rebel) + os=-linux + ;; + arm*-semi) + os=-aout + ;; + # This must come before the *-dec entry. + pdp10-*) + os=-tops20 + ;; + pdp11-*) + os=-none + ;; + *-dec | vax-*) + os=-ultrix4.2 + ;; + m68*-apollo) + os=-domain + ;; + i386-sun) + os=-sunos4.0.2 + ;; + m68000-sun) + os=-sunos3 + # This also exists in the configure program, but was not the + # default. + # os=-sunos4 + ;; + m68*-cisco) + os=-aout + ;; + mips*-cisco) + os=-elf + ;; + mips*-*) + os=-elf + ;; + or32-*) + os=-coff + ;; + *-tti) # must be before sparc entry or we get the wrong os. + os=-sysv3 + ;; + sparc-* | *-sun) + os=-sunos4.1.1 + ;; + *-be) + os=-beos + ;; + *-ibm) + os=-aix + ;; + *-wec) + os=-proelf + ;; + *-winbond) + os=-proelf + ;; + *-oki) + os=-proelf + ;; + *-hp) + os=-hpux + ;; + *-hitachi) + os=-hiux + ;; + i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) + os=-sysv + ;; + *-cbm) + os=-amigaos + ;; + *-dg) + os=-dgux + ;; + *-dolphin) + os=-sysv3 + ;; + m68k-ccur) + os=-rtu + ;; + m88k-omron*) + os=-luna + ;; + *-next ) + os=-nextstep + ;; + *-sequent) + os=-ptx + ;; + *-crds) + os=-unos + ;; + *-ns) + os=-genix + ;; + i370-*) + os=-mvs + ;; + *-next) + os=-nextstep3 + ;; + *-gould) + os=-sysv + ;; + *-highlevel) + os=-bsd + ;; + *-encore) + os=-bsd + ;; + *-sgi) + os=-irix + ;; + *-siemens) + os=-sysv4 + ;; + *-masscomp) + os=-rtu + ;; + f30[01]-fujitsu | f700-fujitsu) + os=-uxpv + ;; + *-rom68k) + os=-coff + ;; + *-*bug) + os=-coff + ;; + *-apple) + os=-macos + ;; + *-atari*) + os=-mint + ;; + *) + os=-none + ;; +esac +fi + +# Here we handle the case where we know the os, and the CPU type, but not the +# manufacturer. We pick the logical manufacturer. +vendor=unknown +case $basic_machine in + *-unknown) + case $os in + -riscix*) + vendor=acorn + ;; + -sunos*) + vendor=sun + ;; + -aix*) + vendor=ibm + ;; + -beos*) + vendor=be + ;; + -hpux*) + vendor=hp + ;; + -mpeix*) + vendor=hp + ;; + -hiux*) + vendor=hitachi + ;; + -unos*) + vendor=crds + ;; + -dgux*) + vendor=dg + ;; + -luna*) + vendor=omron + ;; + -genix*) + vendor=ns + ;; + -mvs* | -opened*) + vendor=ibm + ;; + -ptx*) + vendor=sequent + ;; + -vxsim* | -vxworks*) + vendor=wrs + ;; + -aux*) + vendor=apple + ;; + -hms*) + vendor=hitachi + ;; + -mpw* | -macos*) + vendor=apple + ;; + -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) + vendor=atari + ;; + -vos*) + vendor=stratus + ;; + esac + basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` + ;; +esac + +echo $basic_machine$os +exit 0 + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "timestamp='" +# time-stamp-format: "%:y-%02m-%02d" +# time-stamp-end: "'" +# End: diff --git a/src/apps/bin/diffutils-2.8.1/config/depcomp b/src/apps/bin/diffutils-2.8.1/config/depcomp new file mode 100755 index 0000000000..368e3be93e --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/config/depcomp @@ -0,0 +1,436 @@ +#! /bin/sh + +# depcomp - compile a program generating dependencies as side-effects +# Copyright 1999, 2000 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# Originally written by Alexandre Oliva . + +if test -z "$depmode" || test -z "$source" || test -z "$object"; then + echo "depcomp: Variables source, object and depmode must be set" 1>&2 + exit 1 +fi +# `libtool' can also be set to `yes' or `no'. + +if test -z "$depfile"; then + base=`echo "$object" | sed -e 's,^.*/,,' -e 's,\.\([^.]*\)$,.P\1,'` + dir=`echo "$object" | sed 's,/.*$,/,'` + if test "$dir" = "$object"; then + dir= + fi + # FIXME: should be _deps on DOS. + depfile="$dir.deps/$base" +fi + +tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} + +rm -f "$tmpdepfile" + +# Some modes work just like other modes, but use different flags. We +# parameterize here, but still list the modes in the big case below, +# to make depend.m4 easier to write. Note that we *cannot* use a case +# here, because this file can only contain one case statement. +if test "$depmode" = hp; then + # HP compiler uses -M and no extra arg. + gccflag=-M + depmode=gcc +fi + +if test "$depmode" = dashXmstdout; then + # This is just like dashmstdout with a different argument. + dashmflag=-xM + depmode=dashmstdout +fi + +case "$depmode" in +gcc3) +## gcc 3 implements dependency tracking that does exactly what +## we want. Yay! Note: for some reason libtool 1.4 doesn't like +## it if -MD -MP comes after the -MF stuff. Hmm. + "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + mv "$tmpdepfile" "$depfile" + ;; + +gcc) +## There are various ways to get dependency output from gcc. Here's +## why we pick this rather obscure method: +## - Don't want to use -MD because we'd like the dependencies to end +## up in a subdir. Having to rename by hand is ugly. +## (We might end up doing this anyway to support other compilers.) +## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like +## -MM, not -M (despite what the docs say). +## - Using -M directly means running the compiler twice (even worse +## than renaming). + if test -z "$gccflag"; then + gccflag=-MD, + fi + "$@" -Wp,"$gccflag$tmpdepfile" + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + echo "$object : \\" > "$depfile" + alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz +## The second -e expression handles DOS-style file names with drive letters. + sed -e 's/^[^:]*: / /' \ + -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" +## This next piece of magic avoids the `deleted header file' problem. +## The problem is that when a header file which appears in a .P file +## is deleted, the dependency causes make to die (because there is +## typically no way to rebuild the header). We avoid this by adding +## dummy dependencies for each header file. Too bad gcc doesn't do +## this for us directly. + tr ' ' ' +' < "$tmpdepfile" | +## Some versions of gcc put a space before the `:'. On the theory +## that the space means something, we add a space to the output as +## well. +## Some versions of the HPUX 10.20 sed can't process this invocation +## correctly. Breaking it into two sed invocations is a workaround. + sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +hp) + # This case exists only to let depend.m4 do its work. It works by + # looking at the text of this script. This case will never be run, + # since it is checked for above. + exit 1 + ;; + +sgi) + if test "$libtool" = yes; then + "$@" "-Wp,-MDupdate,$tmpdepfile" + else + "$@" -MDupdate "$tmpdepfile" + fi + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + + if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files + echo "$object : \\" > "$depfile" + + # Clip off the initial element (the dependent). Don't try to be + # clever and replace this with sed code, as IRIX sed won't handle + # lines with more than a fixed number of characters (4096 in + # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; + # the IRIX cc adds comments like `#:fec' to the end of the + # dependency line. + tr ' ' ' +' < "$tmpdepfile" \ + | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \ + tr ' +' ' ' >> $depfile + echo >> $depfile + + # The second pass generates a dummy entry for each header file. + tr ' ' ' +' < "$tmpdepfile" \ + | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ + >> $depfile + else + # The sourcefile does not contain any dependencies, so just + # store a dummy comment line, to avoid errors with the Makefile + # "include basename.Plo" scheme. + echo "#dummy" > "$depfile" + fi + rm -f "$tmpdepfile" + ;; + +aix) + # The C for AIX Compiler uses -M and outputs the dependencies + # in a .u file. This file always lives in the current directory. + # Also, the AIX compiler puts `$object:' at the start of each line; + # $object doesn't have directory information. + stripped=`echo "$object" | sed -e 's,^.*/,,' -e 's/\(.*\)\..*$/\1/'` + tmpdepfile="$stripped.u" + outname="$stripped.o" + if test "$libtool" = yes; then + "$@" -Wc,-M + else + "$@" -M + fi + + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + + if test -f "$tmpdepfile"; then + # Each line is of the form `foo.o: dependent.h'. + # Do two passes, one to just change these to + # `$object: dependent.h' and one to simply `dependent.h:'. + sed -e "s,^$outname:,$object :," < "$tmpdepfile" > "$depfile" + sed -e "s,^$outname: \(.*\)$,\1:," < "$tmpdepfile" >> "$depfile" + else + # The sourcefile does not contain any dependencies, so just + # store a dummy comment line, to avoid errors with the Makefile + # "include basename.Plo" scheme. + echo "#dummy" > "$depfile" + fi + rm -f "$tmpdepfile" + ;; + +tru64) + # The Tru64 AIX 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. + + base=`echo "$object" | sed -e 's/\.o$/.d/' -e 's/\.lo$/.d/'` + tmpdepfile1="$base.o.d" + tmpdepfile2="$base.d" + if test "$libtool" = yes; then + "$@" -Wc,-MD + else + "$@" -MD + fi + + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile1" "$tmpdepfile2" + exit $stat + fi + + if test -f "$tmpdepfile1"; then + tmpdepfile="$tmpdepfile1" + else + tmpdepfile="$tmpdepfile2" + fi + if test -f "$tmpdepfile"; then + sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" + # That's a space and a tab in the []. + sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" + else + echo "#dummy" > "$depfile" + fi + rm -f "$tmpdepfile" + ;; + +#nosideeffect) + # This comment above is used by automake to tell side-effect + # dependency tracking mechanisms from slower ones. + +dashmstdout) + # Important note: in order to support this mode, a compiler *must* + # always write the proprocessed file to stdout, regardless of -o, + # because we must use -o when running libtool. + test -z "$dashmflag" && dashmflag=-M + ( IFS=" " + case " $* " in + *" --mode=compile "*) # this is libtool, let us make it quiet + for arg + do # cycle over the arguments + case "$arg" in + "--mode=compile") + # insert --quiet before "--mode=compile" + set fnord "$@" --quiet + shift # fnord + ;; + esac + set fnord "$@" "$arg" + shift # fnord + shift # "$arg" + done + ;; + esac + "$@" $dashmflag | sed 's:^[^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile" + ) & + proc=$! + "$@" + stat=$? + wait "$proc" + if test "$stat" != 0; then exit $stat; fi + 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) + # X makedepend + ( + shift + cleared=no + for arg in "$@"; do + case $cleared in no) + set ""; shift + cleared=yes + esac + case "$arg" in + -D*|-I*) + set fnord "$@" "$arg"; shift;; + -*) + ;; + *) + set fnord "$@" "$arg"; shift;; + esac + done + obj_suffix="`echo $object | sed 's/^.*\././'`" + touch "$tmpdepfile" + ${MAKEDEPEND-makedepend} 2>/dev/null -o"$obj_suffix" -f"$tmpdepfile" "$@" + ) & + proc=$! + "$@" + stat=$? + wait "$proc" + if test "$stat" != 0; then exit $stat; fi + rm -f "$depfile" + cat < "$tmpdepfile" > "$depfile" + sed '1,2d' "$tmpdepfile" | tr ' ' ' +' | \ +## Some versions of the HPUX 10.20 sed can't process this invocation +## correctly. Breaking it into two sed invocations is a workaround. + sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" "$tmpdepfile".bak + ;; + +cpp) + # Important note: in order to support this mode, a compiler *must* + # always write the proprocessed file to stdout, regardless of -o, + # because we must use -o when running libtool. + ( IFS=" " + case " $* " in + *" --mode=compile "*) + for arg + do # cycle over the arguments + case $arg in + "--mode=compile") + # insert --quiet before "--mode=compile" + set fnord "$@" --quiet + shift # fnord + ;; + esac + set fnord "$@" "$arg" + shift # fnord + shift # "$arg" + done + ;; + esac + "$@" -E | + sed -n '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' | + sed '$ s: \\$::' > "$tmpdepfile" + ) & + proc=$! + "$@" + stat=$? + wait "$proc" + if test "$stat" != 0; then exit $stat; fi + rm -f "$depfile" + echo "$object : \\" > "$depfile" + cat < "$tmpdepfile" >> "$depfile" + sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +msvisualcpp) + # Important note: in order to support this mode, a compiler *must* + # always write the proprocessed file to stdout, regardless of -o, + # because we must use -o when running libtool. + ( IFS=" " + case " $* " in + *" --mode=compile "*) + for arg + do # cycle over the arguments + case $arg in + "--mode=compile") + # insert --quiet before "--mode=compile" + set fnord "$@" --quiet + shift # fnord + ;; + esac + set fnord "$@" "$arg" + shift # fnord + shift # "$arg" + done + ;; + esac + 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" + ) & + proc=$! + "$@" + stat=$? + wait "$proc" + if test "$stat" != 0; then exit $stat; fi + rm -f "$depfile" + echo "$object : \\" > "$depfile" + . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile" + echo " " >> "$depfile" + . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +none) + exec "$@" + ;; + +*) + echo "Unknown depmode $depmode" 1>&2 + exit 1 + ;; +esac + +exit 0 diff --git a/src/apps/bin/diffutils-2.8.1/config/install-sh b/src/apps/bin/diffutils-2.8.1/config/install-sh new file mode 100755 index 0000000000..398a88e142 --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/config/install-sh @@ -0,0 +1,251 @@ +#!/bin/sh +# +# install - install a program, script, or datafile +# This comes from X11R5 (mit/util/scripts/install.sh). +# +# Copyright 1991 by the Massachusetts Institute of Technology +# +# Permission to use, copy, modify, distribute, and sell this software and its +# documentation for any purpose is hereby granted without fee, provided that +# the above copyright notice appear in all copies and that both that +# copyright notice and this permission notice appear in supporting +# documentation, and that the name of M.I.T. not be used in advertising or +# publicity pertaining to distribution of the software without specific, +# written prior permission. M.I.T. makes no representations about the +# suitability of this software for any purpose. It is provided "as is" +# without express or implied warranty. +# +# Calling this script install-sh is preferred over install.sh, to prevent +# `make' implicit rules from creating a file called install from it +# when there is no Makefile. +# +# This script is compatible with the BSD install script, but was written +# from scratch. It can only install one file at a time, a restriction +# shared with many OS's install programs. + + +# set DOITPROG to echo to test this script + +# Don't use :- since 4.3BSD and earlier shells don't like it. +doit="${DOITPROG-}" + + +# put in absolute paths if you don't have them in your path; or use env. vars. + +mvprog="${MVPROG-mv}" +cpprog="${CPPROG-cp}" +chmodprog="${CHMODPROG-chmod}" +chownprog="${CHOWNPROG-chown}" +chgrpprog="${CHGRPPROG-chgrp}" +stripprog="${STRIPPROG-strip}" +rmprog="${RMPROG-rm}" +mkdirprog="${MKDIRPROG-mkdir}" + +transformbasename="" +transform_arg="" +instcmd="$mvprog" +chmodcmd="$chmodprog 0755" +chowncmd="" +chgrpcmd="" +stripcmd="" +rmcmd="$rmprog -f" +mvcmd="$mvprog" +src="" +dst="" +dir_arg="" + +while [ x"$1" != x ]; do + case $1 in + -c) instcmd="$cpprog" + shift + continue;; + + -d) dir_arg=true + shift + continue;; + + -m) chmodcmd="$chmodprog $2" + shift + shift + continue;; + + -o) chowncmd="$chownprog $2" + shift + shift + continue;; + + -g) chgrpcmd="$chgrpprog $2" + shift + shift + continue;; + + -s) stripcmd="$stripprog" + shift + continue;; + + -t=*) transformarg=`echo $1 | sed 's/-t=//'` + shift + continue;; + + -b=*) transformbasename=`echo $1 | sed 's/-b=//'` + shift + continue;; + + *) if [ x"$src" = x ] + then + src=$1 + else + # this colon is to work around a 386BSD /bin/sh bug + : + dst=$1 + fi + shift + continue;; + esac +done + +if [ x"$src" = x ] +then + echo "install: no input file specified" + exit 1 +else + : +fi + +if [ x"$dir_arg" != x ]; then + dst=$src + src="" + + if [ -d $dst ]; then + instcmd=: + chmodcmd="" + else + instcmd=$mkdirprog + fi +else + +# Waiting for this to be detected by the "$instcmd $src $dsttmp" command +# might cause directories to be created, which would be especially bad +# if $src (and thus $dsttmp) contains '*'. + + if [ -f $src -o -d $src ] + then + : + else + echo "install: $src does not exist" + exit 1 + fi + + if [ x"$dst" = x ] + then + echo "install: no destination specified" + exit 1 + else + : + fi + +# If destination is a directory, append the input filename; if your system +# does not like double slashes in filenames, you may need to add some logic + + if [ -d $dst ] + then + dst="$dst"/`basename $src` + else + : + fi +fi + +## this sed command emulates the dirname command +dstdir=`echo $dst | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'` + +# Make sure that the destination directory exists. +# this part is taken from Noah Friedman's mkinstalldirs script + +# Skip lots of stat calls in the usual case. +if [ ! -d "$dstdir" ]; then +defaultIFS=' + ' +IFS="${IFS-${defaultIFS}}" + +oIFS="${IFS}" +# Some sh's can't handle IFS=/ for some reason. +IFS='%' +set - `echo ${dstdir} | sed -e 's@/@%@g' -e 's@^%@/@'` +IFS="${oIFS}" + +pathcomp='' + +while [ $# -ne 0 ] ; do + pathcomp="${pathcomp}${1}" + shift + + if [ ! -d "${pathcomp}" ] ; + then + $mkdirprog "${pathcomp}" + else + : + fi + + pathcomp="${pathcomp}/" +done +fi + +if [ x"$dir_arg" != x ] +then + $doit $instcmd $dst && + + if [ x"$chowncmd" != x ]; then $doit $chowncmd $dst; else : ; fi && + if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dst; else : ; fi && + if [ x"$stripcmd" != x ]; then $doit $stripcmd $dst; else : ; fi && + if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dst; else : ; fi +else + +# If we're going to rename the final executable, determine the name now. + + if [ x"$transformarg" = x ] + then + dstfile=`basename $dst` + else + dstfile=`basename $dst $transformbasename | + sed $transformarg`$transformbasename + fi + +# don't allow the sed command to completely eliminate the filename + + if [ x"$dstfile" = x ] + then + dstfile=`basename $dst` + else + : + fi + +# Make a temp file name in the proper directory. + + dsttmp=$dstdir/#inst.$$# + +# Move or copy the file name to the temp name + + $doit $instcmd $src $dsttmp && + + trap "rm -f ${dsttmp}" 0 && + +# and set any options; do chmod last to preserve setuid bits + +# If any of these fail, we abort the whole thing. If we want to +# ignore errors from any of these, just make sure not to ignore +# errors from the above "$doit $instcmd $src $dsttmp" command. + + if [ x"$chowncmd" != x ]; then $doit $chowncmd $dsttmp; else :;fi && + if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dsttmp; else :;fi && + if [ x"$stripcmd" != x ]; then $doit $stripcmd $dsttmp; else :;fi && + if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dsttmp; else :;fi && + +# Now rename the file to the real destination. + + $doit $rmcmd -f $dstdir/$dstfile && + $doit $mvcmd $dsttmp $dstdir/$dstfile + +fi && + + +exit 0 diff --git a/src/apps/bin/diffutils-2.8.1/config/mdate-sh b/src/apps/bin/diffutils-2.8.1/config/mdate-sh new file mode 100755 index 0000000000..c079aed3e2 --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/config/mdate-sh @@ -0,0 +1,97 @@ +#!/bin/sh +# Get modification time of a file or directory and pretty-print it. +# Copyright 1995, 1996, 1997 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# Prevent date giving response in another language. +LANG=C +export LANG +LC_ALL=C +export LC_ALL +LC_TIME=C +export LC_TIME + +# Get the extended ls output of the file or directory. +# On HPUX /bin/sh, "set" interprets "-rw-r--r--" as options, so the "x" below. +if ls -L /dev/null 1>/dev/null 2>&1; then + set - x`ls -L -l -d $1` +else + set - x`ls -l -d $1` +fi +# The month is at least the fourth argument +# (3 shifts here, the next inside the loop). +shift +shift +shift + +# Find the month. Next argument is day, followed by the year or time. +month= +until test $month +do + 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 + +day=$2 + +# 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 diff --git a/src/apps/bin/diffutils-2.8.1/config/missing b/src/apps/bin/diffutils-2.8.1/config/missing new file mode 100755 index 0000000000..dd583709f5 --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/config/missing @@ -0,0 +1,336 @@ +#! /bin/sh +# Common stub for a few missing GNU programs while installing. +# Copyright 1996, 1997, 1999, 2000 Free Software Foundation, Inc. +# Originally by Fran,cois Pinard , 1996. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +if test $# -eq 0; then + echo 1>&2 "Try \`$0 --help' for more information" + exit 1 +fi + +run=: + +# In the cases where this matters, `missing' is being run in the +# srcdir already. +if test -f configure.ac; then + configure_ac=configure.ac +else + configure_ac=configure.in +fi + +case "$1" in +--run) + # Try to run requested program, and just exit if it succeeds. + run= + shift + "$@" && exit 0 + ;; +esac + +# If it does not exist, or fails to run (possibly an outdated version), +# try to emulate it. +case "$1" in + + -h|--h|--he|--hel|--help) + echo "\ +$0 [OPTION]... PROGRAM [ARGUMENT]... + +Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an +error status if there is no known handling for PROGRAM. + +Options: + -h, --help display this help and exit + -v, --version output version information and exit + --run try to run the given command, and emulate it if it fails + +Supported PROGRAM values: + aclocal touch file \`aclocal.m4' + autoconf touch file \`configure' + autoheader touch file \`config.h.in' + automake touch all \`Makefile.in' files + bison create \`y.tab.[ch]', if possible, from existing .[ch] + flex create \`lex.yy.c', if possible, from existing .c + help2man touch the output file + lex create \`lex.yy.c', if possible, from existing .c + makeinfo touch the output file + tar try tar, gnutar, gtar, then tar without non-portable flags + yacc create \`y.tab.[ch]', if possible, from existing .[ch]" + ;; + + -v|--v|--ve|--ver|--vers|--versi|--versio|--version) + echo "missing 0.4 - GNU automake" + ;; + + -*) + echo 1>&2 "$0: Unknown \`$1' option" + echo 1>&2 "Try \`$0 --help' for more information" + exit 1 + ;; + + aclocal*) + if test -z "$run" && ($1 --version) > /dev/null 2>&1; then + # We have it, but it failed. + exit 1 + fi + + echo 1>&2 "\ +WARNING: \`$1' is missing on your system. You should only need it if + you modified \`acinclude.m4' or \`${configure_ac}'. You might want + to install the \`Automake' and \`Perl' packages. Grab them from + any GNU archive site." + touch aclocal.m4 + ;; + + autoconf) + if test -z "$run" && ($1 --version) > /dev/null 2>&1; then + # We have it, but it failed. + exit 1 + fi + + echo 1>&2 "\ +WARNING: \`$1' is missing on your system. You should only need it if + you modified \`${configure_ac}'. You might want to install the + \`Autoconf' and \`GNU m4' packages. Grab them from any GNU + archive site." + touch configure + ;; + + autoheader) + if test -z "$run" && ($1 --version) > /dev/null 2>&1; then + # We have it, but it failed. + exit 1 + fi + + echo 1>&2 "\ +WARNING: \`$1' is missing on your system. You should only need it if + you modified \`acconfig.h' or \`${configure_ac}'. You might want + to install the \`Autoconf' and \`GNU m4' packages. Grab them + from any GNU archive site." + files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}` + test -z "$files" && files="config.h" + touch_files= + for f in $files; do + case "$f" in + *:*) touch_files="$touch_files "`echo "$f" | + sed -e 's/^[^:]*://' -e 's/:.*//'`;; + *) touch_files="$touch_files $f.in";; + esac + done + touch $touch_files + ;; + + automake*) + if test -z "$run" && ($1 --version) > /dev/null 2>&1; then + # We have it, but it failed. + exit 1 + fi + + echo 1>&2 "\ +WARNING: \`$1' is missing on your system. You should only need it if + you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'. + You might want to install the \`Automake' and \`Perl' packages. + Grab them from any GNU archive site." + find . -type f -name Makefile.am -print | + sed 's/\.am$/.in/' | + while read f; do touch "$f"; done + ;; + + autom4te) + if test -z "$run" && ($1 --version) > /dev/null 2>&1; then + # We have it, but it failed. + exit 1 + fi + + echo 1>&2 "\ +WARNING: \`$1' is needed, and you do not seem to have it handy on your + system. You might have modified some files without having the + proper tools for further handling them. + You can get \`$1Help2man' as part of \`Autoconf' from any GNU + archive site." + + file=`echo "$*" | sed -n 's/.*--output[ =]*\([^ ]*\).*/\1/p'` + test -z "$file" && file=`echo "$*" | sed -n 's/.*-o[ ]*\([^ ]*\).*/\1/p'` + if test -f "$file"; then + touch $file + else + test -z "$file" || exec >$file + echo "#! /bin/sh" + echo "# Created by GNU Automake missing as a replacement of" + echo "# $ $@" + echo "exit 0" + chmod +x $file + exit 1 + fi + ;; + + bison|yacc) + echo 1>&2 "\ +WARNING: \`$1' is missing on your system. You should only need it if + you modified a \`.y' file. You may need the \`Bison' package + in order for those modifications to take effect. You can get + \`Bison' from any GNU archive site." + rm -f y.tab.c y.tab.h + if [ $# -ne 1 ]; then + eval LASTARG="\${$#}" + case "$LASTARG" in + *.y) + SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'` + if [ -f "$SRCFILE" ]; then + cp "$SRCFILE" y.tab.c + fi + SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'` + if [ -f "$SRCFILE" ]; then + cp "$SRCFILE" y.tab.h + fi + ;; + esac + fi + if [ ! -f y.tab.h ]; then + echo >y.tab.h + fi + if [ ! -f y.tab.c ]; then + echo 'main() { return 0; }' >y.tab.c + fi + ;; + + lex|flex) + echo 1>&2 "\ +WARNING: \`$1' is missing on your system. You should only need it if + you modified a \`.l' file. You may need the \`Flex' package + in order for those modifications to take effect. You can get + \`Flex' from any GNU archive site." + rm -f lex.yy.c + if [ $# -ne 1 ]; then + eval LASTARG="\${$#}" + case "$LASTARG" in + *.l) + SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'` + if [ -f "$SRCFILE" ]; then + cp "$SRCFILE" lex.yy.c + fi + ;; + esac + fi + if [ ! -f lex.yy.c ]; then + echo 'main() { return 0; }' >lex.yy.c + fi + ;; + + help2man) + if test -z "$run" && ($1 --version) > /dev/null 2>&1; then + # We have it, but it failed. + exit 1 + fi + + echo 1>&2 "\ +WARNING: \`$1' is missing on your system. You should only need it if + you modified a dependency of a manual page. You may need the + \`Help2man' package in order for those modifications to take + effect. You can get \`Help2man' from any GNU archive site." + + file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'` + if test -z "$file"; then + file=`echo "$*" | sed -n 's/.*--output=\([^ ]*\).*/\1/p'` + fi + if [ -f "$file" ]; then + touch $file + else + test -z "$file" || exec >$file + echo ".ab help2man is required to generate this page" + exit 1 + fi + ;; + + makeinfo) + if test -z "$run" && (makeinfo --version) > /dev/null 2>&1; then + # We have makeinfo, but it failed. + exit 1 + fi + + echo 1>&2 "\ +WARNING: \`$1' is missing on your system. You should only need it if + you modified a \`.texi' or \`.texinfo' file, or any other file + indirectly affecting the aspect of the manual. The spurious + call might also be the consequence of using a buggy \`make' (AIX, + DU, IRIX). You might want to install the \`Texinfo' package or + the \`GNU make' package. Grab either from any GNU archive site." + file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'` + if test -z "$file"; then + file=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'` + file=`sed -n '/^@setfilename/ { s/.* \([^ ]*\) *$/\1/; p; q; }' $file` + fi + touch $file + ;; + + tar) + shift + if test -n "$run"; then + echo 1>&2 "ERROR: \`tar' requires --run" + exit 1 + fi + + # We have already tried tar in the generic part. + # Look for gnutar/gtar before invocation to avoid ugly error + # messages. + if (gnutar --version > /dev/null 2>&1); then + gnutar ${1+"$@"} && exit 0 + fi + if (gtar --version > /dev/null 2>&1); then + gtar ${1+"$@"} && exit 0 + fi + firstarg="$1" + if shift; then + case "$firstarg" in + *o*) + firstarg=`echo "$firstarg" | sed s/o//` + tar "$firstarg" ${1+"$@"} && exit 0 + ;; + esac + case "$firstarg" in + *h*) + firstarg=`echo "$firstarg" | sed s/h//` + tar "$firstarg" ${1+"$@"} && exit 0 + ;; + esac + fi + + echo 1>&2 "\ +WARNING: I can't seem to be able to run \`tar' with the given arguments. + You may want to install GNU tar or Free paxutils, or check the + command line arguments." + exit 1 + ;; + + *) + echo 1>&2 "\ +WARNING: \`$1' is needed, and you do not seem to have it handy on your + system. You might have modified some files without having the + proper tools for further handling them. Check the \`README' file, + it often tells you about the needed prerequirements for installing + this package. You may also peek at any GNU archive site, in case + some other package would contain this missing \`$1' program." + exit 1 + ;; +esac + +exit 0 diff --git a/src/apps/bin/diffutils-2.8.1/config/mkinstalldirs b/src/apps/bin/diffutils-2.8.1/config/mkinstalldirs new file mode 100755 index 0000000000..b275d09083 --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/config/mkinstalldirs @@ -0,0 +1,101 @@ +#! /bin/sh +# mkinstalldirs --- make directory hierarchy +# Author: Noah Friedman +# Created: 1993-05-16 +# Public domain + +# $Id: mkinstalldirs,v 1.1 2004/03/02 00:45:49 michaelphipps Exp $ + +errstatus=0 +dirmode="" + +usage="\ +Usage: mkinstalldirs [-h] [--help] [-m mode] dir ..." + +# process command line arguments +while test $# -gt 0 ; do + case "${1}" in + -h | --help | --h* ) # -h for help + echo "${usage}" 1>&2; exit 0 ;; + -m ) # -m PERM arg + shift + test $# -eq 0 && { echo "${usage}" 1>&2; exit 1; } + dirmode="${1}" + shift ;; + -- ) shift; break ;; # stop option processing + -* ) echo "${usage}" 1>&2; exit 1 ;; # unknown option + * ) break ;; # first non-opt arg + esac +done + +for file +do + if test -d "$file"; then + shift + else + break + fi +done + +case $# in +0) exit 0 ;; +esac + +case $dirmode in +'') + if mkdir -p -- . 2>/dev/null; then + echo "mkdir -p -- $*" + exec mkdir -p -- "$@" + fi ;; +*) + if mkdir -m "$dirmode" -p -- . 2>/dev/null; then + echo "mkdir -m $dirmode -p -- $*" + exec mkdir -m "$dirmode" -p -- "$@" + fi ;; +esac + +for file +do + set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'` + shift + + pathcomp= + for d + do + pathcomp="$pathcomp$d" + case "$pathcomp" in + -* ) pathcomp=./$pathcomp ;; + esac + + if test ! -d "$pathcomp"; then + echo "mkdir $pathcomp" + + mkdir "$pathcomp" || lasterr=$? + + if test ! -d "$pathcomp"; then + errstatus=$lasterr + 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: 3 +# End: +# mkinstalldirs ends here diff --git a/src/apps/bin/diffutils-2.8.1/config/texinfo.tex b/src/apps/bin/diffutils-2.8.1/config/texinfo.tex new file mode 100644 index 0000000000..df62a127bb --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/config/texinfo.tex @@ -0,0 +1,6364 @@ +% 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{2002-03-26.08} +% +% Copyright (C) 1985, 86, 88, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, +% 2000, 01, 02 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., 59 Temple Place - Suite 330, +% Boston, MA 02111-1307, USA. +% +% In other words, you are welcome to use, share and improve this program. +% You are forbidden to forbid anyone else to use, share and improve +% what you give them. Help stamp out software-hoarding! +% +% Please try the latest version of texinfo.tex before submitting bug +% reports; you can get the latest version from: +% ftp://ftp.gnu.org/gnu/texinfo.tex +% (and all GNU mirrors, see http://www.gnu.org/order/ftp.html) +% ftp://texinfo.org/texinfo/texinfo.tex +% ftp://tug.org/tex/texinfo.tex +% (and all CTAN mirrors, see http://www.ctan.org), +% and /home/gd/gnu/doc/texinfo.tex on the GNU machines. +% +% The texinfo.tex in any given Texinfo distribution could well be out +% of date, so if that's what you're using, please check. +% +% Texinfo has a small home page at http://texinfo.org/ and also +% http://www.gnu.org/software/texinfo. +% +% 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. You can get +% the existing language-specific files from the full Texinfo distribution. + +\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} + +% Save some parts of plain tex 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\ptexi=\i +\let\ptexlbrace=\{ +\let\ptexrbrace=\} +\let\ptexstar=\* +\let\ptext=\t + +% We never want plain's outer \+ definition in Texinfo. +% For @tex, we can use \tabalign. +\let\+ = \relax + +\message{Basics,} +\chardef\other=12 + +% If this character appears in an error message or help string, it +% starts a new line in the output. +\newlinechar = `^^J + +% 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\putwordDeftypevar\undefined\gdef\putwordDeftypevar{Variable}\fi +\ifx\putwordDeffunc\undefined \gdef\putwordDeffunc{Function}\fi +\ifx\putwordDeftypefun\undefined\gdef\putwordDeftypefun{Function}\fi + +% Ignore a token. +% +\def\gobble#1{} + +\hyphenation{ap-pen-dix} +\hyphenation{mini-buf-fer mini-buf-fers} +\hyphenation{eshell} +\hyphenation{white-space} + +% Margin to add to right of even pages, to left of odd pages. +\newdimen \bindingoffset +\newdimen \normaloffset +\newdimen\pagewidth \newdimen\pageheight + +% 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. +% +\def\gloggingall{\begingroup \globaldefs = 1 \loggingall \endgroup}% +\ifx\eTeXversion\undefined +\def\loggingall{\tracingcommands2 \tracingstats2 + \tracingpages1 \tracingoutput1 \tracinglostchars1 + \tracingmacros2 \tracingparagraphs1 \tracingrestores1 + \showboxbreadth\maxdimen\showboxdepth\maxdimen +}% +\else +\def\loggingall{\tracingcommands3 \tracingstats2 + \tracingpages1 \tracingoutput1 \tracinglostchars1 + \tracingmacros2 \tracingparagraphs1 \tracingrestores1 + \tracingscantokens1 \tracingassigns1 \tracingifs1 + \tracinggroups1 \tracingnesting2 + \showboxbreadth\maxdimen\showboxdepth\maxdimen +}% +\fi + +% 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. + % + \escapechar = `\\ % use backslash in output files. + \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. + \shipout\vbox{% + % Do this early so pdf references go to the beginning of the page. + \ifpdfmakepagedest \pdfmkdest{\the\pageno} \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 \oddfootingxxx.) + % The \baselineskip=24pt in plain's \makefootline has no effect. + \vskip 2\baselineskip + \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 \turnoffactive + \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#1{% + \let\next = #1% + \begingroup + \obeylines + \futurelet\temp\parseargx +} + +% If the next token is an obeyed space (from an @example environment or +% the like), remove it and recurse. Otherwise, we're done. +\def\parseargx{% + % \obeyedspace is defined far below, after the definition of \sepspaces. + \ifx\obeyedspace\temp + \expandafter\parseargdiscardspace + \else + \expandafter\parseargline + \fi +} + +% Remove a single space (as the delimiter token to the macro call). +{\obeyspaces % + \gdef\parseargdiscardspace {\futurelet\temp\parseargx}} + +{\obeylines % + \gdef\parseargline#1^^M{% + \endgroup % End of the group started in \parsearg. + % + % First remove any @c comment, then any @comment. + % Result of each macro is put in \toks0. + \argremovec #1\c\relax % + \expandafter\argremovecomment \the\toks0 \comment\relax % + % + % Call the caller's macro, saved as \next in \parsearg. + \expandafter\next\expandafter{\the\toks0}% + }% +} + +% Since all \c{,omment} does is throw away the argument, we can let TeX +% do that for us. The \relax here is matched by the \relax in the call +% in \parseargline; it could be more or less anything, its purpose is +% just to delimit the argument to the \c. +\def\argremovec#1\c#2\relax{\toks0 = {#1}} +\def\argremovecomment#1\comment#2\relax{\toks0 = {#1}} + +% \argremovec{,omment} might leave us with trailing spaces, though; e.g., +% @end itemize @c foo +% will have two active spaces as part of the argument with the +% `itemize'. Here we remove all active spaces from #1, and assign the +% result to \toks0. +% +% This loses if there are any *other* active characters besides spaces +% in the argument -- _ ^ +, for example -- since they get expanded. +% Fortunately, Texinfo does not define any such commands. (If it ever +% does, the catcode of the characters in questionwill have to be changed +% here.) But this means we cannot call \removeactivespaces as part of +% \argremovec{,omment}, since @c uses \parsearg, and thus the argument +% that \parsearg gets might well have any character at all in it. +% +\def\removeactivespaces#1{% + \begingroup + \ignoreactivespaces + \edef\temp{#1}% + \global\toks0 = \expandafter{\temp}% + \endgroup +} + +% Change the active space to expand to nothing. +% +\begingroup + \obeyspaces + \gdef\ignoreactivespaces{\obeyspaces\let =\empty} +\endgroup + + +\def\flushcr{\ifx\par\lisppar \def\next##1{}\else \let\next=\relax \fi \next} + +%% These are used to keep @begin/@end levels from running away +%% Call \inENV within environments (after a \begingroup) +\newif\ifENV \ENVfalse \def\inENV{\ifENV\relax\else\ENVtrue\fi} +\def\ENVcheck{% +\ifENV\errmessage{Still within an environment; press RETURN to continue} +\endgroup\fi} % This is not perfect, but it should reduce lossage + +% @begin foo is the same as @foo, for now. +\newhelp\EMsimple{Press RETURN to continue.} + +\outer\def\begin{\parsearg\beginxxx} + +\def\beginxxx #1{% +\expandafter\ifx\csname #1\endcsname\relax +{\errhelp=\EMsimple \errmessage{Undefined command @begin #1}}\else +\csname #1\endcsname\fi} + +% @end foo executes the definition of \Efoo. +% +\def\end{\parsearg\endxxx} +\def\endxxx #1{% + \removeactivespaces{#1}% + \edef\endthing{\the\toks0}% + % + \expandafter\ifx\csname E\endthing\endcsname\relax + \expandafter\ifx\csname \endthing\endcsname\relax + % There's no \foo, i.e., no ``environment'' foo. + \errhelp = \EMsimple + \errmessage{Undefined command `@end \endthing'}% + \else + \unmatchedenderror\endthing + \fi + \else + % Everything's ok; the right environment has been started. + \csname E\endthing\endcsname + \fi +} + +% There is an environment #1, but it hasn't been started. Give an error. +% +\def\unmatchedenderror#1{% + \errhelp = \EMsimple + \errmessage{This `@end #1' doesn't have a matching `@#1'}% +} + +% Define the control sequence \E#1 to give an unmatched @end error. +% +\def\defineunmatchedend#1{% + \expandafter\def\csname E#1\endcsname{\unmatchedenderror{#1}}% +} + + +% Single-spacing is done by various environments (specifically, in +% \nonfillstart and \quotations). +\newskip\singlespaceskip \singlespaceskip = 12.5pt +\def\singlespace{% + % Why was this kern here? It messes up equalizing space above and below + % environments. --karl, 6may93 + %{\advance \baselineskip by -\singlespaceskip + %\kern \baselineskip}% + \setleading\singlespaceskip +} + +%% 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 actual \{ & \} command in an index. + \catcode`\{ = 12 \catcode`\} = 12 + \catcode`\[ = 1 \catcode`\] = 2 + \catcode`\@ = 0 \catcode`\\ = 12 + @gdef@lbracecmd[\{]% + @gdef@rbracecmd[\}]% +@endgroup + +% Accents: @, @dotaccent @ringaccent @ubaraccent @udotaccent +% Others are defined by plain TeX: @` @' @" @^ @~ @= @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 +% Plain TeX defines: @AA @AE @O @OE @L (and lowercase versions) @ss. +\def\questiondown{?`} +\def\exclamdown{!`} + +% 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 +} + +% 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} + +% @. is an end-of-sentence period. +\def\.{.\spacefactor=3000 } + +% @! is an end-of-sentence bang. +\def\!{!\spacefactor=3000 } + +% @? is an end-of-sentence query. +\def\?{?\spacefactor=3000 } + +% @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. +% +\def\group{\begingroup + \ifnum\catcode13=\active \else + \errhelp = \groupinvalidhelp + \errmessage{@group invalid in context where filling is enabled}% + \fi + % + % The \vtop we start below 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. (See p.82 of + % the TeXbook.) Thus, space below is not quite equal to space + % above. But it's pretty close. + \def\Egroup{% + \egroup % End the \vtop. + \endgroup % End the \group. + }% + % + \vtop\bgroup + % We have to put a strut on the last line in case the @group is in + % the midst of an example, rather than completely enclosing it. + % Otherwise, the interline space between the last line of the group + % and the first line afterwards is too small. But we can't put the + % strut in \Egroup, since there it would be on a line by itself. + % Hence this just inserts a strut at the beginning of each line. + \everypar = {\strut}% + % + % Since we have a strut on every line, we don't need any of TeX's + % normal interline spacing. + \offinterlineskip + % + % OK, but now we have to do something about blank + % lines in the input in @example-like environments, which normally + % just turn into \lisppar, which will insert no space now that we've + % turned off the interline space. Simplest is to make them be an + % empty paragraph. + \ifx\par\lisppar + \edef\par{\leavevmode \par}% + % + % Reset ^^M's definition to new definition of \par. + \obeylines + \fi + % + % 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 +} +% +% 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 + +\def\need{\parsearg\needx} + +% Old definition--didn't work. +%\def\needx #1{\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 +%}} + +\def\needx#1{% + % 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 + +\let\br = \par + +% @dots{} output an ellipsis using the current font. +% We do .5em per period so that it has the same spacing in a typewriter +% font as three actual period characters. +% +\def\dots{% + \leavevmode + \hbox to 1.5em{% + \hskip 0pt plus 0.25fil minus 0.25fil + .\hss.\hss.% + \hskip 0pt plus 0.5fil minus 0.5fil + }% +} + +% @enddots{} is an end-of-sentence ellipsis. +% +\def\enddots{% + \leavevmode + \hbox to 2em{% + \hskip 0pt plus 0.25fil minus 0.25fil + .\hss.\hss.\hss.% + \hskip 0pt plus 0.5fil minus 0.5fil + }% + \spacefactor=3000 +} + + +% @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. +\def\exdent{\parsearg\exdentyyy} +\def\exdentyyy #1{{\hfil\break\hbox{\kern -\exdentamount{\rm#1}}\hfil\break}} + +% This defn is used inside nofill environments such as @example. +\def\nofillexdent{\parsearg\nofillexdentyyy} +\def\nofillexdentyyy #1{{\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. +% Allow normal characters that we make active in the argument (a file name). +\def\include{\begingroup + \catcode`\\=12 + \catcode`~=12 + \catcode`^=12 + \catcode`_=12 + \catcode`|=12 + \catcode`<=12 + \catcode`>=12 + \catcode`+=12 + \parsearg\includezzz} +% Restore active chars for included file. +\def\includezzz#1{\endgroup\begingroup + % Read the included file in a group so nested @include's work. + \def\thisfile{#1}% + \input\thisfile +\endgroup} + +\def\thisfile{} + +% @center line outputs that line, centered + +\def\center{\parsearg\centerzzz} +\def\centerzzz #1{{\advance\hsize by -\leftskip +\advance\hsize by -\rightskip +\centerline{#1}}} + +% @sp n outputs n lines of vertical space + +\def\sp{\parsearg\spxxx} +\def\spxxx #1{\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. +% We cannot implement @paragraphindent asis, though. +% +\def\asisword{asis} % no translation, these are keywords +\def\noneword{none} +% +\def\paragraphindent{\parsearg\doparagraphindent} +\def\doparagraphindent#1{% + \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. +\def\exampleindent{\parsearg\doexampleindent} +\def\doexampleindent#1{% + \def\temp{#1}% + \ifx\temp\asisword + \else + \ifx\temp\noneword + \lispnarrowing = 0pt + \else + \lispnarrowing = #1em + \fi + \fi +} + +% @asis just yields its argument. Used with @table, for example. +% +\def\asis#1{#1} + +% @math outputs its argument in math mode. +% We don't use $'s directly in the definition of \math because we need +% to set catcodes according to plain TeX first, to allow for subscripts, +% superscripts, special math chars, etc. +% +% @math does not do math typesetting in section titles, index +% entries, and other such contexts where the catcodes are set before +% @math gets a chance to work. This could perhaps be fixed, but for now +% at least we can have real math in the main text, where it's needed most. +% +\let\implicitmath = $%$ font-lock fix +% +% One complication: _ usually means subscripts, but it could also mean +% an actual _ character, as in @math{@var{some_variable} + 1}. So make +% _ within @math be active (mathcode "8000), and distinguish by seeing +% if the current family is \slfam, which is what @var uses. +% +{\catcode95 = \active % 95 = _ +\gdef\mathunderscore{% + \catcode95=\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 + \mathcode`\_="8000 \mathunderscore + \let\\ = \mathbackslash + \implicitmath\finishmath} +\def\finishmath#1{#1\implicitmath\Etex} + +% @bullet and @minus need the same treatment as @math, just above. +\def\bullet{\implicitmath\ptexbullet\implicitmath} +\def\minus{\implicitmath-\implicitmath} + +% @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{% + \iflinks + \readauxfile + \fi % \openindices needs to do some work in any case. + \openindices + \fixbackslash % Turn off hack to swallow `\input texinfo'. + \global\let\setfilename=\comment % Ignore extra @setfilename cmds. + % + % If texinfo.cnf is present on the system, read it. + % Useful for site-wide @afourpaper, etc. + % Just to be on the safe side, close the input stream before the \input. + \openin 1 texinfo.cnf + \ifeof1 \let\temp=\relax \else \def\temp{\input texinfo.cnf }\fi + \closein1 + \temp + % + \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 + +\ifx\pdfoutput\undefined + \pdffalse + \let\pdfmkdest = \gobble + \let\pdfurl = \gobble + \let\endlink = \relax + \let\linkcolor = \relax + \let\pdfmakeoutlines = \relax +\else + \pdftrue + \pdfoutput = 1 + \input pdfcolor + \def\dopdfimage#1#2#3{% + \def\imagewidth{#2}% + \def\imageheight{#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 + \ifx\empty\imagewidth\else width \imagewidth \fi + \ifx\empty\imageheight\else height \imageheight \fi + \ifnum\pdftexversion<13 + #1.pdf% + \else + {#1.pdf}% + \fi + \ifnum\pdftexversion < 14 \else + \pdfrefximage \pdflastximage + \fi} + \def\pdfmkdest#1{{\normalturnoffactive \pdfdest name{#1} xyz}} + \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 by1 + \expandafter\xdef\csname#1\endcsname{\the\tempnum}} + \def\pdfmakeoutlines{{% + \openin 1 \jobname.toc + \ifeof 1\else\begingroup + \closein 1 + \indexnofonts + \def\tt{} + \let\_ = \normalunderscore + % Thanh's hack / proper braces in bookmarks + \edef\mylbrace{\iftrue \string{\else}\fi}\let\{=\mylbrace + \edef\myrbrace{\iffalse{\else\string}\fi}\let\}=\myrbrace + % + \def\chapentry ##1##2##3{} + \let\appendixentry = \chapentry + \def\unnumbchapentry ##1##2{} + \def\secentry ##1##2##3##4{\advancenumber{chap##2}} + \def\unnumbsecentry ##1##2##3{\advancenumber{chap##2}} + \def\subsecentry ##1##2##3##4##5{\advancenumber{sec##2.##3}} + \def\unnumbsubsecentry ##1##2##3##4{\advancenumber{sec##2.##3}} + \def\subsubsecentry ##1##2##3##4##5##6{\advancenumber{subsec##2.##3.##4}} + \def\unnumbsubsubsecentry ##1##2##3##4##5{\advancenumber{subsec##2.##3.##4}} + \input \jobname.toc + \def\chapentry ##1##2##3{% + \pdfoutline goto name{\pdfmkpgn{##3}}count-\expnumber{chap##2}{##1}} + \let\appendixentry = \chapentry + \def\unnumbchapentry ##1##2{% + \pdfoutline goto name{\pdfmkpgn{##2}}{##1}} + \def\secentry ##1##2##3##4{% + \pdfoutline goto name{\pdfmkpgn{##4}}count-\expnumber{sec##2.##3}{##1}} + \def\unnumbsecentry ##1##2##3{% + \pdfoutline goto name{\pdfmkpgn{##3}}{##1}} + \def\subsecentry ##1##2##3##4##5{% + \pdfoutline goto name{\pdfmkpgn{##5}}count-\expnumber{subsec##2.##3.##4}{##1}} + \def\unnumbsubsecentry ##1##2##3##4{% + \pdfoutline goto name{\pdfmkpgn{##4}}{##1}} + \def\subsubsecentry ##1##2##3##4##5##6{% + \pdfoutline goto name{\pdfmkpgn{##6}}{##1}} + \def\unnumbsubsubsecentry ##1##2##3##4##5{% + \pdfoutline goto name{\pdfmkpgn{##5}}{##1}} + \input \jobname.toc + \endgroup\fi + }} + \def\makelinks #1,{% + \def\params{#1}\def\E{END}% + \ifx\params\E + \let\nextmakelinks=\relax + \else + \let\nextmakelinks=\makelinks + \ifnum\lnkcount>0,\fi + \picknum{#1}% + \startlink attr{/Border [0 0 0]} + goto name{\pdfmkpgn{\the\pgn}}% + \linkcolor #1% + \advance\lnkcount by 1% + \endlink + \fi + \nextmakelinks + } + \def\picknum#1{\expandafter\pn#1} + \def\pn#1{% + \def\p{#1}% + \ifx\p\lbrace + \let\nextpn=\ppn + \else + \let\nextpn=\ppnn + \def\first{#1} + \fi + \nextpn + } + \def\ppn#1{\pgn=#1\gobble} + \def\ppnn{\pgn=\first} + \def\pdfmklnk#1{\lnkcount=0\makelinks #1,END,} + \def\addtokens#1#2{\edef\addtoks{\noexpand#1={\the#1#2}}\addtoks} + \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 + \def\pdfurl#1{% + \begingroup + \normalturnoffactive\def\@{@}% + \let\value=\expandablevalue + \leavevmode\Red + \startlink attr{/Border [0 0 0]}% + user{/Subtype /Link /A << /S /URI /URI (#1) >>}% + % #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| + \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} +\fi % \ifx\pdfoutput + + +\message{fonts,} +% Font-change commands. + +% Texinfo sort of supports the sans serif font style, which plain TeX does not. +% So we set up a \sf analogous to plain's \rm, etc. +\newfam\sffam +\def\sf{\fam=\sffam \tensf} +\let\li = \sf % Sometimes we call it \li, not \sf. + +% We don't need math for this one. +\def\ttsl{\tenttsl} + +% 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} + +\newcount\mainmagstep +\ifx\bigger\relax + % not really supported. + \let\mainmagstep=\magstep1 + \setfont\textrm\rmshape{12}{1000} + \setfont\texttt\ttshape{12}{1000} +\else + \mainmagstep=\magstephalf + \setfont\textrm\rmshape{10}{\mainmagstep} + \setfont\texttt\ttshape{10}{\mainmagstep} +\fi +% Instead of cmb10, you many want to use cmbx10. +% cmbx10 is a prettier font on its own, but cmb10 +% looks better when embedded in a line with cmr10. +\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, etc. +\setfont\defbf\bxshape{10}{\magstep1} %was 1314 +\setfont\deftt\ttshape{10}{\magstep1} +\def\df{\let\tentt=\deftt \let\tenbf = \defbf \bf} + +% Fonts for indices, footnotes, small examples (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). +\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: +\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} + +% Chapter (and unnumbered) fonts (17.28pt). +\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). +\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). +\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}{\magstep1} +\font\sseci=cmmi12 scaled \magstephalf +\font\ssecsy=cmsy10 scaled 1315 +% The smallcaps and symbol fonts should actually be scaled \magstep1.5, +% but that is not a standard magnification. + +% 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 so that font changes will continue to work +% in math mode, where it is the current \fam that is relevant in most +% cases, not the current font. Plain TeX does \def\bf{\fam=\bffam +% \tenbf}, for example. By redefining \tenbf, we obviate the need to +% redefine \bf itself. +\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 + \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 + \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 + \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 + \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 + \resetmathfonts \setleading{15pt}} +\let\subsubsecfonts = \subsecfonts % Maybe make sssec fonts scaled magstephalf? +\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 + \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 + \resetmathfonts \setleading{9.5pt}} +\let\smallexamplefonts = \smallerfonts + +% Set up the default fonts, so we can use them for creating boxes. +% +\textfonts + +% 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\bxshape{12}{1000} +\setfont\shortcontsl\slshape{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\/\fi\fi\fi} +\def\smartslanted#1{{\sl #1}\futurelet\next\smartitalicx} +\def\smartitalic#1{{\it #1}\futurelet\next\smartitalicx} + +\let\i=\smartitalic +\let\var=\smartslanted +\let\dfn=\smartslanted +\let\emph=\smartitalic +\let\cite=\smartslanted + +\def\b#1{{\bf #1}} +\let\strong=\b + +% 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 = `- } + +\def\t#1{% + {\tt \rawbackslash \frenchspacing #1}% + \null +} +\let\ttfont=\t +\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 + \frenchspacing + #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 + % + \global\def\code{\begingroup + \catcode`\-=\active \let-\codedash + \catcode`\_=\active \let_\codeunder + \codex + } + % + % If we end up with any active - characters when handling the index, + % just treat them as a normal -. + \global\def\indexbreaks{\catcode`\-=\active \let-\realdash} +} + +\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} + +% @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). +\def\kbdinputstyle{\parsearg\kbdinputstylexxx} +\def\kbdinputstylexxx#1{% + \def\arg{#1}% + \ifx\arg\worddistinct + \gdef\kbdexamplefont{\ttsl}\gdef\kbdfont{\ttsl}% + \else\ifx\arg\wordexample + \gdef\kbdexamplefont{\ttsl}\gdef\kbdfont{\tt}% + \else\ifx\arg\wordcode + \gdef\kbdexamplefont{\tt}\gdef\kbdfont{\tt}% + \fi\fi\fi +} +\def\worddistinct{distinct} +\def\wordexample{example} +\def\wordcode{code} + +% Default is kbdinputdistinct. (Too much of a hassle to call the macro, +% the catcodes are wrong for parsearg to work.) +\gdef\kbdexamplefont{\ttsl}\gdef\kbdfont{\ttsl} + +\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 @url, @env, @command quotes seem unnecessary, so use \code. +\let\url=\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} + +% 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 downcases the argument and prints in smallcaps. +\def\acronym#1{{\smallcaps \lowercase{#1}}} + +% @pounds{} is a sterling sign. +\def\pounds{{\it\$}} + + +\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 + +\def\shorttitlepage{\parsearg\shorttitlepagezzz} +\def\shorttitlepagezzz #1{\begingroup\hbox{}\vskip 1.5in \chaprm \centerline{#1}% + \endgroup\page\hbox{}\page} + +\def\titlepage{\begingroup \parindent=0pt \textfonts + \let\subtitlerm=\tenrm + \def\subtitlefont{\subtitlerm \normalbaselineskip = 13pt \normalbaselines}% + % + \def\authorfont{\authorrm \normalbaselineskip = 16pt \normalbaselines}% + % + % Leave some space at the very top of the page. + \vglue\titlepagetopglue + % + % Now you can print the title using @title. + \def\title{\parsearg\titlezzz}% + \def\titlezzz##1{\leftline{\titlefonts\rm ##1} + % print a rule at the page bottom also. + \finishedtitlepagefalse + \vskip4pt \hrule height 4pt width \hsize \vskip4pt}% + % No rule at page bottom unless we print one at the top with @title. + \finishedtitlepagetrue + % + % Now you can put text using @subtitle. + \def\subtitle{\parsearg\subtitlezzz}% + \def\subtitlezzz##1{{\subtitlefont \rightline{##1}}}% + % + % @author should come last, but may come many times. + \def\author{\parsearg\authorzzz}% + \def\authorzzz##1{\ifseenauthor\else\vskip 0pt plus 1filll\seenauthortrue\fi + {\authorfont \leftline{##1}}}% + % + % 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 + \oldpage + \let\page = \oldpage + \hbox{}}% +% \def\page{\oldpage \hbox{}} +} + +\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 +} + +%%% 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\oddheading{\parsearg\oddheadingxxx} +\def\everyheading{\parsearg\everyheadingxxx} + +\def\evenfooting{\parsearg\evenfootingxxx} +\def\oddfooting{\parsearg\oddfootingxxx} +\def\everyfooting{\parsearg\everyfootingxxx} + +{\catcode`\@=0 % + +\gdef\evenheadingxxx #1{\evenheadingyyy #1@|@|@|@|\finish} +\gdef\evenheadingyyy #1@|#2@|#3@|#4\finish{% +\global\evenheadline={\rlap{\centerline{#2}}\line{#1\hfil#3}}} + +\gdef\oddheadingxxx #1{\oddheadingyyy #1@|@|@|@|\finish} +\gdef\oddheadingyyy #1@|#2@|#3@|#4\finish{% +\global\oddheadline={\rlap{\centerline{#2}}\line{#1\hfil#3}}} + +\gdef\everyheadingxxx#1{\oddheadingxxx{#1}\evenheadingxxx{#1}}% + +\gdef\evenfootingxxx #1{\evenfootingyyy #1@|@|@|@|\finish} +\gdef\evenfootingyyy #1@|#2@|#3@|#4\finish{% +\global\evenfootline={\rlap{\centerline{#2}}\line{#1\hfil#3}}} + +\gdef\oddfootingxxx #1{\oddfootingyyy #1@|@|@|@|\finish} +\gdef\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 -\baselineskip + \global\advance\vsize by -\baselineskip +} + +\gdef\everyfootingxxx#1{\oddfootingxxx{#1}\evenfootingxxx{#1}} +% +}% unbind the catcode of @. + +% @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\settitlezzz} +\def\settitlezzz #1{\gdef\thistitle{#1}} + + +\message{tables,} +% Tables -- @table, @ftable, @vtable, @item(x), @kitem(x), @xitem(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, @vtable, 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\internalBxitem "#1"{\def\xitemsubtopix{#1} \smallbreak \parsearg\xitemzzz} +\def\internalBxitemx "#1"{\def\xitemsubtopix{#1} \itemxpar \parsearg\xitemzzz} + +\def\internalBkitem{\smallbreak \parsearg\kitemzzz} +\def\internalBkitemx{\itemxpar \parsearg\kitemzzz} + +\def\kitemzzz #1{\dosubind {kw}{\code{#1}}{for {\bf \lastfunction}}% + \itemzzz {#1}} + +\def\xitemzzz #1{\dosubind {kw}{\code{#1}}{for {\bf \xitemsubtopic}}% + \itemzzz {#1}} + +\def\itemzzz #1{\begingroup % + \advance\hsize by -\rightskip + \advance\hsize by -\tableindent + \setbox0=\hbox{\itemfont{#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. Unfortunately + % we can't prevent a possible page break at the following + % \baselineskip glue. + \nobreak + \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 table}} +\def\itemx{\errmessage{@itemx while not in a table}} +\def\kitem{\errmessage{@kitem while not in a table}} +\def\kitemx{\errmessage{@kitemx while not in a table}} +\def\xitem{\errmessage{@xitem while not in a table}} +\def\xitemx{\errmessage{@xitemx while not in a table}} + +% Contains a kludge to get @end[description] to work. +\def\description{\tablez{\dontindex}{1}{}{}{}{}} + +% @table, @ftable, @vtable. +\def\table{\begingroup\inENV\obeylines\obeyspaces\tablex} +{\obeylines\obeyspaces% +\gdef\tablex #1^^M{% +\tabley\dontindex#1 \endtabley}} + +\def\ftable{\begingroup\inENV\obeylines\obeyspaces\ftablex} +{\obeylines\obeyspaces% +\gdef\ftablex #1^^M{% +\tabley\fnitemindex#1 \endtabley +\def\Eftable{\endgraf\afterenvbreak\endgroup}% +\let\Etable=\relax}} + +\def\vtable{\begingroup\inENV\obeylines\obeyspaces\vtablex} +{\obeylines\obeyspaces% +\gdef\vtablex #1^^M{% +\tabley\vritemindex#1 \endtabley +\def\Evtable{\endgraf\afterenvbreak\endgroup}% +\let\Etable=\relax}} + +\def\dontindex #1{} +\def\fnitemindex #1{\doind {fn}{\code{#1}}}% +\def\vritemindex #1{\doind {vr}{\code{#1}}}% + +{\obeyspaces % +\gdef\tabley#1#2 #3 #4 #5 #6 #7\endtabley{\endgroup% +\tablez{#1}{#2}{#3}{#4}{#5}{#6}}} + +\def\tablez #1#2#3#4#5#6{% +\aboveenvbreak % +\begingroup % +\def\Edescription{\Etable}% Necessary kludge. +\let\itemindex=#1% +\ifnum 0#3>0 \advance \leftskip by #3\mil \fi % +\ifnum 0#4>0 \tableindent=#4\mil \fi % +\ifnum 0#5>0 \advance \rightskip by #5\mil \fi % +\def\itemfont{#2}% +\itemmax=\tableindent % +\advance \itemmax by -\itemmargin % +\advance \leftskip by \tableindent % +\exdentamount=\tableindent +\parindent = 0pt +\parskip = \smallskipamount +\ifdim \parskip=0pt \parskip=2pt \fi% +\def\Etable{\endgraf\afterenvbreak\endgroup}% +\let\item = \internalBitem % +\let\itemx = \internalBitemx % +\let\kitem = \internalBkitem % +\let\kitemx = \internalBkitemx % +\let\xitem = \internalBxitem % +\let\xitemx = \internalBxitemx % +} + +% This is the counter used by @enumerate, which is really @itemize + +\newcount \itemno + +\def\itemize{\parsearg\itemizezzz} + +\def\itemizezzz #1{% + \begingroup % ended by the @end itemize + \itemizey {#1}{\Eitemize} +} + +\def\itemizey #1#2{% +\aboveenvbreak % +\itemmax=\itemindent % +\advance \itemmax by -\itemmargin % +\advance \leftskip by \itemindent % +\exdentamount=\itemindent +\parindent = 0pt % +\parskip = \smallskipamount % +\ifdim \parskip=0pt \parskip=2pt \fi% +\def#2{\endgraf\afterenvbreak\endgroup}% +\def\itemcontents{#1}% +\let\item=\itemizeitem} + +% Set sfcode to normal for the chars that usually have another value. +% These are `.?!:;,' +\def\frenchspacing{\sfcode46=1000 \sfcode63=1000 \sfcode33=1000 + \sfcode58=1000 \sfcode59=1000 \sfcode44=1000 } + +% \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'. +% +\def\enumerate{\parsearg\enumeratezzz} +\def\enumeratezzz #1{\enumeratey #1 \endenumeratey} +\def\enumeratey #1 #2\endenumeratey{% + \begingroup % ended by the @end enumerate + % + % 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 itemizey, 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 + \itemizey{#1.}\Eenumerate\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} + +% Definition of @item while inside @itemize. + +\def\itemizeitem{% +\advance\itemno by 1 +{\let\par=\endgraf \smallbreak}% +\ifhmode \errmessage{In hmode at itemizeitem}\fi +{\parskip=0in \hskip 0pt +\hbox to 0pt{\hss \itemcontents\hskip \itemmargin}% +\vadjust{\penalty 1200}}% +\flushcr} + +% @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. +% +% For those who want to use more than one line's worth of words in +% the preamble, break the line within one argument and it +% will parse correctly, i.e., +% +% @multitable {Column 1 template} {Column 2 template} {Column 3 +% template} +% Not: +% @multitable {Column 1 template} {Column 2 template} +% {Column 3 template} + +% 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, @multitable or @end multitable 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 part of the @columnfraction before the decimal point, which +% is presumably either 0 or the empty string (but we don't check, we +% just throw it away). #2 is the decimal part, which we use as the +% percent of \hsize for this column. +\def\pickupwholefraction#1.#2 {% + \global\advance\colcount by 1 + \expandafter\xdef\csname col\the\colcount\endcsname{.#2\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 }% 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 +} + +% This used to have \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{&} + +% @multitable ... @end multitable definitions: +% +\def\multitable{\parsearg\dotable} +\def\dotable#1{\bgroup + \vskip\parskip + \let\item\crcr + \tolerance=9500 + \hbadness=9500 + \setmultitablespacing + \parskip=\multitableparskip + \parindent=\multitableparindent + \overfullrule=0pt + \global\colcount=0 + \def\Emultitable{\global\setpercentfalse\cr\egroup\egroup}% + % + % To parse everything between @multitable and @item: + \setuptable#1 \endsetuptable + % + % \everycr will reset column counter, \colcount, at the end of + % each line. Every column entry will cause \colcount to advance by one. + % The table preamble + % looks at the current \colcount to find the correct column width. + \everycr{\noalign{% + % + % \filbreak%% keeps underfull box messages off when table breaks over pages. + % 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. + \global\colcount=0\relax}}% + % + % 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\relax + \multistrut\vtop{\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\setmultitablespacing{% test to see if user has set \multitablelinespace. +% If so, do nothing. If not, give it an appropriate dimension based on +% current baselineskip. +\ifdim\multitablelinespace=0pt +\setbox0=\vbox{X}\global\multitablelinespace=\the\baselineskip +\global\advance\multitablelinespace by-\ht0 +%% strut to put in table in case some entry doesn't have descenders, +%% to keep lines equally spaced +\let\multistrut = \strut +\else +%% FIXME: what is \box0 supposed to be? +\gdef\multistrut{\vrule height\multitablelinespace depth\dp0 +width0pt\relax} \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,} +% Prevent errors for section commands. +% Used in @ignore and in failing conditionals. +\def\ignoresections{% + \let\chapter=\relax + \let\unnumbered=\relax + \let\top=\relax + \let\unnumberedsec=\relax + \let\unnumberedsection=\relax + \let\unnumberedsubsec=\relax + \let\unnumberedsubsection=\relax + \let\unnumberedsubsubsec=\relax + \let\unnumberedsubsubsection=\relax + \let\section=\relax + \let\subsec=\relax + \let\subsubsec=\relax + \let\subsection=\relax + \let\subsubsection=\relax + \let\appendix=\relax + \let\appendixsec=\relax + \let\appendixsection=\relax + \let\appendixsubsec=\relax + \let\appendixsubsection=\relax + \let\appendixsubsubsec=\relax + \let\appendixsubsubsection=\relax + \let\contents=\relax + \let\smallbook=\relax + \let\titlepage=\relax +} + +% Used in nested conditionals, where we have to parse the Texinfo source +% and so want to turn off most commands, in case they are used +% incorrectly. +% +\def\ignoremorecommands{% + \let\defcodeindex = \relax + \let\defcv = \relax + \let\deffn = \relax + \let\deffnx = \relax + \let\defindex = \relax + \let\defivar = \relax + \let\defmac = \relax + \let\defmethod = \relax + \let\defop = \relax + \let\defopt = \relax + \let\defspec = \relax + \let\deftp = \relax + \let\deftypefn = \relax + \let\deftypefun = \relax + \let\deftypeivar = \relax + \let\deftypeop = \relax + \let\deftypevar = \relax + \let\deftypevr = \relax + \let\defun = \relax + \let\defvar = \relax + \let\defvr = \relax + \let\ref = \relax + \let\xref = \relax + \let\printindex = \relax + \let\pxref = \relax + \let\settitle = \relax + \let\setchapternewpage = \relax + \let\setchapterstyle = \relax + \let\everyheading = \relax + \let\evenheading = \relax + \let\oddheading = \relax + \let\everyfooting = \relax + \let\evenfooting = \relax + \let\oddfooting = \relax + \let\headings = \relax + \let\include = \relax + \let\lowersections = \relax + \let\down = \relax + \let\raisesections = \relax + \let\up = \relax + \let\set = \relax + \let\clear = \relax + \let\item = \relax +} + +% Ignore @ignore, @ifhtml, @ifinfo, @ifplaintext, @ifnottex, @html, @menu, +% @direntry, and @documentdescription. +% +\def\ignore{\doignore{ignore}} +\def\ifhtml{\doignore{ifhtml}} +\def\ifinfo{\doignore{ifinfo}} +\def\ifplaintext{\doignore{ifplaintext}} +\def\ifnottex{\doignore{ifnottex}} +\def\html{\doignore{html}} +\def\menu{\doignore{menu}} +\def\direntry{\doignore{direntry}} +\def\documentdescription{\doignore{documentdescription}} +\def\documentdescriptionword{documentdescription} + +% @dircategory CATEGORY -- specify a category of the dir file +% which this file should belong to. Ignore this in TeX. +\let\dircategory = \comment + +% Ignore text until a line `@end #1'. +% +\def\doignore#1{\begingroup + % Don't complain about control sequences we have declared \outer. + \ignoresections + % + % Define a command to swallow text until we reach `@end #1'. + % This @ is a catcode 12 token (that is the normal catcode of @ in + % this texinfo.tex file). We change the catcode of @ below to match. + \long\def\doignoretext##1@end #1{\enddoignore}% + % + % Make sure that spaces turn into tokens that match what \doignoretext wants. + \catcode32 = 10 + % + % Ignore braces, too, so mismatched braces don't cause trouble. + \catcode`\{ = 9 + \catcode`\} = 9 + % + % We must not have @c interpreted as a control sequence. + \catcode`\@ = 12 + % + \def\ignoreword{#1}% + \ifx\ignoreword\documentdescriptionword + % The c kludge breaks documentdescription, since + % `documentdescription' contains a `c'. Means not everything will + % be ignored inside @documentdescription, but oh well... + \else + % Make the letter c a comment character so that the rest of the line + % will be ignored. This way, the document can have (for example) + % @c @end ifinfo + % and the @end ifinfo will be properly ignored. + % (We've just changed @ to catcode 12.) + \catcode`\c = 14 + \fi + % + % And now expand the command defined above. + \doignoretext +} + +% What we do to finish off ignored text. +% +\def\enddoignore{\endgroup\ignorespaces}% + +\newif\ifwarnedobs\warnedobsfalse +\def\obstexwarn{% + \ifwarnedobs\relax\else + % We need to warn folks that they may have trouble with TeX 3.0. + % This uses \immediate\write16 rather than \message to get newlines. + \immediate\write16{} + \immediate\write16{WARNING: for users of Unix TeX 3.0!} + \immediate\write16{This manual trips a bug in TeX version 3.0 (tex hangs).} + \immediate\write16{If you are running another version of TeX, relax.} + \immediate\write16{If you are running Unix TeX 3.0, kill this TeX process.} + \immediate\write16{ Then upgrade your TeX installation if you can.} + \immediate\write16{ (See ftp://ftp.gnu.org/pub/gnu/TeX.README.)} + \immediate\write16{If you are stuck with version 3.0, run the} + \immediate\write16{ script ``tex3patch'' from the Texinfo distribution} + \immediate\write16{ to use a workaround.} + \immediate\write16{} + \global\warnedobstrue + \fi +} + +% **In TeX 3.0, setting text in \nullfont hangs tex. For a +% workaround (which requires the file ``dummy.tfm'' to be installed), +% uncomment the following line: +%%%%%\font\nullfont=dummy\let\obstexwarn=\relax + +% Ignore text, except that we keep track of conditional commands for +% purposes of nesting, up to an `@end #1' command. +% +\def\nestedignore#1{% + \obstexwarn + % We must actually expand the ignored text to look for the @end + % command, so that nested ignore constructs work. Thus, we put the + % text into a \vbox and then do nothing with the result. To minimize + % the change of memory overflow, we follow the approach outlined on + % page 401 of the TeXbook: make the current font be a dummy font. + % + \setbox0 = \vbox\bgroup + % Don't complain about control sequences we have declared \outer. + \ignoresections + % + % Define `@end #1' to end the box, which will in turn undefine the + % @end command again. + \expandafter\def\csname E#1\endcsname{\egroup\ignorespaces}% + % + % We are going to be parsing Texinfo commands. Most cause no + % trouble when they are used incorrectly, but some commands do + % complicated argument parsing or otherwise get confused, so we + % undefine them. + % + % We can't do anything about stray @-signs, unfortunately; + % they'll produce `undefined control sequence' errors. + \ignoremorecommands + % + % Set the current font to be \nullfont, a TeX primitive, and define + % all the font commands to also use \nullfont. We don't use + % dummy.tfm, as suggested in the TeXbook, because not all sites + % might have that installed. Therefore, math mode will still + % produce output, but that should be an extremely small amount of + % stuff compared to the main input. + % + \nullfont + \let\tenrm=\nullfont \let\tenit=\nullfont \let\tensl=\nullfont + \let\tenbf=\nullfont \let\tentt=\nullfont \let\smallcaps=\nullfont + \let\tensf=\nullfont + % Similarly for index fonts. + \let\smallrm=\nullfont \let\smallit=\nullfont \let\smallsl=\nullfont + \let\smallbf=\nullfont \let\smalltt=\nullfont \let\smallsc=\nullfont + \let\smallsf=\nullfont + % Similarly for smallexample fonts. + \let\smallerrm=\nullfont \let\smallerit=\nullfont \let\smallersl=\nullfont + \let\smallerbf=\nullfont \let\smallertt=\nullfont \let\smallersc=\nullfont + \let\smallersf=\nullfont + % + % Don't complain when characters are missing from the fonts. + \tracinglostchars = 0 + % + % Don't bother to do space factor calculations. + \frenchspacing + % + % Don't report underfull hboxes. + \hbadness = 10000 + % + % Do minimal line-breaking. + \pretolerance = 10000 + % + % Do not execute instructions in @tex + \def\tex{\doignore{tex}}% + % Do not execute macro definitions. + % `c' is a comment character, so the word `macro' will get cut off. + \def\macro{\doignore{ma}}% +} + +% @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. Make sure the catcode of space is correct to avoid +% losing inside @example, for instance. +% +\def\set{\begingroup\catcode` =10 + \catcode`\-=12 \catcode`\_=12 % Allow - and _ in VAR. + \parsearg\setxxx} +\def\setxxx#1{\setyyy#1 \endsetyyy} +\def\setyyy#1 #2\endsetyyy{% + \def\temp{#2}% + \ifx\temp\empty \global\expandafter\let\csname SET#1\endcsname = \empty + \else \setzzz{#1}#2\endsetzzz % Remove the trailing space \setxxx inserted. + \fi + \endgroup +} +% Can't use \xdef to pre-expand #2 and save some time, since \temp or +% \next or other control sequences that we've defined might get us into +% an infinite loop. Consider `@set foo @cite{bar}'. +\def\setzzz#1#2 \endsetzzz{\expandafter\gdef\csname SET#1\endcsname{#2}} + +% @clear VAR clears (i.e., unsets) the variable VAR. +% +\def\clear{\parsearg\clearxxx} +\def\clearxxx#1{\global\expandafter\let\csname SET#1\endcsname=\relax} + +% @value{foo} gets the text saved in variable foo. +{ + \catcode`\_ = \active + % + % We might end up with active _ or - characters in the argument if + % we're called from @code, as @code{@value{foo-bar_}}. So \let any + % such active characters to their normal equivalents. + \gdef\value{\begingroup + \catcode`\-=12 \catcode`\_=12 + \indexbreaks \let_\normalunderscore + \valuexxx} +} +\def\valuexxx#1{\expandablevalue{#1}\endgroup} + +% We have this subroutine so that we can handle at least some @value's +% properly in indexes (we \let\value to this in \indexdummies). Ones +% whose names contain - or _ still won't work, but we can't do anything +% about that. The command has to be fully expandable, 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'']}% + \else + \csname SET#1\endcsname + \fi +} + +% @ifset VAR ... @end ifset reads the `...' iff VAR has been defined +% with @set. +% +\def\ifset{\parsearg\ifsetxxx} +\def\ifsetxxx #1{% + \expandafter\ifx\csname SET#1\endcsname\relax + \expandafter\ifsetfail + \else + \expandafter\ifsetsucceed + \fi +} +\def\ifsetsucceed{\conditionalsucceed{ifset}} +\def\ifsetfail{\nestedignore{ifset}} +\defineunmatchedend{ifset} + +% @ifclear VAR ... @end ifclear reads the `...' iff VAR has never been +% defined with @set, or has been undefined with @clear. +% +\def\ifclear{\parsearg\ifclearxxx} +\def\ifclearxxx #1{% + \expandafter\ifx\csname SET#1\endcsname\relax + \expandafter\ifclearsucceed + \else + \expandafter\ifclearfail + \fi +} +\def\ifclearsucceed{\conditionalsucceed{ifclear}} +\def\ifclearfail{\nestedignore{ifclear}} +\defineunmatchedend{ifclear} + +% @iftex, @ifnothtml, @ifnotinfo, @ifnotplaintext always succeed; we +% read the text following, through the first @end iftex (etc.). Make +% `@end iftex' (etc.) valid only after an @iftex. +% +\def\iftex{\conditionalsucceed{iftex}} +\def\ifnothtml{\conditionalsucceed{ifnothtml}} +\def\ifnotinfo{\conditionalsucceed{ifnotinfo}} +\def\ifnotplaintext{\conditionalsucceed{ifnotplaintext}} +\defineunmatchedend{iftex} +\defineunmatchedend{ifnothtml} +\defineunmatchedend{ifnotinfo} +\defineunmatchedend{ifnotplaintext} + +% We can't just want to start a group at @iftex (etc.) and end it at +% @end iftex, since then @set commands inside the conditional have no +% effect (they'd get reverted at the end of the group). So we must +% define \Eiftex to redefine itself to be its previous value. (We can't +% just define it to fail again with an ``unmatched end'' error, since +% the @ifset might be nested.) +% +\def\conditionalsucceed#1{% + \edef\temp{% + % Remember the current value of \E#1. + \let\nece{prevE#1} = \nece{E#1}% + % + % At the `@end #1', redefine \E#1 to be its previous value. + \def\nece{E#1}{\let\nece{E#1} = \nece{prevE#1}}% + }% + \temp +} + +% We need to expand lots of \csname's, but we don't want to expand the +% control sequences after we've constructed them. +% +\def\nece#1{\expandafter\noexpand\csname#1\endcsname} + +% @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 \newindex. +{\catcode`\@=11 +\gdef\newwrite{\alloc@7\write\chardef\sixt@@n}} + +% \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 likely to appear in an index entry. +% (Must be a way to avoid doing expansion at all, and thus not have to +% laboriously list every single command here.) +% +\def\indexdummies{% +\def\ { }% +\def\@{@}% change to @@ when we switch to @ as escape char in aux files. +% 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 +\def\_{{\realbackslash _}}% +\normalturnoffactive +% +% Take care of the plain tex accent commands. +\def\,##1{\realbackslash ,{##1}}% +\def\"{\realbackslash "}% +\def\`{\realbackslash `}% +\def\'{\realbackslash '}% +\def\^{\realbackslash ^}% +\def\~{\realbackslash ~}% +\def\={\realbackslash =}% +\def\b{\realbackslash b}% +\def\c{\realbackslash c}% +\def\d{\realbackslash d}% +\def\u{\realbackslash u}% +\def\v{\realbackslash v}% +\def\H{\realbackslash H}% +\def\dotless##1{\realbackslash dotless {##1}}% +% Take care of the plain tex special European modified letters. +\def\AA{\realbackslash AA}% +\def\AE{\realbackslash AE}% +\def\L{\realbackslash L}% +\def\OE{\realbackslash OE}% +\def\O{\realbackslash O}% +\def\aa{\realbackslash aa}% +\def\ae{\realbackslash ae}% +\def\l{\realbackslash l}% +\def\oe{\realbackslash oe}% +\def\o{\realbackslash o}% +\def\ss{\realbackslash ss}% +% +% Although these internals commands shouldn't show up, sometimes they do. +\def\bf{\realbackslash bf }% +\def\gtr{\realbackslash gtr}% +\def\hat{\realbackslash hat}% +\def\less{\realbackslash less}% +%\def\rm{\realbackslash rm }% +\def\sf{\realbackslash sf}% +\def\sl{\realbackslash sl }% +\def\tclose##1{\realbackslash tclose {##1}}% +\def\tt{\realbackslash tt}% +% +\def\b##1{\realbackslash b {##1}}% +\def\i##1{\realbackslash i {##1}}% +\def\sc##1{\realbackslash sc {##1}}% +\def\t##1{\realbackslash t {##1}}% +\def\r##1{\realbackslash r {##1}}% +% +\def\TeX{\realbackslash TeX}% +\def\acronym##1{\realbackslash acronym {##1}}% +\def\cite##1{\realbackslash cite {##1}}% +\def\code##1{\realbackslash code {##1}}% +\def\command##1{\realbackslash command {##1}}% +\def\dfn##1{\realbackslash dfn {##1}}% +\def\dots{\realbackslash dots }% +\def\emph##1{\realbackslash emph {##1}}% +\def\env##1{\realbackslash env {##1}}% +\def\file##1{\realbackslash file {##1}}% +\def\kbd##1{\realbackslash kbd {##1}}% +\def\key##1{\realbackslash key {##1}}% +\def\math##1{\realbackslash math {##1}}% +\def\option##1{\realbackslash option {##1}}% +\def\samp##1{\realbackslash samp {##1}}% +\def\strong##1{\realbackslash strong {##1}}% +\def\uref##1{\realbackslash uref {##1}}% +\def\url##1{\realbackslash url {##1}}% +\def\var##1{\realbackslash var {##1}}% +\def\w{\realbackslash w }% +% +% These math commands don't seem likely to be used in index entries. +\def\copyright{\realbackslash copyright}% +\def\equiv{\realbackslash equiv}% +\def\error{\realbackslash error}% +\def\expansion{\realbackslash expansion}% +\def\point{\realbackslash point}% +\def\print{\realbackslash print}% +\def\result{\realbackslash result}% +% +% Handle some cases of @value -- where the variable name does not +% contain - or _, and the value does not contain any +% (non-fully-expandable) commands. +\let\value = \expandablevalue +% +\unsepspaces +% Turn off macro expansion +\turnoffmacros +} + +% 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 \ ). +{\obeyspaces + \gdef\unsepspaces{\obeyspaces\let =\space}} + +% \indexnofonts no-ops all font-change commands. +% This is used when outputting the strings to sort the index by. +\def\indexdummyfont#1{#1} +\def\indexdummytex{TeX} +\def\indexdummydots{...} + +\def\indexnofonts{% +\def\@{@}% +% how to handle braces? +\def\_{\normalunderscore}% +% +\let\,=\indexdummyfont +\let\"=\indexdummyfont +\let\`=\indexdummyfont +\let\'=\indexdummyfont +\let\^=\indexdummyfont +\let\~=\indexdummyfont +\let\==\indexdummyfont +\let\b=\indexdummyfont +\let\c=\indexdummyfont +\let\d=\indexdummyfont +\let\u=\indexdummyfont +\let\v=\indexdummyfont +\let\H=\indexdummyfont +\let\dotless=\indexdummyfont +% Take care of the plain tex special European modified 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}% +% +% 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=\indexdummyfont +% +\let\b=\indexdummyfont +\let\i=\indexdummyfont +\let\r=\indexdummyfont +\let\sc=\indexdummyfont +\let\t=\indexdummyfont +% +\let\TeX=\indexdummytex +\let\acronym=\indexdummyfont +\let\cite=\indexdummyfont +\let\code=\indexdummyfont +\let\command=\indexdummyfont +\let\dfn=\indexdummyfont +\let\dots=\indexdummydots +\let\emph=\indexdummyfont +\let\env=\indexdummyfont +\let\file=\indexdummyfont +\let\kbd=\indexdummyfont +\let\key=\indexdummyfont +\let\math=\indexdummyfont +\let\option=\indexdummyfont +\let\samp=\indexdummyfont +\let\strong=\indexdummyfont +\let\uref=\indexdummyfont +\let\url=\indexdummyfont +\let\var=\indexdummyfont +\let\w=\indexdummyfont +} + +% To define \realbackslash, we must make \ not be an escape. +% We must first make another character (@) an escape +% so we do not become unable to do a definition. + +{\catcode`\@=0 \catcode`\\=\other + @gdef@realbackslash{\}} + +\let\indexbackslash=0 %overridden during \printindex. +\let\SETmarginindex=\relax % put index entries in margin (undocumented)? + +% For \ifx comparisons. +\def\emptymacro{\empty} + +% Most index entries go through here, but \dosubind is the general case. +% +\def\doind#1#2{\dosubind{#1}{#2}\empty} + +% 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 defuns, which call us directly. +% +\def\dosubind#1#2#3{% + % Put the index entry in the margin if desired. + \ifx\SETmarginindex\relax\else + \insert\margin{\hbox{\vrule height8pt depth3pt width0pt #2}}% + \fi + {% + \count255=\lastpenalty + {% + \indexdummies % Must do this here, since \bf, etc expand at this stage + \escapechar=`\\ + {% + \let\folio = 0% We will expand all macros now EXCEPT \folio. + \def\rawbackslashxx{\indexbackslash}% \indexbackslash isn't defined now + % so it will be output as is; and it will print as backslash. + % + \def\thirdarg{#3}% + % + % If third arg is present, precede it with space in sort key. + \ifx\thirdarg\emptymacro + \let\subentry = \empty + \else + \def\subentry{ #3}% + \fi + % + % First process the index entry with all font commands turned + % off to get the string to sort by. + {\indexnofonts \xdef\indexsorttmp{#2\subentry}}% + % + % Now the real index entry with the fonts. + \toks0 = {#2}% + % + % If the third (subentry) arg is present, add it to the index + % line to write. + \ifx\thirdarg\emptymacro \else + \toks0 = \expandafter{\the\toks0{#3}}% + \fi + % + % 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\csname#1indfile\endcsname{% + \realbackslash entry{\indexsorttmp}{\folio}{\the\toks0}}% + }% + % + % 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. + % + \iflinks + \ifvmode + \skip0 = \lastskip + \ifdim\lastskip = 0pt \else \nobreak\vskip-\lastskip \fi + \fi + % + \temp % do the write + % + % + \ifvmode \ifdim\skip0 = 0pt \else \nobreak\vskip\skip0 \fi \fi + \fi + }% + }% + \penalty\count255 + }% +} + +% 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). +% +\def\printindex{\parsearg\doprintindex} +\def\doprintindex#1{\begingroup + \dobreak \chapheadingskip{10000}% + % + \smallfonts \rm + \tolerance = 9500 + \indexbreaks + % + % 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{\rawbackslashxx}% + \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. + \penalty -300 + % + % 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}% + \vskip .33\baselineskip plus .1\baselineskip + % + % Do our best not to break after the initial. + \nobreak +}} + +% This typesets a paragraph consisting of #1, dot leaders, and then #2 +% flush to the right margin. It is used for index and table of contents +% entries. The paragraph is indented by \leftskip. +% +\def\entry#1#2{\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 + % + % Start a ``paragraph'' for the index entry so the line breaking + % parameters we've set above will have an effect. + \noindent + % + % Insert the text of the index entry. TeX will do line-breaking on it. + #1% + % 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{#2}% + \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#2.\ \the\toksA % The page number ends the paragraph. + \else + \ #2% The page number ends the paragraph. + \fi + \fi% + \par +\endgroup} + +% Like \dotfill except takes at least 1 em. +\def\indexdotfill{\cleaders + \hbox{$\mathsurround=0pt \mkern1.5mu ${\it .}$ \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. + +\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 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. +\def\thischapter{} +\def\thissection{} + +\newcount\absseclevel % used to calculate proper heading level +\newcount\secbase\secbase=0 % @raise/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 + +% Choose a numbered-heading macro +% #1 is heading level if unmodified by @raisesections or @lowersections +% #2 is text for heading +\def\numhead#1#2{\absseclevel=\secbase\advance\absseclevel by #1 +\ifcase\absseclevel + \chapterzzz{#2} +\or + \seczzz{#2} +\or + \numberedsubseczzz{#2} +\or + \numberedsubsubseczzz{#2} +\else + \ifnum \absseclevel<0 + \chapterzzz{#2} + \else + \numberedsubsubseczzz{#2} + \fi +\fi +} + +% like \numhead, but chooses appendix heading levels +\def\apphead#1#2{\absseclevel=\secbase\advance\absseclevel by #1 +\ifcase\absseclevel + \appendixzzz{#2} +\or + \appendixsectionzzz{#2} +\or + \appendixsubseczzz{#2} +\or + \appendixsubsubseczzz{#2} +\else + \ifnum \absseclevel<0 + \appendixzzz{#2} + \else + \appendixsubsubseczzz{#2} + \fi +\fi +} + +% like \numhead, but chooses numberless heading levels +\def\unnmhead#1#2{\absseclevel=\secbase\advance\absseclevel by #1 +\ifcase\absseclevel + \unnumberedzzz{#2} +\or + \unnumberedseczzz{#2} +\or + \unnumberedsubseczzz{#2} +\or + \unnumberedsubsubseczzz{#2} +\else + \ifnum \absseclevel<0 + \unnumberedzzz{#2} + \else + \unnumberedsubsubseczzz{#2} + \fi +\fi +} + +% @chapter, @appendix, @unnumbered. +\def\thischaptername{No Chapter Title} +\outer\def\chapter{\parsearg\chapteryyy} +\def\chapteryyy #1{\numhead0{#1}} % normally numhead0 calls chapterzzz +\def\chapterzzz #1{% +\secno=0 \subsecno=0 \subsubsecno=0 +\global\advance \chapno by 1 \message{\putwordChapter\space \the\chapno}% +\chapmacro {#1}{\the\chapno}% +\gdef\thissection{#1}% +\gdef\thischaptername{#1}% +% We don't substitute the actual chapter name into \thischapter +% because we don't want its macros evaluated now. +\xdef\thischapter{\putwordChapter{} \the\chapno: \noexpand\thischaptername}% +\toks0 = {#1}% +\edef\temp{\noexpand\writetocentry{\realbackslash chapentry{\the\toks0}% + {\the\chapno}}}% +\temp +\donoderef +\global\let\section = \numberedsec +\global\let\subsection = \numberedsubsec +\global\let\subsubsection = \numberedsubsubsec +} + +\outer\def\appendix{\parsearg\appendixyyy} +\def\appendixyyy #1{\apphead0{#1}} % normally apphead0 calls appendixzzz +\def\appendixzzz #1{% +\secno=0 \subsecno=0 \subsubsecno=0 +\global\advance \appendixno by 1 +\message{\putwordAppendix\space \appendixletter}% +\chapmacro {#1}{\putwordAppendix{} \appendixletter}% +\gdef\thissection{#1}% +\gdef\thischaptername{#1}% +\xdef\thischapter{\putwordAppendix{} \appendixletter: \noexpand\thischaptername}% +\toks0 = {#1}% +\edef\temp{\noexpand\writetocentry{\realbackslash appendixentry{\the\toks0}% + {\appendixletter}}}% +\temp +\appendixnoderef +\global\let\section = \appendixsec +\global\let\subsection = \appendixsubsec +\global\let\subsubsection = \appendixsubsubsec +} + +% @centerchap is like @unnumbered, but the heading is centered. +\outer\def\centerchap{\parsearg\centerchapyyy} +\def\centerchapyyy #1{{\let\unnumbchapmacro=\centerchapmacro \unnumberedyyy{#1}}} + +% @top is like @unnumbered. +\outer\def\top{\parsearg\unnumberedyyy} + +\outer\def\unnumbered{\parsearg\unnumberedyyy} +\def\unnumberedyyy #1{\unnmhead0{#1}} % normally unnmhead0 calls unnumberedzzz +\def\unnumberedzzz #1{% +\secno=0 \subsecno=0 \subsubsecno=0 +% +% 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)}% +% +\unnumbchapmacro {#1}% +\gdef\thischapter{#1}\gdef\thissection{#1}% +\toks0 = {#1}% +\edef\temp{\noexpand\writetocentry{\realbackslash unnumbchapentry{\the\toks0}}}% +\temp +\unnumbnoderef +\global\let\section = \unnumberedsec +\global\let\subsection = \unnumberedsubsec +\global\let\subsubsection = \unnumberedsubsubsec +} + +% Sections. +\outer\def\numberedsec{\parsearg\secyyy} +\def\secyyy #1{\numhead1{#1}} % normally calls seczzz +\def\seczzz #1{% +\subsecno=0 \subsubsecno=0 \global\advance \secno by 1 % +\gdef\thissection{#1}\secheading {#1}{\the\chapno}{\the\secno}% +\toks0 = {#1}% +\edef\temp{\noexpand\writetocentry{\realbackslash secentry{\the\toks0}% + {\the\chapno}{\the\secno}}}% +\temp +\donoderef +\nobreak +} + +\outer\def\appendixsection{\parsearg\appendixsecyyy} +\outer\def\appendixsec{\parsearg\appendixsecyyy} +\def\appendixsecyyy #1{\apphead1{#1}} % normally calls appendixsectionzzz +\def\appendixsectionzzz #1{% +\subsecno=0 \subsubsecno=0 \global\advance \secno by 1 % +\gdef\thissection{#1}\secheading {#1}{\appendixletter}{\the\secno}% +\toks0 = {#1}% +\edef\temp{\noexpand\writetocentry{\realbackslash secentry{\the\toks0}% + {\appendixletter}{\the\secno}}}% +\temp +\appendixnoderef +\nobreak +} + +\outer\def\unnumberedsec{\parsearg\unnumberedsecyyy} +\def\unnumberedsecyyy #1{\unnmhead1{#1}} % normally calls unnumberedseczzz +\def\unnumberedseczzz #1{% +\plainsecheading {#1}\gdef\thissection{#1}% +\toks0 = {#1}% +\edef\temp{\noexpand\writetocentry{\realbackslash unnumbsecentry% + {\the\toks0}{\the\chapno}}}% +\temp +\unnumbnoderef +\nobreak +} + +% Subsections. +\outer\def\numberedsubsec{\parsearg\numberedsubsecyyy} +\def\numberedsubsecyyy #1{\numhead2{#1}} % normally calls numberedsubseczzz +\def\numberedsubseczzz #1{% +\gdef\thissection{#1}\subsubsecno=0 \global\advance \subsecno by 1 % +\subsecheading {#1}{\the\chapno}{\the\secno}{\the\subsecno}% +\toks0 = {#1}% +\edef\temp{\noexpand\writetocentry{\realbackslash subsecentry{\the\toks0}% + {\the\chapno}{\the\secno}{\the\subsecno}}}% +\temp +\donoderef +\nobreak +} + +\outer\def\appendixsubsec{\parsearg\appendixsubsecyyy} +\def\appendixsubsecyyy #1{\apphead2{#1}} % normally calls appendixsubseczzz +\def\appendixsubseczzz #1{% +\gdef\thissection{#1}\subsubsecno=0 \global\advance \subsecno by 1 % +\subsecheading {#1}{\appendixletter}{\the\secno}{\the\subsecno}% +\toks0 = {#1}% +\edef\temp{\noexpand\writetocentry{\realbackslash subsecentry{\the\toks0}% + {\appendixletter}{\the\secno}{\the\subsecno}}}% +\temp +\appendixnoderef +\nobreak +} + +\outer\def\unnumberedsubsec{\parsearg\unnumberedsubsecyyy} +\def\unnumberedsubsecyyy #1{\unnmhead2{#1}} %normally calls unnumberedsubseczzz +\def\unnumberedsubseczzz #1{% +\plainsubsecheading {#1}\gdef\thissection{#1}% +\toks0 = {#1}% +\edef\temp{\noexpand\writetocentry{\realbackslash unnumbsubsecentry% + {\the\toks0}{\the\chapno}{\the\secno}}}% +\temp +\unnumbnoderef +\nobreak +} + +% Subsubsections. +\outer\def\numberedsubsubsec{\parsearg\numberedsubsubsecyyy} +\def\numberedsubsubsecyyy #1{\numhead3{#1}} % normally numberedsubsubseczzz +\def\numberedsubsubseczzz #1{% +\gdef\thissection{#1}\global\advance \subsubsecno by 1 % +\subsubsecheading {#1} + {\the\chapno}{\the\secno}{\the\subsecno}{\the\subsubsecno}% +\toks0 = {#1}% +\edef\temp{\noexpand\writetocentry{\realbackslash subsubsecentry{\the\toks0}% + {\the\chapno}{\the\secno}{\the\subsecno}{\the\subsubsecno}}}% +\temp +\donoderef +\nobreak +} + +\outer\def\appendixsubsubsec{\parsearg\appendixsubsubsecyyy} +\def\appendixsubsubsecyyy #1{\apphead3{#1}} % normally appendixsubsubseczzz +\def\appendixsubsubseczzz #1{% +\gdef\thissection{#1}\global\advance \subsubsecno by 1 % +\subsubsecheading {#1} + {\appendixletter}{\the\secno}{\the\subsecno}{\the\subsubsecno}% +\toks0 = {#1}% +\edef\temp{\noexpand\writetocentry{\realbackslash subsubsecentry{\the\toks0}% + {\appendixletter}{\the\secno}{\the\subsecno}{\the\subsubsecno}}}% +\temp +\appendixnoderef +\nobreak +} + +\outer\def\unnumberedsubsubsec{\parsearg\unnumberedsubsubsecyyy} +\def\unnumberedsubsubsecyyy #1{\unnmhead3{#1}} %normally unnumberedsubsubseczzz +\def\unnumberedsubsubseczzz #1{% +\plainsubsubsecheading {#1}\gdef\thissection{#1}% +\toks0 = {#1}% +\edef\temp{\noexpand\writetocentry{\realbackslash unnumbsubsubsecentry% + {\the\toks0}{\the\chapno}{\the\secno}{\the\subsecno}}}% +\temp +\unnumbnoderef +\nobreak +} + +% These are variants which are not "outer", so they can appear in @ifinfo. +% Actually, they should now be obsolete; ordinary section commands should work. +\def\infotop{\parsearg\unnumberedzzz} +\def\infounnumbered{\parsearg\unnumberedzzz} +\def\infounnumberedsec{\parsearg\unnumberedseczzz} +\def\infounnumberedsubsec{\parsearg\unnumberedsubseczzz} +\def\infounnumberedsubsubsec{\parsearg\unnumberedsubsubseczzz} + +\def\infoappendix{\parsearg\appendixzzz} +\def\infoappendixsec{\parsearg\appendixseczzz} +\def\infoappendixsubsec{\parsearg\appendixsubseczzz} +\def\infoappendixsubsubsec{\parsearg\appendixsubsubseczzz} + +\def\infochapter{\parsearg\chapterzzz} +\def\infosection{\parsearg\sectionzzz} +\def\infosubsection{\parsearg\subsectionzzz} +\def\infosubsubsection{\parsearg\subsubsectionzzz} + +% 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. +\global\let\section = \numberedsec +\global\let\subsection = \numberedsubsec +\global\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{\parsearg\majorheadingzzz} +\def\majorheadingzzz #1{% +{\advance\chapheadingskip by 10pt \chapbreak }% +{\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000 + \parindent=0pt\raggedright + \rm #1\hfill}}\bigskip \par\penalty 200} + +\def\chapheading{\parsearg\chapheadingzzz} +\def\chapheadingzzz #1{\chapbreak % +{\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000 + \parindent=0pt\raggedright + \rm #1\hfill}}\bigskip \par\penalty 200} + +% @heading, @subheading, @subsubheading. +\def\heading{\parsearg\plainsecheading} +\def\subheading{\parsearg\plainsubsecheading} +\def\subsubheading{\parsearg\plainsubsubsecheading} + +% 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} + +\def\setchapterstyle #1 {\csname CHAPF#1\endcsname} + +%%% 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 + +\def\CHAPFplain{ +\global\let\chapmacro=\chfplain +\global\let\unnumbchapmacro=\unnchfplain +\global\let\centerchapmacro=\centerchfplain} + +% Plain chapter opening. +% #1 is the text, #2 the chapter number or empty if unnumbered. +\def\chfplain#1#2{% + \pchapsepmacro + {% + \chapfonts \rm + \def\chapnum{#2}% + \setbox0 = \hbox{#2\ifx\chapnum\empty\else\enspace\fi}% + \vbox{\hyphenpenalty=10000 \tolerance=5000 \parindent=0pt \raggedright + \hangindent = \wd0 \centerparametersmaybe + \unhbox0 #1\par}% + }% + \nobreak\bigskip % no page break after a chapter title + \nobreak +} + +% Plain opening for unnumbered. +\def\unnchfplain#1{\chfplain{#1}{}} + +% @centerchap -- centered and unnumbered. +\let\centerparametersmaybe = \relax +\def\centerchfplain#1{{% + \def\centerparametersmaybe{% + \advance\rightskip by 3\rightskip + \leftskip = \rightskip + \parfillskip = 0pt + }% + \chfplain{#1}{}% +}} + +\CHAPFplain % The default + +\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\unnumbchapmacro=\unnchfopen +\global\let\centerchapmacro=\centerchfopen} + + +% Section titles. +\newskip\secheadingskip +\def\secheadingbreak{\dobreak \secheadingskip {-1000}} +\def\secheading#1#2#3{\sectionheading{sec}{#2.#3}{#1}} +\def\plainsecheading#1{\sectionheading{sec}{}{#1}} + +% Subsection titles. +\newskip \subsecheadingskip +\def\subsecheadingbreak{\dobreak \subsecheadingskip {-500}} +\def\subsecheading#1#2#3#4{\sectionheading{subsec}{#2.#3.#4}{#1}} +\def\plainsubsecheading#1{\sectionheading{subsec}{}{#1}} + +% Subsubsection titles. +\let\subsubsecheadingskip = \subsecheadingskip +\let\subsubsecheadingbreak = \subsecheadingbreak +\def\subsubsecheading#1#2#3#4#5{\sectionheading{subsubsec}{#2.#3.#4.#5}{#1}} +\def\plainsubsubsecheading#1{\sectionheading{subsubsec}{}{#1}} + + +% Print any size section title. +% +% #1 is the section type (sec/subsec/subsubsec), #2 is the section +% number (maybe empty), #3 the text. +\def\sectionheading#1#2#3{% + {% + \expandafter\advance\csname #1headingskip\endcsname by \parskip + \csname #1headingbreak\endcsname + }% + {% + % Switch to the right set of fonts. + \csname #1fonts\endcsname \rm + % + % Only insert the separating space if we have a section number. + \def\secnum{#2}% + \setbox0 = \hbox{#2\ifx\secnum\empty\else\enspace\fi}% + % + \vbox{\hyphenpenalty=10000 \tolerance=5000 \parindent=0pt \raggedright + \hangindent = \wd0 % zero if no section number + \unhbox0 #3}% + }% + \ifdim\parskip<10pt \nobreak\kern10pt\nobreak\kern-\parskip\fi \nobreak +} + + +\message{toc,} +% Table of contents. +\newwrite\tocfile + +% Write an entry to the toc file, opening it if necessary. +% Called from @chapter, etc. We supply {\folio} at the end of the +% argument, which will end up as the last argument to the \...entry macro. +% +% We open the .toc file here instead of at @setfilename or any other +% fixed time so that @contents can be put in the document anywhere. +% +\newif\iftocfileopened +\def\writetocentry#1{% + \iftocfileopened\else + \immediate\openout\tocfile = \jobname.toc + \global\tocfileopenedtrue + \fi + \iflinks \write\tocfile{#1{\folio}}\fi + % + % Tell \shipout to create a page destination if we're doing pdf, which + % will be the target of the links in the table of contents. We can't + % just do it 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 \pdfmakepagedesttrue \fi +} + +\newskip\contentsrightmargin \contentsrightmargin=1in +\newcount\savepageno +\newcount\lastnegativepageno \lastnegativepageno = -1 + +% Finish up the main text and 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. + \unnumbchapmacro{#1}\def\thischapter{}% + \savepageno = \pageno + \begingroup % Set up to handle contents files properly. + \catcode`\\=0 \catcode`\{=1 \catcode`\}=2 \catcode`\@=11 + % We can't do this, because then an actual ^ in a section + % title fails, e.g., @chapter ^ -- exponentiation. --karl, 9jul97. + %\catcode`\^=7 % to see ^^e4 as \"a etc. juha@piuha.ydi.vtt.fi + \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 \pageno = \lastnegativepageno \fi +} + + +% Normal (long) toc. +\def\contents{% + \startcontents{\putwordTOC}% + \openin 1 \jobname.toc + \ifeof 1 \else + \closein 1 + \input \jobname.toc + \fi + \vfill \eject + \contentsalignmacro % in case @setchapternewpage odd is in effect + \pdfmakeoutlines + \endgroup + \lastnegativepageno = \pageno + \pageno = \savepageno +} + +% And just the chapters. +\def\summarycontents{% + \startcontents{\putwordShortTOC}% + % + \let\chapentry = \shortchapentry + \let\appendixentry = \shortappendixentry + \let\unnumbchapentry = \shortunnumberedentry + % We want a true roman here for the page numbers. + \secfonts + \let\rm=\shortcontrm \let\bf=\shortcontbf \let\sl=\shortcontsl + \rm + \hyphenpenalty = 10000 + \advance\baselineskip by 1pt % Open it up a little. + \def\secentry ##1##2##3##4{} + \def\unnumbsecentry ##1##2##3{} + \def\subsecentry ##1##2##3##4##5{} + \def\unnumbsubsecentry ##1##2##3##4{} + \def\subsubsecentry ##1##2##3##4##5##6{} + \def\unnumbsubsubsecentry ##1##2##3##4##5{} + \openin 1 \jobname.toc + \ifeof 1 \else + \closein 1 + \input \jobname.toc + \fi + \vfill \eject + \contentsalignmacro % in case @setchapternewpage odd is in effect + \endgroup + \lastnegativepageno = \pageno + \pageno = \savepageno +} +\let\shortcontents = \summarycontents + +\ifpdf + \pdfcatalog{/PageMode /UseOutlines}% +\fi + +% 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\chapentry#1#2#3{\dochapentry{#2\labelspace#1}{#3}} +% +% Chapters, in the short toc. +% See comments in \dochapentry re vbox and related settings. +\def\shortchapentry#1#2#3{% + \tocentry{\shortchaplabel{#2}\labelspace #1}{\doshortpageno\bgroup#3\egroup}% +} + +% Appendices, in the main contents. +\def\appendixentry#1#2#3{\dochapentry{\putwordAppendix{} #2\labelspace#1}{#3}} +% +% Appendices, in the short toc. +\let\shortappendixentry = \shortchapentry + +% Typeset the label for a chapter or appendix for the short contents. +% The arg is, e.g., `Appendix A' for an appendix, or `3' for a chapter. +% We could simplify the code here by writing out an \appendixentry +% command in the toc file for appendices, instead of using \chapentry +% for both, but it doesn't seem worth it. +% +\newdimen\shortappendixwidth +% +\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.) + \dimen0 = 1em + \hbox to \dimen0{#1\hss}% +} + +% Unnumbered chapters. +\def\unnumbchapentry#1#2{\dochapentry{#1}{#2}} +\def\shortunnumberedentry#1#2{\tocentry{#1}{\doshortpageno\bgroup#2\egroup}} + +% Sections. +\def\secentry#1#2#3#4{\dosecentry{#2.#3\labelspace#1}{#4}} +\def\unnumbsecentry#1#2#3{\dosecentry{#1}{#3}} + +% Subsections. +\def\subsecentry#1#2#3#4#5{\dosubsecentry{#2.#3.#4\labelspace#1}{#5}} +\def\unnumbsubsecentry#1#2#3#4{\dosubsecentry{#1}{#4}} + +% And subsubsections. +\def\subsubsecentry#1#2#3#4#5#6{% + \dosubsubsecentry{#2.#3.#4.#5\labelspace#1}{#6}} +\def\unnumbsubsubsecentry#1#2#3#4#5{\dosubsubsecentry{#1}{#5}} + +% This parameter controls the indentation of the various levels. +\newdimen\tocindent \tocindent = 3pc + +% 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} + +% Final typesetting of a toc entry; we use the same \entry macro as for +% the index entries, but we want to suppress hyphenation here. (We +% can't do that in the \entry macro, since index entries might consist +% of hyphenated-identifiers-that-do-not-fit-on-a-line-and-nothing-else.) +\def\tocentry#1#2{\begingroup + \vskip 0pt plus1pt % allow a little stretch for the sake of nice page breaks + % Do not use \turnoffactive in these arguments. Since the toc is + % typeset in cmr, characters such as _ would come out wrong; we + % have to do the usual translation tricks. + \entry{#1}{#2}% +\endgroup} + +% 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} +\let\subsecentryfonts = \textfonts +\let\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 \tensf error\kern-1.5pt} +% +\global\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. + +\def\tex{\begingroup + \catcode `\\=0 \catcode `\{=1 \catcode `\}=2 + \catcode `\$=3 \catcode `\&=4 \catcode `\#=6 + \catcode `\^=7 \catcode `\_=8 \catcode `\~=13 \let~=\tie + \catcode `\%=14 + \catcode 43=12 % plus + \catcode`\"=12 + \catcode`\==12 + \catcode`\|=12 + \catcode`\<=12 + \catcode`\>=12 + \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\{=\ptexlbrace + \let\+=\tabalign + \let\}=\ptexrbrace + \let\*=\ptexstar + \let\t=\ptext + % + \def\endldots{\mathinner{\ldots\ldots\ldots\ldots}}% + \def\enddots{\relax\ifmmode\endldots\else$\mathsurround=0pt \endldots\,$\fi}% + \def\@{@}% +\let\Etex=\endgroup} + +% Define @lisp ... @end lisp. +% @lisp does a \begingroup 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} + +% 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. +% +{\obeyspaces % +\gdef\sepspaces{\obeyspaces\let =\tie}} + +% Define \obeyedspace to be our active space, whatever it is. This is +% for use in \parsearg. +{\sepspaces% +\global\let\obeyedspace= } + +% 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{{% + \ifnum\lastpenalty < 10000 + \advance\envskipamount by \parskip + \endgraf + \ifdim\lastskip<\envskipamount + \removelastskip + \penalty-50 + \vskip\envskipamount + \fi + \fi +}} + +\let\afterenvbreak = \aboveenvbreak + +% \nonarrowing is a flag. If "set", @lisp etc don't narrow margins. +\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 + +\long\def\cartouche{% +\begingroup + \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=\comment + \vbox\bgroup + \baselineskip=0pt\parskip=0pt\lineskip=0pt + \carttop + \hbox\bgroup + \hskip\lskip + \vrule\kern3pt + \vbox\bgroup + \hsize=\cartinner + \kern3pt + \begingroup + \baselineskip=\normbskip + \lineskip=\normlskip + \parskip=\normpskip + \vskip -\parskip +\def\Ecartouche{% + \endgroup + \kern3pt + \egroup + \kern3pt\vrule + \hskip\rskip + \egroup + \cartbot + \egroup +\endgroup +}} + + +% This macro is called at the beginning of all the @example variants, +% inside a group. +\def\nonfillstart{% + \aboveenvbreak + \inENV % This group ends at the end of the body + \hfuzz = 12pt % Don't be fussy + \sepspaces % Make spaces be word-separators rather than space tokens. + \singlespace + \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 + % @cartouche defines \nonarrowing to inhibit narrowing + % at next level down. + \ifx\nonarrowing\relax + \advance \leftskip by \lispnarrowing + \exdentamount=\lispnarrowing + \let\exdent=\nofillexdent + \let\nonarrowing=\relax + \fi +} + +% Define the \E... control sequence only if we are inside the particular +% environment, so the error checking in \end will work. +% +% To end an @example-like environment, we first end the paragraph (via +% \afterenvbreak's vertical glue), and then the group. That way we keep +% the zero \parskip that the environments set -- \parskip glue will be +% inserted at the beginning of the next paragraph in the document, after +% the environment. +% +\def\nonfillfinish{\afterenvbreak\endgroup} + +% @lisp: indented, narrowed, typewriter font. +\def\lisp{\begingroup + \nonfillstart + \let\Elisp = \nonfillfinish + \tt + \let\kbdfont = \kbdexamplefont % Allow @kbd to do something special. + \gobble % eat return +} + +% @example: Same as @lisp. +\def\example{\begingroup \def\Eexample{\nonfillfinish\endgroup}\lisp} + +% @small... is usually equivalent to the non-small (@smallbook +% redefines). We must call \example (or whatever) last in the +% definition, since it reads the return following the @example (or +% whatever) command. +% +% This actually allows (for example) @end display inside an +% @smalldisplay. Too bad, but makeinfo will catch the error anyway. +% +\def\smalldisplay{\begingroup\def\Esmalldisplay{\nonfillfinish\endgroup}\display} +\def\smallexample{\begingroup\def\Esmallexample{\nonfillfinish\endgroup}\lisp} +\def\smallformat{\begingroup\def\Esmallformat{\nonfillfinish\endgroup}\format} +\def\smalllisp{\begingroup\def\Esmalllisp{\nonfillfinish\endgroup}\lisp} + +% Real @smallexample and @smalllisp (when @smallbook): use smaller fonts. +% Originally contributed by Pavel@xerox. +\def\smalllispx{\begingroup + \def\Esmalllisp{\nonfillfinish\endgroup}% + \def\Esmallexample{\nonfillfinish\endgroup}% + \smallexamplefonts + \lisp +} + +% @display: same as @lisp except keep current font. +% +\def\display{\begingroup + \nonfillstart + \let\Edisplay = \nonfillfinish + \gobble +} +% +% @smalldisplay (when @smallbook): @display plus smaller fonts. +% +\def\smalldisplayx{\begingroup + \def\Esmalldisplay{\nonfillfinish\endgroup}% + \smallexamplefonts \rm + \display +} + +% @format: same as @display except don't narrow margins. +% +\def\format{\begingroup + \let\nonarrowing = t + \nonfillstart + \let\Eformat = \nonfillfinish + \gobble +} +% +% @smallformat (when @smallbook): @format plus smaller fonts. +% +\def\smallformatx{\begingroup + \def\Esmallformat{\nonfillfinish\endgroup}% + \smallexamplefonts \rm + \format +} + +% @flushleft (same as @format). +% +\def\flushleft{\begingroup \def\Eflushleft{\nonfillfinish\endgroup}\format} + +% @flushright. +% +\def\flushright{\begingroup + \let\nonarrowing = t + \nonfillstart + \let\Eflushright = \nonfillfinish + \advance\leftskip by 0pt plus 1fill + \gobble +} + + +% @quotation does normal linebreaking (hence we can't use \nonfillstart) +% and narrows the margins. +% +\def\quotation{% + \begingroup\inENV %This group ends at the end of the @quotation body + {\parskip=0pt \aboveenvbreak}% because \aboveenvbreak inserts \parskip + \singlespace + \parindent=0pt + % We have retained a nonzero parskip for the environment, since we're + % doing normal filling. So to avoid extra space below the environment... + \def\Equotation{\parskip = 0pt \nonfillfinish}% + % + % @cartouche defines \nonarrowing to inhibit narrowing at next level down. + \ifx\nonarrowing\relax + \advance\leftskip by \lispnarrowing + \advance\rightskip by \lispnarrowing + \exdentamount = \lispnarrowing + \let\nonarrowing = \relax + \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 '@' too +\def\dospecials{% + \do\ \do\\\do\@\do\{\do\}\do\$\do\&% + \do\#\do\^\do\^^K\do\_\do\^^A\do\%\do\~} +% +% [Knuth] p. 380 +\def\uncatcodespecials{% + \def\do##1{\catcode`##1=12}\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} +\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 + }% + } +\endgroup +\def\setupverbatim{% + % Easiest (and conventionally used) font for verbatim + \tt + \def\par{\leavevmode\egroup\box0\endgraf}% + \catcode`\`=\active + \tabexpand + % 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`\{=12\catcode`\}=12 + \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] +%% Include LaTeX hack for completeness -- never know +%% \begingroup +%% \catcode`|=0 \catcode`[=1 +%% \catcode`]=2\catcode`\{=12\catcode`\}=12\catcode`\ =\active +%% \catcode`\\=12|gdef|doverbatim#1@end verbatim[ +%% #1|endgroup|def|Everbatim[]|end[verbatim]] +%% |endgroup +\begingroup + \catcode`\ =\active + \gdef\doverbatim#1@end verbatim{#1\end{verbatim}} +\endgroup +% +\def\verbatim{% + \def\Everbatim{\nonfillfinish\endgroup}% + \begingroup + \nonfillstart + \advance\leftskip by -\defbodyindent + \begingroup\setupverbatim\doverbatim +} + +% @verbatiminclude FILE - insert text of file in verbatim environment. +% +% Allow normal characters that we make active in the argument (a file name). +\def\verbatiminclude{% + \begingroup + \catcode`\\=12 + \catcode`~=12 + \catcode`^=12 + \catcode`_=12 + \catcode`|=12 + \catcode`<=12 + \catcode`>=12 + \catcode`+=12 + \parsearg\doverbatiminclude +} +\def\setupverbatiminclude{% + \begingroup + \nonfillstart + \advance\leftskip by -\defbodyindent + \begingroup\setupverbatim +} +% +\def\doverbatiminclude#1{% + % Restore active chars for included file. + \endgroup + \begingroup + \def\thisfile{#1}% + \expandafter\expandafter\setupverbatiminclude\input\thisfile + \endgroup\nonfillfinish\endgroup +} + +% @copying ... @end copying. +% Save the text away for @insertcopying later. +% +\newbox\copyingbox +% +\def\copying{\begingroup + \parindent = 0pt % looks wrong on title page + \def\Ecopying{\egroup\endgroup}% + \global\setbox\copyingbox = \vbox\bgroup +} + +% @insertcopying. +% +\def\insertcopying{\unvcopy\copyingbox} + + +\message{defuns,} +% @defun etc. + +% Allow user to change definition object font (\df) internally +\def\setdeffont #1 {\csname DEF#1\endcsname} + +\newskip\defbodyindent \defbodyindent=.4in +\newskip\defargsindent \defargsindent=50pt +\newskip\deftypemargin \deftypemargin=12pt +\newskip\deflastargmargin \deflastargmargin=18pt + +\newcount\parencount +% define \functionparens, which makes ( and ) and & do special things. +% \functionparens affects the group it is contained in. +\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 = ) + +{\activeparens % Now, smart parens don't turn on until &foo (see \amprm) + +% 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. +\global\let(=\lparen \global\let)=\rparen +\global\let[=\lbrack \global\let]=\rbrack + +\gdef\functionparens{\boldbrax\let&=\amprm\parencount=0 } +\gdef\boldbrax{\let(=\opnr\let)=\clnr\let[=\lbrb\let]=\rbrb} +% This is used to turn on special parens +% but make & act ordinary (given that it's active). +\gdef\boldbraxnoamp{\let(=\opnr\let)=\clnr\let[=\lbrb\let]=\rbrb\let&=\ampnr} + +% Definitions of (, ) and & used in args for functions. +% This is the definition of ( outside of all parentheses. +\gdef\oprm#1 {{\rm\char`\(}#1 \bf \let(=\opnested + \global\advance\parencount by 1 +} +% +% This is the definition of ( when already inside a level of parens. +\gdef\opnested{\char`\(\global\advance\parencount by 1 } +% +\gdef\clrm{% Print a paren in roman if it is taking us back to depth of 0. + % also in that case restore the outer-level definition of (. + \ifnum \parencount=1 {\rm \char `\)}\sl \let(=\oprm \else \char `\) \fi + \global\advance \parencount by -1 } +% If we encounter &foo, then turn on ()-hacking afterwards +\gdef\amprm#1 {{\rm\}\let(=\oprm \let)=\clrm\ } +% +\gdef\normalparens{\boldbrax\let&=\ampnr} +} % End of definition inside \activeparens +%% These parens (in \boldbrax) actually are a little bolder than the +%% contained text. This is especially needed for [ and ] +\def\opnr{{\sf\char`\(}\global\advance\parencount by 1 } +\def\clnr{{\sf\char`\)}\global\advance\parencount by -1 } +\let\ampnr = \& +\def\lbrb{{\bf\char`\[}} +\def\rbrb{{\bf\char`\]}} + +% Active &'s sneak into the index arguments, so make sure it's defined. +{ + \catcode`& = 13 + \global\let& = \ampnr +} + +% First, defname, which formats the header line itself. +% #1 should be the function name. +% #2 should be the type of definition, such as "Function". + +\def\defname #1#2{% +% Get the values of \leftskip and \rightskip as they were +% outside the @def... +\dimen2=\leftskip +\advance\dimen2 by -\defbodyindent +\noindent +\setbox0=\hbox{\hskip \deflastargmargin{\rm #2}\hskip \deftypemargin}% +\dimen0=\hsize \advance \dimen0 by -\wd0 % compute size for first line +\dimen1=\hsize \advance \dimen1 by -\defargsindent %size for continuations +\parshape 2 0in \dimen0 \defargsindent \dimen1 +% Now output arg 2 ("Function" or some such) +% ending at \deftypemargin from the right margin, +% but stuck inside a box of width 0 so it does not interfere with linebreaking +{% Adjust \hsize to exclude the ambient margins, +% so that \rightline will obey them. +\advance \hsize by -\dimen2 +\rlap{\rightline{{\rm #2}\hskip -1.25pc }}}% +% Make all lines underfull and no complaints: +\tolerance=10000 \hbadness=10000 +\advance\leftskip by -\defbodyindent +\exdentamount=\defbodyindent +{\df #1}\enskip % Generate function name +} + +% Actually process the body of a definition +% #1 should be the terminating control sequence, such as \Edefun. +% #2 should be the "another name" control sequence, such as \defunx. +% #3 should be the control sequence that actually processes the header, +% such as \defunheader. + +\def\defparsebody #1#2#3{\begingroup\inENV% Environment for definitionbody +\medbreak % +% Define the end token that this defining construct specifies +% so that it will exit this group. +\def#1{\endgraf\endgroup\medbreak}% +\def#2{\begingroup\obeylines\activeparens\spacesplit#3}% +\parindent=0in +\advance\leftskip by \defbodyindent +\exdentamount=\defbodyindent +\begingroup % +\catcode 61=\active % 61 is `=' +\obeylines\activeparens\spacesplit#3} + +% #1 is the \E... control sequence to end the definition (which we define). +% #2 is the \...x control sequence for consecutive fns (which we define). +% #3 is the control sequence to call to resume processing. +% #4, delimited by the space, is the class name. +% +\def\defmethparsebody#1#2#3#4 {\begingroup\inENV % +\medbreak % +% Define the end token that this defining construct specifies +% so that it will exit this group. +\def#1{\endgraf\endgroup\medbreak}% +\def#2##1 {\begingroup\obeylines\activeparens\spacesplit{#3{##1}}}% +\parindent=0in +\advance\leftskip by \defbodyindent +\exdentamount=\defbodyindent +\begingroup\obeylines\activeparens\spacesplit{#3{#4}}} + +% Used for @deftypemethod and @deftypeivar. +% #1 is the \E... control sequence to end the definition (which we define). +% #2 is the \...x control sequence for consecutive fns (which we define). +% #3 is the control sequence to call to resume processing. +% #4, delimited by a space, is the class name. +% #5 is the method's return type. +% +\def\deftypemethparsebody#1#2#3#4 #5 {\begingroup\inENV + \medbreak + \def#1{\endgraf\endgroup\medbreak}% + \def#2##1 ##2 {\begingroup\obeylines\activeparens\spacesplit{#3{##1}{##2}}}% + \parindent=0in + \advance\leftskip by \defbodyindent + \exdentamount=\defbodyindent + \begingroup\obeylines\activeparens\spacesplit{#3{#4}{#5}}} + +% Used for @deftypeop. The change from \deftypemethparsebody is an +% extra argument at the beginning which is the `category', instead of it +% being the hardwired string `Method' or `Instance Variable'. We have +% to account for this both in the \...x definition and in parsing the +% input at hand. Thus also need a control sequence (passed as #5) for +% the \E... definition to assign the category name to. +% +\def\deftypeopparsebody#1#2#3#4#5 #6 {\begingroup\inENV + \medbreak + \def#1{\endgraf\endgroup\medbreak}% + \def#2##1 ##2 ##3 {% + \def#4{##1}% + \begingroup\obeylines\activeparens\spacesplit{#3{##2}{##3}}}% + \parindent=0in + \advance\leftskip by \defbodyindent + \exdentamount=\defbodyindent + \begingroup\obeylines\activeparens\spacesplit{#3{#5}{#6}}} + +\def\defopparsebody #1#2#3#4#5 {\begingroup\inENV % +\medbreak % +% Define the end token that this defining construct specifies +% so that it will exit this group. +\def#1{\endgraf\endgroup\medbreak}% +\def#2##1 ##2 {\def#4{##1}% +\begingroup\obeylines\activeparens\spacesplit{#3{##2}}}% +\parindent=0in +\advance\leftskip by \defbodyindent +\exdentamount=\defbodyindent +\begingroup\obeylines\activeparens\spacesplit{#3{#5}}} + +% These parsing functions are similar to the preceding ones +% except that they do not make parens into active characters. +% These are used for "variables" since they have no arguments. + +\def\defvarparsebody #1#2#3{\begingroup\inENV% Environment for definitionbody +\medbreak % +% Define the end token that this defining construct specifies +% so that it will exit this group. +\def#1{\endgraf\endgroup\medbreak}% +\def#2{\begingroup\obeylines\spacesplit#3}% +\parindent=0in +\advance\leftskip by \defbodyindent +\exdentamount=\defbodyindent +\begingroup % +\catcode 61=\active % +\obeylines\spacesplit#3} + +% This is used for \def{tp,vr}parsebody. It could probably be used for +% some of the others, too, with some judicious conditionals. +% +\def\parsebodycommon#1#2#3{% + \begingroup\inENV % + \medbreak % + % Define the end token that this defining construct specifies + % so that it will exit this group. + \def#1{\endgraf\endgroup\medbreak}% + \def#2##1 {\begingroup\obeylines\spacesplit{#3{##1}}}% + \parindent=0in + \advance\leftskip by \defbodyindent + \exdentamount=\defbodyindent + \begingroup\obeylines +} + +\def\defvrparsebody#1#2#3#4 {% + \parsebodycommon{#1}{#2}{#3}% + \spacesplit{#3{#4}}% +} + +% This loses on `@deftp {Data Type} {struct termios}' -- it thinks the +% type is just `struct', because we lose the braces in `{struct +% termios}' when \spacesplit reads its undelimited argument. Sigh. +% \let\deftpparsebody=\defvrparsebody +% +% So, to get around this, we put \empty in with the type name. That +% way, TeX won't find exactly `{...}' as an undelimited argument, and +% won't strip off the braces. +% +\def\deftpparsebody #1#2#3#4 {% + \parsebodycommon{#1}{#2}{#3}% + \spacesplit{\parsetpheaderline{#3{#4}}}\empty +} + +% Fine, but then we have to eventually remove the \empty *and* the +% braces (if any). That's what this does. +% +\def\removeemptybraces\empty#1\relax{#1} + +% After \spacesplit has done its work, this is called -- #1 is the final +% thing to call, #2 the type name (which starts with \empty), and #3 +% (which might be empty) the arguments. +% +\def\parsetpheaderline#1#2#3{% + #1{\removeemptybraces#2\relax}{#3}% +}% + +\def\defopvarparsebody #1#2#3#4#5 {\begingroup\inENV % +\medbreak % +% Define the end token that this defining construct specifies +% so that it will exit this group. +\def#1{\endgraf\endgroup\medbreak}% +\def#2##1 ##2 {\def#4{##1}% +\begingroup\obeylines\spacesplit{#3{##2}}}% +\parindent=0in +\advance\leftskip by \defbodyindent +\exdentamount=\defbodyindent +\begingroup\obeylines\spacesplit{#3{#5}}} + +% Split up #2 at the first space token. +% call #1 with two arguments: +% the first is all of #2 before the space token, +% the second is all of #2 after that space token. +% If #2 contains no space token, all of it is passed as the first arg +% and the second is passed as empty. + +{\obeylines +\gdef\spacesplit#1#2^^M{\endgroup\spacesplitfoo{#1}#2 \relax\spacesplitfoo}% +\long\gdef\spacesplitfoo#1#2 #3#4\spacesplitfoo{% +\ifx\relax #3% +#1{#2}{}\else #1{#2}{#3#4}\fi}} + +% So much for the things common to all kinds of definitions. + +% Define @defun. + +% First, define the processing that is wanted for arguments of \defun +% Use this to expand the args and terminate the paragraph they make up + +\def\defunargs#1{\functionparens \sl +% Expand, preventing hyphenation at `-' chars. +% Note that groups don't affect changes in \hyphenchar. +% Set the font temporarily and use \font in case \setfont made \tensl a macro. +{\tensl\hyphenchar\font=0}% +#1% +{\tensl\hyphenchar\font=45}% +\ifnum\parencount=0 \else \errmessage{Unbalanced parentheses in @def}\fi% +\interlinepenalty=10000 +\advance\rightskip by 0pt plus 1fil +\endgraf\nobreak\vskip -\parskip\nobreak +} + +\def\deftypefunargs #1{% +% Expand, preventing hyphenation at `-' chars. +% Note that groups don't affect changes in \hyphenchar. +% Use \boldbraxnoamp, not \functionparens, so that & is not special. +\boldbraxnoamp +\tclose{#1}% avoid \code because of side effects on active chars +\interlinepenalty=10000 +\advance\rightskip by 0pt plus 1fil +\endgraf\nobreak\vskip -\parskip\nobreak +} + +% Do complete processing of one @defun or @defunx line already parsed. + +% @deffn Command forward-char nchars + +\def\deffn{\defmethparsebody\Edeffn\deffnx\deffnheader} + +\def\deffnheader #1#2#3{\doind {fn}{\code{#2}}% +\begingroup\defname {#2}{#1}\defunargs{#3}\endgroup % +\catcode 61=\other % Turn off change made in \defparsebody +} + +% @defun == @deffn Function + +\def\defun{\defparsebody\Edefun\defunx\defunheader} + +\def\defunheader #1#2{\doind {fn}{\code{#1}}% Make entry in function index +\begingroup\defname {#1}{\putwordDeffunc}% +\defunargs {#2}\endgroup % +\catcode 61=\other % Turn off change made in \defparsebody +} + +% @deftypefun int foobar (int @var{foo}, float @var{bar}) + +\def\deftypefun{\defparsebody\Edeftypefun\deftypefunx\deftypefunheader} + +% #1 is the data type. #2 is the name and args. +\def\deftypefunheader #1#2{\deftypefunheaderx{#1}#2 \relax} +% #1 is the data type, #2 the name, #3 the args. +\def\deftypefunheaderx #1#2 #3\relax{% +\doind {fn}{\code{#2}}% Make entry in function index +\begingroup\defname {\defheaderxcond#1\relax$.$#2}{\putwordDeftypefun}% +\deftypefunargs {#3}\endgroup % +\catcode 61=\other % Turn off change made in \defparsebody +} + +% @deftypefn {Library Function} int foobar (int @var{foo}, float @var{bar}) + +\def\deftypefn{\defmethparsebody\Edeftypefn\deftypefnx\deftypefnheader} + +% \defheaderxcond#1\relax$.$ +% puts #1 in @code, followed by a space, but does nothing if #1 is null. +\def\defheaderxcond#1#2$.${\ifx#1\relax\else\code{#1#2} \fi} + +% #1 is the classification. #2 is the data type. #3 is the name and args. +\def\deftypefnheader #1#2#3{\deftypefnheaderx{#1}{#2}#3 \relax} +% #1 is the classification, #2 the data type, #3 the name, #4 the args. +\def\deftypefnheaderx #1#2#3 #4\relax{% +\doind {fn}{\code{#3}}% Make entry in function index +\begingroup +\normalparens % notably, turn off `&' magic, which prevents +% at least some C++ text from working +\defname {\defheaderxcond#2\relax$.$#3}{#1}% +\deftypefunargs {#4}\endgroup % +\catcode 61=\other % Turn off change made in \defparsebody +} + +% @defmac == @deffn Macro + +\def\defmac{\defparsebody\Edefmac\defmacx\defmacheader} + +\def\defmacheader #1#2{\doind {fn}{\code{#1}}% Make entry in function index +\begingroup\defname {#1}{\putwordDefmac}% +\defunargs {#2}\endgroup % +\catcode 61=\other % Turn off change made in \defparsebody +} + +% @defspec == @deffn Special Form + +\def\defspec{\defparsebody\Edefspec\defspecx\defspecheader} + +\def\defspecheader #1#2{\doind {fn}{\code{#1}}% Make entry in function index +\begingroup\defname {#1}{\putwordDefspec}% +\defunargs {#2}\endgroup % +\catcode 61=\other % Turn off change made in \defparsebody +} + +% @defop CATEGORY CLASS OPERATION ARG... +% +\def\defop #1 {\def\defoptype{#1}% +\defopparsebody\Edefop\defopx\defopheader\defoptype} +% +\def\defopheader#1#2#3{% +\dosubind {fn}{\code{#2}}{\putwordon\ #1}% Make entry in function index +\begingroup\defname {#2}{\defoptype\ \putwordon\ #1}% +\defunargs {#3}\endgroup % +} + +% @deftypeop CATEGORY CLASS TYPE OPERATION ARG... +% +\def\deftypeop #1 {\def\deftypeopcategory{#1}% + \deftypeopparsebody\Edeftypeop\deftypeopx\deftypeopheader + \deftypeopcategory} +% +% #1 is the class name, #2 the data type, #3 the operation name, #4 the args. +\def\deftypeopheader#1#2#3#4{% + \dosubind{fn}{\code{#3}}{\putwordon\ \code{#1}}% entry in function index + \begingroup + \defname{\defheaderxcond#2\relax$.$#3} + {\deftypeopcategory\ \putwordon\ \code{#1}}% + \deftypefunargs{#4}% + \endgroup +} + +% @deftypemethod CLASS TYPE METHOD ARG... +% +\def\deftypemethod{% + \deftypemethparsebody\Edeftypemethod\deftypemethodx\deftypemethodheader} +% +% #1 is the class name, #2 the data type, #3 the method name, #4 the args. +\def\deftypemethodheader#1#2#3#4{% + \dosubind{fn}{\code{#3}}{\putwordon\ \code{#1}}% entry in function index + \begingroup + \defname{\defheaderxcond#2\relax$.$#3}{\putwordMethodon\ \code{#1}}% + \deftypefunargs{#4}% + \endgroup +} + +% @deftypeivar CLASS TYPE VARNAME +% +\def\deftypeivar{% + \deftypemethparsebody\Edeftypeivar\deftypeivarx\deftypeivarheader} +% +% #1 is the class name, #2 the data type, #3 the variable name. +\def\deftypeivarheader#1#2#3{% + \dosubind{vr}{\code{#3}}{\putwordof\ \code{#1}}% entry in variable index + \begingroup + \defname{\defheaderxcond#2\relax$.$#3} + {\putwordInstanceVariableof\ \code{#1}}% + \defvarargs{#3}% + \endgroup +} + +% @defmethod == @defop Method +% +\def\defmethod{\defmethparsebody\Edefmethod\defmethodx\defmethodheader} +% +% #1 is the class name, #2 the method name, #3 the args. +\def\defmethodheader#1#2#3{% + \dosubind{fn}{\code{#2}}{\putwordon\ \code{#1}}% entry in function index + \begingroup + \defname{#2}{\putwordMethodon\ \code{#1}}% + \defunargs{#3}% + \endgroup +} + +% @defcv {Class Option} foo-class foo-flag + +\def\defcv #1 {\def\defcvtype{#1}% +\defopvarparsebody\Edefcv\defcvx\defcvarheader\defcvtype} + +\def\defcvarheader #1#2#3{% +\dosubind {vr}{\code{#2}}{\putwordof\ #1}% Make entry in var index +\begingroup\defname {#2}{\defcvtype\ \putwordof\ #1}% +\defvarargs {#3}\endgroup % +} + +% @defivar CLASS VARNAME == @defcv {Instance Variable} CLASS VARNAME +% +\def\defivar{\defvrparsebody\Edefivar\defivarx\defivarheader} +% +\def\defivarheader#1#2#3{% + \dosubind {vr}{\code{#2}}{\putwordof\ #1}% entry in var index + \begingroup + \defname{#2}{\putwordInstanceVariableof\ #1}% + \defvarargs{#3}% + \endgroup +} + +% @defvar +% First, define the processing that is wanted for arguments of @defvar. +% This is actually simple: just print them in roman. +% This must expand the args and terminate the paragraph they make up +\def\defvarargs #1{\normalparens #1% +\interlinepenalty=10000 +\endgraf\nobreak\vskip -\parskip\nobreak} + +% @defvr Counter foo-count + +\def\defvr{\defvrparsebody\Edefvr\defvrx\defvrheader} + +\def\defvrheader #1#2#3{\doind {vr}{\code{#2}}% +\begingroup\defname {#2}{#1}\defvarargs{#3}\endgroup} + +% @defvar == @defvr Variable + +\def\defvar{\defvarparsebody\Edefvar\defvarx\defvarheader} + +\def\defvarheader #1#2{\doind {vr}{\code{#1}}% Make entry in var index +\begingroup\defname {#1}{\putwordDefvar}% +\defvarargs {#2}\endgroup % +} + +% @defopt == @defvr {User Option} + +\def\defopt{\defvarparsebody\Edefopt\defoptx\defoptheader} + +\def\defoptheader #1#2{\doind {vr}{\code{#1}}% Make entry in var index +\begingroup\defname {#1}{\putwordDefopt}% +\defvarargs {#2}\endgroup % +} + +% @deftypevar int foobar + +\def\deftypevar{\defvarparsebody\Edeftypevar\deftypevarx\deftypevarheader} + +% #1 is the data type. #2 is the name, perhaps followed by text that +% is actually part of the data type, which should not be put into the index. +\def\deftypevarheader #1#2{% +\dovarind#2 \relax% Make entry in variables index +\begingroup\defname {\defheaderxcond#1\relax$.$#2}{\putwordDeftypevar}% +\interlinepenalty=10000 +\endgraf\nobreak\vskip -\parskip\nobreak +\endgroup} +\def\dovarind#1 #2\relax{\doind{vr}{\code{#1}}} + +% @deftypevr {Global Flag} int enable + +\def\deftypevr{\defvrparsebody\Edeftypevr\deftypevrx\deftypevrheader} + +\def\deftypevrheader #1#2#3{\dovarind#3 \relax% +\begingroup\defname {\defheaderxcond#2\relax$.$#3}{#1} +\interlinepenalty=10000 +\endgraf\nobreak\vskip -\parskip\nobreak +\endgroup} + +% Now define @deftp +% Args are printed in bold, a slight difference from @defvar. + +\def\deftpargs #1{\bf \defvarargs{#1}} + +% @deftp Class window height width ... + +\def\deftp{\deftpparsebody\Edeftp\deftpx\deftpheader} + +\def\deftpheader #1#2#3{\doind {tp}{\code{#2}}% +\begingroup\defname {#2}{#1}\deftpargs{#3}\endgroup} + +% These definitions are used if you use @defunx (etc.) +% anywhere other than immediately after a @defun or @defunx. +% +\def\defcvx#1 {\errmessage{@defcvx in invalid context}} +\def\deffnx#1 {\errmessage{@deffnx in invalid context}} +\def\defivarx#1 {\errmessage{@defivarx in invalid context}} +\def\defmacx#1 {\errmessage{@defmacx in invalid context}} +\def\defmethodx#1 {\errmessage{@defmethodx in invalid context}} +\def\defoptx #1 {\errmessage{@defoptx in invalid context}} +\def\defopx#1 {\errmessage{@defopx in invalid context}} +\def\defspecx#1 {\errmessage{@defspecx in invalid context}} +\def\deftpx#1 {\errmessage{@deftpx in invalid context}} +\def\deftypefnx#1 {\errmessage{@deftypefnx in invalid context}} +\def\deftypefunx#1 {\errmessage{@deftypefunx in invalid context}} +\def\deftypeivarx#1 {\errmessage{@deftypeivarx in invalid context}} +\def\deftypemethodx#1 {\errmessage{@deftypemethodx in invalid context}} +\def\deftypeopx#1 {\errmessage{@deftypeopx in invalid context}} +\def\deftypevarx#1 {\errmessage{@deftypevarx in invalid context}} +\def\deftypevrx#1 {\errmessage{@deftypevrx in invalid context}} +\def\defunx#1 {\errmessage{@defunx in invalid context}} +\def\defvarx#1 {\errmessage{@defvarx in invalid context}} +\def\defvrx#1 {\errmessage{@defvrx in invalid context}} + + +\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\scanmacro#1{% + \begingroup \newlinechar`\^^M + % Undo catcode changes of \startcontents and \doprintindex + \catcode`\@=0 \catcode`\\=12 \escapechar=`\@ + % Append \endinput to make sure that TeX does not see the ending newline. + \toks0={#1\endinput}% + \immediate\openout\macscribble=\jobname.tmp + \immediate\write\macscribble{\the\toks0}% + \immediate\closeout\macscribble + \let\xeatspaces\eatspaces + \input \jobname.tmp + \endgroup +} +\else +\def\scanmacro#1{% +\begingroup \newlinechar`\^^M +% Undo catcode changes of \startcontents and \doprintindex +\catcode`\@=0 \catcode`\\=12 \escapechar=`\@ +\let\xeatspaces\eatspaces\scantokens{#1\endinput}\endgroup} +\fi + +\newcount\paramno % Count of parameters +\newtoks\macname % Macro name +\newif\ifrecursive % Is it recursive? +\def\macrolist{} % List of all defined macros in the form + % \do\macro1\do\macro2... + +% Utility routines. +% Thisdoes \let #1 = #2, except with \csnames. +\def\cslet#1#2{% +\expandafter\expandafter +\expandafter\let +\expandafter\expandafter +\csname#1\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=12\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\macrobodyctxt{% + \catcode`\~=12 + \catcode`\^=12 + \catcode`\_=12 + \catcode`\|=12 + \catcode`\<=12 + \catcode`\>=12 + \catcode`\+=12 + \catcode`\{=12 + \catcode`\}=12 + \catcode`\@=12 + \catcode`\^^M=12 + \usembodybackslash} + +\def\macroargctxt{% + \catcode`\~=12 + \catcode`\^=12 + \catcode`\_=12 + \catcode`\|=12 + \catcode`\<=12 + \catcode`\>=12 + \catcode`\+=12 + \catcode`\@=12 + \catcode`\\=12} + +% \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% + % Add the macroname to \macrolist + \toks0 = \expandafter{\macrolist\do}% + \xdef\macrolist{\the\toks0 + \expandafter\noexpand\csname\the\macname\endcsname}% + \fi + \begingroup \macrobodyctxt + \ifrecursive \expandafter\parsermacbody + \else \expandafter\parsemacbody + \fi} + +\def\unmacro{\parsearg\unmacroxxx} +\def\unmacroxxx#1{% + \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 + \edef\tempa{\expandafter\noexpand\csname#1\endcsname}% + \def\do##1{% + \def\tempb{##1}% + \ifx\tempa\tempb + % remove this + \else + \toks0 = \expandafter{\newmacrolist\do}% + \edef\newmacrolist{\the\toks0\expandafter\noexpand\tempa}% + \fi}% + \def\newmacrolist{}% + % Execute macro list to define \newmacrolist + \macrolist + \global\let\macrolist\newmacrolist + \endgroup + \else + \errmessage{Macro #1 not defined}% + \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\next=#1\futurelet\nchar\braceorlinexxx} +\def\braceorlinexxx{% + \ifx\nchar\bgroup\else + \expandafter\parsearg + \fi \next} + +% We mant to disable all macros during \shipout so that they are not +% expanded by \write. +\def\turnoffmacros{\begingroup \def\do##1{\let\noexpand##1=\relax}% + \edef\next{\macrolist}\expandafter\endgroup\next} + + +% @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{\begingroup\obeyspaces\parsearg\aliasxxx} +\def\aliasxxx #1{\aliasyyy#1\relax} +\def\aliasyyy #1=#2\relax{\ignoreactivespaces +\edef\next{\global\let\expandafter\noexpand\csname#1\endcsname=% + \expandafter\noexpand\csname#2\endcsname}% +\expandafter\endgroup\next} + + +\message{cross references,} +% @xref etc. + +\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 job is to define \lastnode. +\def\node{\ENVcheck\parsearg\nodezzz} +\def\nodezzz#1{\nodexxx [#1,]} +\def\nodexxx[#1,#2]{\gdef\lastnode{#1}} +\let\nwnode=\node +\let\lastnode=\relax + +% The sectioning commands (@chapter, etc.) call these. +\def\donoderef{% + \ifx\lastnode\relax\else + \expandafter\expandafter\expandafter\setref{\lastnode}% + {Ysectionnumberandtype}% + \global\let\lastnode=\relax + \fi +} +\def\unnumbnoderef{% + \ifx\lastnode\relax\else + \expandafter\expandafter\expandafter\setref{\lastnode}{Ynothing}% + \global\let\lastnode=\relax + \fi +} +\def\appendixnoderef{% + \ifx\lastnode\relax\else + \expandafter\expandafter\expandafter\setref{\lastnode}% + {Yappendixletterandtype}% + \global\let\lastnode=\relax + \fi +} + + +% @anchor{NAME} -- define xref target at arbitrary point. +% +\newcount\savesfregister +\gdef\savesf{\relax \ifhmode \savesfregister=\spacefactor \fi} +\gdef\restoresf{\relax \ifhmode \spacefactor=\savesfregister \fi} +\gdef\anchor#1{\savesf \setref{#1}{Ynothing}\restoresf \ignorespaces} + +% \setref{NAME}{SNT} defines a cross-reference point NAME, namely +% NAME-title, NAME-pg, and NAME-SNT. Called from \foonoderef. We have +% to set \indexdummies so commands such as @code in a section title +% aren't expanded. It would be nicer not to expand the titles in the +% first place, but there's so many layers that that is hard to do. +% +\def\setref#1#2{{% + \indexdummies + \pdfmkdest{#1}% + \dosetq{#1-title}{Ytitle}% + \dosetq{#1-pg}{Ypagenumber}% + \dosetq{#1-snt}{#2}% +}} + +% @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\printednodename{\ignorespaces #3}% + \setbox1=\hbox{\printedmanual}% + \setbox0=\hbox{\printednodename}% + \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\printednodename{\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\printednodename{\ignorespaces #1}% + \else + \ifhavexrefs + % We know the real title if we have the xref values. + \def\printednodename{\refx{#1-title}{}}% + \else + % Otherwise just copy the Info node name. + \def\printednodename{\ignorespaces #1}% + \fi% + \fi + \fi + \fi + % + % 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. + \ifpdf + \leavevmode + \getfilename{#4}% + {\normalturnoffactive + \ifnum\filenamelength>0 + \startlink attr{/Border [0 0 0]}% + goto file{\the\filename.pdf} name{#1}% + \else + \startlink attr{/Border [0 0 0]}% + goto name{#1}% + \fi + }% + \linkcolor + \fi + % + \ifdim \wd1 > 0pt + \putwordsection{} ``\printednodename'' \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. + {\normalturnoffactive + % 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 + }% + % [mynode], + [\printednodename],\space + % page 3 + \turnoffactive \putwordpage\tie\refx{#1-pg}{}% + \fi + \endlink +\endgroup} + +% \dosetq is the interface for calls from other macros + +% Use \normalturnoffactive so that punctuation chars such as underscore +% and backslash work in node names. (\turnoffactive doesn't do \.) +\def\dosetq#1#2{% + {\let\folio=0% + \normalturnoffactive + \edef\next{\write\auxfile{\internalsetq{#1}{#2}}}% + \iflinks + \next + \fi + }% +} + +% \internalsetq {foo}{page} expands into +% CHARACTERS 'xrdef {foo}{...expansion of \Ypage...} +% When the aux file is read, ' is the escape character + +\def\internalsetq #1#2{'xrdef {#1}{\csname #2\endcsname}} + +% Things to be expanded by \internalsetq + +\def\Ypagenumber{\folio} + +\def\Ytitle{\thissection} + +\def\Ynothing{} + +\def\Ysectionnumberandtype{% +\ifnum\secno=0 \putwordChapter\xreftie\the\chapno % +\else \ifnum \subsecno=0 \putwordSection\xreftie\the\chapno.\the\secno % +\else \ifnum \subsubsecno=0 % +\putwordSection\xreftie\the\chapno.\the\secno.\the\subsecno % +\else % +\putwordSection\xreftie\the\chapno.\the\secno.\the\subsecno.\the\subsubsecno % +\fi \fi \fi } + +\def\Yappendixletterandtype{% +\ifnum\secno=0 \putwordAppendix\xreftie'char\the\appendixno{}% +\else \ifnum \subsecno=0 \putwordSection\xreftie'char\the\appendixno.\the\secno % +\else \ifnum \subsubsecno=0 % +\putwordSection\xreftie'char\the\appendixno.\the\secno.\the\subsecno % +\else % +\putwordSection\xreftie'char\the\appendixno.\the\secno.\the\subsecno.\the\subsubsecno % +\fi \fi \fi } + +\gdef\xreftie{'tie} + +% 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 % Non-3.0. +\else + \def\linenumber{\the\inputlineno:\space} +\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{% + \expandafter\ifx\csname X#1\endcsname\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. + \csname X#1\endcsname + \fi + #2% Output the suffix in any case. +} + +% This is the macro invoked by entries in the aux file. +% +\def\xrdef#1{\begingroup + % Reenable \ as an escape while reading the second argument. + \catcode`\\ = 0 + \afterassignment\endgroup + \expandafter\gdef\csname X#1\endcsname +} + +% Read the last existing aux file, if any. No error if none exists. +\def\readauxfile{\begingroup + \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 + \catcode`\@=\other + \catcode`\^=\other + % It was suggested to define this as 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 + \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 + % Make the characters 128-255 be printing characters + {% + \count 1=128 + \def\loop{% + \catcode\count 1=\other + \advance\count 1 by 1 + \ifnum \count 1<256 \loop \fi + }% + }% + % The aux file uses ' as the escape (for now). + % Turn off \ as an escape so we do not lose on + % entries which were dumped with control sequences in their names. + % For example, 'xrdef {$\leq $-fun}{page ...} made by @defun ^^ + % Reference to such entries still does not work the way one would wish, + % but at least they do not bomb out when the aux file is read in. + \catcode`\{=1 + \catcode`\}=2 + \catcode`\%=\other + \catcode`\'=0 + \catcode`\\=\other + % + \openin 1 \jobname.aux + \ifeof 1 \else + \closein 1 + \input \jobname.aux + \global\havexrefstrue + \global\warnedobstrue + \fi + % Open the new aux file. TeX will close it automatically at exit. + \openout\auxfile=\jobname.aux +\endgroup} + + +% 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 + +\let\ptexfootnote=\footnote + +{\catcode `\@=11 +% +% Auto-number footnotes. Otherwise like plain. +\gdef\footnote{% + \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}\/\fi + % + % Remove inadvertent blank space before typesetting the footnote number. + \unskip + \thisfootno\@sf + \footnotezzz +}% + +% 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 fail inside footnotes because the tokens are fixed when +% the footnote is read. --karl, 16nov96. +% +\long\gdef\footnotezzz{\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. + \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 +} +\def\fo@t{\ifcat\bgroup\noexpand\next \let\next\f@@t + \else\let\next\f@t\fi \next} +\def\f@@t{\bgroup\aftergroup\@foot\let\next} +\def\f@t#1{#1\@foot} +\def\@foot{\strut\par\egroup} + +}%end \catcode `\@=11 + +% @| 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 + }% + }% +} + +% 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} + +% @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 + \closein 1 + % Do not bother showing banner with post-v2.7 epsf.tex (available in + % doc/epsf.tex until it shows up on ctan). + \def\epsfannounce{\toks0 = }% + \input epsf.tex +\fi +% +% 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\hss + \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 \hss \egroup \bigbreak \fi % space after the image +\endgroup} + + +\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. +% +\def\documentlanguage{\parsearg\dodocumentlanguage} +\def\dodocumentlanguage#1{% + \tex % read txi-??.tex file in plain TeX. + % Read the file if it exists. + \openin 1 txi-#1.tex + \ifeof1 + \errhelp = \nolanghelp + \errmessage{Cannot read language file txi-#1.tex}% + \let\temp = \relax + \else + \def\temp{\input txi-#1.tex }% + \fi + \temp + \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. 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{% + \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 + % + \setleading{\textleading} + % + \parindent = \defaultparindent + \setemergencystretch +} + +% Use `small' versions. +% +\def\smallenvironments{% + \let\smalldisplay = \smalldisplayx + \let\smallexample = \smalllispx + \let\smallformat = \smallformatx + \let\smalllisp = \smalllispx +} + +% @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}% +}} + +% Use @smallbook to reset parameters for 7x9.5 (or so) format. +\def\smallbook{{\globaldefs = 1 + \parskip = 2pt plus 1pt + \textleading = 12pt + % + \internalpagesizes{7.5in}{5.in}{\voffset}{.25in}{\bindingoffset}{16pt}% + % + \lispnarrowing = 0.3in + \tolerance = 700 + \hfuzz = 1pt + \contentsrightmargin = 0pt + \deftypemargin = 0pt + \defbodyindent = .5cm + \smallenvironments +}} + +% Use @afourpaper to print on European A4 paper. +\def\afourpaper{{\globaldefs = 1 + \parskip = 3pt plus 2pt minus 1pt + \textleading = 12pt + % + \internalpagesizes{53\baselineskip}{160mm}{\voffset}{4mm}{\bindingoffset}{44pt}% + % + \tolerance = 700 + \hfuzz = 1pt +}} + +% 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{166mm}{120mm}{\voffset}{-8mm}{\bindingoffset}{8pt}% + % + \lispnarrowing = 0.2in + \tolerance = 800 + \hfuzz = 1.2pt + \contentsrightmargin = 0mm + \deftypemargin = 0pt + \defbodyindent = 2mm + \tableindent = 12mm + % + \smallenvironments +}} + +% A specific text layout, 24x15cm overall, intended for A4 paper. Top margin +% 29mm, hence bottom margin 28mm, nominal side margin 3cm. +\def\afourlatex{{\globaldefs = 1 + \textleading = 13.6pt + % + \afourpaper + \internalpagesizes{237mm}{150mm}{3.6mm}{3.6mm}{3mm}{7mm}% + % + % Must explicitly reset to 0 because we call \afourpaper, apparently, + % although this does not entirely make sense. + \globaldefs = 0 +}} + +% Use @afourwide to print on European A4 paper in wide format. +\def\afourwide{% + \afourpaper + \internalpagesizes{6.5in}{9.5in}{\hoffset}{\normaloffset}{\bindingoffset}{7mm}% +} + +% @pagesizes TEXTHEIGHT[,TEXTWIDTH] +% Perhaps we should allow setting the margins, \topskip, \parskip, +% and/or leading, also. Or perhaps we should compute them somehow. +% +\def\pagesizes{\parsearg\pagesizesxxx} +\def\pagesizesxxx#1{\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}% + % + \internalpagesizes{#1}{\hsize}{\voffset}{\normaloffset}{\bindingoffset}{44pt}% +}} + +% 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 ttfont +% where it can probably just be output, 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\_} +% Subroutine for the previous macro. +\def\_{\leavevmode \kern.06em \vbox{\hrule width.3em height.1ex}} + +\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 +%\catcode 27=\active +%\def^^[{$\diamondsuit$} + +% Set up an active definition for =, but don't enable it most of the time. +{\catcode`\==\active +\global\def={{\tt \char 61}}} + +\catcode`+=\active +\catcode`\_=\active + +% 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} + +\catcode`\@=0 + +% \rawbackslashxx output one backslash character in current font +\global\chardef\rawbackslashxx=`\\ +%{\catcode`\\=\other +%@gdef@rawbackslashxx{\}} + +% \rawbackslash redefines \ as input to do \rawbackslashxx. +{\catcode`\\=\active +@gdef@rawbackslash{@let\=@rawbackslashxx }} + +% \normalbackslash outputs one backslash in fixed width font. +\def\normalbackslash{{\tt\rawbackslashxx}} + +% \catcode 17=0 % Define control-q +\catcode`\\=\active + +% Used sometimes to turn off (effectively) the active characters +% even after parsing them. +@def@turnoffactive{@let"=@normaldoublequote +@let\=@realbackslash +@let~=@normaltilde +@let^=@normalcaret +@let_=@normalunderscore +@let|=@normalverticalbar +@let<=@normalless +@let>=@normalgreater +@let+=@normalplus +@let$=@normaldollar}%$ font-lock fix + +@def@normalturnoffactive{@let"=@normaldoublequote +@let\=@normalbackslash +@let~=@normaltilde +@let^=@normalcaret +@let_=@normalunderscore +@let|=@normalverticalbar +@let<=@normalless +@let>=@normalgreater +@let+=@normalplus +@let$=@normaldollar}%$ font-lock fix + +% 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 back turn 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 Set initial fonts. +@textfonts +@rm + + +@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: diff --git a/src/apps/bin/diffutils-2.8.1/configure b/src/apps/bin/diffutils-2.8.1/configure new file mode 100755 index 0000000000..daa6efbf18 --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/configure @@ -0,0 +1,15482 @@ +#! /bin/sh +# Guess values for system-dependent variables and create Makefiles. +# Generated by GNU Autoconf 2.53 for GNU diffutils 2.8.1. +# +# Report bugs to . +# +# Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002 +# Free Software Foundation, Inc. +# This configure script is free software; the Free Software Foundation +# gives unlimited permission to copy, distribute and modify it. +if mkdir -p . 2>/dev/null; then + as_mkdir_p=: +else + as_mkdir_p=false +fi + + +if expr a : '\(a\)' >/dev/null 2>&1; then + as_expr=expr +else + as_expr=false +fi + + +## --------------------- ## +## M4sh Initialization. ## +## --------------------- ## + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: +elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then + set -o posix +fi + +# NLS nuisances. +# Support unset when possible. +if (FOO=FOO; unset FOO) >/dev/null 2>&1; then + as_unset=unset +else + as_unset=false +fi + +(set +x; test -n "`(LANG=C; export LANG) 2>&1`") && + { $as_unset LANG || test "${LANG+set}" != set; } || + { LANG=C; export LANG; } +(set +x; test -n "`(LC_ALL=C; export LC_ALL) 2>&1`") && + { $as_unset LC_ALL || test "${LC_ALL+set}" != set; } || + { LC_ALL=C; export LC_ALL; } +(set +x; test -n "`(LC_TIME=C; export LC_TIME) 2>&1`") && + { $as_unset LC_TIME || test "${LC_TIME+set}" != set; } || + { LC_TIME=C; export LC_TIME; } +(set +x; test -n "`(LC_CTYPE=C; export LC_CTYPE) 2>&1`") && + { $as_unset LC_CTYPE || test "${LC_CTYPE+set}" != set; } || + { LC_CTYPE=C; export LC_CTYPE; } +(set +x; test -n "`(LANGUAGE=C; export LANGUAGE) 2>&1`") && + { $as_unset LANGUAGE || test "${LANGUAGE+set}" != set; } || + { LANGUAGE=C; export LANGUAGE; } +(set +x; test -n "`(LC_COLLATE=C; export LC_COLLATE) 2>&1`") && + { $as_unset LC_COLLATE || test "${LC_COLLATE+set}" != set; } || + { LC_COLLATE=C; export LC_COLLATE; } +(set +x; test -n "`(LC_NUMERIC=C; export LC_NUMERIC) 2>&1`") && + { $as_unset LC_NUMERIC || test "${LC_NUMERIC+set}" != set; } || + { LC_NUMERIC=C; export LC_NUMERIC; } +(set +x; test -n "`(LC_MESSAGES=C; export LC_MESSAGES) 2>&1`") && + { $as_unset LC_MESSAGES || test "${LC_MESSAGES+set}" != set; } || + { LC_MESSAGES=C; export LC_MESSAGES; } + + +# Name of the executable. +as_me=`(basename "$0") 2>/dev/null || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)$' \| \ + . : '\(.\)' 2>/dev/null || +echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } + /^X\/\(\/\/\)$/{ s//\1/; q; } + /^X\/\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + +# PATH needs CR, and LINENO needs CR and PATH. +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + echo "#! /bin/sh" >conftest.sh + echo "exit 0" >>conftest.sh + chmod +x conftest.sh + if (PATH=".;."; conftest.sh) >/dev/null 2>&1; then + PATH_SEPARATOR=';' + else + PATH_SEPARATOR=: + fi + rm -f conftest.sh +fi + + + as_lineno_1=$LINENO + as_lineno_2=$LINENO + as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x$as_lineno_3" = "x$as_lineno_2" || { + # Find who we are. Look in the path if we contain no path at all + # relative or not. + case $0 in + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break +done + + ;; + esac + # We did not find ourselves, most probably we were run as `sh COMMAND' + # in which case we are not to be found in the path. + if test "x$as_myself" = x; then + as_myself=$0 + fi + if test ! -f "$as_myself"; then + { echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2 + { (exit 1); exit 1; }; } + fi + case $CONFIG_SHELL in + '') + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for as_base in sh bash ksh sh5; do + case $as_dir in + /*) + if ("$as_dir/$as_base" -c ' + as_lineno_1=$LINENO + as_lineno_2=$LINENO + as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then + CONFIG_SHELL=$as_dir/$as_base + export CONFIG_SHELL + exec "$CONFIG_SHELL" "$0" ${1+"$@"} + fi;; + esac + done +done +;; + esac + + # Create $as_me.lineno as a copy of $as_myself, but with $LINENO + # uniformly replaced by the line number. The first 'sed' inserts a + # line-number line before each line; the second 'sed' does the real + # work. The second script uses 'N' to pair each line-number line + # with the numbered line, and appends trailing '-' during + # substitution so that $LINENO is not a special case at line end. + # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the + # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) + sed '=' <$as_myself | + sed ' + N + s,$,-, + : loop + s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, + t loop + s,-$,, + s,^['$as_cr_digits']*\n,, + ' >$as_me.lineno && + chmod +x $as_me.lineno || + { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 + { (exit 1); exit 1; }; } + + # Don't try to exec as it changes $[0], causing all sort of problems + # (the dirname of $[0] is not the place where we might find the + # original and so on. Autoconf is especially sensible to this). + . ./$as_me.lineno + # Exit status is that of the last command. + exit +} + + +case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in + *c*,-n*) ECHO_N= ECHO_C=' +' ECHO_T=' ' ;; + *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; + *) ECHO_N= ECHO_C='\c' ECHO_T= ;; +esac + +if expr a : '\(a\)' >/dev/null 2>&1; then + as_expr=expr +else + as_expr=false +fi + +rm -f conf$$ conf$$.exe conf$$.file +echo >conf$$.file +if ln -s conf$$.file conf$$ 2>/dev/null; then + # We could just check for DJGPP; but this test a) works b) is more generic + # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). + if test -f conf$$.exe; then + # Don't use ln at all; we don't have any links + as_ln_s='cp -p' + else + as_ln_s='ln -s' + fi +elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln +else + as_ln_s='cp -p' +fi +rm -f conf$$ conf$$.exe conf$$.file + +as_executable_p="test -f" + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="sed y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="sed y%*+%pp%;s%[^_$as_cr_alnum]%_%g" + + +# IFS +# We need space, tab and new line, in precisely that order. +as_nl=' +' +IFS=" $as_nl" + +# CDPATH. +$as_unset CDPATH || test "${CDPATH+set}" != set || { CDPATH=$PATH_SEPARATOR; export CDPATH; } + + +# Name of the host. +# hostname on some systems (SVR3.2, Linux) returns a bogus exit status, +# so uname gets run too. +ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` + +exec 6>&1 + +# +# Initializations. +# +ac_default_prefix=/usr/local +cross_compiling=no +subdirs= +MFLAGS= +MAKEFLAGS= +SHELL=${CONFIG_SHELL-/bin/sh} + +# Maximum number of lines to put in a shell here document. +# This variable seems obsolete. It should probably be removed, and +# only ac_max_sed_lines should be used. +: ${ac_max_here_lines=38} + +# Identity of this package. +PACKAGE_NAME='GNU diffutils' +PACKAGE_TARNAME='diffutils' +PACKAGE_VERSION='2.8.1' +PACKAGE_STRING='GNU diffutils 2.8.1' +PACKAGE_BUGREPORT='bug-gnu-utils@gnu.org' + +ac_unique_file="src/diff.c" +# Factoring default headers for most tests. +ac_includes_default="\ +#include +#if HAVE_SYS_TYPES_H +# include +#endif +#if HAVE_SYS_STAT_H +# include +#endif +#if STDC_HEADERS +# include +# include +#else +# if HAVE_STDLIB_H +# include +# endif +#endif +#if HAVE_STRING_H +# if !STDC_HEADERS && HAVE_MEMORY_H +# include +# endif +# include +#endif +#if HAVE_STRINGS_H +# include +#endif +#if HAVE_INTTYPES_H +# include +#else +# if HAVE_STDINT_H +# include +# endif +#endif +#if HAVE_UNISTD_H +# include +#endif" + + +# Initialize some variables set by options. +ac_init_help= +ac_init_version=false +# The variables have the same names as the options, with +# dashes changed to underlines. +cache_file=/dev/null +exec_prefix=NONE +no_create= +no_recursion= +prefix=NONE +program_prefix=NONE +program_suffix=NONE +program_transform_name=s,x,x, +silent= +site= +srcdir= +verbose= +x_includes=NONE +x_libraries=NONE + +# Installation directory options. +# These are left unexpanded so users can "make install exec_prefix=/foo" +# and all the variables that are supposed to be based on exec_prefix +# by default will actually change. +# Use braces instead of parens because sh, perl, etc. also accept them. +bindir='${exec_prefix}/bin' +sbindir='${exec_prefix}/sbin' +libexecdir='${exec_prefix}/libexec' +datadir='${prefix}/share' +sysconfdir='${prefix}/etc' +sharedstatedir='${prefix}/com' +localstatedir='${prefix}/var' +libdir='${exec_prefix}/lib' +includedir='${prefix}/include' +oldincludedir='/usr/include' +infodir='${prefix}/info' +mandir='${prefix}/man' + +ac_prev= +for ac_option +do + # If the previous option needs an argument, assign it. + if test -n "$ac_prev"; then + eval "$ac_prev=\$ac_option" + ac_prev= + continue + fi + + ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'` + + # Accept the important Cygnus configure options, so we can diagnose typos. + + case $ac_option in + + -bindir | --bindir | --bindi | --bind | --bin | --bi) + ac_prev=bindir ;; + -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) + bindir=$ac_optarg ;; + + -build | --build | --buil | --bui | --bu) + ac_prev=build_alias ;; + -build=* | --build=* | --buil=* | --bui=* | --bu=*) + build_alias=$ac_optarg ;; + + -cache-file | --cache-file | --cache-fil | --cache-fi \ + | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) + ac_prev=cache_file ;; + -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ + | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) + cache_file=$ac_optarg ;; + + --config-cache | -C) + cache_file=config.cache ;; + + -datadir | --datadir | --datadi | --datad | --data | --dat | --da) + ac_prev=datadir ;; + -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \ + | --da=*) + datadir=$ac_optarg ;; + + -disable-* | --disable-*) + ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid feature name: $ac_feature" >&2 + { (exit 1); exit 1; }; } + ac_feature=`echo $ac_feature | sed 's/-/_/g'` + eval "enable_$ac_feature=no" ;; + + -enable-* | --enable-*) + ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid feature name: $ac_feature" >&2 + { (exit 1); exit 1; }; } + ac_feature=`echo $ac_feature | sed 's/-/_/g'` + case $ac_option in + *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; + *) ac_optarg=yes ;; + esac + eval "enable_$ac_feature='$ac_optarg'" ;; + + -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ + | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ + | --exec | --exe | --ex) + ac_prev=exec_prefix ;; + -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ + | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ + | --exec=* | --exe=* | --ex=*) + exec_prefix=$ac_optarg ;; + + -gas | --gas | --ga | --g) + # Obsolete; use --with-gas. + with_gas=yes ;; + + -help | --help | --hel | --he | -h) + ac_init_help=long ;; + -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) + ac_init_help=recursive ;; + -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) + ac_init_help=short ;; + + -host | --host | --hos | --ho) + ac_prev=host_alias ;; + -host=* | --host=* | --hos=* | --ho=*) + host_alias=$ac_optarg ;; + + -includedir | --includedir | --includedi | --included | --include \ + | --includ | --inclu | --incl | --inc) + ac_prev=includedir ;; + -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ + | --includ=* | --inclu=* | --incl=* | --inc=*) + includedir=$ac_optarg ;; + + -infodir | --infodir | --infodi | --infod | --info | --inf) + ac_prev=infodir ;; + -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) + infodir=$ac_optarg ;; + + -libdir | --libdir | --libdi | --libd) + ac_prev=libdir ;; + -libdir=* | --libdir=* | --libdi=* | --libd=*) + libdir=$ac_optarg ;; + + -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ + | --libexe | --libex | --libe) + ac_prev=libexecdir ;; + -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ + | --libexe=* | --libex=* | --libe=*) + libexecdir=$ac_optarg ;; + + -localstatedir | --localstatedir | --localstatedi | --localstated \ + | --localstate | --localstat | --localsta | --localst \ + | --locals | --local | --loca | --loc | --lo) + ac_prev=localstatedir ;; + -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ + | --localstate=* | --localstat=* | --localsta=* | --localst=* \ + | --locals=* | --local=* | --loca=* | --loc=* | --lo=*) + localstatedir=$ac_optarg ;; + + -mandir | --mandir | --mandi | --mand | --man | --ma | --m) + ac_prev=mandir ;; + -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) + mandir=$ac_optarg ;; + + -nfp | --nfp | --nf) + # Obsolete; use --without-fp. + with_fp=no ;; + + -no-create | --no-create | --no-creat | --no-crea | --no-cre \ + | --no-cr | --no-c | -n) + no_create=yes ;; + + -no-recursion | --no-recursion | --no-recursio | --no-recursi \ + | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) + no_recursion=yes ;; + + -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ + | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ + | --oldin | --oldi | --old | --ol | --o) + ac_prev=oldincludedir ;; + -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ + | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ + | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) + oldincludedir=$ac_optarg ;; + + -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) + ac_prev=prefix ;; + -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) + prefix=$ac_optarg ;; + + -program-prefix | --program-prefix | --program-prefi | --program-pref \ + | --program-pre | --program-pr | --program-p) + ac_prev=program_prefix ;; + -program-prefix=* | --program-prefix=* | --program-prefi=* \ + | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) + program_prefix=$ac_optarg ;; + + -program-suffix | --program-suffix | --program-suffi | --program-suff \ + | --program-suf | --program-su | --program-s) + ac_prev=program_suffix ;; + -program-suffix=* | --program-suffix=* | --program-suffi=* \ + | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) + program_suffix=$ac_optarg ;; + + -program-transform-name | --program-transform-name \ + | --program-transform-nam | --program-transform-na \ + | --program-transform-n | --program-transform- \ + | --program-transform | --program-transfor \ + | --program-transfo | --program-transf \ + | --program-trans | --program-tran \ + | --progr-tra | --program-tr | --program-t) + ac_prev=program_transform_name ;; + -program-transform-name=* | --program-transform-name=* \ + | --program-transform-nam=* | --program-transform-na=* \ + | --program-transform-n=* | --program-transform-=* \ + | --program-transform=* | --program-transfor=* \ + | --program-transfo=* | --program-transf=* \ + | --program-trans=* | --program-tran=* \ + | --progr-tra=* | --program-tr=* | --program-t=*) + program_transform_name=$ac_optarg ;; + + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + silent=yes ;; + + -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) + ac_prev=sbindir ;; + -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ + | --sbi=* | --sb=*) + sbindir=$ac_optarg ;; + + -sharedstatedir | --sharedstatedir | --sharedstatedi \ + | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ + | --sharedst | --shareds | --shared | --share | --shar \ + | --sha | --sh) + ac_prev=sharedstatedir ;; + -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ + | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ + | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ + | --sha=* | --sh=*) + sharedstatedir=$ac_optarg ;; + + -site | --site | --sit) + ac_prev=site ;; + -site=* | --site=* | --sit=*) + site=$ac_optarg ;; + + -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) + ac_prev=srcdir ;; + -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) + srcdir=$ac_optarg ;; + + -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ + | --syscon | --sysco | --sysc | --sys | --sy) + ac_prev=sysconfdir ;; + -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ + | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) + sysconfdir=$ac_optarg ;; + + -target | --target | --targe | --targ | --tar | --ta | --t) + ac_prev=target_alias ;; + -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) + target_alias=$ac_optarg ;; + + -v | -verbose | --verbose | --verbos | --verbo | --verb) + verbose=yes ;; + + -version | --version | --versio | --versi | --vers | -V) + ac_init_version=: ;; + + -with-* | --with-*) + ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid package name: $ac_package" >&2 + { (exit 1); exit 1; }; } + ac_package=`echo $ac_package| sed 's/-/_/g'` + case $ac_option in + *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; + *) ac_optarg=yes ;; + esac + eval "with_$ac_package='$ac_optarg'" ;; + + -without-* | --without-*) + ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid package name: $ac_package" >&2 + { (exit 1); exit 1; }; } + ac_package=`echo $ac_package | sed 's/-/_/g'` + eval "with_$ac_package=no" ;; + + --x) + # Obsolete; use --with-x. + with_x=yes ;; + + -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ + | --x-incl | --x-inc | --x-in | --x-i) + ac_prev=x_includes ;; + -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ + | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) + x_includes=$ac_optarg ;; + + -x-libraries | --x-libraries | --x-librarie | --x-librari \ + | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) + ac_prev=x_libraries ;; + -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ + | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) + x_libraries=$ac_optarg ;; + + -*) { echo "$as_me: error: unrecognized option: $ac_option +Try \`$0 --help' for more information." >&2 + { (exit 1); exit 1; }; } + ;; + + *=*) + ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` + # Reject names that are not valid shell variable names. + expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid variable name: $ac_envvar" >&2 + { (exit 1); exit 1; }; } + ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` + eval "$ac_envvar='$ac_optarg'" + export $ac_envvar ;; + + *) + # FIXME: should be removed in autoconf 3.0. + echo "$as_me: WARNING: you should use --build, --host, --target" >&2 + expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && + echo "$as_me: WARNING: invalid host type: $ac_option" >&2 + : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option} + ;; + + esac +done + +if test -n "$ac_prev"; then + ac_option=--`echo $ac_prev | sed 's/_/-/g'` + { echo "$as_me: error: missing argument to $ac_option" >&2 + { (exit 1); exit 1; }; } +fi + +# Be sure to have absolute paths. +for ac_var in exec_prefix prefix +do + eval ac_val=$`echo $ac_var` + case $ac_val in + [\\/$]* | ?:[\\/]* | NONE | '' ) ;; + *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 + { (exit 1); exit 1; }; };; + esac +done + +# Be sure to have absolute paths. +for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \ + localstatedir libdir includedir oldincludedir infodir mandir +do + eval ac_val=$`echo $ac_var` + case $ac_val in + [\\/$]* | ?:[\\/]* ) ;; + *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 + { (exit 1); exit 1; }; };; + esac +done + +# There might be people who depend on the old broken behavior: `$host' +# used to hold the argument of --host etc. +# FIXME: To remove some day. +build=$build_alias +host=$host_alias +target=$target_alias + +# FIXME: To remove some day. +if test "x$host_alias" != x; then + if test "x$build_alias" = x; then + cross_compiling=maybe + echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host. + If a cross compiler is detected then cross compile mode will be used." >&2 + elif test "x$build_alias" != "x$host_alias"; then + cross_compiling=yes + fi +fi + +ac_tool_prefix= +test -n "$host_alias" && ac_tool_prefix=$host_alias- + +test "$silent" = yes && exec 6>/dev/null + + +# Find the source files, if location was not specified. +if test -z "$srcdir"; then + ac_srcdir_defaulted=yes + # Try the directory containing this script, then its parent. + ac_confdir=`(dirname "$0") 2>/dev/null || +$as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$0" : 'X\(//\)[^/]' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$0" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + srcdir=$ac_confdir + if test ! -r $srcdir/$ac_unique_file; then + srcdir=.. + fi +else + ac_srcdir_defaulted=no +fi +if test ! -r $srcdir/$ac_unique_file; then + if test "$ac_srcdir_defaulted" = yes; then + { echo "$as_me: error: cannot find sources ($ac_unique_file) in $ac_confdir or .." >&2 + { (exit 1); exit 1; }; } + else + { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2 + { (exit 1); exit 1; }; } + fi +fi +srcdir=`echo "$srcdir" | sed 's%\([^\\/]\)[\\/]*$%\1%'` +ac_env_build_alias_set=${build_alias+set} +ac_env_build_alias_value=$build_alias +ac_cv_env_build_alias_set=${build_alias+set} +ac_cv_env_build_alias_value=$build_alias +ac_env_host_alias_set=${host_alias+set} +ac_env_host_alias_value=$host_alias +ac_cv_env_host_alias_set=${host_alias+set} +ac_cv_env_host_alias_value=$host_alias +ac_env_target_alias_set=${target_alias+set} +ac_env_target_alias_value=$target_alias +ac_cv_env_target_alias_set=${target_alias+set} +ac_cv_env_target_alias_value=$target_alias +ac_env_CC_set=${CC+set} +ac_env_CC_value=$CC +ac_cv_env_CC_set=${CC+set} +ac_cv_env_CC_value=$CC +ac_env_CFLAGS_set=${CFLAGS+set} +ac_env_CFLAGS_value=$CFLAGS +ac_cv_env_CFLAGS_set=${CFLAGS+set} +ac_cv_env_CFLAGS_value=$CFLAGS +ac_env_LDFLAGS_set=${LDFLAGS+set} +ac_env_LDFLAGS_value=$LDFLAGS +ac_cv_env_LDFLAGS_set=${LDFLAGS+set} +ac_cv_env_LDFLAGS_value=$LDFLAGS +ac_env_CPPFLAGS_set=${CPPFLAGS+set} +ac_env_CPPFLAGS_value=$CPPFLAGS +ac_cv_env_CPPFLAGS_set=${CPPFLAGS+set} +ac_cv_env_CPPFLAGS_value=$CPPFLAGS +ac_env_CPP_set=${CPP+set} +ac_env_CPP_value=$CPP +ac_cv_env_CPP_set=${CPP+set} +ac_cv_env_CPP_value=$CPP + +# +# Report the --help message. +# +if test "$ac_init_help" = "long"; then + # Omit some internal or obsolete options to make the list less imposing. + # This message is too long to be a string in the A/UX 3.1 sh. + cat <<_ACEOF +\`configure' configures GNU diffutils 2.8.1 to adapt to many kinds of systems. + +Usage: $0 [OPTION]... [VAR=VALUE]... + +To assign environment variables (e.g., CC, CFLAGS...), specify them as +VAR=VALUE. See below for descriptions of some of the useful variables. + +Defaults for the options are specified in brackets. + +Configuration: + -h, --help display this help and exit + --help=short display options specific to this package + --help=recursive display the short help of all the included packages + -V, --version display version information and exit + -q, --quiet, --silent do not print \`checking...' messages + --cache-file=FILE cache test results in FILE [disabled] + -C, --config-cache alias for \`--cache-file=config.cache' + -n, --no-create do not create output files + --srcdir=DIR find the sources in DIR [configure dir or \`..'] + +_ACEOF + + cat <<_ACEOF +Installation directories: + --prefix=PREFIX install architecture-independent files in PREFIX + [$ac_default_prefix] + --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX + [PREFIX] + +By default, \`make install' will install all the files in +\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify +an installation prefix other than \`$ac_default_prefix' using \`--prefix', +for instance \`--prefix=\$HOME'. + +For better control, use the options below. + +Fine tuning of the installation directories: + --bindir=DIR user executables [EPREFIX/bin] + --sbindir=DIR system admin executables [EPREFIX/sbin] + --libexecdir=DIR program executables [EPREFIX/libexec] + --datadir=DIR read-only architecture-independent data [PREFIX/share] + --sysconfdir=DIR read-only single-machine data [PREFIX/etc] + --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] + --localstatedir=DIR modifiable single-machine data [PREFIX/var] + --libdir=DIR object code libraries [EPREFIX/lib] + --includedir=DIR C header files [PREFIX/include] + --oldincludedir=DIR C header files for non-gcc [/usr/include] + --infodir=DIR info documentation [PREFIX/info] + --mandir=DIR man documentation [PREFIX/man] +_ACEOF + + cat <<\_ACEOF + +Program names: + --program-prefix=PREFIX prepend PREFIX to installed program names + --program-suffix=SUFFIX append SUFFIX to installed program names + --program-transform-name=PROGRAM run sed PROGRAM on installed program names + +System types: + --build=BUILD configure for building on BUILD [guessed] + --host=HOST cross-compile to build programs to run on HOST [BUILD] +_ACEOF +fi + +if test -n "$ac_init_help"; then + case $ac_init_help in + short | recursive ) echo "Configuration of GNU diffutils 2.8.1:";; + 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 builds + --enable-dependency-tracking Do not reject slow dependency extractors + --disable-largefile omit support for large files + --disable-nls do not use Native Language Support + +Optional Packages: + --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] + --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) + --with-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-libintl-prefix=DIR search for libintl in DIR/include and DIR/lib + --without-libintl-prefix don't search for libintl in includedir and libdir + --without-included-regex don't compile regex; this is the default on + systems with version 2 of the GNU C library + (use with caution on other system) + +Some influential environment variables: + CC C compiler command + CFLAGS C compiler flags + LDFLAGS linker flags, e.g. -L if you have libraries in a + nonstandard directory + CPPFLAGS C/C++ preprocessor flags, e.g. -I if you have + headers in a nonstandard directory + CPP C preprocessor + +Use these variables to override the choices made by `configure' or to help +it to find libraries and programs with nonstandard names/locations. + +Report bugs to . +_ACEOF +fi + +if test "$ac_init_help" = "recursive"; then + # If there are subdirs, report their specific --help. + ac_popdir=`pwd` + for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue + test -d $ac_dir || continue + ac_builddir=. + +if test "$ac_dir" != .; then + ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` + # A "../" for each directory in $ac_dir_suffix. + ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` +else + ac_dir_suffix= ac_top_builddir= +fi + +case $srcdir in + .) # No --srcdir option. We are building in place. + ac_srcdir=. + if test -z "$ac_top_builddir"; then + ac_top_srcdir=. + else + ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` + fi ;; + [\\/]* | ?:[\\/]* ) # Absolute path. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir ;; + *) # Relative path. + ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_builddir$srcdir ;; +esac +# Don't blindly perform a `cd "$ac_dir"/$ac_foo && pwd` since $ac_foo can be +# absolute. +ac_abs_builddir=`cd "$ac_dir" && cd $ac_builddir && pwd` +ac_abs_top_builddir=`cd "$ac_dir" && cd $ac_top_builddir && pwd` +ac_abs_srcdir=`cd "$ac_dir" && cd $ac_srcdir && pwd` +ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd` + + cd $ac_dir + # Check for guested configure; otherwise get Cygnus style configure. + if test -f $ac_srcdir/configure.gnu; then + echo + $SHELL $ac_srcdir/configure.gnu --help=recursive + elif test -f $ac_srcdir/configure; then + echo + $SHELL $ac_srcdir/configure --help=recursive + elif test -f $ac_srcdir/configure.ac || + test -f $ac_srcdir/configure.in; then + echo + $ac_configure --help + else + echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 + fi + cd $ac_popdir + done +fi + +test -n "$ac_init_help" && exit 0 +if $ac_init_version; then + cat <<\_ACEOF +GNU diffutils configure 2.8.1 +generated by GNU Autoconf 2.53 + +Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002 +Free Software Foundation, Inc. +This configure script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it. +_ACEOF + exit 0 +fi +exec 5>config.log +cat >&5 <<_ACEOF +This file contains any messages produced by compilers while +running configure, to aid debugging if configure makes a mistake. + +It was created by GNU diffutils $as_me 2.8.1, which was +generated by GNU Autoconf 2.53. Invocation command line was + + $ $0 $@ + +_ACEOF +{ +cat <<_ASUNAME +## --------- ## +## Platform. ## +## --------- ## + +hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` +uname -m = `(uname -m) 2>/dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` + +/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` +hostinfo = `(hostinfo) 2>/dev/null || echo unknown` +/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` +/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` + +_ASUNAME + +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + echo "PATH: $as_dir" +done + +} >&5 + +cat >&5 <<_ACEOF + + +## ----------- ## +## Core tests. ## +## ----------- ## + +_ACEOF + + +# Keep a trace of the command line. +# Strip out --no-create and --no-recursion so they do not pile up. +# Also quote any args containing shell meta-characters. +ac_configure_args= +ac_sep= +for ac_arg +do + case $ac_arg in + -no-create | --no-create | --no-creat | --no-crea | --no-cre \ + | --no-cr | --no-c | -n ) continue ;; + -no-recursion | --no-recursion | --no-recursio | --no-recursi \ + | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) + continue ;; + *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) + ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + case " $ac_configure_args " in + *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. + *) ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'" + ac_sep=" " ;; + esac + # Get rid of the leading space. +done + +# When interrupted or exit'd, cleanup temporary files, and complete +# config.log. We remove comments because anyway the quotes in there +# would cause problems or look ugly. +# WARNING: Be sure not to use single quotes in there, as some shells, +# such as our DU 5.0 friend, will then `close' the trap. +trap 'exit_status=$? + # Save into config.log some information that might help in debugging. + { + echo + cat <<\_ASBOX +## ---------------- ## +## Cache variables. ## +## ---------------- ## +_ASBOX + echo + # The following way of writing the cache mishandles newlines in values, +{ + (set) 2>&1 | + case `(ac_space='"'"' '"'"'; set | grep ac_space) 2>&1` in + *ac_space=\ *) + sed -n \ + "s/'"'"'/'"'"'\\\\'"'"''"'"'/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='"'"'\\2'"'"'/p" + ;; + *) + sed -n \ + "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" + ;; + esac; +} + echo + if test -s confdefs.h; then + cat <<\_ASBOX +## ----------- ## +## confdefs.h. ## +## ----------- ## +_ASBOX + echo + sed "/^$/d" 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 && + rm -rf conftest* confdefs* conf$$* $ac_clean_files && + exit $exit_status + ' 0 +for ac_signal in 1 2 13 15; do + trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal +done +ac_signal=0 + +# confdefs.h avoids OS command line length limits that DEFS can exceed. +rm -rf conftest* confdefs.h +# AIX cpp loses on an empty file, so make sure it contains at least a newline. +echo >confdefs.h + +# Predefined preprocessor variables. + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_NAME "$PACKAGE_NAME" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_TARNAME "$PACKAGE_TARNAME" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_VERSION "$PACKAGE_VERSION" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_STRING "$PACKAGE_STRING" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" +_ACEOF + + +# Let the site file select an alternate cache file if it wants to. +# Prefer explicitly selected file to automatically selected ones. +if test -z "$CONFIG_SITE"; then + if test "x$prefix" != xNONE; then + CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site" + else + CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" + fi +fi +for ac_site_file in $CONFIG_SITE; do + if test -r "$ac_site_file"; then + { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5 +echo "$as_me: loading site script $ac_site_file" >&6;} + sed 's/^/| /' "$ac_site_file" >&5 + . "$ac_site_file" + fi +done + +if test -r "$cache_file"; then + # Some versions of bash will fail to source /dev/null (special + # files actually), so we avoid doing that. + if test -f "$cache_file"; then + { echo "$as_me:$LINENO: loading cache $cache_file" >&5 +echo "$as_me: loading cache $cache_file" >&6;} + case $cache_file in + [\\/]* | ?:[\\/]* ) . $cache_file;; + *) . ./$cache_file;; + esac + fi +else + { echo "$as_me:$LINENO: creating cache $cache_file" >&5 +echo "$as_me: creating cache $cache_file" >&6;} + >$cache_file +fi + +# Check that the precious variables saved in the cache have kept the same +# value. +ac_cache_corrupted=false +for ac_var in `(set) 2>&1 | + sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; do + eval ac_old_set=\$ac_cv_env_${ac_var}_set + eval ac_new_set=\$ac_env_${ac_var}_set + eval ac_old_val="\$ac_cv_env_${ac_var}_value" + eval ac_new_val="\$ac_env_${ac_var}_value" + case $ac_old_set,$ac_new_set in + set,) + { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 +echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,set) + { echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5 +echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,);; + *) + if test "x$ac_old_val" != "x$ac_new_val"; then + { echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5 +echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} + { echo "$as_me:$LINENO: former value: $ac_old_val" >&5 +echo "$as_me: former value: $ac_old_val" >&2;} + { echo "$as_me:$LINENO: current value: $ac_new_val" >&5 +echo "$as_me: current value: $ac_new_val" >&2;} + ac_cache_corrupted=: + fi;; + esac + # Pass precious variables to config.status. + if test "$ac_new_set" = set; then + case $ac_new_val in + *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) + ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; + *) ac_arg=$ac_var=$ac_new_val ;; + esac + case " $ac_configure_args " in + *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. + *) ac_configure_args="$ac_configure_args '$ac_arg'" ;; + esac + fi +done +if $ac_cache_corrupted; then + { echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5 +echo "$as_me: error: changes in the environment can compromise the build" >&2;} + { { echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5 +echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;} + { (exit 1); exit 1; }; } +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + + + + + + + + + + + + + + + + + + + + + + + + + + +ac_aux_dir= +for ac_dir in config $srcdir/config; 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 config $srcdir/config" >&5 +echo "$as_me: error: cannot find install-sh or install.sh in config $srcdir/config" >&2;} + { (exit 1); exit 1; }; } +fi +ac_config_guess="$SHELL $ac_aux_dir/config.guess" +ac_config_sub="$SHELL $ac_aux_dir/config.sub" +ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure. + +# Add the stamp file to the list of files AC keeps track of, +# along with our hook. +ac_config_headers="$ac_config_headers config.h:config.hin" + + + +am__api_version="1.6" +# Find a good install program. We prefer a C program (faster), +# so one script is as good as another. But avoid the broken or +# incompatible versions: +# SysV /etc/install, /usr/sbin/install +# SunOS /usr/etc/install +# IRIX /sbin/install +# AIX /bin/install +# AmigaOS /C/install, which installs bootblocks on floppy discs +# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag +# AFS /usr/afsws/bin/install, which mishandles nonexistent args +# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" +# ./install, which can be erroneously created by make from ./install.sh. +echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 +echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6 +if test -z "$INSTALL"; then +if test "${ac_cv_path_install+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + # Account for people who put trailing slashes in PATH elements. +case $as_dir/ in + ./ | .// | /cC/* | \ + /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ + /usr/ucb/* ) ;; + *) + # OSF1 and SCO ODT 3.0 have their own names for install. + # Don't use installbsd from OSF since it installs stuff as root + # by default. + for ac_prog in ginstall scoinst install; do + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then + if test $ac_prog = install && + grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # AIX install. It has an incompatible calling convention. + : + elif test $ac_prog = install && + grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # program-specific install script used by HP pwplus--don't use. + : + else + ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" + break 3 + fi + fi + done + done + ;; +esac +done + + +fi + if test "${ac_cv_path_install+set}" = set; then + INSTALL=$ac_cv_path_install + else + # As a last resort, use the slow shell script. We don't cache a + # path for INSTALL within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the path is relative. + INSTALL=$ac_install_sh + fi +fi +echo "$as_me:$LINENO: result: $INSTALL" >&5 +echo "${ECHO_T}$INSTALL" >&6 + +# Use test -z because SunOS4 sh mishandles braces in ${var-val}. +# It thinks the first close brace ends the variable substitution. +test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' + +test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' + +test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' + +echo "$as_me:$LINENO: checking whether build environment is sane" >&5 +echo $ECHO_N "checking whether build environment is sane... $ECHO_C" >&6 +# Just in case +sleep 1 +echo timestamp > conftest.file +# Do `set' in a subshell so we don't clobber the current shell's +# arguments. Must try -L first in case configure is actually a +# symlink; some systems play weird games with the mod time of symlinks +# (eg FreeBSD returns the mod time of the symlink's containing +# directory). +if ( + set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null` + if test "$*" = "X"; then + # -L didn't work. + set X `ls -t $srcdir/configure conftest.file` + fi + rm -f conftest.file + if test "$*" != "X $srcdir/configure conftest.file" \ + && test "$*" != "X conftest.file $srcdir/configure"; then + + # If neither matched, then we have a broken ls. This can happen + # if, for instance, CONFIG_SHELL is bash and it inherits a + # broken ls alias from the environment. This has actually + # happened. Such a system could not be considered "sane". + { { echo "$as_me:$LINENO: error: ls -t appears to fail. Make sure there is not a broken +alias in your environment" >&5 +echo "$as_me: error: ls -t appears to fail. Make sure there is not a broken +alias in your environment" >&2;} + { (exit 1); exit 1; }; } + fi + + test "$2" = conftest.file + ) +then + # Ok. + : +else + { { echo "$as_me:$LINENO: error: newly created file is older than distributed files! +Check your system clock" >&5 +echo "$as_me: error: newly created file is older than distributed files! +Check your system clock" >&2;} + { (exit 1); exit 1; }; } +fi +echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 +test "$program_prefix" != NONE && + program_transform_name="s,^,$program_prefix,;$program_transform_name" +# Use a double $ so make ignores it. +test "$program_suffix" != NONE && + program_transform_name="s,\$,$program_suffix,;$program_transform_name" +# Double any \ or $. echo might interpret backslashes. +# By default was `s,x,x', remove it if useless. +cat <<\_ACEOF >conftest.sed +s/[\\$]/&&/g;s/;s,x,x,$// +_ACEOF +program_transform_name=`echo $program_transform_name | sed -f conftest.sed` +rm conftest.sed + + +# expand $ac_aux_dir to an absolute path +am_aux_dir=`cd $ac_aux_dir && pwd` + +test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing" +# Use eval to expand $SHELL +if eval "$MISSING --run true"; then + am_missing_run="$MISSING --run " +else + am_missing_run= + { echo "$as_me:$LINENO: WARNING: \`missing' script is too old or missing" >&5 +echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;} +fi + +for ac_prog in gawk mawk nawk awk +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_AWK+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$AWK"; then + ac_cv_prog_AWK="$AWK" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_AWK="$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +AWK=$ac_cv_prog_AWK +if test -n "$AWK"; then + echo "$as_me:$LINENO: result: $AWK" >&5 +echo "${ECHO_T}$AWK" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$AWK" && break +done + +echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \${MAKE}" >&5 +echo $ECHO_N "checking whether ${MAKE-make} sets \${MAKE}... $ECHO_C" >&6 +set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y,./+-,__p_,'` +if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.make <<\_ACEOF +all: + @echo 'ac_maketemp="${MAKE}"' +_ACEOF +# GNU make sometimes prints "make[1]: Entering...", which would confuse us. +eval `${MAKE-make} -f conftest.make 2>/dev/null | grep temp=` +if test -n "$ac_maketemp"; then + eval ac_cv_prog_make_${ac_make}_set=yes +else + eval ac_cv_prog_make_${ac_make}_set=no +fi +rm -f conftest.make +fi +if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + SET_MAKE= +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 + SET_MAKE="MAKE=${MAKE-make}" +fi + + # test to see if srcdir already configured +if test "`cd $srcdir && pwd`" != "`pwd`" && + test -f $srcdir/config.status; then + { { echo "$as_me:$LINENO: error: source directory already configured; run \"make distclean\" there first" >&5 +echo "$as_me: error: source directory already configured; run \"make distclean\" there first" >&2;} + { (exit 1); exit 1; }; } +fi + +# Define the identity of the package. + PACKAGE=diffutils + VERSION=2.8.1 + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE "$PACKAGE" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define VERSION "$VERSION" +_ACEOF + +# Some tools Automake needs. + +ACLOCAL=${ACLOCAL-"${am_missing_run}"aclocal-${am__api_version}""} + + +AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} + + +AUTOMAKE=${AUTOMAKE-"${am_missing_run}"automake-${am__api_version}""} + + +AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} + + +MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} + + +AMTAR=${AMTAR-"${am_missing_run}tar"} + +install_sh=${install_sh-"$am_aux_dir/install-sh"} + +# Installed binaries are usually stripped using `strip' when the user +# run `make install-strip'. However `strip' might not be the right +# tool to use in cross-compilation environments, therefore Automake +# will honor the `STRIP' environment variable to overrule this program. +if test "$cross_compiling" != no; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. +set dummy ${ac_tool_prefix}strip; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_STRIP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$STRIP"; then + ac_cv_prog_STRIP="$STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_STRIP="${ac_tool_prefix}strip" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +STRIP=$ac_cv_prog_STRIP +if test -n "$STRIP"; then + echo "$as_me:$LINENO: result: $STRIP" >&5 +echo "${ECHO_T}$STRIP" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$ac_cv_prog_STRIP"; then + ac_ct_STRIP=$STRIP + # Extract the first word of "strip", so it can be a program name with args. +set dummy strip; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_STRIP"; then + ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_STRIP="strip" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + + test -z "$ac_cv_prog_ac_ct_STRIP" && ac_cv_prog_ac_ct_STRIP=":" +fi +fi +ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP +if test -n "$ac_ct_STRIP"; then + echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5 +echo "${ECHO_T}$ac_ct_STRIP" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + STRIP=$ac_ct_STRIP +else + STRIP="$ac_cv_prog_STRIP" +fi + +fi +INSTALL_STRIP_PROGRAM="\${SHELL} \$(install_sh) -c -s" + +# We need awk for the "check" target. The system "awk" is bad on +# some platforms. + + + + +for ac_prog in gawk mawk nawk awk +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_AWK+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$AWK"; then + ac_cv_prog_AWK="$AWK" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_AWK="$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +AWK=$ac_cv_prog_AWK +if test -n "$AWK"; then + echo "$as_me:$LINENO: result: $AWK" >&5 +echo "${ECHO_T}$AWK" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$AWK" && break +done + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. +set dummy ${ac_tool_prefix}gcc; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}gcc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "gcc", so it can be a program name with args. +set dummy gcc; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="gcc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +echo "${ECHO_T}$ac_ct_CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + CC=$ac_ct_CC +else + CC="$ac_cv_prog_CC" +fi + +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. +set dummy ${ac_tool_prefix}cc; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}cc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "cc", so it can be a program name with args. +set dummy cc; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="cc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +echo "${ECHO_T}$ac_ct_CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + CC=$ac_ct_CC +else + CC="$ac_cv_prog_CC" +fi + +fi +if test -z "$CC"; then + # Extract the first word of "cc", so it can be a program name with args. +set dummy cc; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else + ac_prog_rejected=no +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then + ac_prog_rejected=yes + continue + fi + ac_cv_prog_CC="cc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +if test $ac_prog_rejected = yes; then + # We found a bogon in the path, so make sure we never use it. + set dummy $ac_cv_prog_CC + shift + if test $# != 0; then + # We chose a different compiler from the bogus one. + # However, it has the same basename, so the bogon will be chosen + # first if we set CC to just the basename; use the full file name. + shift + set dummy "$as_dir/$ac_word" ${1+"$@"} + shift + ac_cv_prog_CC="$@" + fi +fi +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + for ac_prog in cl + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="$ac_tool_prefix$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$CC" && break + done +fi +if test -z "$CC"; then + ac_ct_CC=$CC + for ac_prog in cl +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +echo "${ECHO_T}$ac_ct_CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$ac_ct_CC" && break +done + + CC=$ac_ct_CC +fi + +fi + + +test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH" >&5 +echo "$as_me: error: no acceptable C compiler found in \$PATH" >&2;} + { (exit 1); exit 1; }; } + +# Provide some information about the compiler. +echo "$as_me:$LINENO:" \ + "checking for C compiler version" >&5 +ac_compiler=`set X $ac_compile; echo $2` +{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version &5\"") >&5 + (eval $ac_compiler --version &5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v &5\"") >&5 + (eval $ac_compiler -v &5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V &5\"") >&5 + (eval $ac_compiler -V &5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" + +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ + + ; + return 0; +} +_ACEOF +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files a.out a.exe" +# Try to create an executable without -o first, disregard a.out. +# It will help us diagnose broken compilers, and finding out an intuition +# of exeext. +echo "$as_me:$LINENO: checking for C compiler default output" >&5 +echo $ECHO_N "checking for C compiler default output... $ECHO_C" >&6 +ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` +if { (eval echo "$as_me:$LINENO: \"$ac_link_default\"") >&5 + (eval $ac_link_default) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + # Find the output, starting from the most likely. This scheme is +# not robust to junk in `.', hence go to wildcards (a.*) only as a last +# resort. + +# Be careful to initialize this variable, since it used to be cached. +# Otherwise an old cache value of `no' led to `EXEEXT = no' in a Makefile. +ac_cv_exeext= +for ac_file in `ls a_out.exe a.exe conftest.exe 2>/dev/null; + ls a.out conftest 2>/dev/null; + ls a.* conftest.* 2>/dev/null`; do + case $ac_file in + *.$ac_ext | *.o | *.obj | *.xcoff | *.tds | *.d | *.pdb | *.xSYM ) ;; + a.out ) # We found the default executable, but exeext='' is most + # certainly right. + break;; + *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + # FIXME: I believe we export ac_cv_exeext for Libtool --akim. + export ac_cv_exeext + break;; + * ) break;; + esac +done +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +{ { echo "$as_me:$LINENO: error: C compiler cannot create executables" >&5 +echo "$as_me: error: C compiler cannot create executables" >&2;} + { (exit 77); exit 77; }; } +fi + +ac_exeext=$ac_cv_exeext +echo "$as_me:$LINENO: result: $ac_file" >&5 +echo "${ECHO_T}$ac_file" >&6 + +# Check the compiler produces executables we can run. If not, either +# the compiler is broken, or we cross compile. +echo "$as_me:$LINENO: checking whether the C compiler works" >&5 +echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6 +# FIXME: These cross compiler hacks should be removed for Autoconf 3.0 +# If not cross compiling, check that we can run a simple program. +if test "$cross_compiling" != yes; then + if { ac_try='./$ac_file' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + cross_compiling=no + else + if test "$cross_compiling" = maybe; then + cross_compiling=yes + else + { { echo "$as_me:$LINENO: error: cannot run C compiled programs. +If you meant to cross compile, use \`--host'." >&5 +echo "$as_me: error: cannot run C compiled programs. +If you meant to cross compile, use \`--host'." >&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 +ac_clean_files=$ac_clean_files_save +# Check the compiler produces executables we can run. If not, either +# the compiler is broken, or we cross compile. +echo "$as_me:$LINENO: checking whether we are cross compiling" >&5 +echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6 +echo "$as_me:$LINENO: result: $cross_compiling" >&5 +echo "${ECHO_T}$cross_compiling" >&6 + +echo "$as_me:$LINENO: checking for suffix of executables" >&5 +echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + # If both `conftest.exe' and `conftest' are `present' (well, observable) +# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will +# work properly (i.e., refer to `conftest.exe'), while it won't with +# `rm'. +for ac_file in `(ls conftest.exe; ls conftest; ls conftest.*) 2>/dev/null`; do + case $ac_file in + *.$ac_ext | *.o | *.obj | *.xcoff | *.tds | *.d | *.pdb ) ;; + *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + export ac_cv_exeext + break;; + * ) break;; + esac +done +else + { { echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link" >&5 +echo "$as_me: error: cannot compute suffix of executables: cannot compile and link" >&2;} + { (exit 1); exit 1; }; } +fi + +rm -f conftest$ac_cv_exeext +echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5 +echo "${ECHO_T}$ac_cv_exeext" >&6 + +rm -f conftest.$ac_ext +EXEEXT=$ac_cv_exeext +ac_exeext=$EXEEXT +echo "$as_me:$LINENO: checking for suffix of object files" >&5 +echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6 +if test "${ac_cv_objext+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" + +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.o conftest.obj +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + for ac_file in `(ls conftest.o conftest.obj; ls conftest.*) 2>/dev/null`; do + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb ) ;; + *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` + break;; + esac +done +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +{ { echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile" >&5 +echo "$as_me: error: cannot compute suffix of object files: cannot compile" >&2;} + { (exit 1); exit 1; }; } +fi + +rm -f conftest.$ac_cv_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_objext" >&5 +echo "${ECHO_T}$ac_cv_objext" >&6 +OBJEXT=$ac_cv_objext +ac_objext=$OBJEXT +echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5 +echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6 +if test "${ac_cv_c_compiler_gnu+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" + +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_compiler_gnu=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_compiler_gnu=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +ac_cv_c_compiler_gnu=$ac_compiler_gnu + +fi +echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5 +echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6 +GCC=`test $ac_compiler_gnu = yes && echo yes` +ac_test_CFLAGS=${CFLAGS+set} +ac_save_CFLAGS=$CFLAGS +CFLAGS="-g" +echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 +echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6 +if test "${ac_cv_prog_cc_g+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" + +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_prog_cc_g=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_prog_cc_g=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 +echo "${ECHO_T}$ac_cv_prog_cc_g" >&6 +if test "$ac_test_CFLAGS" = set; then + CFLAGS=$ac_save_CFLAGS +elif test $ac_cv_prog_cc_g = yes; then + if test "$GCC" = yes; then + CFLAGS="-g -O2" + else + CFLAGS="-g" + fi +else + if test "$GCC" = yes; then + CFLAGS="-O2" + else + CFLAGS= + fi +fi +# Some people use a C++ compiler to compile C. Since we use `exit', +# in C++ we need to declare it. In case someone uses the same compiler +# for both compiling C and C++ we need to have the C++ compiler decide +# the declaration of exit, since it's the most demanding environment. +cat >conftest.$ac_ext <<_ACEOF +#ifndef __cplusplus + choke me +#endif +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + for ac_declaration in \ + ''\ + '#include ' \ + 'extern "C" void std::exit (int) throw (); using std::exit;' \ + 'extern "C" void std::exit (int); using std::exit;' \ + 'extern "C" void exit (int) throw ();' \ + 'extern "C" void exit (int);' \ + 'void exit (int);' +do + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +#include +$ac_declaration +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +exit (42); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + : +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +continue +fi +rm -f conftest.$ac_objext conftest.$ac_ext + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +$ac_declaration +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +exit (42); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + break +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +fi +rm -f conftest.$ac_objext conftest.$ac_ext +done +rm -f conftest* +if test -n "$ac_declaration"; then + echo '#ifdef __cplusplus' >>confdefs.h + echo $ac_declaration >>confdefs.h + echo '#endif' >>confdefs.h +fi + +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +fi +rm -f conftest.$ac_objext conftest.$ac_ext +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +rm -f .deps 2>/dev/null +mkdir .deps 2>/dev/null +if test -d .deps; then + DEPDIR=.deps +else + # MS-DOS does not allow filenames that begin with a dot. + DEPDIR=_deps +fi +rmdir .deps 2>/dev/null + + +ac_config_commands="$ac_config_commands depfiles" + + +am_make=${MAKE-make} +cat > confinc << 'END' +doit: + @echo done +END +# If we don't find an include directive, just comment out the code. +echo "$as_me:$LINENO: checking for style of include used by $am_make" >&5 +echo $ECHO_N "checking for style of include used by $am_make... $ECHO_C" >&6 +am__include="#" +am__quote= +_am_result=none +# First try GNU make style include. +echo "include confinc" > confmf +# We grep out `Entering directory' and `Leaving directory' +# messages which can occur if `w' ends up in MAKEFLAGS. +# In particular we don't look at `^make:' because GNU make might +# be invoked under some other name (usually "gmake"), in which +# case it prints its new name instead of `make'. +if test "`$am_make -s -f confmf 2> /dev/null | fgrep -v 'ing directory'`" = "done"; then + am__include=include + am__quote= + _am_result=GNU +fi +# Now try BSD make style include. +if test "$am__include" = "#"; then + echo '.include "confinc"' > confmf + if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then + am__include=.include + am__quote="\"" + _am_result=BSD + fi +fi + + +echo "$as_me:$LINENO: result: $_am_result" >&5 +echo "${ECHO_T}$_am_result" >&6 +rm -f confinc confmf + +# Check whether --enable-dependency-tracking or --disable-dependency-tracking was given. +if test "${enable_dependency_tracking+set}" = set; then + enableval="$enable_dependency_tracking" + +fi; +if test "x$enable_dependency_tracking" != xno; then + am_depcomp="$ac_aux_dir/depcomp" + AMDEPBACKSLASH='\' +fi + + +if test "x$enable_dependency_tracking" != xno; then + AMDEP_TRUE= + AMDEP_FALSE='#' +else + AMDEP_TRUE='#' + AMDEP_FALSE= +fi + + + + +depcc="$CC" am_compiler_list= + +echo "$as_me:$LINENO: checking dependency style of $depcc" >&5 +echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6 +if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named `D' -- because `-MD' means `put the output + # in D'. + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + + am_cv_CC_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` + fi + for depmode in $am_compiler_list; do + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + echo '#include "conftest.h"' > conftest.c + echo 'int i;' > conftest.h + echo "${am__include} ${am__quote}conftest.Po${am__quote}" > confmf + + case $depmode in + nosideeffect) + # after this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + none) break ;; + esac + # We check with `-c' and `-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle `-M -o', and we need to detect this. + if depmode=$depmode \ + source=conftest.c object=conftest.o \ + depfile=conftest.Po tmpdepfile=conftest.TPo \ + $SHELL ./depcomp $depcc -c conftest.c -o conftest.o >/dev/null 2>&1 && + grep conftest.h conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + am_cv_CC_dependencies_compiler_type=$depmode + break + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_CC_dependencies_compiler_type=none +fi + +fi +echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5 +echo "${ECHO_T}$am_cv_CC_dependencies_compiler_type" >&6 +CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type + + + + + echo "$as_me:$LINENO: checking for strerror in -lcposix" >&5 +echo $ECHO_N "checking for strerror in -lcposix... $ECHO_C" >&6 +if test "${ac_cv_lib_cposix_strerror+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lcposix $LIBS" +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char strerror (); +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +strerror (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_cposix_strerror=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_lib_cposix_strerror=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_cposix_strerror" >&5 +echo "${ECHO_T}$ac_cv_lib_cposix_strerror" >&6 +if test $ac_cv_lib_cposix_strerror = yes; then + LIBS="$LIBS -lcposix" +fi + + + + + + +echo "$as_me:$LINENO: checking for ${CC-cc} option to accept ANSI C" >&5 +echo $ECHO_N "checking for ${CC-cc} option to accept ANSI C... $ECHO_C" >&6 +if test "${am_cv_prog_cc_stdc+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + am_cv_prog_cc_stdc=no +ac_save_CC="$CC" +# Don't try gcc -ansi; that turns off useful extensions and +# breaks some systems' header files. +# AIX -qlanglvl=ansi +# Ultrix and OSF/1 -std1 +# HP-UX 10.20 and later -Ae +# HP-UX older versions -Aa -D_HPUX_SOURCE +# SVR4 -Xc -D__EXTENSIONS__ +for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +do + CC="$ac_save_CC $ac_arg" + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +#include +#include +#include +#include +/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ +struct buf { int x; }; +FILE * (*rcsopen) (struct buf *, struct stat *, int); +static char *e (p, i) + char **p; + int i; +{ + return p[i]; +} +static char *f (char * (*g) (char **, int), char **p, ...) +{ + char *s; + va_list v; + va_start (v,p); + s = g (p, va_arg (v,int)); + va_end (v); + return s; +} +int test (int i, double x); +struct s1 {int (*f) (int a);}; +struct s2 {int (*f) (double a);}; +int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); +int argc; +char **argv; + +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ + +return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + am_cv_prog_cc_stdc="$ac_arg"; break +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +fi +rm -f conftest.$ac_objext conftest.$ac_ext +done +CC="$ac_save_CC" + +fi + +if test -z "$am_cv_prog_cc_stdc"; then + echo "$as_me:$LINENO: result: none needed" >&5 +echo "${ECHO_T}none needed" >&6 +else + echo "$as_me:$LINENO: result: $am_cv_prog_cc_stdc" >&5 +echo "${ECHO_T}$am_cv_prog_cc_stdc" >&6 +fi +case "x$am_cv_prog_cc_stdc" in + x|xno) ;; + *) CC="$CC $am_cv_prog_cc_stdc" ;; +esac + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5 +echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6 +# On Suns, sometimes $CPP names a directory. +if test -n "$CPP" && test -d "$CPP"; then + CPP= +fi +if test -z "$CPP"; then + if test "${ac_cv_prog_CPP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + # Double quotes because CPP needs to be expanded + for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" + do + ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +#include + Syntax error +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + egrep -v '^ *\+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + : +else + echo "$as_me: failed program was:" >&5 + cat conftest.$ac_ext >&5 + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.$ac_ext + + # OK, works on sane cases. Now check whether non-existent headers + # can be detected and how. + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +#include +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + egrep -v '^ *\+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + # Broken: success on invalid input. +continue +else + echo "$as_me: failed program was:" >&5 + cat conftest.$ac_ext >&5 + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.err conftest.$ac_ext +if $ac_preproc_ok; then + break +fi + + done + ac_cv_prog_CPP=$CPP + +fi + CPP=$ac_cv_prog_CPP +else + ac_cv_prog_CPP=$CPP +fi +echo "$as_me:$LINENO: result: $CPP" >&5 +echo "${ECHO_T}$CPP" >&6 +ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +#include + Syntax error +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + egrep -v '^ *\+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + : +else + echo "$as_me: failed program was:" >&5 + cat conftest.$ac_ext >&5 + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.$ac_ext + + # OK, works on sane cases. Now check whether non-existent headers + # can be detected and how. + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +#include +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + egrep -v '^ *\+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + # Broken: success on invalid input. +continue +else + echo "$as_me: failed program was:" >&5 + cat 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" >&5 +echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check" >&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 + + +HELP2MAN=${HELP2MAN-"${am_missing_run}help2man"} + +# Find a good install program. We prefer a C program (faster), +# so one script is as good as another. But avoid the broken or +# incompatible versions: +# SysV /etc/install, /usr/sbin/install +# SunOS /usr/etc/install +# IRIX /sbin/install +# AIX /bin/install +# AmigaOS /C/install, which installs bootblocks on floppy discs +# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag +# AFS /usr/afsws/bin/install, which mishandles nonexistent args +# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" +# ./install, which can be erroneously created by make from ./install.sh. +echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 +echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6 +if test -z "$INSTALL"; then +if test "${ac_cv_path_install+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + # Account for people who put trailing slashes in PATH elements. +case $as_dir/ in + ./ | .// | /cC/* | \ + /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ + /usr/ucb/* ) ;; + *) + # OSF1 and SCO ODT 3.0 have their own names for install. + # Don't use installbsd from OSF since it installs stuff as root + # by default. + for ac_prog in ginstall scoinst install; do + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then + if test $ac_prog = install && + grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # AIX install. It has an incompatible calling convention. + : + elif test $ac_prog = install && + grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # program-specific install script used by HP pwplus--don't use. + : + else + ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" + break 3 + fi + fi + done + done + ;; +esac +done + + +fi + if test "${ac_cv_path_install+set}" = set; then + INSTALL=$ac_cv_path_install + else + # As a last resort, use the slow shell script. We don't cache a + # path for INSTALL within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the path is relative. + INSTALL=$ac_install_sh + fi +fi +echo "$as_me:$LINENO: result: $INSTALL" >&5 +echo "${ECHO_T}$INSTALL" >&6 + +# Use test -z because SunOS4 sh mishandles braces in ${var-val}. +# It thinks the first close brace ends the variable substitution. +test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' + +test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' + +test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. +set dummy ${ac_tool_prefix}ranlib; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_RANLIB+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$RANLIB"; then + ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +RANLIB=$ac_cv_prog_RANLIB +if test -n "$RANLIB"; then + echo "$as_me:$LINENO: result: $RANLIB" >&5 +echo "${ECHO_T}$RANLIB" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$ac_cv_prog_RANLIB"; then + ac_ct_RANLIB=$RANLIB + # Extract the first word of "ranlib", so it can be a program name with args. +set dummy ranlib; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_RANLIB"; then + ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_RANLIB="ranlib" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + + test -z "$ac_cv_prog_ac_ct_RANLIB" && ac_cv_prog_ac_ct_RANLIB=":" +fi +fi +ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB +if test -n "$ac_ct_RANLIB"; then + echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5 +echo "${ECHO_T}$ac_ct_RANLIB" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + RANLIB=$ac_ct_RANLIB +else + RANLIB="$ac_cv_prog_RANLIB" +fi + + + + # Make sure that _GNU_SOURCE is defined for all subsequent + # configure-time compile tests. + # This definition must be emitted (into confdefs.h) before any + # test that involves compilation. + cat >>confdefs.h <<\EOF +#ifndef _GNU_SOURCE +# define _GNU_SOURCE +#endif +EOF + + # Emit this code into config.h.in. + # The ifndef is to avoid redefinition warnings. + + + + +cat >>confdefs.h <<\_ACEOF +#define __EXTENSIONS__ 1 +_ACEOF + +# Check whether --enable-largefile or --disable-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 +#line $LINENO "configure" +#include "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]; +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ + + ; + return 0; +} +_ACEOF + rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + break +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +fi +rm -f conftest.$ac_objext + CC="$CC -n32" + rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_sys_largefile_CC=' -n32'; break +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +fi +rm -f 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 + ac_cv_sys_file_offset_bits=no + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "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]; +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + break +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +fi +rm -f conftest.$ac_objext conftest.$ac_ext + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "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]; +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_sys_file_offset_bits=64; break +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +fi +rm -f conftest.$ac_objext conftest.$ac_ext + 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 +if test "$ac_cv_sys_file_offset_bits" != no; then + +cat >>confdefs.h <<_ACEOF +#define _FILE_OFFSET_BITS $ac_cv_sys_file_offset_bits +_ACEOF + +fi +rm -f conftest* + 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 + ac_cv_sys_large_files=no + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "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]; +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + break +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +fi +rm -f conftest.$ac_objext conftest.$ac_ext + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "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]; +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_sys_large_files=1; break +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +fi +rm -f conftest.$ac_objext conftest.$ac_ext + break +done +fi +echo "$as_me:$LINENO: result: $ac_cv_sys_large_files" >&5 +echo "${ECHO_T}$ac_cv_sys_large_files" >&6 +if test "$ac_cv_sys_large_files" != no; then + +cat >>confdefs.h <<_ACEOF +#define _LARGE_FILES $ac_cv_sys_large_files +_ACEOF + +fi +rm -f conftest* +fi + + +echo "$as_me:$LINENO: checking for $CC option to accept ANSI C" >&5 +echo $ECHO_N "checking for $CC option to accept ANSI C... $ECHO_C" >&6 +if test "${ac_cv_prog_cc_stdc+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_prog_cc_stdc=no +ac_save_CC=$CC +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +#include +#include +#include +#include +/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ +struct buf { int x; }; +FILE * (*rcsopen) (struct buf *, struct stat *, int); +static char *e (p, i) + char **p; + int i; +{ + return p[i]; +} +static char *f (char * (*g) (char **, int), char **p, ...) +{ + char *s; + va_list v; + va_start (v,p); + s = g (p, va_arg (v,int)); + va_end (v); + return s; +} +int test (int i, double x); +struct s1 {int (*f) (int a);}; +struct s2 {int (*f) (double a);}; +int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); +int argc; +char **argv; +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; + ; + return 0; +} +_ACEOF +# Don't try gcc -ansi; that turns off useful extensions and +# breaks some systems' header files. +# AIX -qlanglvl=ansi +# Ultrix and OSF/1 -std1 +# HP-UX 10.20 and later -Ae +# HP-UX older versions -Aa -D_HPUX_SOURCE +# SVR4 -Xc -D__EXTENSIONS__ +for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +do + CC="$ac_save_CC $ac_arg" + rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_prog_cc_stdc=$ac_arg +break +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +fi +rm -f conftest.$ac_objext +done +rm -f conftest.$ac_ext conftest.$ac_objext +CC=$ac_save_CC + +fi + +case "x$ac_cv_prog_cc_stdc" in + x|xno) + echo "$as_me:$LINENO: result: none needed" >&5 +echo "${ECHO_T}none needed" >&6 ;; + *) + echo "$as_me:$LINENO: result: $ac_cv_prog_cc_stdc" >&5 +echo "${ECHO_T}$ac_cv_prog_cc_stdc" >&6 + CC="$CC $ac_cv_prog_cc_stdc" ;; +esac + +echo "$as_me:$LINENO: checking for an ANSI C-conforming const" >&5 +echo $ECHO_N "checking for an ANSI C-conforming const... $ECHO_C" >&6 +if test "${ac_cv_c_const+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" + +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +/* FIXME: Include the comments suggested by Paul. */ +#ifndef __cplusplus + /* Ultrix mips cc rejects this. */ + typedef int charset[2]; + const charset x; + /* SunOS 4.1.1 cc rejects this. */ + char const *const *ccp; + char **p; + /* NEC SVR4.0.2 mips cc rejects this. */ + struct point {int x, y;}; + static struct point const zero = {0,0}; + /* AIX XL C 1.02.0.0 rejects this. + It does not let you subtract one const X* pointer from another in + an arm of an if-expression whose if-part is not a constant + expression */ + const char *g = "string"; + ccp = &g + (g ? g-g : 0); + /* HPUX 7.0 cc rejects these. */ + ++ccp; + p = (char**) ccp; + ccp = (char const *const *) p; + { /* SCO 3.2v4 cc rejects this. */ + char *t; + char const *s = 0 ? (char *) 0 : (char const *) 0; + + *t++ = 0; + } + { /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */ + int x[] = {25, 17}; + const int *foo = &x[0]; + ++foo; + } + { /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */ + typedef const int *iptr; + iptr p = 0; + ++p; + } + { /* AIX XL C 1.02.0.0 rejects this saying + "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */ + struct s { int j; const int *ap[3]; }; + struct s *b; b->j = 5; + } + { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ + const int foo = 10; + } +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_c_const=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_c_const=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_c_const" >&5 +echo "${ECHO_T}$ac_cv_c_const" >&6 +if test $ac_cv_c_const = no; then + +cat >>confdefs.h <<\_ACEOF +#define const +_ACEOF + +fi + +echo "$as_me:$LINENO: checking for inline" >&5 +echo $ECHO_N "checking for inline... $ECHO_C" >&6 +if test "${ac_cv_c_inline+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_c_inline=no +for ac_kw in inline __inline__ __inline; do + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +#ifndef __cplusplus +static $ac_kw int static_foo () {return 0; } +$ac_kw int foo () {return 0; } +#endif + +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_c_inline=$ac_kw; break +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +fi +rm -f conftest.$ac_objext conftest.$ac_ext +done + +fi +echo "$as_me:$LINENO: result: $ac_cv_c_inline" >&5 +echo "${ECHO_T}$ac_cv_c_inline" >&6 +case $ac_cv_c_inline in + inline | yes) ;; + no) +cat >>confdefs.h <<\_ACEOF +#define inline +_ACEOF + ;; + *) cat >>confdefs.h <<_ACEOF +#define inline $ac_cv_c_inline +_ACEOF + ;; +esac + + + echo "$as_me:$LINENO: checking for variable-length arrays" >&5 +echo $ECHO_N "checking for variable-length arrays... $ECHO_C" >&6 +if test "${ac_cv_c_vararrays+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" + +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +static int x; char a[++x]; a[sizeof a - 1] = 0; return a[0]; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_c_vararrays=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_c_vararrays=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_c_vararrays" >&5 +echo "${ECHO_T}$ac_cv_c_vararrays" >&6 + if test $ac_cv_c_vararrays = yes; then + +cat >>confdefs.h <<\_ACEOF +#define HAVE_C_VARARRAYS 1 +_ACEOF + + fi + + + +cat >>confdefs.h <<\_ACEOF +#define DEFAULT_DIFF_PROGRAM "diff" +_ACEOF + + + +cat >>confdefs.h <<\_ACEOF +#define DEFAULT_EDITOR_PROGRAM "ed" +_ACEOF + + +# Extract the first word of "pr", so it can be a program name with args. +set dummy pr; 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_PR_PROGRAM+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $PR_PROGRAM in + [\\/]* | ?:[\\/]*) + ac_cv_path_PR_PROGRAM="$PR_PROGRAM" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_PR_PROGRAM="$as_dir/$ac_word$ac_exec_ext" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + + test -z "$ac_cv_path_PR_PROGRAM" && ac_cv_path_PR_PROGRAM="""" + ;; +esac +fi +PR_PROGRAM=$ac_cv_path_PR_PROGRAM + +if test -n "$PR_PROGRAM"; then + echo "$as_me:$LINENO: result: $PR_PROGRAM" >&5 +echo "${ECHO_T}$PR_PROGRAM" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + +cat >>confdefs.h <<_ACEOF +#define PR_PROGRAM "$PR_PROGRAM" +_ACEOF + + +echo "$as_me:$LINENO: checking for stdbool.h that conforms to C99" >&5 +echo $ECHO_N "checking for stdbool.h that conforms to C99... $ECHO_C" >&6 +if test "${ac_cv_header_stdbool_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" + + #include + #ifndef bool + "error: bool is not defined" + #endif + #ifndef false + "error: false is not defined" + #endif + #ifndef true + "error: false is not defined" + #endif + #ifndef __bool_true_false_are_defined + "error: __bool_true_false_are_defined is not defined" + #endif + + struct s { _Bool s: 1; _Bool t; } s; + + char a[true == 1 ? 1 : -1]; + char b[false == 0 ? 1 : -1]; + char c[__bool_true_false_are_defined == 1 ? 1 : -1]; + char d[(bool) -0.5 == true ? 1 : -1]; + char e[(bool) &s == true ? 1 : -1]; + char f[(_Bool) -0.0 == false ? 1 : -1]; + char g[true]; + char h[sizeof (_Bool)]; + char i[sizeof s.t]; + +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ + return !a + !b + !c + !d + !e + !f + !g + !h + !i; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_header_stdbool_h=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_header_stdbool_h=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_header_stdbool_h" >&5 +echo "${ECHO_T}$ac_cv_header_stdbool_h" >&6 + if test $ac_cv_header_stdbool_h = yes; then + +cat >>confdefs.h <<\_ACEOF +#define HAVE_STDBOOL_H 1 +_ACEOF + + fi + +echo "$as_me:$LINENO: checking for ANSI C header files" >&5 +echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6 +if test "${ac_cv_header_stdc+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +#include +#include +#include +#include + +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + egrep -v '^ *\+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + ac_cv_header_stdc=yes +else + echo "$as_me: failed program was:" >&5 + cat conftest.$ac_ext >&5 + ac_cv_header_stdc=no +fi +rm -f conftest.err conftest.$ac_ext + +if test $ac_cv_header_stdc = yes; then + # SunOS 4.x string.h does not declare mem*, contrary to ANSI. + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + egrep "memchr" >/dev/null 2>&1; then + : +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + egrep "free" >/dev/null 2>&1; then + : +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. + if test "$cross_compiling" = yes; then + : +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +#include +#if ((' ' & 0x0FF) == 0x020) +# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') +# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) +#else +# define ISLOWER(c) (('a' <= (c) && (c) <= 'i') \ + || ('j' <= (c) && (c) <= 'r') \ + || ('s' <= (c) && (c) <= 'z')) +# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) +#endif + +#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) +int +main () +{ + int i; + for (i = 0; i < 256; i++) + if (XOR (islower (i), ISLOWER (i)) + || toupper (i) != TOUPPER (i)) + exit(2); + exit (0); +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + : +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +( exit $ac_status ) +ac_cv_header_stdc=no +fi +rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi +fi +echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 +echo "${ECHO_T}$ac_cv_header_stdc" >&6 +if test $ac_cv_header_stdc = yes; then + +cat >>confdefs.h <<\_ACEOF +#define STDC_HEADERS 1 +_ACEOF + +fi + +# On IRIX 5.3, sys/types and inttypes.h are conflicting. + + + + + + + + + +for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ + inttypes.h stdint.h unistd.h +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +$ac_includes_default + +#include <$ac_header> +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_Header=yes" +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +eval "$as_ac_Header=no" +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + + + + + + + + + + +for ac_header in fcntl.h libintl.h limits.h locale.h \ + stdlib.h string.h sys/file.h time.h unistd.h +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +else + # Is the header compilable? +echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +$ac_includes_default +#include <$ac_header> +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_header_compiler=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 + +# Is the header present? +echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +#include <$ac_header> +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + egrep -v '^ *\+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + ac_header_preproc=yes +else + echo "$as_me: failed program was:" >&5 + cat conftest.$ac_ext >&5 + ac_header_preproc=no +fi +rm -f conftest.err conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc in + yes:no ) + { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; + no:yes ) + { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; +esac +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + eval "$as_ac_Header=$ac_header_preproc" +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 + +fi +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + +echo "$as_me:$LINENO: checking for struct stat.st_blksize" >&5 +echo $ECHO_N "checking for struct stat.st_blksize... $ECHO_C" >&6 +if test "${ac_cv_member_struct_stat_st_blksize+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +$ac_includes_default +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +static struct stat ac_aggr; +if (ac_aggr.st_blksize) +return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_member_struct_stat_st_blksize=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_member_struct_stat_st_blksize=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_member_struct_stat_st_blksize" >&5 +echo "${ECHO_T}$ac_cv_member_struct_stat_st_blksize" >&6 +if test $ac_cv_member_struct_stat_st_blksize = yes; then + +cat >>confdefs.h <<_ACEOF +#define HAVE_STRUCT_STAT_ST_BLKSIZE 1 +_ACEOF + + +fi + +echo "$as_me:$LINENO: checking for struct stat.st_rdev" >&5 +echo $ECHO_N "checking for struct stat.st_rdev... $ECHO_C" >&6 +if test "${ac_cv_member_struct_stat_st_rdev+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +$ac_includes_default +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +static struct stat ac_aggr; +if (ac_aggr.st_rdev) +return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_member_struct_stat_st_rdev=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_member_struct_stat_st_rdev=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_member_struct_stat_st_rdev" >&5 +echo "${ECHO_T}$ac_cv_member_struct_stat_st_rdev" >&6 +if test $ac_cv_member_struct_stat_st_rdev = yes; then + +cat >>confdefs.h <<_ACEOF +#define HAVE_STRUCT_STAT_ST_RDEV 1 +_ACEOF + + +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 +#line $LINENO "configure" +#include "confdefs.h" +$ac_includes_default +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +if ((ptrdiff_t *) 0) + return 0; +if (sizeof (ptrdiff_t)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_ptrdiff_t=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_type_ptrdiff_t=no +fi +rm -f 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 int +_ACEOF + +fi + +echo "$as_me:$LINENO: checking for ssize_t" >&5 +echo $ECHO_N "checking for ssize_t... $ECHO_C" >&6 +if test "${ac_cv_type_ssize_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +$ac_includes_default +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +if ((ssize_t *) 0) + return 0; +if (sizeof (ssize_t)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_ssize_t=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_type_ssize_t=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_ssize_t" >&5 +echo "${ECHO_T}$ac_cv_type_ssize_t" >&6 +if test $ac_cv_type_ssize_t = yes; then + : +else + +cat >>confdefs.h <<_ACEOF +#define ssize_t int +_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 +#line $LINENO "configure" +#include "confdefs.h" +unsigned long long ull = 1; int i = 63; +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +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 { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_unsigned_long_long=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_type_unsigned_long_long=no +fi +rm -f conftest.$ac_objext 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 + + + + echo "$as_me:$LINENO: checking for uintmax_t" >&5 +echo $ECHO_N "checking for uintmax_t... $ECHO_C" >&6 +if test "${ac_cv_type_uintmax_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +$ac_includes_default +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +if ((uintmax_t *) 0) + return 0; +if (sizeof (uintmax_t)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_uintmax_t=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_type_uintmax_t=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_uintmax_t" >&5 +echo "${ECHO_T}$ac_cv_type_uintmax_t" >&6 +if test $ac_cv_type_uintmax_t = yes; then + : +else + 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 + +fi + + + + MKINSTALLDIRS= + if test -n "$ac_aux_dir"; then + MKINSTALLDIRS="$ac_aux_dir/mkinstalldirs" + fi + if test -z "$MKINSTALLDIRS"; then + MKINSTALLDIRS="\$(top_srcdir)/mkinstalldirs" + fi + + + + + + # Extract the first word of "msgfmt", so it can be a program name with args. +set dummy msgfmt; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_path_MSGFMT+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case "$MSGFMT" in + /*) + ac_cv_path_MSGFMT="$MSGFMT" # Let the user override the test with a path. + ;; + *) + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" + for ac_dir in $PATH; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + if $ac_dir/$ac_word --statistics /dev/null >/dev/null 2>&1 && + (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" + break + fi + fi + done + IFS="$ac_save_ifs" + test -z "$ac_cv_path_MSGFMT" && ac_cv_path_MSGFMT=":" + ;; +esac +fi +MSGFMT="$ac_cv_path_MSGFMT" +if test "$MSGFMT" != ":"; then + echo "$as_me:$LINENO: result: $MSGFMT" >&5 +echo "${ECHO_T}$MSGFMT" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + # Extract the first word of "gmsgfmt", so it can be a program name with args. +set dummy gmsgfmt; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_path_GMSGFMT+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $GMSGFMT in + [\\/]* | ?:[\\/]*) + ac_cv_path_GMSGFMT="$GMSGFMT" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_GMSGFMT="$as_dir/$ac_word$ac_exec_ext" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + + test -z "$ac_cv_path_GMSGFMT" && ac_cv_path_GMSGFMT="$MSGFMT" + ;; +esac +fi +GMSGFMT=$ac_cv_path_GMSGFMT + +if test -n "$GMSGFMT"; then + echo "$as_me:$LINENO: result: $GMSGFMT" >&5 +echo "${ECHO_T}$GMSGFMT" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + + # Extract the first word of "xgettext", so it can be a program name with args. +set dummy xgettext; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_path_XGETTEXT+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case "$XGETTEXT" in + /*) + ac_cv_path_XGETTEXT="$XGETTEXT" # Let the user override the test with a path. + ;; + *) + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" + for ac_dir in $PATH; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + if $ac_dir/$ac_word --omit-header --copyright-holder= /dev/null >/dev/null 2>&1 && + (if $ac_dir/$ac_word --omit-header --copyright-holder= /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" + break + fi + fi + done + IFS="$ac_save_ifs" + test -z "$ac_cv_path_XGETTEXT" && ac_cv_path_XGETTEXT=":" + ;; +esac +fi +XGETTEXT="$ac_cv_path_XGETTEXT" +if test "$XGETTEXT" != ":"; then + echo "$as_me:$LINENO: result: $XGETTEXT" >&5 +echo "${ECHO_T}$XGETTEXT" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + rm -f messages.po + + # 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. + ;; + *) + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" + for ac_dir in $PATH; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + if $ac_dir/$ac_word --update -q /dev/null /dev/null >/dev/null 2>&1; then + ac_cv_path_MSGMERGE="$ac_dir/$ac_word" + break + fi + fi + 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= /dev/null >/dev/null 2>&1 && + (if $XGETTEXT --omit-header --copyright-holder= /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" + + + + 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" + +# Make sure we can run config.sub. +$ac_config_sub sun4 >/dev/null 2>&1 || + { { echo "$as_me:$LINENO: error: cannot run $ac_config_sub" >&5 +echo "$as_me: error: cannot run $ac_config_sub" >&2;} + { (exit 1); exit 1; }; } + +echo "$as_me:$LINENO: checking build system type" >&5 +echo $ECHO_N "checking build system type... $ECHO_C" >&6 +if test "${ac_cv_build+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_build_alias=$build_alias +test -z "$ac_cv_build_alias" && + ac_cv_build_alias=`$ac_config_guess` +test -z "$ac_cv_build_alias" && + { { echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5 +echo "$as_me: error: cannot guess build type; you must specify one" >&2;} + { (exit 1); exit 1; }; } +ac_cv_build=`$ac_config_sub $ac_cv_build_alias` || + { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_build_alias failed" >&5 +echo "$as_me: error: $ac_config_sub $ac_cv_build_alias failed" >&2;} + { (exit 1); exit 1; }; } + +fi +echo "$as_me:$LINENO: result: $ac_cv_build" >&5 +echo "${ECHO_T}$ac_cv_build" >&6 +build=$ac_cv_build +build_cpu=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` +build_vendor=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` +build_os=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` + + +echo "$as_me:$LINENO: checking host system type" >&5 +echo $ECHO_N "checking host system type... $ECHO_C" >&6 +if test "${ac_cv_host+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_host_alias=$host_alias +test -z "$ac_cv_host_alias" && + ac_cv_host_alias=$ac_cv_build_alias +ac_cv_host=`$ac_config_sub $ac_cv_host_alias` || + { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_host_alias failed" >&5 +echo "$as_me: error: $ac_config_sub $ac_cv_host_alias failed" >&2;} + { (exit 1); exit 1; }; } + +fi +echo "$as_me:$LINENO: result: $ac_cv_host" >&5 +echo "${ECHO_T}$ac_cv_host" >&6 +host=$ac_cv_host +host_cpu=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` +host_vendor=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` +host_os=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` + + + +# Check whether --with-gnu-ld or --without-gnu-ld was given. +if test "${with_gnu_ld+set}" = set; then + withval="$with_gnu_ld" + test "$withval" = no || with_gnu_ld=yes +else + with_gnu_ld=no +fi; +ac_prog=ld +if test "$GCC" = yes; then + # Check if gcc -print-prog-name=ld gives a path. + echo "$as_me:$LINENO: checking for ld used by GCC" >&5 +echo $ECHO_N "checking for ld used by GCC... $ECHO_C" >&6 + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return which upsets mingw + ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $ac_prog in + # Accept absolute paths. + [\\/]* | [A-Za-z]:[\\/]*) + re_direlt='/[^/][^/]*/\.\./' + # Canonicalize the path of ld + ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'` + while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do + ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"` + done + test -z "$LD" && LD="$ac_prog" + ;; + "") + # If it fails, then pretend we aren't using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac +elif test "$with_gnu_ld" = yes; then + echo "$as_me:$LINENO: checking for GNU ld" >&5 +echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6 +else + echo "$as_me:$LINENO: checking for non-GNU ld" >&5 +echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6 +fi +if test "${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. + if "$acl_cv_path_LD" -v 2>&1 < /dev/null | egrep '(GNU|with BFD)' > /dev/null; then + test "$with_gnu_ld" != no && break + else + test "$with_gnu_ld" != yes && break + fi + fi + done + IFS="$ac_save_ifs" +else + 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. +if $LD -v 2>&1 &5; then + acl_cv_prog_gnu_ld=yes +else + acl_cv_prog_gnu_ld=no +fi +fi +echo "$as_me:$LINENO: result: $acl_cv_prog_gnu_ld" >&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" + sys_lib_search_path_spec="$acl_cv_sys_lib_search_path_spec" + sys_lib_dlsearch_path_spec="$acl_cv_sys_lib_dlsearch_path_spec" + + + + + + + + + + + + + echo "$as_me:$LINENO: checking whether NLS is requested" >&5 +echo $ECHO_N "checking whether NLS is requested... $ECHO_C" >&6 + # Check whether --enable-nls or --disable-nls was given. +if test "${enable_nls+set}" = set; then + enableval="$enable_nls" + USE_NLS=$enableval +else + USE_NLS=yes +fi; + echo "$as_me:$LINENO: result: $USE_NLS" >&5 +echo "${ECHO_T}$USE_NLS" >&6 + + + + LIBINTL= + LTLIBINTL= + POSUB= + + if test "$USE_NLS" = "yes"; then + gt_use_preinstalled_gnugettext=no + + + + + + + echo "$as_me:$LINENO: checking for GNU gettext in libc" >&5 +echo $ECHO_N "checking for GNU gettext in libc... $ECHO_C" >&6 +if test "${gt_cv_func_gnugettext1_libc+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +#include +extern int _nl_msg_cat_cntr; +extern int *_nl_domain_bindings; +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +bindtextdomain ("", ""); +return (int) gettext ("") + _nl_msg_cat_cntr + *_nl_domain_bindings + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + gt_cv_func_gnugettext1_libc=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +gt_cv_func_gnugettext1_libc=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $gt_cv_func_gnugettext1_libc" >&5 +echo "${ECHO_T}$gt_cv_func_gnugettext1_libc" >&6 + + if test "$gt_cv_func_gnugettext1_libc" != "yes"; then + + + + + + + + + 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 or --without-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 "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*) 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*) 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 + ;; + -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 + + + 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 +#line $LINENO "configure" +#include "confdefs.h" +#include +#include +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +iconv_t cd = iconv_open("",""); + iconv(cd,NULL,NULL,NULL,NULL); + iconv_close(cd); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + am_cv_func_iconv=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext + if test "$am_cv_func_iconv" != yes; then + am_save_LIBS="$LIBS" + LIBS="$LIBS $LIBICONV" + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +#include +#include +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +iconv_t cd = iconv_open("",""); + iconv(cd,NULL,NULL,NULL,NULL); + iconv_close(cd); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + am_cv_lib_iconv=yes + am_cv_func_iconv=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext + LIBS="$am_save_LIBS" + fi + +fi +echo "$as_me:$LINENO: result: $am_cv_func_iconv" >&5 +echo "${ECHO_T}$am_cv_func_iconv" >&6 + if test "$am_cv_func_iconv" = yes; then + +cat >>confdefs.h <<\_ACEOF +#define HAVE_ICONV 1 +_ACEOF + + 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 + + + + + + + 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 or --without-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 "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*) 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*) 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 + ;; + -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 +#line $LINENO "configure" +#include "confdefs.h" +#include +extern int _nl_msg_cat_cntr; +extern int *_nl_domain_bindings; +extern +#ifdef __cplusplus +"C" +#endif +const char *_nl_expand_alias (); +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +bindtextdomain ("", ""); +return (int) gettext ("") + _nl_msg_cat_cntr + *_nl_domain_bindings + *_nl_expand_alias (0) + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + gt_cv_func_gnugettext1_libintl=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +gt_cv_func_gnugettext1_libintl=no +fi +rm -f conftest.$ac_objext 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 +#line $LINENO "configure" +#include "confdefs.h" +#include +extern int _nl_msg_cat_cntr; +extern int *_nl_domain_bindings; +extern +#ifdef __cplusplus +"C" +#endif +const char *_nl_expand_alias (); +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +bindtextdomain ("", ""); +return (int) gettext ("") + _nl_msg_cat_cntr + *_nl_domain_bindings + *_nl_expand_alias (0) + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + LIBINTL="$LIBINTL $LIBICONV" + LTLIBINTL="$LTLIBINTL $LTLIBICONV" + gt_cv_func_gnugettext1_libintl=yes + +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +fi +rm -f conftest.$ac_objext 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; }; then + gt_use_preinstalled_gnugettext=yes + else + LIBINTL= + LTLIBINTL= + INCINTL= + 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 + + 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 + + + + INTLLIBS="$LIBINTL" + + + + + + +XGETTEXT="AWK='$AWK' \$(SHELL) \$(top_srcdir)/exgettext $XGETTEXT" + + + + + +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 eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +#include +#include <$ac_hdr> + +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +if ((DIR *) 0) +return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_Header=yes" +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +eval "$as_ac_Header=no" +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_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 +ac_cv_search_opendir=no +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char opendir (); +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +opendir (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_search_opendir="none required" +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +if test "$ac_cv_search_opendir" = no; then + for ac_lib in dir; do + LIBS="-l$ac_lib $ac_func_search_save_LIBS" + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char opendir (); +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +opendir (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_search_opendir="-l$ac_lib" +break +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext + done +fi +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 +if test "$ac_cv_search_opendir" != no; then + test "$ac_cv_search_opendir" = "none required" || LIBS="$ac_cv_search_opendir $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 +ac_cv_search_opendir=no +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char opendir (); +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +opendir (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_search_opendir="none required" +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +if test "$ac_cv_search_opendir" = no; then + for ac_lib in x; do + LIBS="-l$ac_lib $ac_func_search_save_LIBS" + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char opendir (); +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +opendir (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_search_opendir="-l$ac_lib" +break +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext + done +fi +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 +if test "$ac_cv_search_opendir" != no; then + test "$ac_cv_search_opendir" = "none required" || LIBS="$ac_cv_search_opendir $LIBS" + +fi + +fi + +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 +#line $LINENO "configure" +#include "confdefs.h" +#include +#include + +#if defined(S_ISBLK) && defined(S_IFDIR) +# if S_ISBLK (S_IFDIR) +You lose. +# endif +#endif + +#if defined(S_ISBLK) && defined(S_IFCHR) +# if S_ISBLK (S_IFCHR) +You lose. +# endif +#endif + +#if defined(S_ISLNK) && defined(S_IFREG) +# if S_ISLNK (S_IFREG) +You lose. +# endif +#endif + +#if defined(S_ISSOCK) && defined(S_IFREG) +# if S_ISSOCK (S_IFREG) +You lose. +# endif +#endif + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + egrep "You lose" >/dev/null 2>&1; then + ac_cv_header_stat_broken=yes +else + ac_cv_header_stat_broken=no +fi +rm -f conftest* + +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 sys/wait.h that is POSIX.1 compatible" >&5 +echo $ECHO_N "checking for sys/wait.h that is POSIX.1 compatible... $ECHO_C" >&6 +if test "${ac_cv_header_sys_wait_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +#include +#include +#ifndef WEXITSTATUS +# define WEXITSTATUS(stat_val) ((unsigned)(stat_val) >> 8) +#endif +#ifndef WIFEXITED +# define WIFEXITED(stat_val) (((stat_val) & 255) == 0) +#endif + +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ + int s; + wait (&s); + s = WIFEXITED (s) ? WEXITSTATUS (s) : 1; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_header_sys_wait_h=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_header_sys_wait_h=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_header_sys_wait_h" >&5 +echo "${ECHO_T}$ac_cv_header_sys_wait_h" >&6 +if test $ac_cv_header_sys_wait_h = yes; then + +cat >>confdefs.h <<\_ACEOF +#define HAVE_SYS_WAIT_H 1 +_ACEOF + +fi + +echo "$as_me:$LINENO: checking for nanoseconds member of struct stat.st_mtim" >&5 +echo $ECHO_N "checking for nanoseconds member of struct stat.st_mtim... $ECHO_C" >&6 +if test "${ac_cv_struct_st_mtim_nsec+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_save_CPPFLAGS="$CPPFLAGS" + ac_cv_struct_st_mtim_nsec=no + # tv_nsec -- the usual case + # _tv_nsec -- Solaris 2.6, if + # (defined _XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED == 1 + # && !defined __EXTENSIONS__) + # st__tim.tv_nsec -- UnixWare 2.1.2 + for ac_val in tv_nsec _tv_nsec st__tim.tv_nsec; do + CPPFLAGS="$ac_save_CPPFLAGS -DST_MTIM_NSEC=$ac_val" + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +#include +#include +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +struct stat s; s.st_mtim.ST_MTIM_NSEC; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_struct_st_mtim_nsec=$ac_val; break +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +fi +rm -f conftest.$ac_objext conftest.$ac_ext + done + CPPFLAGS="$ac_save_CPPFLAGS" +fi +echo "$as_me:$LINENO: result: $ac_cv_struct_st_mtim_nsec" >&5 +echo "${ECHO_T}$ac_cv_struct_st_mtim_nsec" >&6 + + if test $ac_cv_struct_st_mtim_nsec != no; then + +cat >>confdefs.h <<_ACEOF +#define ST_MTIM_NSEC $ac_cv_struct_st_mtim_nsec +_ACEOF + + fi + + +echo "$as_me:$LINENO: checking for pid_t" >&5 +echo $ECHO_N "checking for pid_t... $ECHO_C" >&6 +if test "${ac_cv_type_pid_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +$ac_includes_default +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +if ((pid_t *) 0) + return 0; +if (sizeof (pid_t)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_pid_t=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_type_pid_t=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_pid_t" >&5 +echo "${ECHO_T}$ac_cv_type_pid_t" >&6 +if test $ac_cv_type_pid_t = yes; then + : +else + +cat >>confdefs.h <<_ACEOF +#define pid_t int +_ACEOF + +fi + +echo "$as_me:$LINENO: checking return type of signal handlers" >&5 +echo $ECHO_N "checking return type of signal handlers... $ECHO_C" >&6 +if test "${ac_cv_type_signal+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +#include +#include +#ifdef signal +# undef signal +#endif +#ifdef __cplusplus +extern "C" void (*signal (int, void (*)(int)))(int); +#else +void (*signal ()) (); +#endif + +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +int i; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_signal=void +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_type_signal=int +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_signal" >&5 +echo "${ECHO_T}$ac_cv_type_signal" >&6 + +cat >>confdefs.h <<_ACEOF +#define RETSIGTYPE $ac_cv_type_signal +_ACEOF + + + + + + + + + + + +for ac_func in diraccess dup2 gettimeofday \ + sigaction sigprocmask strchr strerror tmpnam +do +as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $ac_func (); below. */ +#include +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char $ac_func (); +char (*f) (); + +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_$ac_func) || defined (__stub___$ac_func) +choke me +#else +f = $ac_func; +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_var=yes" +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +eval "$as_ac_var=no" +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 +if test `eval echo '${'$as_ac_var'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +fi +done + + + + + +for ac_func in memchr mkstemp strcasecmp waitpid +do +as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $ac_func (); below. */ +#include +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char $ac_func (); +char (*f) (); + +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_$ac_func) || defined (__stub___$ac_func) +choke me +#else +f = $ac_func; +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_var=yes" +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +eval "$as_ac_var=no" +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 +if test `eval echo '${'$as_ac_var'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +else + LIBOBJS="$LIBOBJS $ac_func.$ac_objext" +fi +done + + +if test $ac_cv_func_mkstemp != yes; then + LIBOBJS="$LIBOBJS tempname.$ac_objext" +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 +#line $LINENO "configure" +#include "confdefs.h" +$ac_includes_default +#include <$ac_header_dirent> +#ifndef __cplusplus +int closedir (); +#endif + +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +exit (closedir (opendir (".")) != 0); + ; + return 0; +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_closedir_void=no +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +( exit $ac_status ) +ac_cv_func_closedir_void=yes +fi +rm -f core core.* *.core 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 + + + +for ac_header in unistd.h vfork.h +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +else + # Is the header compilable? +echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +$ac_includes_default +#include <$ac_header> +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_header_compiler=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 + +# Is the header present? +echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +#include <$ac_header> +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + egrep -v '^ *\+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + ac_header_preproc=yes +else + echo "$as_me: failed program was:" >&5 + cat conftest.$ac_ext >&5 + ac_header_preproc=no +fi +rm -f conftest.err conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc in + yes:no ) + { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; + no:yes ) + { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; +esac +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + eval "$as_ac_Header=$ac_header_preproc" +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 + +fi +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + + +for ac_func in fork vfork +do +as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $ac_func (); below. */ +#include +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char $ac_func (); +char (*f) (); + +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_$ac_func) || defined (__stub___$ac_func) +choke me +#else +f = $ac_func; +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_var=yes" +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +eval "$as_ac_var=no" +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 +if test `eval echo '${'$as_ac_var'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +fi +done + +ac_cv_func_fork_works=$ac_cv_func_fork +if test "x$ac_cv_func_fork" = xyes; then + echo "$as_me:$LINENO: checking for working fork" >&5 +echo $ECHO_N "checking for working fork... $ECHO_C" >&6 +if test "${ac_cv_func_fork_works+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$cross_compiling" = yes; then + ac_cv_func_fork_works=cross +else + cat >conftest.$ac_ext <<_ACEOF +/* By Ruediger Kuhlmann. */ + #include + #if HAVE_UNISTD_H + # include + #endif + /* Some systems only have a dummy stub for fork() */ + int main () + { + if (fork() < 0) + exit (1); + exit (0); + } +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_fork_works=yes +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +( exit $ac_status ) +ac_cv_func_fork_works=no +fi +rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi +echo "$as_me:$LINENO: result: $ac_cv_func_fork_works" >&5 +echo "${ECHO_T}$ac_cv_func_fork_works" >&6 + +fi +if test "x$ac_cv_func_fork_works" = xcross; then + case $host in + *-*-amigaos* | *-*-msdosdjgpp*) + # Override, as these systems have only a dummy fork() stub + ac_cv_func_fork_works=no + ;; + *) + ac_cv_func_fork_works=yes + ;; + esac + { echo "$as_me:$LINENO: WARNING: result $ac_cv_func_fork_works guessed because of cross compilation" >&5 +echo "$as_me: WARNING: result $ac_cv_func_fork_works guessed because of cross compilation" >&2;} +fi +ac_cv_func_vfork_works=$ac_cv_func_vfork +if test "x$ac_cv_func_vfork" = xyes; then + echo "$as_me:$LINENO: checking for working vfork" >&5 +echo $ECHO_N "checking for working vfork... $ECHO_C" >&6 +if test "${ac_cv_func_vfork_works+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$cross_compiling" = yes; then + ac_cv_func_vfork_works=cross +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +/* Thanks to Paul Eggert for this test. */ +#include +#include +#include +#if HAVE_UNISTD_H +# include +#endif +#if HAVE_VFORK_H +# include +#endif +/* On some sparc systems, changes by the child to local and incoming + argument registers are propagated back to the parent. The compiler + is told about this with #include , but some compilers + (e.g. gcc -O) don't grok . Test for this by using a + static variable whose address is put into a register that is + clobbered by the vfork. */ +static +#ifdef __cplusplus +sparc_address_test (int arg) +# else +sparc_address_test (arg) int arg; +#endif +{ + static pid_t child; + if (!child) { + child = vfork (); + if (child < 0) { + perror ("vfork"); + _exit(2); + } + if (!child) { + arg = getpid(); + write(-1, "", 0); + _exit (arg); + } + } +} + +int +main () +{ + pid_t parent = getpid (); + pid_t child; + + sparc_address_test (); + + child = vfork (); + + if (child == 0) { + /* Here is another test for sparc vfork register problems. This + test uses lots of local variables, at least as many local + variables as main has allocated so far including compiler + temporaries. 4 locals are enough for gcc 1.40.3 on a Solaris + 4.1.3 sparc, but we use 8 to be safe. A buggy compiler should + reuse the register of parent for one of the local variables, + since it will think that parent can't possibly be used any more + in this routine. Assigning to the local variable will thus + munge parent in the parent process. */ + pid_t + p = getpid(), p1 = getpid(), p2 = getpid(), p3 = getpid(), + p4 = getpid(), p5 = getpid(), p6 = getpid(), p7 = getpid(); + /* Convince the compiler that p..p7 are live; otherwise, it might + use the same hardware register for all 8 local variables. */ + if (p != p1 || p != p2 || p != p3 || p != p4 + || p != p5 || p != p6 || p != p7) + _exit(1); + + /* On some systems (e.g. IRIX 3.3), vfork doesn't separate parent + from child file descriptors. If the child closes a descriptor + before it execs or exits, this munges the parent's descriptor + as well. Test for this by closing stdout in the child. */ + _exit(close(fileno(stdout)) != 0); + } else { + int status; + struct stat st; + + while (wait(&status) != child) + ; + exit( + /* Was there some problem with vforking? */ + child < 0 + + /* Did the child fail? (This shouldn't happen.) */ + || status + + /* Did the vfork/compiler bug occur? */ + || parent != getpid() + + /* Did the file descriptor bug occur? */ + || fstat(fileno(stdout), &st) != 0 + ); + } +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_vfork_works=yes +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +( exit $ac_status ) +ac_cv_func_vfork_works=no +fi +rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi +echo "$as_me:$LINENO: result: $ac_cv_func_vfork_works" >&5 +echo "${ECHO_T}$ac_cv_func_vfork_works" >&6 + +fi; +if test "x$ac_cv_func_fork_works" = xcross; then + ac_cv_func_vfork_works=ac_cv_func_vfork + { echo "$as_me:$LINENO: WARNING: result $ac_cv_func_vfork_works guessed because of cross compilation" >&5 +echo "$as_me: WARNING: result $ac_cv_func_vfork_works guessed because of cross compilation" >&2;} +fi + +if test "x$ac_cv_func_vfork_works" = xyes; then + +cat >>confdefs.h <<\_ACEOF +#define HAVE_WORKING_VFORK 1 +_ACEOF + +else + +cat >>confdefs.h <<\_ACEOF +#define vfork fork +_ACEOF + +fi +if test "x$ac_cv_func_fork_works" = xyes; then + +cat >>confdefs.h <<\_ACEOF +#define HAVE_WORKING_FORK 1 +_ACEOF + +fi + + +for ac_func in vprintf +do +as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $ac_func (); below. */ +#include +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char $ac_func (); +char (*f) (); + +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_$ac_func) || defined (__stub___$ac_func) +choke me +#else +f = $ac_func; +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_var=yes" +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +eval "$as_ac_var=no" +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 +if test `eval echo '${'$as_ac_var'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +echo "$as_me:$LINENO: checking for _doprnt" >&5 +echo $ECHO_N "checking for _doprnt... $ECHO_C" >&6 +if test "${ac_cv_func__doprnt+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char _doprnt (); below. */ +#include +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char _doprnt (); +char (*f) (); + +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub__doprnt) || defined (__stub____doprnt) +choke me +#else +f = _doprnt; +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func__doprnt=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_func__doprnt=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_func__doprnt" >&5 +echo "${ECHO_T}$ac_cv_func__doprnt" >&6 +if test $ac_cv_func__doprnt = yes; then + +cat >>confdefs.h <<\_ACEOF +#define HAVE_DOPRNT 1 +_ACEOF + +fi + +fi +done + + +echo "$as_me:$LINENO: checking whether clearerr_unlocked is declared" >&5 +echo $ECHO_N "checking whether clearerr_unlocked is declared... $ECHO_C" >&6 +if test "${ac_cv_have_decl_clearerr_unlocked+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +$ac_includes_default +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +#ifndef clearerr_unlocked + char *p = (char *) clearerr_unlocked; +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_have_decl_clearerr_unlocked=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_have_decl_clearerr_unlocked=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_have_decl_clearerr_unlocked" >&5 +echo "${ECHO_T}$ac_cv_have_decl_clearerr_unlocked" >&6 +if test $ac_cv_have_decl_clearerr_unlocked = yes; then + +cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_CLEARERR_UNLOCKED 1 +_ACEOF + + +else + cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_CLEARERR_UNLOCKED 0 +_ACEOF + + +fi +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 +#line $LINENO "configure" +#include "confdefs.h" +$ac_includes_default +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +#ifndef feof_unlocked + char *p = (char *) feof_unlocked; +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_have_decl_feof_unlocked=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_have_decl_feof_unlocked=no +fi +rm -f 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 + +cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_FEOF_UNLOCKED 1 +_ACEOF + + +else + cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_FEOF_UNLOCKED 0 +_ACEOF + + +fi +echo "$as_me:$LINENO: checking whether ferror_unlocked is declared" >&5 +echo $ECHO_N "checking whether ferror_unlocked is declared... $ECHO_C" >&6 +if test "${ac_cv_have_decl_ferror_unlocked+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +$ac_includes_default +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +#ifndef ferror_unlocked + char *p = (char *) ferror_unlocked; +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_have_decl_ferror_unlocked=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_have_decl_ferror_unlocked=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_have_decl_ferror_unlocked" >&5 +echo "${ECHO_T}$ac_cv_have_decl_ferror_unlocked" >&6 +if test $ac_cv_have_decl_ferror_unlocked = yes; then + +cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_FERROR_UNLOCKED 1 +_ACEOF + + +else + cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_FERROR_UNLOCKED 0 +_ACEOF + + +fi +echo "$as_me:$LINENO: checking whether fflush_unlocked is declared" >&5 +echo $ECHO_N "checking whether fflush_unlocked is declared... $ECHO_C" >&6 +if test "${ac_cv_have_decl_fflush_unlocked+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +$ac_includes_default +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +#ifndef fflush_unlocked + char *p = (char *) fflush_unlocked; +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_have_decl_fflush_unlocked=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_have_decl_fflush_unlocked=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_have_decl_fflush_unlocked" >&5 +echo "${ECHO_T}$ac_cv_have_decl_fflush_unlocked" >&6 +if test $ac_cv_have_decl_fflush_unlocked = yes; then + +cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_FFLUSH_UNLOCKED 1 +_ACEOF + + +else + cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_FFLUSH_UNLOCKED 0 +_ACEOF + + +fi +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 +#line $LINENO "configure" +#include "confdefs.h" +$ac_includes_default +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +#ifndef fgets_unlocked + char *p = (char *) fgets_unlocked; +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_have_decl_fgets_unlocked=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_have_decl_fgets_unlocked=no +fi +rm -f 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 + +cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_FGETS_UNLOCKED 1 +_ACEOF + + +else + cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_FGETS_UNLOCKED 0 +_ACEOF + + +fi +echo "$as_me:$LINENO: checking whether fputc_unlocked is declared" >&5 +echo $ECHO_N "checking whether fputc_unlocked is declared... $ECHO_C" >&6 +if test "${ac_cv_have_decl_fputc_unlocked+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +$ac_includes_default +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +#ifndef fputc_unlocked + char *p = (char *) fputc_unlocked; +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_have_decl_fputc_unlocked=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_have_decl_fputc_unlocked=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_have_decl_fputc_unlocked" >&5 +echo "${ECHO_T}$ac_cv_have_decl_fputc_unlocked" >&6 +if test $ac_cv_have_decl_fputc_unlocked = yes; then + +cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_FPUTC_UNLOCKED 1 +_ACEOF + + +else + cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_FPUTC_UNLOCKED 0 +_ACEOF + + +fi +echo "$as_me:$LINENO: checking whether fputs_unlocked is declared" >&5 +echo $ECHO_N "checking whether fputs_unlocked is declared... $ECHO_C" >&6 +if test "${ac_cv_have_decl_fputs_unlocked+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +$ac_includes_default +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +#ifndef fputs_unlocked + char *p = (char *) fputs_unlocked; +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_have_decl_fputs_unlocked=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_have_decl_fputs_unlocked=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_have_decl_fputs_unlocked" >&5 +echo "${ECHO_T}$ac_cv_have_decl_fputs_unlocked" >&6 +if test $ac_cv_have_decl_fputs_unlocked = yes; then + +cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_FPUTS_UNLOCKED 1 +_ACEOF + + +else + cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_FPUTS_UNLOCKED 0 +_ACEOF + + +fi +echo "$as_me:$LINENO: checking whether fread_unlocked is declared" >&5 +echo $ECHO_N "checking whether fread_unlocked is declared... $ECHO_C" >&6 +if test "${ac_cv_have_decl_fread_unlocked+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +$ac_includes_default +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +#ifndef fread_unlocked + char *p = (char *) fread_unlocked; +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_have_decl_fread_unlocked=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_have_decl_fread_unlocked=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_have_decl_fread_unlocked" >&5 +echo "${ECHO_T}$ac_cv_have_decl_fread_unlocked" >&6 +if test $ac_cv_have_decl_fread_unlocked = yes; then + +cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_FREAD_UNLOCKED 1 +_ACEOF + + +else + cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_FREAD_UNLOCKED 0 +_ACEOF + + +fi +echo "$as_me:$LINENO: checking whether fwrite_unlocked is declared" >&5 +echo $ECHO_N "checking whether fwrite_unlocked is declared... $ECHO_C" >&6 +if test "${ac_cv_have_decl_fwrite_unlocked+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +$ac_includes_default +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +#ifndef fwrite_unlocked + char *p = (char *) fwrite_unlocked; +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_have_decl_fwrite_unlocked=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_have_decl_fwrite_unlocked=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_have_decl_fwrite_unlocked" >&5 +echo "${ECHO_T}$ac_cv_have_decl_fwrite_unlocked" >&6 +if test $ac_cv_have_decl_fwrite_unlocked = yes; then + +cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_FWRITE_UNLOCKED 1 +_ACEOF + + +else + cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_FWRITE_UNLOCKED 0 +_ACEOF + + +fi +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 +#line $LINENO "configure" +#include "confdefs.h" +$ac_includes_default +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +#ifndef getc_unlocked + char *p = (char *) getc_unlocked; +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_have_decl_getc_unlocked=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_have_decl_getc_unlocked=no +fi +rm -f 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 + +cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_GETC_UNLOCKED 1 +_ACEOF + + +else + cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_GETC_UNLOCKED 0 +_ACEOF + + +fi +echo "$as_me:$LINENO: checking whether getchar_unlocked is declared" >&5 +echo $ECHO_N "checking whether getchar_unlocked is declared... $ECHO_C" >&6 +if test "${ac_cv_have_decl_getchar_unlocked+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +$ac_includes_default +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +#ifndef getchar_unlocked + char *p = (char *) getchar_unlocked; +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_have_decl_getchar_unlocked=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_have_decl_getchar_unlocked=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_have_decl_getchar_unlocked" >&5 +echo "${ECHO_T}$ac_cv_have_decl_getchar_unlocked" >&6 +if test $ac_cv_have_decl_getchar_unlocked = yes; then + +cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_GETCHAR_UNLOCKED 1 +_ACEOF + + +else + cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_GETCHAR_UNLOCKED 0 +_ACEOF + + +fi +echo "$as_me:$LINENO: checking whether putc_unlocked is declared" >&5 +echo $ECHO_N "checking whether putc_unlocked is declared... $ECHO_C" >&6 +if test "${ac_cv_have_decl_putc_unlocked+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +$ac_includes_default +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +#ifndef putc_unlocked + char *p = (char *) putc_unlocked; +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_have_decl_putc_unlocked=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_have_decl_putc_unlocked=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_have_decl_putc_unlocked" >&5 +echo "${ECHO_T}$ac_cv_have_decl_putc_unlocked" >&6 +if test $ac_cv_have_decl_putc_unlocked = yes; then + +cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_PUTC_UNLOCKED 1 +_ACEOF + + +else + cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_PUTC_UNLOCKED 0 +_ACEOF + + +fi +echo "$as_me:$LINENO: checking whether putchar_unlocked is declared" >&5 +echo $ECHO_N "checking whether putchar_unlocked is declared... $ECHO_C" >&6 +if test "${ac_cv_have_decl_putchar_unlocked+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +$ac_includes_default +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +#ifndef putchar_unlocked + char *p = (char *) putchar_unlocked; +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_have_decl_putchar_unlocked=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_have_decl_putchar_unlocked=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_have_decl_putchar_unlocked" >&5 +echo "${ECHO_T}$ac_cv_have_decl_putchar_unlocked" >&6 +if test $ac_cv_have_decl_putchar_unlocked = yes; then + +cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_PUTCHAR_UNLOCKED 1 +_ACEOF + + +else + cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_PUTCHAR_UNLOCKED 0 +_ACEOF + + +fi + + +echo "$as_me:$LINENO: checking whether time.h and sys/time.h may both be included" >&5 +echo $ECHO_N "checking whether time.h and sys/time.h may both be included... $ECHO_C" >&6 +if test "${ac_cv_header_time+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +#include +#include +#include + +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +if ((struct tm *) 0) +return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_header_time=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_header_time=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_header_time" >&5 +echo "${ECHO_T}$ac_cv_header_time" >&6 +if test $ac_cv_header_time = yes; then + +cat >>confdefs.h <<\_ACEOF +#define TIME_WITH_SYS_TIME 1 +_ACEOF + +fi + +echo "$as_me:$LINENO: checking whether struct tm is in sys/time.h or time.h" >&5 +echo $ECHO_N "checking whether struct tm is in sys/time.h or time.h... $ECHO_C" >&6 +if test "${ac_cv_struct_tm+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +#include +#include + +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +struct tm *tp; tp->tm_sec; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_struct_tm=time.h +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_struct_tm=sys/time.h +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_struct_tm" >&5 +echo "${ECHO_T}$ac_cv_struct_tm" >&6 +if test $ac_cv_struct_tm = sys/time.h; then + +cat >>confdefs.h <<\_ACEOF +#define TM_IN_SYS_TIME 1 +_ACEOF + +fi + + + + + +for ac_func in localtime_r 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 eval "test \"\${$as_ac_var+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $ac_func (); below. */ +#include +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char $ac_func (); +char (*f) (); + +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_$ac_func) || defined (__stub___$ac_func) +choke me +#else +f = $ac_func; +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_var=yes" +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +eval "$as_ac_var=no" +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 +if test `eval echo '${'$as_ac_var'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +fi +done + + + +for ac_header in limits.h +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +else + # Is the header compilable? +echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +$ac_includes_default +#include <$ac_header> +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_header_compiler=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 + +# Is the header present? +echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +#include <$ac_header> +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + egrep -v '^ *\+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + ac_header_preproc=yes +else + echo "$as_me: failed program was:" >&5 + cat conftest.$ac_ext >&5 + ac_header_preproc=no +fi +rm -f conftest.err conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc in + yes:no ) + { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; + no:yes ) + { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; +esac +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + eval "$as_ac_Header=$ac_header_preproc" +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 + +fi +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + + + + + +for ac_func in bcopy tzset mempcpy memcpy memset +do +as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $ac_func (); below. */ +#include +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char $ac_func (); +char (*f) (); + +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_$ac_func) || defined (__stub___$ac_func) +choke me +#else +f = $ac_func; +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_var=yes" +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +eval "$as_ac_var=no" +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 +if test `eval echo '${'$as_ac_var'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +fi +done + + + # This defines (or not) HAVE_TZNAME and HAVE_TM_ZONE. + 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 +#line $LINENO "configure" +#include "confdefs.h" +#include +#include <$ac_cv_struct_tm> + + +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +static struct tm ac_aggr; +if (ac_aggr.tm_zone) +return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_member_struct_tm_tm_zone=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_member_struct_tm_tm_zone=no +fi +rm -f 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 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 +#line $LINENO "configure" +#include "confdefs.h" +#include +#ifndef tzname /* For SGI. */ +extern char *tzname[]; /* RS6000 and others reject char **tzname. */ +#endif + +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +atoi(*tzname); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_var_tzname=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_var_tzname=no +fi +rm -f conftest.$ac_objext 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 + + + + +for ac_func in mblen mbrlen +do +as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $ac_func (); below. */ +#include +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char $ac_func (); +char (*f) (); + +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_$ac_func) || defined (__stub___$ac_func) +choke me +#else +f = $ac_func; +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_var=yes" +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +eval "$as_ac_var=no" +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 +if test `eval echo '${'$as_ac_var'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +fi +done + + + echo "$as_me:$LINENO: checking for struct tm.tm_gmtoff" >&5 +echo $ECHO_N "checking for struct tm.tm_gmtoff... $ECHO_C" >&6 +if test "${ac_cv_member_struct_tm_tm_gmtoff+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +#include + +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +static struct tm ac_aggr; +if (ac_aggr.tm_gmtoff) +return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_member_struct_tm_tm_gmtoff=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_member_struct_tm_tm_gmtoff=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_member_struct_tm_tm_gmtoff" >&5 +echo "${ECHO_T}$ac_cv_member_struct_tm_tm_gmtoff" >&6 +if test $ac_cv_member_struct_tm_tm_gmtoff = yes; then + +cat >>confdefs.h <<\_ACEOF +#define HAVE_TM_GMTOFF 1 +_ACEOF + +fi + + + + +for ac_header in sys/time.h +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +else + # Is the header compilable? +echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +$ac_includes_default +#include <$ac_header> +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_header_compiler=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 + +# Is the header present? +echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +#include <$ac_header> +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + egrep -v '^ *\+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + ac_header_preproc=yes +else + echo "$as_me: failed program was:" >&5 + cat conftest.$ac_ext >&5 + ac_header_preproc=no +fi +rm -f conftest.err conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc in + yes:no ) + { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; + no:yes ) + { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; +esac +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + eval "$as_ac_Header=$ac_header_preproc" +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 + +fi +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + +cat >>confdefs.h <<\_ACEOF +#define my_strftime nstrftime +_ACEOF + + +# No need for AC_FUNC_MEMCMP, since memcmp is used only to test for equality. + + +cat >>confdefs.h <<\_ACEOF +#define HAVE_DONE_WORKING_MALLOC_CHECK 1 +_ACEOF + + + echo "$as_me:$LINENO: checking for working malloc" >&5 +echo $ECHO_N "checking for working malloc... $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 +#line $LINENO "configure" +#include "confdefs.h" + + char *malloc (); + int + main () + { + exit (malloc (0) ? 0 : 1); + } + +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + jm_cv_func_working_malloc=yes +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +( exit $ac_status ) +jm_cv_func_working_malloc=no +fi +rm -f core core.* *.core 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 + LIBOBJS="$LIBOBJS malloc.$ac_objext" + +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 for working realloc" >&5 +echo $ECHO_N "checking for working realloc... $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 +#line $LINENO "configure" +#include "confdefs.h" + + char *realloc (); + int + main () + { + exit (realloc (0, 0) ? 0 : 1); + } + +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + jm_cv_func_working_realloc=yes +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +( exit $ac_status ) +jm_cv_func_working_realloc=no +fi +rm -f core core.* *.core 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 + LIBOBJS="$LIBOBJS realloc.$ac_objext" + +cat >>confdefs.h <<\_ACEOF +#define realloc rpl_realloc +_ACEOF + + fi + +# The Ultrix 4.2 mips builtin alloca declared by alloca.h only works +# for constant arguments. Useless! +echo "$as_me:$LINENO: checking for working alloca.h" >&5 +echo $ECHO_N "checking for working alloca.h... $ECHO_C" >&6 +if test "${ac_cv_working_alloca_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +#include +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +char *p = (char *) alloca (2 * sizeof (int)); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_working_alloca_h=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_working_alloca_h=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_working_alloca_h" >&5 +echo "${ECHO_T}$ac_cv_working_alloca_h" >&6 +if test $ac_cv_working_alloca_h = yes; then + +cat >>confdefs.h <<\_ACEOF +#define HAVE_ALLOCA_H 1 +_ACEOF + +fi + +echo "$as_me:$LINENO: checking for alloca" >&5 +echo $ECHO_N "checking for alloca... $ECHO_C" >&6 +if test "${ac_cv_func_alloca_works+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +#ifdef __GNUC__ +# define alloca __builtin_alloca +#else +# ifdef _MSC_VER +# include +# define alloca _alloca +# else +# if HAVE_ALLOCA_H +# include +# else +# ifdef _AIX + #pragma alloca +# else +# ifndef alloca /* predefined by HP cc +Olibcalls */ +char *alloca (); +# endif +# endif +# endif +# endif +#endif + +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +char *p = (char *) alloca (1); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_alloca_works=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_func_alloca_works=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_func_alloca_works" >&5 +echo "${ECHO_T}$ac_cv_func_alloca_works" >&6 + +if test $ac_cv_func_alloca_works = yes; then + +cat >>confdefs.h <<\_ACEOF +#define HAVE_ALLOCA 1 +_ACEOF + +else + # The SVR3 libPW and SVR4 libucb both contain incompatible functions +# that cause trouble. Some versions do not even contain alloca or +# contain a buggy version. If you still want to use their alloca, +# use ar to extract alloca.o from them instead of compiling alloca.c. + +ALLOCA=alloca.$ac_objext + +cat >>confdefs.h <<\_ACEOF +#define C_ALLOCA 1 +_ACEOF + + +echo "$as_me:$LINENO: checking whether \`alloca.c' needs Cray hooks" >&5 +echo $ECHO_N "checking whether \`alloca.c' needs Cray hooks... $ECHO_C" >&6 +if test "${ac_cv_os_cray+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +#if defined(CRAY) && ! defined(CRAY2) +webecray +#else +wenotbecray +#endif + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + egrep "webecray" >/dev/null 2>&1; then + ac_cv_os_cray=yes +else + ac_cv_os_cray=no +fi +rm -f conftest* + +fi +echo "$as_me:$LINENO: result: $ac_cv_os_cray" >&5 +echo "${ECHO_T}$ac_cv_os_cray" >&6 +if test $ac_cv_os_cray = yes; then + for ac_func in _getb67 GETB67 getb67; do + as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $ac_func (); below. */ +#include +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char $ac_func (); +char (*f) (); + +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_$ac_func) || defined (__stub___$ac_func) +choke me +#else +f = $ac_func; +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_var=yes" +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +eval "$as_ac_var=no" +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 +if test `eval echo '${'$as_ac_var'}'` = yes; then + +cat >>confdefs.h <<_ACEOF +#define CRAY_STACKSEG_END $ac_func +_ACEOF + + break +fi + + done +fi + +echo "$as_me:$LINENO: checking stack direction for C alloca" >&5 +echo $ECHO_N "checking stack direction for C alloca... $ECHO_C" >&6 +if test "${ac_cv_c_stack_direction+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$cross_compiling" = yes; then + ac_cv_c_stack_direction=0 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +int +find_stack_direction () +{ + static char *addr = 0; + auto char dummy; + if (addr == 0) + { + addr = &dummy; + return find_stack_direction (); + } + else + return (&dummy > addr) ? 1 : -1; +} + +int +main () +{ + exit (find_stack_direction () < 0); +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_c_stack_direction=1 +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +( exit $ac_status ) +ac_cv_c_stack_direction=-1 +fi +rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi +echo "$as_me:$LINENO: result: $ac_cv_c_stack_direction" >&5 +echo "${ECHO_T}$ac_cv_c_stack_direction" >&6 + +cat >>confdefs.h <<_ACEOF +#define STACK_DIRECTION $ac_cv_c_stack_direction +_ACEOF + + +fi + +# for STACK_DIRECTION + + + echo "$as_me:$LINENO: checking for working C stack overflow detection" >&5 +echo $ECHO_N "checking for working C stack overflow detection... $ECHO_C" >&6 +if test "${ac_cv_sys_xsi_stack_overflow_heuristic+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$cross_compiling" = yes; then + ac_cv_sys_xsi_stack_overflow_heuristic=cross-compiling +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" + + #include + #include + + static union + { + char buffer[SIGSTKSZ]; + long double ld; + uintmax_t u; + void *p; + } alternate_signal_stack; + + #if STACK_DIRECTION + # define find_stack_direction(ptr) STACK_DIRECTION + #else + static int + find_stack_direction (char const *addr) + { + char dummy; + return (! addr ? find_stack_direction (&dummy) + : addr < &dummy ? 1 : -1); + } + #endif + + static void + segv_handler (int signo, siginfo_t *info, void *context) + { + if (0 < info->si_code) + { + ucontext_t const *user_context = context; + char const *stack_min = user_context->uc_stack.ss_sp; + size_t stack_size = user_context->uc_stack.ss_size; + char const *faulting_address = info->si_addr; + size_t s = faulting_address - stack_min; + size_t page_size = sysconf (_SC_PAGESIZE); + if (find_stack_direction (0) < 0) + s += page_size; + if (s < stack_size + page_size) + _exit (0); + } + + _exit (1); + } + + static int + c_stack_action (void) + { + stack_t st; + struct sigaction act; + int r; + + st.ss_flags = 0; + st.ss_sp = alternate_signal_stack.buffer; + st.ss_size = sizeof alternate_signal_stack.buffer; + r = sigaltstack (&st, 0); + if (r != 0) + return r; + + sigemptyset (&act.sa_mask); + act.sa_flags = SA_NODEFER | SA_ONSTACK | SA_RESETHAND | SA_SIGINFO; + act.sa_sigaction = segv_handler; + return sigaction (SIGSEGV, &act, 0); + } + + static int + recurse (char *p) + { + char array[500]; + array[0] = 1; + return *p + recurse (array); + } + + int + main (void) + { + c_stack_action (); + return recurse ("\1"); + } + +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_sys_xsi_stack_overflow_heuristic=yes +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +( exit $ac_status ) +ac_cv_sys_xsi_stack_overflow_heuristic=no +fi +rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi +echo "$as_me:$LINENO: result: $ac_cv_sys_xsi_stack_overflow_heuristic" >&5 +echo "${ECHO_T}$ac_cv_sys_xsi_stack_overflow_heuristic" >&6 + + if test $ac_cv_sys_xsi_stack_overflow_heuristic = yes; then + +cat >>confdefs.h <<\_ACEOF +#define HAVE_XSI_STACK_OVERFLOW_HEURISTIC 1 +_ACEOF + + fi + + + + # for STACK_DIRECTION + + + +for ac_header in unistd.h +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +else + # Is the header compilable? +echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +$ac_includes_default +#include <$ac_header> +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_header_compiler=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 + +# Is the header present? +echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +#include <$ac_header> +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + egrep -v '^ *\+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + ac_header_preproc=yes +else + echo "$as_me: failed program was:" >&5 + cat conftest.$ac_ext >&5 + ac_header_preproc=no +fi +rm -f conftest.err conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc in + yes:no ) + { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; + no:yes ) + { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; +esac +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + eval "$as_ac_Header=$ac_header_preproc" +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 + +fi +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + + echo "$as_me:$LINENO: checking for siginfo_t" >&5 +echo $ECHO_N "checking for siginfo_t... $ECHO_C" >&6 +if test "${ac_cv_type_siginfo_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +#include + +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +if ((siginfo_t *) 0) + return 0; +if (sizeof (siginfo_t)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_siginfo_t=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_type_siginfo_t=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_siginfo_t" >&5 +echo "${ECHO_T}$ac_cv_type_siginfo_t" >&6 +if test $ac_cv_type_siginfo_t = yes; then + +cat >>confdefs.h <<_ACEOF +#define HAVE_SIGINFO_T 1 +_ACEOF + + +fi +echo "$as_me:$LINENO: checking for stack_t" >&5 +echo $ECHO_N "checking for stack_t... $ECHO_C" >&6 +if test "${ac_cv_type_stack_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +#include + +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +if ((stack_t *) 0) + return 0; +if (sizeof (stack_t)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_stack_t=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_type_stack_t=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_stack_t" >&5 +echo "${ECHO_T}$ac_cv_type_stack_t" >&6 +if test $ac_cv_type_stack_t = yes; then + +cat >>confdefs.h <<_ACEOF +#define HAVE_STACK_T 1 +_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 eval "test \"\${$as_ac_var+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $ac_func (); below. */ +#include +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char $ac_func (); +char (*f) (); + +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_$ac_func) || defined (__stub___$ac_func) +choke me +#else +f = $ac_func; +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_var=yes" +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +eval "$as_ac_var=no" +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 +if test `eval echo '${'$as_ac_var'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +fi +done + + echo "$as_me:$LINENO: checking 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 +#line $LINENO "configure" +#include "confdefs.h" +$ac_includes_default +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +#ifndef strerror + char *p = (char *) strerror; +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_have_decl_strerror=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_have_decl_strerror=no +fi +rm -f 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 +#line $LINENO "configure" +#include "confdefs.h" +$ac_includes_default +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +#ifndef strerror_r + char *p = (char *) strerror_r; +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_have_decl_strerror_r=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_have_decl_strerror_r=no +fi +rm -f 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 eval "test \"\${$as_ac_var+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $ac_func (); below. */ +#include +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char $ac_func (); +char (*f) (); + +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_$ac_func) || defined (__stub___$ac_func) +choke me +#else +f = $ac_func; +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_var=yes" +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +eval "$as_ac_var=no" +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 +if test `eval echo '${'$as_ac_var'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +fi +done + +echo "$as_me:$LINENO: checking 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 +#line $LINENO "configure" +#include "confdefs.h" +$ac_includes_default +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ + + char buf[100]; + char x = *strerror_r (0, buf, sizeof buf); + char *p = strerror_r (0, buf, sizeof buf); + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_strerror_r_char_p=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +fi +rm -f 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 +#line $LINENO "configure" +#include "confdefs.h" +$ac_includes_default + extern char *strerror_r (); +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +char buf[100]; + char x = *strerror_r (0, buf, sizeof buf); + exit (!isalpha (x)); + ; + return 0; +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_strerror_r_char_p=yes +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +fi +rm -f core core.* *.core 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 +#line $LINENO "configure" +#include "confdefs.h" +#include +#include +#include +#include + +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + egrep -v '^ *\+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + ac_cv_header_stdc=yes +else + echo "$as_me: failed program was:" >&5 + cat conftest.$ac_ext >&5 + ac_cv_header_stdc=no +fi +rm -f conftest.err conftest.$ac_ext + +if test $ac_cv_header_stdc = yes; then + # SunOS 4.x string.h does not declare mem*, contrary to ANSI. + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + egrep "memchr" >/dev/null 2>&1; then + : +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + egrep "free" >/dev/null 2>&1; then + : +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. + if test "$cross_compiling" = yes; then + : +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +#include +#if ((' ' & 0x0FF) == 0x020) +# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') +# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) +#else +# define ISLOWER(c) (('a' <= (c) && (c) <= 'i') \ + || ('j' <= (c) && (c) <= 'r') \ + || ('s' <= (c) && (c) <= 'z')) +# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) +#endif + +#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) +int +main () +{ + int i; + for (i = 0; i < 256; i++) + if (XOR (islower (i), ISLOWER (i)) + || toupper (i) != TOUPPER (i)) + exit(2); + exit (0); +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + : +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +( exit $ac_status ) +ac_cv_header_stdc=no +fi +rm -f core core.* *.core 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 for function prototypes" >&5 +echo $ECHO_N "checking for function prototypes... $ECHO_C" >&6 +if test "$ac_cv_prog_cc_stdc" != no; then + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + +cat >>confdefs.h <<\_ACEOF +#define PROTOTYPES 1 +_ACEOF + + +cat >>confdefs.h <<\_ACEOF +#define __PROTOTYPES 1 +_ACEOF + +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + +for ac_func in setlocale +do +as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $ac_func (); below. */ +#include +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char $ac_func (); +char (*f) (); + +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_$ac_func) || defined (__stub___$ac_func) +choke me +#else +f = $ac_func; +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_var=yes" +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +eval "$as_ac_var=no" +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 +if test `eval echo '${'$as_ac_var'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +fi +done + + + + +for ac_header in locale.h stdlib.h string.h +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +else + # Is the header compilable? +echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +$ac_includes_default +#include <$ac_header> +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_header_compiler=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 + +# Is the header present? +echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +#include <$ac_header> +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + egrep -v '^ *\+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + ac_header_preproc=yes +else + echo "$as_me: failed program was:" >&5 + cat conftest.$ac_ext >&5 + ac_header_preproc=no +fi +rm -f conftest.err conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc in + yes:no ) + { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; + no:yes ) + { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; +esac +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + eval "$as_ac_Header=$ac_header_preproc" +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 + +fi +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + + + + +for ac_func in isascii iswprint +do +as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $ac_func (); below. */ +#include +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char $ac_func (); +char (*f) (); + +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_$ac_func) || defined (__stub___$ac_func) +choke me +#else +f = $ac_func; +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_var=yes" +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +eval "$as_ac_var=no" +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 +if test `eval echo '${'$as_ac_var'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +fi +done + + + echo "$as_me:$LINENO: checking whether mbrtowc and mbstate_t are properly declared" >&5 +echo $ECHO_N "checking whether mbrtowc and mbstate_t are properly declared... $ECHO_C" >&6 +if test "${jm_cv_func_mbrtowc+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +#include +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +mbstate_t state; return ! (sizeof state && mbrtowc); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + jm_cv_func_mbrtowc=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +jm_cv_func_mbrtowc=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $jm_cv_func_mbrtowc" >&5 +echo "${ECHO_T}$jm_cv_func_mbrtowc" >&6 + if test $jm_cv_func_mbrtowc = yes; then + +cat >>confdefs.h <<\_ACEOF +#define HAVE_MBRTOWC 1 +_ACEOF + + fi + + + + + + + +for ac_header in limits.h stddef.h stdlib.h string.h wchar.h wctype.h +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +else + # Is the header compilable? +echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +$ac_includes_default +#include <$ac_header> +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_header_compiler=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 + +# Is the header present? +echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +#include <$ac_header> +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + egrep -v '^ *\+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + ac_header_preproc=yes +else + echo "$as_me: failed program was:" >&5 + cat conftest.$ac_ext >&5 + ac_header_preproc=no +fi +rm -f conftest.err conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc in + yes:no ) + { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; + no:yes ) + { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; +esac +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + eval "$as_ac_Header=$ac_header_preproc" +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 + +fi +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + echo "$as_me:$LINENO: checking for ANSI C header files" >&5 +echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6 +if test "${ac_cv_header_stdc+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +#include +#include +#include +#include + +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + egrep -v '^ *\+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + ac_cv_header_stdc=yes +else + echo "$as_me: failed program was:" >&5 + cat conftest.$ac_ext >&5 + ac_cv_header_stdc=no +fi +rm -f conftest.err conftest.$ac_ext + +if test $ac_cv_header_stdc = yes; then + # SunOS 4.x string.h does not declare mem*, contrary to ANSI. + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + egrep "memchr" >/dev/null 2>&1; then + : +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + egrep "free" >/dev/null 2>&1; then + : +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. + if test "$cross_compiling" = yes; then + : +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +#include +#if ((' ' & 0x0FF) == 0x020) +# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') +# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) +#else +# define ISLOWER(c) (('a' <= (c) && (c) <= 'i') \ + || ('j' <= (c) && (c) <= 'r') \ + || ('s' <= (c) && (c) <= 'z')) +# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) +#endif + +#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) +int +main () +{ + int i; + for (i = 0; i < 256; i++) + if (XOR (islower (i), ISLOWER (i)) + || toupper (i) != TOUPPER (i)) + exit(2); + exit (0); +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + : +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +( exit $ac_status ) +ac_cv_header_stdc=no +fi +rm -f core core.* *.core 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 backslash-a works in strings" >&5 +echo $ECHO_N "checking whether backslash-a works in strings... $ECHO_C" >&6 +if test "${ac_cv_c_backslash_a+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" + +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ + +#if '\a' == 'a' + syntax error; +#endif + char buf['\a' == 'a' ? -1 : 1]; + buf[0] = '\a'; + return buf[0] != "\a"[0]; + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_c_backslash_a=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_c_backslash_a=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_c_backslash_a" >&5 +echo "${ECHO_T}$ac_cv_c_backslash_a" >&6 + if test $ac_cv_c_backslash_a = yes; then + +cat >>confdefs.h <<\_ACEOF +#define HAVE_C_BACKSLASH_A 1 +_ACEOF + + fi + + + +for ac_header in stdlib.h +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +else + # Is the header compilable? +echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +$ac_includes_default +#include <$ac_header> +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_header_compiler=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 + +# Is the header present? +echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +#include <$ac_header> +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + egrep -v '^ *\+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + ac_header_preproc=yes +else + echo "$as_me: failed program was:" >&5 + cat conftest.$ac_ext >&5 + ac_header_preproc=no +fi +rm -f conftest.err conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc in + yes:no ) + { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; + no:yes ) + { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; +esac +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + eval "$as_ac_Header=$ac_header_preproc" +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 + +fi +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + + echo "$as_me:$LINENO: checking for mbstate_t" >&5 +echo $ECHO_N "checking for mbstate_t... $ECHO_C" >&6 +if test "${ac_cv_type_mbstate_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" + +#if HAVE_STDLIB_H +# include +#endif +#include +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +mbstate_t x; return sizeof x; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_mbstate_t=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_type_mbstate_t=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_mbstate_t" >&5 +echo "${ECHO_T}$ac_cv_type_mbstate_t" >&6 + if test $ac_cv_type_mbstate_t = no; then + +cat >>confdefs.h <<\_ACEOF +#define mbstate_t int +_ACEOF + + fi + + +echo "$as_me:$LINENO: checking for function prototypes" >&5 +echo $ECHO_N "checking for function prototypes... $ECHO_C" >&6 +if test "$am_cv_prog_cc_stdc" != no; then + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + +cat >>confdefs.h <<\_ACEOF +#define PROTOTYPES 1 +_ACEOF + + U= ANSI2KNR= +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 + U=_ ANSI2KNR=./ansi2knr +fi +# Ensure some checks needed by ansi2knr itself. +echo "$as_me:$LINENO: checking for ANSI C header files" >&5 +echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6 +if test "${ac_cv_header_stdc+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +#include +#include +#include +#include + +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + egrep -v '^ *\+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + ac_cv_header_stdc=yes +else + echo "$as_me: failed program was:" >&5 + cat conftest.$ac_ext >&5 + ac_cv_header_stdc=no +fi +rm -f conftest.err conftest.$ac_ext + +if test $ac_cv_header_stdc = yes; then + # SunOS 4.x string.h does not declare mem*, contrary to ANSI. + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + egrep "memchr" >/dev/null 2>&1; then + : +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + egrep "free" >/dev/null 2>&1; then + : +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. + if test "$cross_compiling" = yes; then + : +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +#include +#if ((' ' & 0x0FF) == 0x020) +# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') +# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) +#else +# define ISLOWER(c) (('a' <= (c) && (c) <= 'i') \ + || ('j' <= (c) && (c) <= 'r') \ + || ('s' <= (c) && (c) <= 'z')) +# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) +#endif + +#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) +int +main () +{ + int i; + for (i = 0; i < 256; i++) + if (XOR (islower (i), ISLOWER (i)) + || toupper (i) != TOUPPER (i)) + exit(2); + exit (0); +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + : +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +( exit $ac_status ) +ac_cv_header_stdc=no +fi +rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi +fi +echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 +echo "${ECHO_T}$ac_cv_header_stdc" >&6 +if test $ac_cv_header_stdc = yes; then + +cat >>confdefs.h <<\_ACEOF +#define STDC_HEADERS 1 +_ACEOF + +fi + + +for ac_header in string.h +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +else + # Is the header compilable? +echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +$ac_includes_default +#include <$ac_header> +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_header_compiler=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 + +# Is the header present? +echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +#include <$ac_header> +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + egrep -v '^ *\+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + ac_header_preproc=yes +else + echo "$as_me: failed program was:" >&5 + cat conftest.$ac_ext >&5 + ac_header_preproc=no +fi +rm -f conftest.err conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc in + yes:no ) + { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; + no:yes ) + { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; +esac +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + eval "$as_ac_Header=$ac_header_preproc" +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 + +fi +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + + + + + + + +for ac_func in bzero bcopy isascii btowc +do +as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $ac_func (); below. */ +#include +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char $ac_func (); +char (*f) (); + +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_$ac_func) || defined (__stub___$ac_func) +choke me +#else +f = $ac_func; +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_var=yes" +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +eval "$as_ac_var=no" +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 +if test `eval echo '${'$as_ac_var'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +fi +done + + + + + +for ac_header in alloca.h libintl.h wctype.h wchar.h +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +else + # Is the header compilable? +echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +$ac_includes_default +#include <$ac_header> +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_header_compiler=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 + +# Is the header present? +echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +#include <$ac_header> +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + egrep -v '^ *\+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + ac_header_preproc=yes +else + echo "$as_me: failed program was:" >&5 + cat conftest.$ac_ext >&5 + ac_header_preproc=no +fi +rm -f conftest.err conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc in + yes:no ) + { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; + no:yes ) + { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; +esac +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + eval "$as_ac_Header=$ac_header_preproc" +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 + +fi +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + echo "$as_me:$LINENO: checking for ANSI C header files" >&5 +echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6 +if test "${ac_cv_header_stdc+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +#include +#include +#include +#include + +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + egrep -v '^ *\+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + ac_cv_header_stdc=yes +else + echo "$as_me: failed program was:" >&5 + cat conftest.$ac_ext >&5 + ac_cv_header_stdc=no +fi +rm -f conftest.err conftest.$ac_ext + +if test $ac_cv_header_stdc = yes; then + # SunOS 4.x string.h does not declare mem*, contrary to ANSI. + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + egrep "memchr" >/dev/null 2>&1; then + : +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + egrep "free" >/dev/null 2>&1; then + : +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. + if test "$cross_compiling" = yes; then + : +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +#include +#if ((' ' & 0x0FF) == 0x020) +# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') +# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) +#else +# define ISLOWER(c) (('a' <= (c) && (c) <= 'i') \ + || ('j' <= (c) && (c) <= 'r') \ + || ('s' <= (c) && (c) <= 'z')) +# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) +#endif + +#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) +int +main () +{ + int i; + for (i = 0; i < 256; i++) + if (XOR (islower (i), ISLOWER (i)) + || toupper (i) != TOUPPER (i)) + exit(2); + exit (0); +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + : +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +( exit $ac_status ) +ac_cv_header_stdc=no +fi +rm -f core core.* *.core 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 + + # The Ultrix 4.2 mips builtin alloca declared by alloca.h only works +# for constant arguments. Useless! +echo "$as_me:$LINENO: checking for working alloca.h" >&5 +echo $ECHO_N "checking for working alloca.h... $ECHO_C" >&6 +if test "${ac_cv_working_alloca_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +#include +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +char *p = (char *) alloca (2 * sizeof (int)); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_working_alloca_h=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_working_alloca_h=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_working_alloca_h" >&5 +echo "${ECHO_T}$ac_cv_working_alloca_h" >&6 +if test $ac_cv_working_alloca_h = yes; then + +cat >>confdefs.h <<\_ACEOF +#define HAVE_ALLOCA_H 1 +_ACEOF + +fi + +echo "$as_me:$LINENO: checking for alloca" >&5 +echo $ECHO_N "checking for alloca... $ECHO_C" >&6 +if test "${ac_cv_func_alloca_works+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +#ifdef __GNUC__ +# define alloca __builtin_alloca +#else +# ifdef _MSC_VER +# include +# define alloca _alloca +# else +# if HAVE_ALLOCA_H +# include +# else +# ifdef _AIX + #pragma alloca +# else +# ifndef alloca /* predefined by HP cc +Olibcalls */ +char *alloca (); +# endif +# endif +# endif +# endif +#endif + +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +char *p = (char *) alloca (1); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_alloca_works=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_func_alloca_works=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_func_alloca_works" >&5 +echo "${ECHO_T}$ac_cv_func_alloca_works" >&6 + +if test $ac_cv_func_alloca_works = yes; then + +cat >>confdefs.h <<\_ACEOF +#define HAVE_ALLOCA 1 +_ACEOF + +else + # The SVR3 libPW and SVR4 libucb both contain incompatible functions +# that cause trouble. Some versions do not even contain alloca or +# contain a buggy version. If you still want to use their alloca, +# use ar to extract alloca.o from them instead of compiling alloca.c. + +ALLOCA=alloca.$ac_objext + +cat >>confdefs.h <<\_ACEOF +#define C_ALLOCA 1 +_ACEOF + + +echo "$as_me:$LINENO: checking whether \`alloca.c' needs Cray hooks" >&5 +echo $ECHO_N "checking whether \`alloca.c' needs Cray hooks... $ECHO_C" >&6 +if test "${ac_cv_os_cray+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +#if defined(CRAY) && ! defined(CRAY2) +webecray +#else +wenotbecray +#endif + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + egrep "webecray" >/dev/null 2>&1; then + ac_cv_os_cray=yes +else + ac_cv_os_cray=no +fi +rm -f conftest* + +fi +echo "$as_me:$LINENO: result: $ac_cv_os_cray" >&5 +echo "${ECHO_T}$ac_cv_os_cray" >&6 +if test $ac_cv_os_cray = yes; then + for ac_func in _getb67 GETB67 getb67; do + as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $ac_func (); below. */ +#include +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char $ac_func (); +char (*f) (); + +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_$ac_func) || defined (__stub___$ac_func) +choke me +#else +f = $ac_func; +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_var=yes" +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +eval "$as_ac_var=no" +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 +if test `eval echo '${'$as_ac_var'}'` = yes; then + +cat >>confdefs.h <<_ACEOF +#define CRAY_STACKSEG_END $ac_func +_ACEOF + + break +fi + + done +fi + +echo "$as_me:$LINENO: checking stack direction for C alloca" >&5 +echo $ECHO_N "checking stack direction for C alloca... $ECHO_C" >&6 +if test "${ac_cv_c_stack_direction+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$cross_compiling" = yes; then + ac_cv_c_stack_direction=0 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +int +find_stack_direction () +{ + static char *addr = 0; + auto char dummy; + if (addr == 0) + { + addr = &dummy; + return find_stack_direction (); + } + else + return (&dummy > addr) ? 1 : -1; +} + +int +main () +{ + exit (find_stack_direction () < 0); +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_c_stack_direction=1 +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +( exit $ac_status ) +ac_cv_c_stack_direction=-1 +fi +rm -f core core.* *.core 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 + + + +cat >>confdefs.h <<\_ACEOF +#define REGEX_MALLOC 1 +_ACEOF + + + echo "$as_me:$LINENO: checking for ANSI C header files" >&5 +echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6 +if test "${ac_cv_header_stdc+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +#include +#include +#include +#include + +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + egrep -v '^ *\+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + ac_cv_header_stdc=yes +else + echo "$as_me: failed program was:" >&5 + cat conftest.$ac_ext >&5 + ac_cv_header_stdc=no +fi +rm -f conftest.err conftest.$ac_ext + +if test $ac_cv_header_stdc = yes; then + # SunOS 4.x string.h does not declare mem*, contrary to ANSI. + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + egrep "memchr" >/dev/null 2>&1; then + : +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + egrep "free" >/dev/null 2>&1; then + : +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. + if test "$cross_compiling" = yes; then + : +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +#include +#if ((' ' & 0x0FF) == 0x020) +# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') +# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) +#else +# define ISLOWER(c) (('a' <= (c) && (c) <= 'i') \ + || ('j' <= (c) && (c) <= 'r') \ + || ('s' <= (c) && (c) <= 'z')) +# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) +#endif + +#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) +int +main () +{ + int i; + for (i = 0; i < 256; i++) + if (XOR (islower (i), ISLOWER (i)) + || toupper (i) != TOUPPER (i)) + exit(2); + exit (0); +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + : +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +( exit $ac_status ) +ac_cv_header_stdc=no +fi +rm -f core core.* *.core 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 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 +#line $LINENO "configure" +#include "confdefs.h" +#include +#include + +#if defined(S_ISBLK) && defined(S_IFDIR) +# if S_ISBLK (S_IFDIR) +You lose. +# endif +#endif + +#if defined(S_ISBLK) && defined(S_IFCHR) +# if S_ISBLK (S_IFCHR) +You lose. +# endif +#endif + +#if defined(S_ISLNK) && defined(S_IFREG) +# if S_ISLNK (S_IFREG) +You lose. +# endif +#endif + +#if defined(S_ISSOCK) && defined(S_IFREG) +# if S_ISSOCK (S_IFREG) +You lose. +# endif +#endif + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + egrep "You lose" >/dev/null 2>&1; then + ac_cv_header_stat_broken=yes +else + ac_cv_header_stat_broken=no +fi +rm -f conftest* + +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 + + + + + +for ac_header in fcntl.h sys/time.h stdint.h unistd.h +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +else + # Is the header compilable? +echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +$ac_includes_default +#include <$ac_header> +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_header_compiler=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 + +# Is the header present? +echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +#include <$ac_header> +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + egrep -v '^ *\+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + ac_header_preproc=yes +else + echo "$as_me: failed program was:" >&5 + cat conftest.$ac_ext >&5 + ac_header_preproc=no +fi +rm -f conftest.err conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc in + yes:no ) + { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; + no:yes ) + { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; +esac +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + eval "$as_ac_Header=$ac_header_preproc" +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 + +fi +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + + +for ac_func in __secure_getenv gettimeofday +do +as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $ac_func (); below. */ +#include +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char $ac_func (); +char (*f) (); + +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_$ac_func) || defined (__stub___$ac_func) +choke me +#else +f = $ac_func; +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_var=yes" +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +eval "$as_ac_var=no" +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 +if test `eval echo '${'$as_ac_var'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +fi +done + + echo "$as_me:$LINENO: checking whether getenv is declared" >&5 +echo $ECHO_N "checking whether getenv is declared... $ECHO_C" >&6 +if test "${ac_cv_have_decl_getenv+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +$ac_includes_default +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +#ifndef getenv + char *p = (char *) getenv; +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_have_decl_getenv=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_have_decl_getenv=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_have_decl_getenv" >&5 +echo "${ECHO_T}$ac_cv_have_decl_getenv" >&6 +if test $ac_cv_have_decl_getenv = yes; then + +cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_GETENV 1 +_ACEOF + + +else + cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_GETENV 0 +_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 +#line $LINENO "configure" +#include "confdefs.h" +long long ll = 1; int i = 63; +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +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 { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_long_long=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_type_long_long=no +fi +rm -f conftest.$ac_objext 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 for intmax_t" >&5 +echo $ECHO_N "checking for intmax_t... $ECHO_C" >&6 +if test "${ac_cv_type_intmax_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +$ac_includes_default +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +if ((intmax_t *) 0) + return 0; +if (sizeof (intmax_t)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_intmax_t=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_type_intmax_t=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_intmax_t" >&5 +echo "${ECHO_T}$ac_cv_type_intmax_t" >&6 +if test $ac_cv_type_intmax_t = yes; then + : +else + test $ac_cv_type_long_long = yes \ + && ac_type='long long' \ + || ac_type='long' + +cat >>confdefs.h <<_ACEOF +#define intmax_t $ac_type +_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 +#line $LINENO "configure" +#include "confdefs.h" +$ac_includes_default +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +#ifndef strtol + char *p = (char *) strtol; +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_have_decl_strtol=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_have_decl_strtol=no +fi +rm -f 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 +#line $LINENO "configure" +#include "confdefs.h" +$ac_includes_default +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +#ifndef strtoul + char *p = (char *) strtoul; +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_have_decl_strtoul=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_have_decl_strtoul=no +fi +rm -f 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 strtoull is declared" >&5 +echo $ECHO_N "checking whether strtoull is declared... $ECHO_C" >&6 +if test "${ac_cv_have_decl_strtoull+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +$ac_includes_default +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +#ifndef strtoull + char *p = (char *) strtoull; +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_have_decl_strtoull=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_have_decl_strtoull=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_have_decl_strtoull" >&5 +echo "${ECHO_T}$ac_cv_have_decl_strtoull" >&6 +if test $ac_cv_have_decl_strtoull = yes; then + +cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_STRTOULL 1 +_ACEOF + + +else + cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_STRTOULL 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 +#line $LINENO "configure" +#include "confdefs.h" +$ac_includes_default +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +#ifndef strtoimax + char *p = (char *) strtoimax; +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_have_decl_strtoimax=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_have_decl_strtoimax=no +fi +rm -f 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 +#line $LINENO "configure" +#include "confdefs.h" +$ac_includes_default +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +#ifndef strtoumax + char *p = (char *) strtoumax; +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_have_decl_strtoumax=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_have_decl_strtoumax=no +fi +rm -f 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 eval "test \"\${$as_ac_Header+set}\" = set"; then + echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +else + # Is the header compilable? +echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +$ac_includes_default +#include <$ac_header> +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_header_compiler=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 + +# Is the header present? +echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +#include <$ac_header> +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + egrep -v '^ *\+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + ac_header_preproc=yes +else + echo "$as_me: failed program was:" >&5 + cat conftest.$ac_ext >&5 + ac_header_preproc=no +fi +rm -f conftest.err conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc in + yes:no ) + { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; + no:yes ) + { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; +esac +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + eval "$as_ac_Header=$ac_header_preproc" +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 + +fi +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + + echo "$as_me:$LINENO: checking whether defines strtoumax as a macro" >&5 +echo $ECHO_N "checking whether defines strtoumax as a macro... $ECHO_C" >&6 +if test "${jm_cv_func_strtoumax_macro+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +#include +#ifdef strtoumax + inttypes_h_defines_strtoumax +#endif +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + egrep "inttypes_h_defines_strtoumax" >/dev/null 2>&1; then + jm_cv_func_strtoumax_macro=yes +else + jm_cv_func_strtoumax_macro=no +fi +rm -f conftest* + +fi +echo "$as_me:$LINENO: result: $jm_cv_func_strtoumax_macro" >&5 +echo "${ECHO_T}$jm_cv_func_strtoumax_macro" >&6 + + if test "$jm_cv_func_strtoumax_macro" != yes; then + +for ac_func in strtoumax +do +as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $ac_func (); below. */ +#include +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char $ac_func (); +char (*f) (); + +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_$ac_func) || defined (__stub___$ac_func) +choke me +#else +f = $ac_func; +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_var=yes" +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +eval "$as_ac_var=no" +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 +if test `eval echo '${'$as_ac_var'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +else + LIBOBJS="$LIBOBJS $ac_func.$ac_objext" +fi +done + + + fi + + case "$jm_cv_func_strtoumax_macro,$ac_cv_func_strtoumax" in + no,no) + +for ac_func in strtoul +do +as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $ac_func (); below. */ +#include +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char $ac_func (); +char (*f) (); + +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_$ac_func) || defined (__stub___$ac_func) +choke me +#else +f = $ac_func; +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_var=yes" +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +eval "$as_ac_var=no" +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 +if test `eval echo '${'$as_ac_var'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +else + LIBOBJS="$LIBOBJS $ac_func.$ac_objext" +fi +done + + + + if test "$ac_cv_type_unsigned_long_long" = yes; then + +for ac_func in strtoull +do +as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $ac_func (); below. */ +#include +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char $ac_func (); +char (*f) (); + +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_$ac_func) || defined (__stub___$ac_func) +choke me +#else +f = $ac_func; +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_var=yes" +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +eval "$as_ac_var=no" +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 +if test `eval echo '${'$as_ac_var'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +else + LIBOBJS="$LIBOBJS $ac_func.$ac_objext" +fi +done + + + fi + ;; + esac + + +# Check for clock_gettime and its library. Solaris puts it in -lrt or +# -lposix4, but we don't want to link that library unless we have to. +diff_saved_libs=$LIBS +echo "$as_me:$LINENO: checking for library containing clock_gettime" >&5 +echo $ECHO_N "checking for library containing clock_gettime... $ECHO_C" >&6 +if test "${ac_cv_search_clock_gettime+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_func_search_save_LIBS=$LIBS +ac_cv_search_clock_gettime=no +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char clock_gettime (); +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +clock_gettime (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_search_clock_gettime="none required" +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +if test "$ac_cv_search_clock_gettime" = no; then + for ac_lib in rt posix4; do + LIBS="-l$ac_lib $ac_func_search_save_LIBS" + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char clock_gettime (); +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +clock_gettime (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_search_clock_gettime="-l$ac_lib" +break +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext + done +fi +LIBS=$ac_func_search_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_search_clock_gettime" >&5 +echo "${ECHO_T}$ac_cv_search_clock_gettime" >&6 +if test "$ac_cv_search_clock_gettime" != no; then + test "$ac_cv_search_clock_gettime" = "none required" || LIBS="$ac_cv_search_clock_gettime $LIBS" + +fi + +case $ac_cv_search_clock_gettime in +no | 'none required') + LIB_CLOCK_GETTIME=;; +*) + LIB_CLOCK_GETTIME=$ac_cv_search_clock_gettime;; +esac + + +for ac_func in clock_gettime +do +as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $ac_func (); below. */ +#include +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char $ac_func (); +char (*f) (); + +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_$ac_func) || defined (__stub___$ac_func) +choke me +#else +f = $ac_func; +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_var=yes" +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +eval "$as_ac_var=no" +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 +if test `eval echo '${'$as_ac_var'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +fi +done + +LIBS=$diff_saved_libs + +# fnmatch +echo "$as_me:$LINENO: checking for working GNU-style fnmatch" >&5 +echo $ECHO_N "checking for working GNU-style fnmatch... $ECHO_C" >&6 +if test "${ac_cv_func_fnmatch_works+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + # Some versions of Solaris, SCO, and the GNU C Library +# have a broken or incompatible fnmatch. +# So we run a test program. If we are cross-compiling, take no chance. +# Thanks to John Oleynick, Franc,ois Pinard, and Paul Eggert for this test. +if test "$cross_compiling" = yes; then + ac_cv_func_fnmatch_works=no +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +#include +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +exit (fnmatch ("a*", "abc", 0) != 0 + || fnmatch ("xxXX", "xXxX", FNM_CASEFOLD) != 0 + || fnmatch ("d*/*1", "d/s/1", FNM_FILE_NAME) != FNM_NOMATCH + || fnmatch ("*", "x", FNM_FILE_NAME | FNM_LEADING_DIR) != 0 + || fnmatch ("x*", "x/y/z", FNM_FILE_NAME | FNM_LEADING_DIR) != 0 + || fnmatch ("*c*", "c/x", FNM_FILE_NAME | FNM_LEADING_DIR) != 0); + ; + return 0; +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_fnmatch_works=yes +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +( exit $ac_status ) +ac_cv_func_fnmatch_works=no +fi +rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi +echo "$as_me:$LINENO: result: $ac_cv_func_fnmatch_works" >&5 +echo "${ECHO_T}$ac_cv_func_fnmatch_works" >&6 +if test $ac_cv_func_fnmatch_works = yes; then + +cat >>confdefs.h <<\_ACEOF +#define HAVE_FNMATCH 1 +_ACEOF + +fi + +if test $ac_cv_func_fnmatch_works = yes; then + rm -f lib/fnmatch.h +else + LIBOBJS="$LIBOBJS fnmatch.$ac_objext" + ac_config_links="$ac_config_links lib/fnmatch.h:lib/fnmatch.hin" + +fi + +# regex + + + # Assume we'll default to using the included regex.c. + ac_use_included_regex=yes + + # However, if the system regex support is good enough that it passes the + # the following run test, then default to *not* using the included regex.c. + # If cross compiling, assume the test would fail and use the included + # regex.c. The first failing regular expression is from `Spencer ere + # test #75' in grep-2.3. + echo "$as_me:$LINENO: checking for working re_compile_pattern" >&5 +echo $ECHO_N "checking for working re_compile_pattern... $ECHO_C" >&6 +if test "${jm_cv_func_working_re_compile_pattern+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$cross_compiling" = yes; then + jm_cv_func_working_re_compile_pattern=no +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +#include +#include + int + main () + { + static struct re_pattern_buffer regex; + const char *s; + struct re_registers regs; + re_set_syntax (RE_SYNTAX_POSIX_EGREP); + s = re_compile_pattern ("a[[:]:]]b\n", 9, ®ex); + /* This should fail with _Invalid character class name_ error. */ + if (!s) + exit (1); + + /* This should succeed, but doesn't for e.g. glibc-2.1.3. */ + s = re_compile_pattern ("{1", 2, ®ex); + + if (s) + exit (1); + + /* The following example is derived from a problem report + against gawk from Jorge Stolfi . */ + s = re_compile_pattern ("[anù]*n", 7, ®ex); + if (s) + exit (1); + + /* This should match, but doesn't for e.g. glibc-2.2.1. */ + if (re_match (®ex, "an", 2, 0, ®s) != 2) + exit (1); + + exit (0); + } + +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + jm_cv_func_working_re_compile_pattern=yes +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +( exit $ac_status ) +jm_cv_func_working_re_compile_pattern=no +fi +rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi +echo "$as_me:$LINENO: result: $jm_cv_func_working_re_compile_pattern" >&5 +echo "${ECHO_T}$jm_cv_func_working_re_compile_pattern" >&6 + if test $jm_cv_func_working_re_compile_pattern = yes; then + ac_use_included_regex=no + fi + + test -n "lib/regex.c" || { { echo "$as_me:$LINENO: error: missing argument" >&5 +echo "$as_me: error: missing argument" >&2;} + { (exit 1); exit 1; }; } + + + +# Check whether --with-included-regex or --without-included-regex was given. +if test "${with_included_regex+set}" = set; then + withval="$with_included_regex" + jm_with_regex=$withval +else + jm_with_regex=$ac_use_included_regex +fi; + if test "$jm_with_regex" = yes; then + LIBOBJS="$LIBOBJS regex.$ac_objext" + fi + + + +if test "$jm_with_regex" = yes; then + ac_config_links="$ac_config_links lib/regex.h:lib/regex.hin" + +else + rm -f lib/regex.h +fi + + + echo "$as_me:$LINENO: checking whether system is Windows or MSDOS" >&5 +echo $ECHO_N "checking whether system is Windows or MSDOS... $ECHO_C" >&6 +if test "${ac_cv_win_or_dos+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" + +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +#if !defined _WIN32 && !defined __WIN32__ && !defined __MSDOS__ +neither MSDOS nor Windows +#endif + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_win_or_dos=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_win_or_dos=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext + +fi +echo "$as_me:$LINENO: result: $ac_cv_win_or_dos" >&5 +echo "${ECHO_T}$ac_cv_win_or_dos" >&6 + + if test x"$ac_cv_win_or_dos" = xyes; then + ac_fs_accepts_drive_letter_prefix=1 + ac_fs_backslash_is_file_name_separator=1 + else + ac_fs_accepts_drive_letter_prefix=0 + ac_fs_backslash_is_file_name_separator=0 + fi + + + + + +cat >>confdefs.h <<_ACEOF +#define FILESYSTEM_ACCEPTS_DRIVE_LETTER_PREFIX $ac_fs_accepts_drive_letter_prefix +_ACEOF + + + + + + +cat >>confdefs.h <<_ACEOF +#define FILESYSTEM_BACKSLASH_IS_FILE_NAME_SEPARATOR $ac_fs_backslash_is_file_name_separator +_ACEOF + + + + +for ac_header in fcntl.h unistd.h +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +else + # Is the header compilable? +echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +$ac_includes_default +#include <$ac_header> +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_header_compiler=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 + +# Is the header present? +echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +#include <$ac_header> +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + egrep -v '^ *\+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + ac_header_preproc=yes +else + echo "$as_me: failed program was:" >&5 + cat conftest.$ac_ext >&5 + ac_header_preproc=no +fi +rm -f conftest.err conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc in + yes:no ) + { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; + no:yes ) + { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; +esac +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + eval "$as_ac_Header=$ac_header_preproc" +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 + +fi +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + echo "$as_me:$LINENO: checking for DOS-style setmode" >&5 +echo $ECHO_N "checking for DOS-style setmode... $ECHO_C" >&6 +if test "${ac_cv_func_setmode_dos+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +#include + #if HAVE_FCNTL_H + # include + #endif + #if HAVE_UNISTD_H + # include + #endif +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +int ret = setmode && setmode (1, O_BINARY); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_setmode_dos=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_func_setmode_dos=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_func_setmode_dos" >&5 +echo "${ECHO_T}$ac_cv_func_setmode_dos" >&6 + if test $ac_cv_func_setmode_dos = yes; then + +cat >>confdefs.h <<\_ACEOF +#define HAVE_SETMODE_DOS 1 +_ACEOF + + fi + +ac_config_files="$ac_config_files Makefile doc/Makefile lib/Makefile lib/posix/Makefile man/Makefile m4/Makefile ms/Makefile po/Makefile.in src/Makefile" + +ac_config_commands="$ac_config_commands default" + +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 overriden when +# loading this file, other *unset* `ac_cv_foo' will be assigned the +# following values. + +_ACEOF + +# The following way of writing the cache mishandles newlines in values, +# but we know of no workaround that is simple, portable, and efficient. +# So, don't put newlines in cache variables' values. +# Ultrix sh set writes to stderr and can't be redirected directly, +# and sets the high bit in the cache file unless we assign to the vars. +{ + (set) 2>&1 | + case `(ac_space=' '; set | grep ac_space) 2>&1` in + *ac_space=\ *) + # `set' does not quote correctly, so add quotes (double-quote + # substitution turns \\\\ into \\, and sed turns \\ into \). + sed -n \ + "s/'/'\\\\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" + ;; + *) + # `set' quotes correctly as required by POSIX, so do not add quotes. + sed -n \ + "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" + ;; + esac; +} | + sed ' + t clear + : clear + s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ + t end + /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ + : end' >>confcache +if cmp -s $cache_file confcache; then :; else + if test -w $cache_file; then + test "x$cache_file" != "x/dev/null" && echo "updating cache $cache_file" + cat confcache >$cache_file + else + echo "not updating unwritable cache $cache_file" + fi +fi +rm -f confcache + +test "x$prefix" = xNONE && prefix=$ac_default_prefix +# Let make expand exec_prefix. +test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' + +# VPATH may cause trouble with some makes, so we remove $(srcdir), +# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and +# trailing colons and then remove the whole line if VPATH becomes empty +# (actually we leave an empty line to preserve line numbers). +if test "x$srcdir" = x.; then + ac_vpsub='/^[ ]*VPATH[ ]*=/{ +s/:*\$(srcdir):*/:/; +s/:*\${srcdir}:*/:/; +s/:*@srcdir@:*/:/; +s/^\([^=]*=[ ]*\):*/\1/; +s/:*$//; +s/^[^=]*=[ ]*$//; +}' +fi + +DEFS=-DHAVE_CONFIG_H + +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 + +: ${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 +SHELL=\${CONFIG_SHELL-$SHELL} +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF + +## --------------------- ## +## M4sh Initialization. ## +## --------------------- ## + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: +elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then + set -o posix +fi + +# NLS nuisances. +# Support unset when possible. +if (FOO=FOO; unset FOO) >/dev/null 2>&1; then + as_unset=unset +else + as_unset=false +fi + +(set +x; test -n "`(LANG=C; export LANG) 2>&1`") && + { $as_unset LANG || test "${LANG+set}" != set; } || + { LANG=C; export LANG; } +(set +x; test -n "`(LC_ALL=C; export LC_ALL) 2>&1`") && + { $as_unset LC_ALL || test "${LC_ALL+set}" != set; } || + { LC_ALL=C; export LC_ALL; } +(set +x; test -n "`(LC_TIME=C; export LC_TIME) 2>&1`") && + { $as_unset LC_TIME || test "${LC_TIME+set}" != set; } || + { LC_TIME=C; export LC_TIME; } +(set +x; test -n "`(LC_CTYPE=C; export LC_CTYPE) 2>&1`") && + { $as_unset LC_CTYPE || test "${LC_CTYPE+set}" != set; } || + { LC_CTYPE=C; export LC_CTYPE; } +(set +x; test -n "`(LANGUAGE=C; export LANGUAGE) 2>&1`") && + { $as_unset LANGUAGE || test "${LANGUAGE+set}" != set; } || + { LANGUAGE=C; export LANGUAGE; } +(set +x; test -n "`(LC_COLLATE=C; export LC_COLLATE) 2>&1`") && + { $as_unset LC_COLLATE || test "${LC_COLLATE+set}" != set; } || + { LC_COLLATE=C; export LC_COLLATE; } +(set +x; test -n "`(LC_NUMERIC=C; export LC_NUMERIC) 2>&1`") && + { $as_unset LC_NUMERIC || test "${LC_NUMERIC+set}" != set; } || + { LC_NUMERIC=C; export LC_NUMERIC; } +(set +x; test -n "`(LC_MESSAGES=C; export LC_MESSAGES) 2>&1`") && + { $as_unset LC_MESSAGES || test "${LC_MESSAGES+set}" != set; } || + { LC_MESSAGES=C; export LC_MESSAGES; } + + +# Name of the executable. +as_me=`(basename "$0") 2>/dev/null || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)$' \| \ + . : '\(.\)' 2>/dev/null || +echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } + /^X\/\(\/\/\)$/{ s//\1/; q; } + /^X\/\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + +# PATH needs CR, and LINENO needs CR and PATH. +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + echo "#! /bin/sh" >conftest.sh + echo "exit 0" >>conftest.sh + chmod +x conftest.sh + if (PATH=".;."; conftest.sh) >/dev/null 2>&1; then + PATH_SEPARATOR=';' + else + PATH_SEPARATOR=: + fi + rm -f conftest.sh +fi + + + as_lineno_1=$LINENO + as_lineno_2=$LINENO + as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x$as_lineno_3" = "x$as_lineno_2" || { + # Find who we are. Look in the path if we contain no path at all + # relative or not. + case $0 in + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break +done + + ;; + esac + # We did not find ourselves, most probably we were run as `sh COMMAND' + # in which case we are not to be found in the path. + if test "x$as_myself" = x; then + as_myself=$0 + fi + if test ! -f "$as_myself"; then + { { echo "$as_me:$LINENO: error: cannot find myself; rerun with an absolute path" >&5 +echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2;} + { (exit 1); exit 1; }; } + fi + case $CONFIG_SHELL in + '') + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for as_base in sh bash ksh sh5; do + case $as_dir in + /*) + if ("$as_dir/$as_base" -c ' + as_lineno_1=$LINENO + as_lineno_2=$LINENO + as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then + CONFIG_SHELL=$as_dir/$as_base + export CONFIG_SHELL + exec "$CONFIG_SHELL" "$0" ${1+"$@"} + fi;; + esac + done +done +;; + esac + + # Create $as_me.lineno as a copy of $as_myself, but with $LINENO + # uniformly replaced by the line number. The first 'sed' inserts a + # line-number line before each line; the second 'sed' does the real + # work. The second script uses 'N' to pair each line-number line + # with the numbered line, and appends trailing '-' during + # substitution so that $LINENO is not a special case at line end. + # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the + # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) + sed '=' <$as_myself | + sed ' + N + s,$,-, + : loop + s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, + t loop + s,-$,, + s,^['$as_cr_digits']*\n,, + ' >$as_me.lineno && + chmod +x $as_me.lineno || + { { echo "$as_me:$LINENO: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&5 +echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2;} + { (exit 1); exit 1; }; } + + # Don't try to exec as it changes $[0], causing all sort of problems + # (the dirname of $[0] is not the place where we might find the + # original and so on. Autoconf is especially sensible to this). + . ./$as_me.lineno + # Exit status is that of the last command. + exit +} + + +case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in + *c*,-n*) ECHO_N= ECHO_C=' +' ECHO_T=' ' ;; + *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; + *) ECHO_N= ECHO_C='\c' ECHO_T= ;; +esac + +if expr a : '\(a\)' >/dev/null 2>&1; then + as_expr=expr +else + as_expr=false +fi + +rm -f conf$$ conf$$.exe conf$$.file +echo >conf$$.file +if ln -s conf$$.file conf$$ 2>/dev/null; then + # We could just check for DJGPP; but this test a) works b) is more generic + # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). + if test -f conf$$.exe; then + # Don't use ln at all; we don't have any links + as_ln_s='cp -p' + else + as_ln_s='ln -s' + fi +elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln +else + as_ln_s='cp -p' +fi +rm -f conf$$ conf$$.exe conf$$.file + +as_executable_p="test -f" + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="sed y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="sed y%*+%pp%;s%[^_$as_cr_alnum]%_%g" + + +# IFS +# We need space, tab and new line, in precisely that order. +as_nl=' +' +IFS=" $as_nl" + +# CDPATH. +$as_unset CDPATH || test "${CDPATH+set}" != set || { CDPATH=$PATH_SEPARATOR; export CDPATH; } + +exec 6>&1 + +# Open the log real soon, to keep \$[0] and so on meaningful, and to +# report actual input values of CONFIG_FILES etc. instead of their +# values after options handling. Logging --version etc. is OK. +exec 5>>config.log +{ + echo + sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX +## Running $as_me. ## +_ASBOX +} >&5 +cat >&5 <<_CSEOF + +This file was extended by GNU diffutils $as_me 2.8.1, which was +generated by GNU Autoconf 2.53. Invocation command line was + + CONFIG_FILES = $CONFIG_FILES + CONFIG_HEADERS = $CONFIG_HEADERS + CONFIG_LINKS = $CONFIG_LINKS + CONFIG_COMMANDS = $CONFIG_COMMANDS + $ $0 $@ + +_CSEOF +echo "on `(hostname || uname -n) 2>/dev/null | sed 1q`" >&5 +echo >&5 +_ACEOF + +# Files that config.status was made for. +if test -n "$ac_config_files"; then + echo "config_files=\"$ac_config_files\"" >>$CONFIG_STATUS +fi + +if test -n "$ac_config_headers"; then + echo "config_headers=\"$ac_config_headers\"" >>$CONFIG_STATUS +fi + +if test -n "$ac_config_links"; then + echo "config_links=\"$ac_config_links\"" >>$CONFIG_STATUS +fi + +if test -n "$ac_config_commands"; then + echo "config_commands=\"$ac_config_commands\"" >>$CONFIG_STATUS +fi + +cat >>$CONFIG_STATUS <<\_ACEOF + +ac_cs_usage="\ +\`$as_me' instantiates files from templates according to the +current configuration. + +Usage: $0 [OPTIONS] [FILE]... + + -h, --help print this help, then exit + -V, --version print version number, then exit + -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 links: +$config_links + +Configuration commands: +$config_commands + +Report bugs to ." +_ACEOF + +cat >>$CONFIG_STATUS <<_ACEOF +ac_cs_version="\\ +GNU diffutils config.status 2.8.1 +configured by $0, generated by GNU Autoconf 2.53, + with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\" + +Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001 +Free Software Foundation, Inc. +This config.status script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it." +srcdir=$srcdir +INSTALL="$INSTALL" +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF +# If no file are specified by the user, then we need to provide default +# value. By we need to know if files were specified by the user. +ac_need_defaults=: +while test $# != 0 +do + case $1 in + --*=*) + ac_option=`expr "x$1" : 'x\([^=]*\)='` + ac_optarg=`expr "x$1" : 'x[^=]*=\(.*\)'` + shift + set dummy "$ac_option" "$ac_optarg" ${1+"$@"} + shift + ;; + -*);; + *) # This is not an option, so the user has probably given explicit + # arguments. + ac_need_defaults=false;; + esac + + case $1 in + # Handling of the options. +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF + -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) + echo "running $SHELL $0 " $ac_configure_args " --no-create --no-recursion" + exec $SHELL $0 $ac_configure_args --no-create --no-recursion ;; +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF + --version | --vers* | -V ) + echo "$ac_cs_version"; exit 0 ;; + --he | --h) + # Conflict between --help and --header + { { echo "$as_me:$LINENO: error: ambiguous option: $1 +Try \`$0 --help' for more information." >&5 +echo "$as_me: error: ambiguous option: $1 +Try \`$0 --help' for more information." >&2;} + { (exit 1); exit 1; }; };; + --help | --hel | -h ) + echo "$ac_cs_usage"; exit 0 ;; + --debug | --d* | -d ) + debug=: ;; + --file | --fil | --fi | --f ) + shift + CONFIG_FILES="$CONFIG_FILES $1" + ac_need_defaults=false;; + --header | --heade | --head | --hea ) + shift + CONFIG_HEADERS="$CONFIG_HEADERS $1" + ac_need_defaults=false;; + + # This is an error. + -*) { { echo "$as_me:$LINENO: error: unrecognized option: $1 +Try \`$0 --help' for more information." >&5 +echo "$as_me: error: unrecognized option: $1 +Try \`$0 --help' for more information." >&2;} + { (exit 1); exit 1; }; } ;; + + *) ac_config_targets="$ac_config_targets $1" ;; + + esac + shift +done + +_ACEOF + +cat >>$CONFIG_STATUS <<_ACEOF +# +# INIT-COMMANDS section. +# + +AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" +# Capture the value of obsolete $ALL_LINGUAS because we need it to compute + # POFILES, GMOFILES, UPDATEPOFILES, DUMMYPOFILES, CATALOGS. But hide it + # from automake. + eval 'ALL_LINGUAS''="$ALL_LINGUAS"' + # Capture the value of LINGUAS because we need it to compute CATALOGS. + LINGUAS="${LINGUAS-%UNSET%}" + + +_ACEOF + + + +cat >>$CONFIG_STATUS <<\_ACEOF +for ac_config_target in $ac_config_targets +do + case "$ac_config_target" in + # Handling of arguments. + "Makefile" ) CONFIG_FILES="$CONFIG_FILES Makefile" ;; + "doc/Makefile" ) CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;; + "lib/Makefile" ) CONFIG_FILES="$CONFIG_FILES lib/Makefile" ;; + "lib/posix/Makefile" ) CONFIG_FILES="$CONFIG_FILES lib/posix/Makefile" ;; + "man/Makefile" ) CONFIG_FILES="$CONFIG_FILES man/Makefile" ;; + "m4/Makefile" ) CONFIG_FILES="$CONFIG_FILES m4/Makefile" ;; + "ms/Makefile" ) CONFIG_FILES="$CONFIG_FILES ms/Makefile" ;; + "po/Makefile.in" ) CONFIG_FILES="$CONFIG_FILES po/Makefile.in" ;; + "src/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/Makefile" ;; + "lib/fnmatch.h" ) CONFIG_LINKS="$CONFIG_LINKS lib/fnmatch.h:lib/fnmatch.hin" ;; + "lib/regex.h" ) CONFIG_LINKS="$CONFIG_LINKS lib/regex.h:lib/regex.hin" ;; + "depfiles" ) CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; + "default-1" ) CONFIG_COMMANDS="$CONFIG_COMMANDS default-1" ;; + "default" ) CONFIG_COMMANDS="$CONFIG_COMMANDS default" ;; + "config.h" ) CONFIG_HEADERS="$CONFIG_HEADERS config.h:config.hin" ;; + *) { { 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_LINKS+set}" = set || CONFIG_LINKS=$config_links + test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands +fi + +# Create a temporary directory, and hook for its removal unless debugging. +$debug || +{ + trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0 + trap '{ (exit 1); exit 1; }' 1 2 13 15 +} + +# Create a (secure) tmp directory for tmp files. +: ${TMPDIR=/tmp} +{ + tmp=`(umask 077 && mktemp -d -q "$TMPDIR/csXXXXXX") 2>/dev/null` && + test -n "$tmp" && test -d "$tmp" +} || +{ + tmp=$TMPDIR/cs$$-$RANDOM + (umask 077 && mkdir $tmp) +} || +{ + echo "$me: cannot create a temporary directory in $TMPDIR" >&2 + { (exit 1); exit 1; } +} + +_ACEOF + +cat >>$CONFIG_STATUS <<_ACEOF + +# +# CONFIG_FILES section. +# + +# No need to generate the scripts if there are no CONFIG_FILES. +# This happens for instance when ./config.status config.h +if test -n "\$CONFIG_FILES"; then + # Protect against being on the right side of a sed subst in config.status. + sed 's/,@/@@/; s/@,/@@/; s/,;t t\$/@;t t/; /@;t t\$/s/[\\\\&,]/\\\\&/g; + s/@@/,@/; s/@@/@,/; s/@;t t\$/,;t t/' >\$tmp/subs.sed <<\\CEOF +s,@SHELL@,$SHELL,;t t +s,@PATH_SEPARATOR@,$PATH_SEPARATOR,;t t +s,@PACKAGE_NAME@,$PACKAGE_NAME,;t t +s,@PACKAGE_TARNAME@,$PACKAGE_TARNAME,;t t +s,@PACKAGE_VERSION@,$PACKAGE_VERSION,;t t +s,@PACKAGE_STRING@,$PACKAGE_STRING,;t t +s,@PACKAGE_BUGREPORT@,$PACKAGE_BUGREPORT,;t t +s,@exec_prefix@,$exec_prefix,;t t +s,@prefix@,$prefix,;t t +s,@program_transform_name@,$program_transform_name,;t t +s,@bindir@,$bindir,;t t +s,@sbindir@,$sbindir,;t t +s,@libexecdir@,$libexecdir,;t t +s,@datadir@,$datadir,;t t +s,@sysconfdir@,$sysconfdir,;t t +s,@sharedstatedir@,$sharedstatedir,;t t +s,@localstatedir@,$localstatedir,;t t +s,@libdir@,$libdir,;t t +s,@includedir@,$includedir,;t t +s,@oldincludedir@,$oldincludedir,;t t +s,@infodir@,$infodir,;t t +s,@mandir@,$mandir,;t t +s,@build_alias@,$build_alias,;t t +s,@host_alias@,$host_alias,;t t +s,@target_alias@,$target_alias,;t t +s,@DEFS@,$DEFS,;t t +s,@ECHO_C@,$ECHO_C,;t t +s,@ECHO_N@,$ECHO_N,;t t +s,@ECHO_T@,$ECHO_T,;t t +s,@LIBS@,$LIBS,;t t +s,@INSTALL_PROGRAM@,$INSTALL_PROGRAM,;t t +s,@INSTALL_SCRIPT@,$INSTALL_SCRIPT,;t t +s,@INSTALL_DATA@,$INSTALL_DATA,;t t +s,@PACKAGE@,$PACKAGE,;t t +s,@VERSION@,$VERSION,;t t +s,@ACLOCAL@,$ACLOCAL,;t t +s,@AUTOCONF@,$AUTOCONF,;t t +s,@AUTOMAKE@,$AUTOMAKE,;t t +s,@AUTOHEADER@,$AUTOHEADER,;t t +s,@MAKEINFO@,$MAKEINFO,;t t +s,@AMTAR@,$AMTAR,;t t +s,@install_sh@,$install_sh,;t t +s,@STRIP@,$STRIP,;t t +s,@ac_ct_STRIP@,$ac_ct_STRIP,;t t +s,@INSTALL_STRIP_PROGRAM@,$INSTALL_STRIP_PROGRAM,;t t +s,@AWK@,$AWK,;t t +s,@SET_MAKE@,$SET_MAKE,;t t +s,@CC@,$CC,;t t +s,@CFLAGS@,$CFLAGS,;t t +s,@LDFLAGS@,$LDFLAGS,;t t +s,@CPPFLAGS@,$CPPFLAGS,;t t +s,@ac_ct_CC@,$ac_ct_CC,;t t +s,@EXEEXT@,$EXEEXT,;t t +s,@OBJEXT@,$OBJEXT,;t t +s,@DEPDIR@,$DEPDIR,;t t +s,@am__include@,$am__include,;t t +s,@am__quote@,$am__quote,;t t +s,@AMDEP_TRUE@,$AMDEP_TRUE,;t t +s,@AMDEP_FALSE@,$AMDEP_FALSE,;t t +s,@AMDEPBACKSLASH@,$AMDEPBACKSLASH,;t t +s,@CCDEPMODE@,$CCDEPMODE,;t t +s,@CPP@,$CPP,;t t +s,@HELP2MAN@,$HELP2MAN,;t t +s,@RANLIB@,$RANLIB,;t t +s,@ac_ct_RANLIB@,$ac_ct_RANLIB,;t t +s,@PR_PROGRAM@,$PR_PROGRAM,;t t +s,@MKINSTALLDIRS@,$MKINSTALLDIRS,;t t +s,@MSGFMT@,$MSGFMT,;t t +s,@GMSGFMT@,$GMSGFMT,;t t +s,@XGETTEXT@,$XGETTEXT,;t t +s,@MSGMERGE@,$MSGMERGE,;t t +s,@build@,$build,;t t +s,@build_cpu@,$build_cpu,;t t +s,@build_vendor@,$build_vendor,;t t +s,@build_os@,$build_os,;t t +s,@host@,$host,;t t +s,@host_cpu@,$host_cpu,;t t +s,@host_vendor@,$host_vendor,;t t +s,@host_os@,$host_os,;t t +s,@USE_NLS@,$USE_NLS,;t t +s,@LIBICONV@,$LIBICONV,;t t +s,@LTLIBICONV@,$LTLIBICONV,;t t +s,@INTLLIBS@,$INTLLIBS,;t t +s,@LIBINTL@,$LIBINTL,;t t +s,@LTLIBINTL@,$LTLIBINTL,;t t +s,@POSUB@,$POSUB,;t t +s,@LIBOBJS@,$LIBOBJS,;t t +s,@ALLOCA@,$ALLOCA,;t t +s,@U@,$U,;t t +s,@ANSI2KNR@,$ANSI2KNR,;t t +s,@LIB_CLOCK_GETTIME@,$LIB_CLOCK_GETTIME,;t t +CEOF + +_ACEOF + + cat >>$CONFIG_STATUS <<\_ACEOF + # Split the substitutions into bite-sized pieces for seds with + # small command number limits, like on Digital OSF/1 and HP-UX. + ac_max_sed_lines=48 + ac_sed_frag=1 # Number of current file. + ac_beg=1 # First line for current file. + ac_end=$ac_max_sed_lines # Line after last line for current file. + ac_more_lines=: + ac_sed_cmds= + while $ac_more_lines; do + if test $ac_beg -gt 1; then + sed "1,${ac_beg}d; ${ac_end}q" $tmp/subs.sed >$tmp/subs.frag + else + sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag + fi + if test ! -s $tmp/subs.frag; then + ac_more_lines=false + else + # The purpose of the label and of the branching condition is to + # speed up the sed processing (if there are no `@' at all, there + # is no need to browse any of the substitutions). + # These are the two extra sed commands mentioned above. + (echo ':t + /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed + if test -z "$ac_sed_cmds"; then + ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed" + else + ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed" + fi + ac_sed_frag=`expr $ac_sed_frag + 1` + ac_beg=$ac_end + ac_end=`expr $ac_end + $ac_max_sed_lines` + fi + done + if test -z "$ac_sed_cmds"; then + ac_sed_cmds=cat + fi +fi # test -n "$CONFIG_FILES" + +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF +for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue + # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". + case $ac_file in + - | *:- | *:-:* ) # input from stdin + cat >$tmp/stdin + ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; + *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; + * ) ac_file_in=$ac_file.in ;; + esac + + # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories. + ac_dir=`(dirname "$ac_file") 2>/dev/null || +$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + { if $as_mkdir_p; then + mkdir -p "$ac_dir" + else + as_dir="$ac_dir" + as_dirs= + while test ! -d "$as_dir"; do + as_dirs="$as_dir $as_dirs" + as_dir=`(dirname "$as_dir") 2>/dev/null || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + done + test ! -n "$as_dirs" || mkdir $as_dirs + fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 +echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} + { (exit 1); exit 1; }; }; } + + ac_builddir=. + +if test "$ac_dir" != .; then + ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` + # A "../" for each directory in $ac_dir_suffix. + ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` +else + ac_dir_suffix= ac_top_builddir= +fi + +case $srcdir in + .) # No --srcdir option. We are building in place. + ac_srcdir=. + if test -z "$ac_top_builddir"; then + ac_top_srcdir=. + else + ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` + fi ;; + [\\/]* | ?:[\\/]* ) # Absolute path. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir ;; + *) # Relative path. + ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_builddir$srcdir ;; +esac +# Don't blindly perform a `cd "$ac_dir"/$ac_foo && pwd` since $ac_foo can be +# absolute. +ac_abs_builddir=`cd "$ac_dir" && cd $ac_builddir && pwd` +ac_abs_top_builddir=`cd "$ac_dir" && cd $ac_top_builddir && pwd` +ac_abs_srcdir=`cd "$ac_dir" && cd $ac_srcdir && pwd` +ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd` + + + case $INSTALL in + [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; + *) ac_INSTALL=$ac_top_builddir$INSTALL ;; + esac + + if test x"$ac_file" != x-; then + { echo "$as_me:$LINENO: creating $ac_file" >&5 +echo "$as_me: creating $ac_file" >&6;} + rm -f "$ac_file" + fi + # Let's still pretend it is `configure' which instantiates (i.e., don't + # use $as_me), people would be surprised to read: + # /* config.h. Generated by config.status. */ + if test x"$ac_file" = x-; then + configure_input= + else + configure_input="$ac_file. " + fi + configure_input=$configure_input"Generated from `echo $ac_file_in | + sed 's,.*/,,'` by configure." + + # First look for the input files in the build tree, otherwise in the + # src tree. + ac_file_inputs=`IFS=: + for f in $ac_file_in; do + case $f in + -) echo $tmp/stdin ;; + [\\/$]*) + # Absolute (can't be DOS-style, as IFS=:) + test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +echo "$as_me: error: cannot find input file: $f" >&2;} + { (exit 1); exit 1; }; } + echo $f;; + *) # Relative + if test -f "$f"; then + # Build tree + echo $f + elif test -f "$srcdir/$f"; then + # Source tree + echo $srcdir/$f + else + # /dev/null tree + { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +echo "$as_me: error: cannot find input file: $f" >&2;} + { (exit 1); exit 1; }; } + fi;; + esac + done` || { (exit 1); exit 1; } +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF + sed "$ac_vpsub +$extrasub +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF +:t +/@[a-zA-Z_][a-zA-Z_0-9]*@/!b +s,@configure_input@,$configure_input,;t t +s,@srcdir@,$ac_srcdir,;t t +s,@abs_srcdir@,$ac_abs_srcdir,;t t +s,@top_srcdir@,$ac_top_srcdir,;t t +s,@abs_top_srcdir@,$ac_abs_top_srcdir,;t t +s,@builddir@,$ac_builddir,;t t +s,@abs_builddir@,$ac_abs_builddir,;t t +s,@top_builddir@,$ac_top_builddir,;t t +s,@abs_top_builddir@,$ac_abs_top_builddir,;t t +s,@INSTALL@,$ac_INSTALL,;t t +" $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out + rm -f $tmp/stdin + if test x"$ac_file" != x-; then + mv $tmp/out $ac_file + else + cat $tmp/out + rm -f $tmp/out + fi + +done +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF + +# +# CONFIG_HEADER section. +# + +# These sed commands are passed to sed as "A NAME B NAME C VALUE D", where +# NAME is the cpp macro being defined and VALUE is the value it is being given. +# +# ac_d sets the value in "#define NAME VALUE" lines. +ac_dA='s,^\([ ]*\)#\([ ]*define[ ][ ]*\)' +ac_dB='[ ].*$,\1#\2' +ac_dC=' ' +ac_dD=',;t' +# ac_u turns "#undef NAME" without trailing blanks into "#define NAME VALUE". +ac_uA='s,^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)' +ac_uB='$,\1#\2define\3' +ac_uC=' ' +ac_uD=',;t' + +for ac_file in : $CONFIG_HEADERS; do test "x$ac_file" = x: && continue + # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". + case $ac_file in + - | *:- | *:-:* ) # input from stdin + cat >$tmp/stdin + ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; + *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; + * ) ac_file_in=$ac_file.in ;; + esac + + test x"$ac_file" != x- && { echo "$as_me:$LINENO: creating $ac_file" >&5 +echo "$as_me: creating $ac_file" >&6;} + + # First look for the input files in the build tree, otherwise in the + # src tree. + ac_file_inputs=`IFS=: + for f in $ac_file_in; do + case $f in + -) echo $tmp/stdin ;; + [\\/$]*) + # Absolute (can't be DOS-style, as IFS=:) + test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +echo "$as_me: error: cannot find input file: $f" >&2;} + { (exit 1); exit 1; }; } + echo $f;; + *) # Relative + if test -f "$f"; then + # Build tree + echo $f + elif test -f "$srcdir/$f"; then + # Source tree + echo $srcdir/$f + else + # /dev/null tree + { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +echo "$as_me: error: cannot find input file: $f" >&2;} + { (exit 1); exit 1; }; } + fi;; + esac + done` || { (exit 1); exit 1; } + # Remove the trailing spaces. + sed 's/[ ]*$//' $ac_file_inputs >$tmp/in + +_ACEOF + +# Transform confdefs.h into two sed scripts, `conftest.defines' and +# `conftest.undefs', that substitutes the proper values into +# config.h.in to produce config.h. The first handles `#define' +# templates, and the second `#undef' templates. +# And first: Protect against being on the right side of a sed subst in +# config.status. Protect against being in an unquoted here document +# in config.status. +rm -f conftest.defines conftest.undefs +# Using a here document instead of a string reduces the quoting nightmare. +# Putting comments in sed scripts is not portable. +# +# `end' is used to avoid that the second main sed command (meant for +# 0-ary CPP macros) applies to n-ary macro definitions. +# See the Autoconf documentation for `clear'. +cat >confdef2sed.sed <<\_ACEOF +s/[\\&,]/\\&/g +s,[\\$`],\\&,g +t clear +: clear +s,^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*\)\(([^)]*)\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1\2${ac_dC}\3${ac_dD},gp +t end +s,^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD},gp +: end +_ACEOF +# If some macros were called several times there might be several times +# the same #defines, which is useless. Nevertheless, we may not want to +# sort them, since we want the *last* AC-DEFINE to be honored. +uniq confdefs.h | sed -n -f confdef2sed.sed >conftest.defines +sed 's/ac_d/ac_u/g' conftest.defines >conftest.undefs +rm -f confdef2sed.sed + +# This sed command replaces #undef with comments. This is necessary, for +# example, in the case of _POSIX_SOURCE, which is predefined and required +# on some systems where configure will not decide to define it. +cat >>conftest.undefs <<\_ACEOF +s,^[ ]*#[ ]*undef[ ][ ]*[a-zA-Z_][a-zA-Z_0-9]*,/* & */, +_ACEOF + +# Break up conftest.defines because some shells have a limit on the size +# of here documents, and old seds have small limits too (100 cmds). +echo ' # Handle all the #define templates only if necessary.' >>$CONFIG_STATUS +echo ' if egrep "^[ ]*#[ ]*define" $tmp/in >/dev/null; then' >>$CONFIG_STATUS +echo ' # If there are no defines, we may have an empty if/fi' >>$CONFIG_STATUS +echo ' :' >>$CONFIG_STATUS +rm -f conftest.tail +while grep . conftest.defines >/dev/null +do + # Write a limited-size here document to $tmp/defines.sed. + echo ' cat >$tmp/defines.sed <>$CONFIG_STATUS + # Speed up: don't consider the non `#define' lines. + echo '/^[ ]*#[ ]*define/!b' >>$CONFIG_STATUS + # Work around the forget-to-reset-the-flag bug. + echo 't clr' >>$CONFIG_STATUS + echo ': clr' >>$CONFIG_STATUS + sed ${ac_max_here_lines}q conftest.defines >>$CONFIG_STATUS + echo 'CEOF + sed -f $tmp/defines.sed $tmp/in >$tmp/out + rm -f $tmp/in + mv $tmp/out $tmp/in +' >>$CONFIG_STATUS + sed 1,${ac_max_here_lines}d conftest.defines >conftest.tail + rm -f conftest.defines + mv conftest.tail conftest.defines +done +rm -f conftest.defines +echo ' fi # egrep' >>$CONFIG_STATUS +echo >>$CONFIG_STATUS + +# Break up conftest.undefs because some shells have a limit on the size +# of here documents, and old seds have small limits too (100 cmds). +echo ' # Handle all the #undef templates' >>$CONFIG_STATUS +rm -f conftest.tail +while grep . conftest.undefs >/dev/null +do + # Write a limited-size here document to $tmp/undefs.sed. + echo ' cat >$tmp/undefs.sed <>$CONFIG_STATUS + # Speed up: don't consider the non `#undef' + echo '/^[ ]*#[ ]*undef/!b' >>$CONFIG_STATUS + # Work around the forget-to-reset-the-flag bug. + echo 't clr' >>$CONFIG_STATUS + echo ': clr' >>$CONFIG_STATUS + sed ${ac_max_here_lines}q conftest.undefs >>$CONFIG_STATUS + echo 'CEOF + sed -f $tmp/undefs.sed $tmp/in >$tmp/out + rm -f $tmp/in + mv $tmp/out $tmp/in +' >>$CONFIG_STATUS + sed 1,${ac_max_here_lines}d conftest.undefs >conftest.tail + rm -f conftest.undefs + mv conftest.tail conftest.undefs +done +rm -f conftest.undefs + +cat >>$CONFIG_STATUS <<\_ACEOF + # Let's still pretend it is `configure' which instantiates (i.e., don't + # use $as_me), people would be surprised to read: + # /* config.h. Generated by config.status. */ + if test x"$ac_file" = x-; then + echo "/* Generated by configure. */" >$tmp/config.h + else + echo "/* $ac_file. Generated by configure. */" >$tmp/config.h + fi + cat $tmp/in >>$tmp/config.h + rm -f $tmp/in + if test x"$ac_file" != x-; then + if cmp -s $ac_file $tmp/config.h 2>/dev/null; then + { echo "$as_me:$LINENO: $ac_file is unchanged" >&5 +echo "$as_me: $ac_file is unchanged" >&6;} + else + ac_dir=`(dirname "$ac_file") 2>/dev/null || +$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + { if $as_mkdir_p; then + mkdir -p "$ac_dir" + else + as_dir="$ac_dir" + as_dirs= + while test ! -d "$as_dir"; do + as_dirs="$as_dir $as_dirs" + as_dir=`(dirname "$as_dir") 2>/dev/null || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + done + test ! -n "$as_dirs" || mkdir $as_dirs + fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 +echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} + { (exit 1); exit 1; }; }; } + + rm -f $ac_file + mv $tmp/config.h $ac_file + fi + else + cat $tmp/config.h + rm -f $tmp/config.h + fi + # Run the commands associated with the file. + case $ac_file in + config.h ) # update the timestamp +echo 'timestamp for config.h:config.hin' >"./stamp-h1" + ;; + esac +done +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF + +# +# CONFIG_LINKS section. +# + +for ac_file in : $CONFIG_LINKS; do test "x$ac_file" = x: && continue + ac_dest=`echo "$ac_file" | sed 's,:.*,,'` + ac_source=`echo "$ac_file" | sed 's,[^:]*:,,'` + + { echo "$as_me:$LINENO: linking $srcdir/$ac_source to $ac_dest" >&5 +echo "$as_me: linking $srcdir/$ac_source to $ac_dest" >&6;} + + if test ! -r $srcdir/$ac_source; then + { { echo "$as_me:$LINENO: error: $srcdir/$ac_source: file not found" >&5 +echo "$as_me: error: $srcdir/$ac_source: file not found" >&2;} + { (exit 1); exit 1; }; } + fi + rm -f $ac_dest + + # Make relative symlinks. + ac_dest_dir=`(dirname "$ac_dest") 2>/dev/null || +$as_expr X"$ac_dest" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_dest" : 'X\(//\)[^/]' \| \ + X"$ac_dest" : 'X\(//\)$' \| \ + X"$ac_dest" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$ac_dest" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + { if $as_mkdir_p; then + mkdir -p "$ac_dest_dir" + else + as_dir="$ac_dest_dir" + as_dirs= + while test ! -d "$as_dir"; do + as_dirs="$as_dir $as_dirs" + as_dir=`(dirname "$as_dir") 2>/dev/null || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + done + test ! -n "$as_dirs" || mkdir $as_dirs + fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dest_dir\"" >&5 +echo "$as_me: error: cannot create directory \"$ac_dest_dir\"" >&2;} + { (exit 1); exit 1; }; }; } + + ac_builddir=. + +if test "$ac_dest_dir" != .; then + ac_dir_suffix=/`echo "$ac_dest_dir" | sed 's,^\.[\\/],,'` + # A "../" for each directory in $ac_dir_suffix. + ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` +else + ac_dir_suffix= ac_top_builddir= +fi + +case $srcdir in + .) # No --srcdir option. We are building in place. + ac_srcdir=. + if test -z "$ac_top_builddir"; then + ac_top_srcdir=. + else + ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` + fi ;; + [\\/]* | ?:[\\/]* ) # Absolute path. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir ;; + *) # Relative path. + ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_builddir$srcdir ;; +esac +# Don't blindly perform a `cd "$ac_dest_dir"/$ac_foo && pwd` since $ac_foo can be +# absolute. +ac_abs_builddir=`cd "$ac_dest_dir" && cd $ac_builddir && pwd` +ac_abs_top_builddir=`cd "$ac_dest_dir" && cd $ac_top_builddir && pwd` +ac_abs_srcdir=`cd "$ac_dest_dir" && cd $ac_srcdir && pwd` +ac_abs_top_srcdir=`cd "$ac_dest_dir" && cd $ac_top_srcdir && pwd` + + + case $srcdir in + [\\/$]* | ?:[\\/]* ) ac_rel_source=$srcdir/$ac_source ;; + *) ac_rel_source=$ac_top_builddir$srcdir/$ac_source ;; + esac + + # Make a symlink if possible; otherwise try a hard link. + ln -s $ac_rel_source $ac_dest 2>/dev/null || + ln $srcdir/$ac_source $ac_dest || + { { echo "$as_me:$LINENO: error: cannot link $ac_dest to $srcdir/$ac_source" >&5 +echo "$as_me: error: cannot link $ac_dest to $srcdir/$ac_source" >&2;} + { (exit 1); exit 1; }; } +done +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF + +# +# CONFIG_COMMANDS section. +# +for ac_file in : $CONFIG_COMMANDS; do test "x$ac_file" = x: && continue + ac_dest=`echo "$ac_file" | sed 's,:.*,,'` + ac_source=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_dir=`(dirname "$ac_dest") 2>/dev/null || +$as_expr X"$ac_dest" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_dest" : 'X\(//\)[^/]' \| \ + X"$ac_dest" : 'X\(//\)$' \| \ + X"$ac_dest" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$ac_dest" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + ac_builddir=. + +if test "$ac_dir" != .; then + ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` + # A "../" for each directory in $ac_dir_suffix. + ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` +else + ac_dir_suffix= ac_top_builddir= +fi + +case $srcdir in + .) # No --srcdir option. We are building in place. + ac_srcdir=. + if test -z "$ac_top_builddir"; then + ac_top_srcdir=. + else + ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` + fi ;; + [\\/]* | ?:[\\/]* ) # Absolute path. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir ;; + *) # Relative path. + ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_builddir$srcdir ;; +esac +# Don't blindly perform a `cd "$ac_dir"/$ac_foo && pwd` since $ac_foo can be +# absolute. +ac_abs_builddir=`cd "$ac_dir" && cd $ac_builddir && pwd` +ac_abs_top_builddir=`cd "$ac_dir" && cd $ac_top_builddir && pwd` +ac_abs_srcdir=`cd "$ac_dir" && cd $ac_srcdir && pwd` +ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd` + + + { echo "$as_me:$LINENO: executing $ac_dest commands" >&5 +echo "$as_me: executing $ac_dest commands" >&6;} + case $ac_dest in + depfiles ) test x"$AMDEP_TRUE" != x"" || for mf in $CONFIG_FILES; do + # Strip MF so we end up with the name of the file. + mf=`echo "$mf" | sed -e 's/:.*$//'` + if (sed 1q $mf | fgrep 'generated by automake') > /dev/null 2>&1; then + dirpart=`(dirname "$mf") 2>/dev/null || +$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$mf" : 'X\(//\)[^/]' \| \ + X"$mf" : 'X\(//\)$' \| \ + X"$mf" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$mf" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + else + continue + fi + grep '^DEP_FILES *= *[^ #]' < "$mf" > /dev/null || continue + # Extract the definition of DEP_FILES from the Makefile without + # running `make'. + DEPDIR=`sed -n -e '/^DEPDIR = / s///p' < "$mf"` + test -z "$DEPDIR" && continue + # When using ansi2knr, U may be empty or an underscore; expand it + U=`sed -n -e '/^U = / s///p' < "$mf"` + test -d "$dirpart/$DEPDIR" || mkdir "$dirpart/$DEPDIR" + # We invoke sed twice because it is the simplest approach to + # changing $(DEPDIR) to its actual value in the expansion. + for file in `sed -n -e ' + /^DEP_FILES = .*\\\\$/ { + s/^DEP_FILES = // + :loop + s/\\\\$// + p + n + /\\\\$/ b loop + p + } + /^DEP_FILES = / s/^DEP_FILES = //p' < "$mf" | \ + sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do + # Make sure the directory exists. + test -f "$dirpart/$file" && continue + fdir=`(dirname "$file") 2>/dev/null || +$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$file" : 'X\(//\)[^/]' \| \ + X"$file" : 'X\(//\)$' \| \ + X"$file" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + { if $as_mkdir_p; then + mkdir -p $dirpart/$fdir + else + as_dir=$dirpart/$fdir + as_dirs= + while test ! -d "$as_dir"; do + as_dirs="$as_dir $as_dirs" + as_dir=`(dirname "$as_dir") 2>/dev/null || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + done + test ! -n "$as_dirs" || mkdir $as_dirs + fi || { { echo "$as_me:$LINENO: error: cannot create directory $dirpart/$fdir" >&5 +echo "$as_me: error: cannot create directory $dirpart/$fdir" >&2;} + { (exit 1); exit 1; }; }; } + + # echo "creating $dirpart/$file" + echo '# dummy' > "$dirpart/$file" + done +done + ;; + default-1 ) + for ac_file in $CONFIG_FILES; do + # Support "outfile[:infile[:infile...]]" + case "$ac_file" in + *:*) ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; + esac + # PO directories have a Makefile.in generated from Makefile.in.in. + case "$ac_file" in */Makefile.in) + # Adjust a relative srcdir. + ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'` + ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`" + ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'` + # In autoconf-2.13 it is called $ac_given_srcdir. + # In autoconf-2.50 it is called $srcdir. + test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir" + case "$ac_given_srcdir" in + .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;; + /*) top_srcdir="$ac_given_srcdir" ;; + *) top_srcdir="$ac_dots$ac_given_srcdir" ;; + esac + if test -f "$ac_given_srcdir/$ac_dir/POTFILES.in"; then + rm -f "$ac_dir/POTFILES" + test -n "$as_me" && echo "$as_me: creating $ac_dir/POTFILES" || echo "creating $ac_dir/POTFILES" + cat "$ac_given_srcdir/$ac_dir/POTFILES.in" | sed -e "/^#/d" -e "/^[ ]*\$/d" -e "s,.*, $top_srcdir/& \\\\," | sed -e "\$s/\(.*\) \\\\/\1/" > "$ac_dir/POTFILES" + # ALL_LINGUAS, POFILES, GMOFILES, UPDATEPOFILES, DUMMYPOFILES 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 "$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" "$ac_given_srcdir/$ac_dir/LINGUAS"` + # Hide the ALL_LINGUAS assigment from automake. + eval 'ALL_LINGUAS''=$ALL_LINGUAS_' + fi + case "$ac_given_srcdir" in + .) srcdirpre= ;; + *) srcdirpre='$(srcdir)/' ;; + esac + POFILES= + GMOFILES= + UPDATEPOFILES= + DUMMYPOFILES= + for lang in $ALL_LINGUAS; do + POFILES="$POFILES $srcdirpre$lang.po" + GMOFILES="$GMOFILES $srcdirpre$lang.gmo" + UPDATEPOFILES="$UPDATEPOFILES $lang.po-update" + DUMMYPOFILES="$DUMMYPOFILES $lang.nop" + 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|@GMOFILES@|$GMOFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@CATALOGS@|$CATALOGS|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 ;; + default ) date > stamp-h ;; + esac +done +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF + +{ (exit 0); exit 0; } +_ACEOF +chmod +x $CONFIG_STATUS +ac_clean_files=$ac_clean_files_save + + +# configure is writing to config.log, and then calls config.status. +# config.status does its own redirection, appending to config.log. +# Unfortunately, on DOS this fails, as config.log is still kept open +# by configure, so config.status won't be able to write to it; its +# output is simply discarded. So we exec the FD to /dev/null, +# effectively closing config.log, so it can be properly (re)opened and +# appended to by config.status. When coming back to configure, we +# need to make the FD available again. +if test "$no_create" != yes; then + ac_cs_success=: + exec 5>/dev/null + $SHELL $CONFIG_STATUS || 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/src/apps/bin/diffutils-2.8.1/configure.ac b/src/apps/bin/diffutils-2.8.1/configure.ac new file mode 100644 index 0000000000..369257c4a0 --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/configure.ac @@ -0,0 +1,135 @@ +# Configure template for GNU Diffutils. + +# Copyright (C) 1994, 1995, 1998, 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. + +AC_PREREQ(2.53) + +AC_INIT(GNU diffutils, 2.8.1, bug-gnu-utils@gnu.org) +AC_CONFIG_SRCDIR(src/diff.c) + +AC_CONFIG_AUX_DIR(config) +AM_CONFIG_HEADER([config.h:config.hin]) +AM_INIT_AUTOMAKE([gnits]) + +AC_PROG_AWK +AC_PROG_CC +AC_ISC_POSIX +AM_PROG_CC_STDC +AC_PROG_CPP +AM_MISSING_PROG(HELP2MAN, help2man) +AC_PROG_INSTALL +AC_PROG_RANLIB + +AC__GNU_SOURCE +AC_DEFINE([__EXTENSIONS__], 1, [Enable Solaris extensions.]) +AC_SYS_LARGEFILE + +AC_C_CONST +AC_C_INLINE +AC_C_VARARRAYS + +AC_DEFINE(DEFAULT_DIFF_PROGRAM, "diff", + [Name of "diff" program, unless overridden.]) + +AC_DEFINE(DEFAULT_EDITOR_PROGRAM, "ed", + [Name of editor program, unless overridden.]) + +AC_PATH_PROG(PR_PROGRAM, pr, "") +AC_DEFINE_UNQUOTED(PR_PROGRAM, "$PR_PROGRAM", [Name of "pr" program.]) + +AC_HEADER_STDBOOL +AC_HEADER_STDC +AC_CHECK_HEADERS(fcntl.h libintl.h limits.h locale.h \ + stdlib.h string.h sys/file.h time.h unistd.h) +AC_CHECK_MEMBERS([struct stat.st_blksize]) +AC_CHECK_MEMBERS([struct stat.st_rdev]) +AC_CHECK_TYPE(ptrdiff_t, int) +AC_CHECK_TYPE(ssize_t, int) +jm_AC_TYPE_UINTMAX_T +AM_GNU_GETTEXT([external]) +XGETTEXT="AWK='$AWK' \$(SHELL) \$(top_srcdir)/exgettext $XGETTEXT" +AC_HEADER_DIRENT +AC_HEADER_STAT +AC_HEADER_SYS_WAIT +AC_STRUCT_ST_MTIM_NSEC +AC_TYPE_PID_T +AC_TYPE_SIGNAL + +AC_CHECK_FUNCS(diraccess dup2 gettimeofday \ + sigaction sigprocmask strchr strerror tmpnam) +AC_REPLACE_FUNCS(memchr mkstemp strcasecmp waitpid) +if test $ac_cv_func_mkstemp != yes; then + AC_LIBOBJ(tempname) +fi +AC_FUNC_CLOSEDIR_VOID +AC_FUNC_FORK +AC_FUNC_VPRINTF +jm_FUNC_GLIBC_UNLOCKED_IO +jm_FUNC_GNU_STRFTIME +# No need for AC_FUNC_MEMCMP, since memcmp is used only to test for equality. +jm_FUNC_MALLOC +jm_FUNC_REALLOC +jm_PREREQ_C_STACK +jm_PREREQ_ERROR +jm_PREREQ_HARD_LOCALE +jm_PREREQ_QUOTEARG +jm_PREREQ_REGEX +AC_DEFINE([REGEX_MALLOC], 1, + [Define to 1 to avoid alloca in the regular-expression implementation.]) +jm_PREREQ_TEMPNAME +jm_AC_PREREQ_XSTRTOUMAX + +# Check for clock_gettime and its library. Solaris puts it in -lrt or +# -lposix4, but we don't want to link that library unless we have to. +diff_saved_libs=$LIBS +AC_SEARCH_LIBS(clock_gettime, [rt posix4]) +case $ac_cv_search_clock_gettime in +no | 'none required') + LIB_CLOCK_GETTIME=;; +*) + LIB_CLOCK_GETTIME=$ac_cv_search_clock_gettime;; +esac +AC_SUBST([LIB_CLOCK_GETTIME]) +AC_CHECK_FUNCS(clock_gettime) +LIBS=$diff_saved_libs + +# fnmatch +AC_FUNC_FNMATCH +if test $ac_cv_func_fnmatch_works = yes; then + rm -f lib/fnmatch.h +else + AC_LIBOBJ(fnmatch) + AC_CONFIG_LINKS(lib/fnmatch.h:lib/fnmatch.hin) +fi + +# regex +jm_INCLUDED_REGEX([lib/regex.c]) +if test "$jm_with_regex" = yes; then + AC_CONFIG_LINKS(lib/regex.h:lib/regex.hin) +else + rm -f lib/regex.h +fi + +jm_AC_DOS +AC_FUNC_SETMODE_DOS + +AC_CONFIG_FILES([Makefile doc/Makefile \ + lib/Makefile lib/posix/Makefile man/Makefile \ + m4/Makefile ms/Makefile po/Makefile.in src/Makefile]) +AC_CONFIG_COMMANDS([default], [date > stamp-h]) +AC_OUTPUT diff --git a/src/apps/bin/diffutils-2.8.1/doc/Makefile b/src/apps/bin/diffutils-2.8.1/doc/Makefile new file mode 100644 index 0000000000..592eebfb73 --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/doc/Makefile @@ -0,0 +1,359 @@ +# Makefile.in generated by automake 1.6 from Makefile.am. +# doc/Makefile. Generated from Makefile.in by configure. + +# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002 +# Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + + + +# Makefile for GNU diffutils documentation. + +# Copyright (C) 2001, 2002 Free Software Foundation, Inc. +SHELL = /bin/sh + +srcdir = . +top_srcdir = .. + +prefix = /usr/local +exec_prefix = ${prefix} + +bindir = ${exec_prefix}/bin +sbindir = ${exec_prefix}/sbin +libexecdir = ${exec_prefix}/libexec +datadir = ${prefix}/share +sysconfdir = ${prefix}/etc +sharedstatedir = ${prefix}/com +localstatedir = ${prefix}/var +libdir = ${exec_prefix}/lib +infodir = ${prefix}/info +mandir = ${prefix}/man +includedir = ${prefix}/include +oldincludedir = /usr/include +pkgdatadir = $(datadir)/diffutils +pkglibdir = $(libdir)/diffutils +pkgincludedir = $(includedir)/diffutils +top_builddir = .. + +ACLOCAL = ${SHELL} /boot/home/Development/current/src/apps/bin/diffutils-2.8.1/config/missing --run aclocal-1.6 +AUTOCONF = ${SHELL} /boot/home/Development/current/src/apps/bin/diffutils-2.8.1/config/missing --run autoconf +AUTOMAKE = ${SHELL} /boot/home/Development/current/src/apps/bin/diffutils-2.8.1/config/missing --run automake-1.6 +AUTOHEADER = ${SHELL} /boot/home/Development/current/src/apps/bin/diffutils-2.8.1/config/missing --run autoheader + +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = /bin/install -c +INSTALL_PROGRAM = ${INSTALL} +INSTALL_DATA = ${INSTALL} -m 644 +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +INSTALL_SCRIPT = ${INSTALL} +INSTALL_HEADER = $(INSTALL_DATA) +transform = s,x,x, +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +host_alias = +host_triplet = i586-pc-beos + +EXEEXT = +OBJEXT = o +PATH_SEPARATOR = : +AMTAR = ${SHELL} /boot/home/Development/current/src/apps/bin/diffutils-2.8.1/config/missing --run tar +AWK = gawk +BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@ +CATOBJEXT = @CATOBJEXT@ +CC = gcc +CPP = gcc -E +DATADIRNAME = @DATADIRNAME@ +DEPDIR = .deps +GENCAT = @GENCAT@ +GLIBC21 = @GLIBC21@ +GMSGFMT = : +HAVE_LIB = @HAVE_LIB@ +HELP2MAN = ${SHELL} /boot/home/Development/current/src/apps/bin/diffutils-2.8.1/config/missing --run help2man +INSTALL_STRIP_PROGRAM = ${SHELL} $(install_sh) -c -s +INSTOBJEXT = @INSTOBJEXT@ +INTLBISON = @INTLBISON@ +INTLLIBS = +INTLOBJS = @INTLOBJS@ +INTL_LIBTOOL_SUFFIX_PREFIX = @INTL_LIBTOOL_SUFFIX_PREFIX@ +LIB = @LIB@ +LIBICONV = +LIBINTL = +LIB_CLOCK_GETTIME = +LTLIB = @LTLIB@ +LTLIBICONV = +LTLIBINTL = +MKINSTALLDIRS = config/mkinstalldirs +PACKAGE = diffutils +POSUB = +PR_PROGRAM = /bin/pr +RANLIB = ranlib +STRIP = +U = +USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@ +USE_NLS = no +VERSION = 2.8.1 +am__include = include +am__quote = +install_sh = /boot/home/Development/current/src/apps/bin/diffutils-2.8.1/config/install-sh + +AM_MAKEINFOFLAGS = --no-split + +info_TEXINFOS = diff.texi +diff_TEXINFOS = fdl.texi + +EXTRA_DIST = diagmeet.note +subdir = doc +mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +DIST_SOURCES = +TEXINFO_TEX = $(top_srcdir)/config/texinfo.tex +INFO_DEPS = diff.info +DVIS = diff.dvi +TEXINFOS = diff.texi +DIST_COMMON = $(diff_TEXINFOS) Makefile.am Makefile.in stamp-vti \ + version.texi +all: all-am + +.SUFFIXES: +.SUFFIXES: .dvi .info .ps .texi +$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.ac $(ACLOCAL_M4) + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnits doc/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) + +$(srcdir)/version.texi: $(srcdir)/stamp-vti + @: +$(srcdir)/stamp-vti: diff.texi $(top_srcdir)/configure.ac + @(set `$(SHELL) $(top_srcdir)/config/mdate-sh $(srcdir)/diff.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 + +diff.info: diff.texi $(srcdir)/version.texi $(diff_TEXINFOS) +diff.dvi: diff.texi $(srcdir)/version.texi $(diff_TEXINFOS) + +.texi.info: + @cd $(srcdir) && rm -f $@ $@-[0-9] $@-[0-9][0-9] + cd $(srcdir) \ + && $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) \ + `echo $< | sed 's,.*/,,'` + +.texi.dvi: + TEXINPUTS="$(top_srcdir)/config$(PATH_SEPARATOR)$$TEXINPUTS" \ + MAKEINFO='$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir)' \ + $(TEXI2DVI) $< + +.texi: + @cd $(srcdir) && rm -f $@ $@-[0-9] $@-[0-9][0-9] + cd $(srcdir) \ + && $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) \ + `echo $< | sed 's,.*/,,'` + +MAKEINFO = ${SHELL} /boot/home/Development/current/src/apps/bin/diffutils-2.8.1/config/missing --run makeinfo +TEXI2DVI = texi2dvi +DVIPS = dvips +.dvi.ps: + $(DVIPS) $< -o $@ + +uninstall-info-am: + $(PRE_UNINSTALL) + @if (install-info --version && \ + install-info --version | fgrep -i -v debian) >/dev/null 2>&1; then \ + list='$(INFO_DEPS)'; \ + for file in $$list; do \ + echo " install-info --info-dir=$(DESTDIR)$(infodir) --remove $(DESTDIR)$(infodir)/$$file"; \ + install-info --info-dir=$(DESTDIR)$(infodir) --remove $(DESTDIR)$(infodir)/$$file; \ + done; \ + else :; fi + @$(NORMAL_UNINSTALL) + @list='$(INFO_DEPS)'; \ + for file in $$list; do \ + (if cd $(DESTDIR)$(infodir); then \ + echo " rm -f $$file $$file-[0-9] $$file-[0-9][0-9])"; \ + rm -f $$file $$file-[0-9] $$file-[0-9][0-9]; \ + else :; fi); \ + done + +dist-info: $(INFO_DEPS) + list='$(INFO_DEPS)'; \ + for base in $$list; do \ + d=$(srcdir); \ + for file in $$d/$$base*; do \ + relfile=`expr "$$file" : "$$d/\(.*\)"`; \ + test -f $(distdir)/$$relfile || \ + cp -p $$file $(distdir)/$$relfile; \ + done; \ + done + +mostlyclean-aminfo: + -rm -f diff.aux diff.cp diff.cps diff.dvi diff.fn diff.ky diff.log diff.pg \ + diff.ps diff.toc diff.tp diff.vr + +maintainer-clean-aminfo: + cd $(srcdir) && \ + for i in $(INFO_DEPS); do \ + rm -f $$i; \ + if test "`echo $$i-[0-9]*`" != "$$i-[0-9]*"; then \ + rm -f $$i-[0-9]*; \ + fi; \ + done +tags: TAGS +TAGS: + +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) + +top_distdir = .. +distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) + +distdir: $(DISTFILES) + @for file in $(DISTFILES); do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + dir="/$$dir"; \ + $(mkinstalldirs) "$(distdir)$$dir"; \ + else \ + dir=''; \ + fi; \ + if test -d $$d/$$file; then \ + 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) + +installdirs: + $(mkinstalldirs) $(DESTDIR)$(infodir) + +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -rm -f Makefile $(CONFIG_CLEAN_FILES) stamp-h stamp-h[0-9]* + +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 + +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: $(DVIS) + +info: info-am + +info-am: $(INFO_DEPS) + +install-data-am: install-info-am + +install-exec-am: + +install-info: install-info-am + +install-info-am: $(INFO_DEPS) + @$(NORMAL_INSTALL) + $(mkinstalldirs) $(DESTDIR)$(infodir) + @list='$(INFO_DEPS)'; \ + for file in $$list; do \ + d=$(srcdir); \ + for ifile in echo $$d/$$file $$d/$$file-[0-9] $$d/$$file-[0-9][0-9]; do \ + if test -f $$ifile; then \ + relfile=`expr "$$ifile" : "$$d/\(.*\)"`; \ + 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 | fgrep -i -v debian) >/dev/null 2>&1; then \ + list='$(INFO_DEPS)'; \ + for file in $$list; do \ + echo " install-info --info-dir=$(DESTDIR)$(infodir) $(DESTDIR)$(infodir)/$$file";\ + install-info --info-dir=$(DESTDIR)$(infodir) $(DESTDIR)$(infodir)/$$file || :;\ + done; \ + else : ; fi +install-man: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + +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 + +uninstall-am: uninstall-info-am + +.PHONY: all all-am check check-am clean clean-generic dist-info \ + distclean distclean-generic distdir dvi dvi-am info info-am \ + install install-am install-data install-data-am install-exec \ + install-exec-am install-info install-info-am install-man \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-aminfo \ + maintainer-clean-generic maintainer-clean-vti mostlyclean \ + mostlyclean-aminfo mostlyclean-generic mostlyclean-vti \ + uninstall uninstall-am uninstall-info-am + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/src/apps/bin/diffutils-2.8.1/doc/Makefile.am b/src/apps/bin/diffutils-2.8.1/doc/Makefile.am new file mode 100644 index 0000000000..574fdab870 --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/doc/Makefile.am @@ -0,0 +1,24 @@ +# Makefile for GNU diffutils documentation. + +# Copyright (C) 2001, 2002 Free Software Foundation, Inc. + +## This program is free software; you can redistribute it and/or modify +## it under the terms of the GNU General Public License as published by +## the Free Software Foundation; either version 2, or (at your option) +## any later version. + +## This program is distributed in the hope that it will be useful, +## but WITHOUT ANY WARRANTY; without even the implied warranty of +## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +## GNU General Public License for more details. + +## You should have received a copy of the GNU General Public License +## along with this program; if not, write to the Free Software Foundation, +## Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +AM_MAKEINFOFLAGS = --no-split + +info_TEXINFOS = diff.texi +diff_TEXINFOS = fdl.texi + +EXTRA_DIST = diagmeet.note diff --git a/src/apps/bin/diffutils-2.8.1/doc/Makefile.in b/src/apps/bin/diffutils-2.8.1/doc/Makefile.in new file mode 100644 index 0000000000..408013d8e2 --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/doc/Makefile.in @@ -0,0 +1,359 @@ +# Makefile.in generated by automake 1.6 from Makefile.am. +# @configure_input@ + +# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002 +# Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# Makefile for GNU diffutils documentation. + +# Copyright (C) 2001, 2002 Free Software Foundation, Inc. +SHELL = @SHELL@ + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +prefix = @prefix@ +exec_prefix = @exec_prefix@ + +bindir = @bindir@ +sbindir = @sbindir@ +libexecdir = @libexecdir@ +datadir = @datadir@ +sysconfdir = @sysconfdir@ +sharedstatedir = @sharedstatedir@ +localstatedir = @localstatedir@ +libdir = @libdir@ +infodir = @infodir@ +mandir = @mandir@ +includedir = @includedir@ +oldincludedir = /usr/include +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +top_builddir = .. + +ACLOCAL = @ACLOCAL@ +AUTOCONF = @AUTOCONF@ +AUTOMAKE = @AUTOMAKE@ +AUTOHEADER = @AUTOHEADER@ + +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = @INSTALL@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_DATA = @INSTALL_DATA@ +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_HEADER = $(INSTALL_DATA) +transform = @program_transform_name@ +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +host_alias = @host_alias@ +host_triplet = @host@ + +EXEEXT = @EXEEXT@ +OBJEXT = @OBJEXT@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +AMTAR = @AMTAR@ +AWK = @AWK@ +BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@ +CATOBJEXT = @CATOBJEXT@ +CC = @CC@ +CPP = @CPP@ +DATADIRNAME = @DATADIRNAME@ +DEPDIR = @DEPDIR@ +GENCAT = @GENCAT@ +GLIBC21 = @GLIBC21@ +GMSGFMT = @GMSGFMT@ +HAVE_LIB = @HAVE_LIB@ +HELP2MAN = @HELP2MAN@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INSTOBJEXT = @INSTOBJEXT@ +INTLBISON = @INTLBISON@ +INTLLIBS = @INTLLIBS@ +INTLOBJS = @INTLOBJS@ +INTL_LIBTOOL_SUFFIX_PREFIX = @INTL_LIBTOOL_SUFFIX_PREFIX@ +LIB = @LIB@ +LIBICONV = @LIBICONV@ +LIBINTL = @LIBINTL@ +LIB_CLOCK_GETTIME = @LIB_CLOCK_GETTIME@ +LTLIB = @LTLIB@ +LTLIBICONV = @LTLIBICONV@ +LTLIBINTL = @LTLIBINTL@ +MKINSTALLDIRS = @MKINSTALLDIRS@ +PACKAGE = @PACKAGE@ +POSUB = @POSUB@ +PR_PROGRAM = @PR_PROGRAM@ +RANLIB = @RANLIB@ +STRIP = @STRIP@ +U = @U@ +USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@ +USE_NLS = @USE_NLS@ +VERSION = @VERSION@ +am__include = @am__include@ +am__quote = @am__quote@ +install_sh = @install_sh@ + +AM_MAKEINFOFLAGS = --no-split + +info_TEXINFOS = diff.texi +diff_TEXINFOS = fdl.texi + +EXTRA_DIST = diagmeet.note +subdir = doc +mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +DIST_SOURCES = +TEXINFO_TEX = $(top_srcdir)/config/texinfo.tex +INFO_DEPS = diff.info +DVIS = diff.dvi +TEXINFOS = diff.texi +DIST_COMMON = $(diff_TEXINFOS) Makefile.am Makefile.in stamp-vti \ + version.texi +all: all-am + +.SUFFIXES: +.SUFFIXES: .dvi .info .ps .texi +$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.ac $(ACLOCAL_M4) + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnits doc/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) + +$(srcdir)/version.texi: $(srcdir)/stamp-vti + @: +$(srcdir)/stamp-vti: diff.texi $(top_srcdir)/configure.ac + @(set `$(SHELL) $(top_srcdir)/config/mdate-sh $(srcdir)/diff.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 + +diff.info: diff.texi $(srcdir)/version.texi $(diff_TEXINFOS) +diff.dvi: diff.texi $(srcdir)/version.texi $(diff_TEXINFOS) + +.texi.info: + @cd $(srcdir) && rm -f $@ $@-[0-9] $@-[0-9][0-9] + cd $(srcdir) \ + && $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) \ + `echo $< | sed 's,.*/,,'` + +.texi.dvi: + TEXINPUTS="$(top_srcdir)/config$(PATH_SEPARATOR)$$TEXINPUTS" \ + MAKEINFO='$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir)' \ + $(TEXI2DVI) $< + +.texi: + @cd $(srcdir) && rm -f $@ $@-[0-9] $@-[0-9][0-9] + cd $(srcdir) \ + && $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) \ + `echo $< | sed 's,.*/,,'` + +MAKEINFO = @MAKEINFO@ +TEXI2DVI = texi2dvi +DVIPS = dvips +.dvi.ps: + $(DVIPS) $< -o $@ + +uninstall-info-am: + $(PRE_UNINSTALL) + @if (install-info --version && \ + install-info --version | fgrep -i -v debian) >/dev/null 2>&1; then \ + list='$(INFO_DEPS)'; \ + for file in $$list; do \ + echo " install-info --info-dir=$(DESTDIR)$(infodir) --remove $(DESTDIR)$(infodir)/$$file"; \ + install-info --info-dir=$(DESTDIR)$(infodir) --remove $(DESTDIR)$(infodir)/$$file; \ + done; \ + else :; fi + @$(NORMAL_UNINSTALL) + @list='$(INFO_DEPS)'; \ + for file in $$list; do \ + (if cd $(DESTDIR)$(infodir); then \ + echo " rm -f $$file $$file-[0-9] $$file-[0-9][0-9])"; \ + rm -f $$file $$file-[0-9] $$file-[0-9][0-9]; \ + else :; fi); \ + done + +dist-info: $(INFO_DEPS) + list='$(INFO_DEPS)'; \ + for base in $$list; do \ + d=$(srcdir); \ + for file in $$d/$$base*; do \ + relfile=`expr "$$file" : "$$d/\(.*\)"`; \ + test -f $(distdir)/$$relfile || \ + cp -p $$file $(distdir)/$$relfile; \ + done; \ + done + +mostlyclean-aminfo: + -rm -f diff.aux diff.cp diff.cps diff.dvi diff.fn diff.ky diff.log diff.pg \ + diff.ps diff.toc diff.tp diff.vr + +maintainer-clean-aminfo: + cd $(srcdir) && \ + for i in $(INFO_DEPS); do \ + rm -f $$i; \ + if test "`echo $$i-[0-9]*`" != "$$i-[0-9]*"; then \ + rm -f $$i-[0-9]*; \ + fi; \ + done +tags: TAGS +TAGS: + +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) + +top_distdir = .. +distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) + +distdir: $(DISTFILES) + @for file in $(DISTFILES); do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + dir="/$$dir"; \ + $(mkinstalldirs) "$(distdir)$$dir"; \ + else \ + dir=''; \ + fi; \ + if test -d $$d/$$file; then \ + 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) + +installdirs: + $(mkinstalldirs) $(DESTDIR)$(infodir) + +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -rm -f Makefile $(CONFIG_CLEAN_FILES) stamp-h stamp-h[0-9]* + +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 + +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: $(DVIS) + +info: info-am + +info-am: $(INFO_DEPS) + +install-data-am: install-info-am + +install-exec-am: + +install-info: install-info-am + +install-info-am: $(INFO_DEPS) + @$(NORMAL_INSTALL) + $(mkinstalldirs) $(DESTDIR)$(infodir) + @list='$(INFO_DEPS)'; \ + for file in $$list; do \ + d=$(srcdir); \ + for ifile in echo $$d/$$file $$d/$$file-[0-9] $$d/$$file-[0-9][0-9]; do \ + if test -f $$ifile; then \ + relfile=`expr "$$ifile" : "$$d/\(.*\)"`; \ + 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 | fgrep -i -v debian) >/dev/null 2>&1; then \ + list='$(INFO_DEPS)'; \ + for file in $$list; do \ + echo " install-info --info-dir=$(DESTDIR)$(infodir) $(DESTDIR)$(infodir)/$$file";\ + install-info --info-dir=$(DESTDIR)$(infodir) $(DESTDIR)$(infodir)/$$file || :;\ + done; \ + else : ; fi +install-man: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + +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 + +uninstall-am: uninstall-info-am + +.PHONY: all all-am check check-am clean clean-generic dist-info \ + distclean distclean-generic distdir dvi dvi-am info info-am \ + install install-am install-data install-data-am install-exec \ + install-exec-am install-info install-info-am install-man \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-aminfo \ + maintainer-clean-generic maintainer-clean-vti mostlyclean \ + mostlyclean-aminfo mostlyclean-generic mostlyclean-vti \ + uninstall uninstall-am uninstall-info-am + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/src/apps/bin/diffutils-2.8.1/doc/diagmeet.note b/src/apps/bin/diffutils-2.8.1/doc/diagmeet.note new file mode 100644 index 0000000000..8f7242c735 --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/doc/diagmeet.note @@ -0,0 +1,71 @@ +Here is a comparison matrix which shows a case in which +it is possible for the forward and backward scan in `diag' +to meet along a nonzero length of diagonal simultaneous +(so that bdiag[d] and fdiag[d] are not equal) +even though there is no snake on that diagonal at the meeting point. + + + 85 1 1 1 159 1 1 17 + 1 2 3 4 +60 + 1 2 +1 + 2 2 3 4 +71 + 3 3 4 5 +85 + 4 3 4 5 +17 + 5 4 5 +1 + 6 4 5 6 +183 + 7 5 6 7 +10 + 8 6 7 +1 + 9 6 7 8 +12 + 7 8 9 10 +13 + 10 8 9 10 +14 + 10 9 10 +17 + 10 10 +1 + 10 9 10 +1 + 8 10 10 10 +183 + 8 7 9 9 9 +10 + 7 6 8 9 8 8 +1 + 6 5 7 7 +1 + 5 6 6 +1 + 5 5 5 +50 + 5 4 4 4 +1 + 4 3 3 +85 + 5 4 3 2 2 +1 + 2 1 +17 + 5 4 3 2 1 1 +1 + 1 0 + 85 1 1 1 159 1 1 17 + + + + + + + + + diff --git a/src/apps/bin/diffutils-2.8.1/doc/diff.info b/src/apps/bin/diffutils-2.8.1/doc/diff.info new file mode 100644 index 0000000000..d58accf7ea --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/doc/diff.info @@ -0,0 +1,5084 @@ +This is diff.info, produced by makeinfo version 4.2 from diff.texi. + +This manual is for GNU Diffutils (version 2.8.1, 5 April 2002), and +documents the GNU `diff', `diff3', `sdiff', and `cmp' commands for +showing the differences between files and the GNU `patch' command for +using their output to update files. + + Copyright (C) 1992, 1993, 1994, 1998, 2001, 2002 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 the Front-Cover texts + being "A GNU Manual," and with the Back-Cover Texts as in (a) + below. A copy of the license is included in the section entitled + "GNU Free Documentation License." + + (a) The FSF's Back-Cover Text is: "You have freedom to copy and + modify this GNU Manual, like GNU software. Copies published by + the Free Software Foundation raise funds for GNU development." + +INFO-DIR-SECTION Individual utilities +START-INFO-DIR-ENTRY +* cmp: (diff)Invoking cmp. Compare 2 files byte by byte. +* diff: (diff)Invoking diff. Compare 2 files line by line. +* diff3: (diff)Invoking diff3. Compare 3 files line by line. +* patch: (diff)Invoking patch. Apply a patch to a file. +* sdiff: (diff)Invoking sdiff. Merge 2 files side-by-side. +END-INFO-DIR-ENTRY + +INFO-DIR-SECTION GNU packages +START-INFO-DIR-ENTRY +* Diff: (diff). Comparing and merging files. +END-INFO-DIR-ENTRY + + +File: diff.info, Node: Top, Next: Overview, Up: (dir) + +Comparing and Merging Files +*************************** + +This manual is for GNU Diffutils (version 2.8.1, 5 April 2002), and +documents the GNU `diff', `diff3', `sdiff', and `cmp' commands for +showing the differences between files and the GNU `patch' command for +using their output to update files. + + Copyright (C) 1992, 1993, 1994, 1998, 2001, 2002 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 the Front-Cover texts + being "A GNU Manual," and with the Back-Cover Texts as in (a) + below. A copy of the license is included in the section entitled + "GNU Free Documentation License." + + (a) The FSF's Back-Cover Text is: "You have freedom to copy and + modify this GNU Manual, like GNU software. Copies published by + the Free Software Foundation raise funds for GNU development." + +* Menu: + +* Overview:: Preliminary information. +* Comparison:: What file comparison means. + +* Output Formats:: Formats for two-way difference reports. +* Incomplete Lines:: Lines that lack trailing newlines. +* Comparing Directories:: Comparing files and directories. +* Adjusting Output:: Making `diff' output prettier. +* diff Performance:: Making `diff' smarter or faster. + +* Comparing Three Files:: Formats for three-way difference reports. +* diff3 Merging:: Merging from a common ancestor. + +* Interactive Merging:: Interactive merging with `sdiff'. + +* Merging with patch:: Using `patch' to change old files into new ones. +* Making Patches:: Tips for making and using patch distributions. + +* Invoking cmp:: Compare two files byte by byte. +* Invoking diff:: Compare two files line by line. +* Invoking diff3:: Compare three files line by line. +* Invoking patch:: Apply a diff file to an original. +* Invoking sdiff:: Side-by-side merge of file differences. + +* Standards conformance:: Conformance to the POSIX standard. +* Projects:: If you've found a bug or other shortcoming. + +* Copying This Manual:: How to make copies of this manual. +* Index:: Index. + + +File: diff.info, Node: Overview, Next: Comparison, Prev: Top, Up: Top + +Overview +******** + + Computer users often find occasion to ask how two files differ. +Perhaps one file is a newer version of the other file. Or maybe the +two files started out as identical copies but were changed by different +people. + + You can use the `diff' command to show differences between two +files, or each corresponding file in two directories. `diff' outputs +differences between files line by line in any of several formats, +selectable by command line options. This set of differences is often +called a "diff" or "patch". For files that are identical, `diff' +normally produces no output; for binary (non-text) files, `diff' +normally reports only that they are different. + + You can use the `cmp' command to show the byte and line numbers +where two files differ. `cmp' can also show all the bytes that differ +between the two files, side by side. A way to compare two files +character by character is the Emacs command `M-x compare-windows'. +*Note Other Window: (emacs)Other Window, for more information on that +command. + + You can use the `diff3' command to show differences among three +files. When two people have made independent changes to a common +original, `diff3' can report the differences between the original and +the two changed versions, and can produce a merged file that contains +both persons' changes together with warnings about conflicts. + + You can use the `sdiff' command to merge two files interactively. + + You can use the set of differences produced by `diff' to distribute +updates to text files (such as program source code) to other people. +This method is especially useful when the differences are small compared +to the complete files. Given `diff' output, you can use the `patch' +program to update, or "patch", a copy of the file. If you think of +`diff' as subtracting one file from another to produce their +difference, you can think of `patch' as adding the difference to one +file to reproduce the other. + + This manual first concentrates on making diffs, and later shows how +to use diffs to update files. + + GNU `diff' was written by Paul Eggert, Mike Haertel, David Hayes, +Richard Stallman, and Len Tower. Wayne Davison designed and +implemented the unified output format. The basic algorithm is described +in "An O(ND) Difference Algorithm and its Variations", Eugene W. Myers, +`Algorithmica' Vol. 1 No. 2, 1986, pp. 251-266; and in "A File +Comparison Program", Webb Miller and Eugene W. Myers, +`Software--Practice and Experience' Vol. 15 No. 11, 1985, pp. 1025-1040. +The algorithm was independently discovered as described in "Algorithms +for Approximate String Matching", E. Ukkonen, `Information and Control' +Vol. 64, 1985, pp. 100-118. + + GNU `diff3' was written by Randy Smith. GNU `sdiff' was written by +Thomas Lord. GNU `cmp' was written by Torbjorn Granlund and David +MacKenzie. + + `patch' was written mainly by Larry Wall and Paul Eggert; several +GNU enhancements were contributed by Wayne Davison and David MacKenzie. +Parts of this manual are adapted from a manual page written by Larry +Wall, with his permission. + + +File: diff.info, Node: Comparison, Next: Output Formats, Prev: Overview, Up: Top + +What Comparison Means +********************* + + There are several ways to think about the differences between two +files. One way to think of the differences is as a series of lines +that were deleted from, inserted in, or changed in one file to produce +the other file. `diff' compares two files line by line, finds groups of +lines that differ, and reports each group of differing lines. It can +report the differing lines in several formats, which have different +purposes. + + GNU `diff' can show whether files are different without detailing +the differences. It also provides ways to suppress certain kinds of +differences that are not important to you. Most commonly, such +differences are changes in the amount of white space between words or +lines. `diff' also provides ways to suppress differences in alphabetic +case or in lines that match a regular expression that you provide. +These options can accumulate; for example, you can ignore changes in +both white space and alphabetic case. + + Another way to think of the differences between two files is as a +sequence of pairs of bytes that can be either identical or different. +`cmp' reports the differences between two files byte by byte, instead +of line by line. As a result, it is often more useful than `diff' for +comparing binary files. For text files, `cmp' is useful mainly when +you want to know only whether two files are identical, or whether one +file is a prefix of the other. + + To illustrate the effect that considering changes byte by byte can +have compared with considering them line by line, think of what happens +if a single newline character is added to the beginning of a file. If +that file is then compared with an otherwise identical file that lacks +the newline at the beginning, `diff' will report that a blank line has +been added to the file, while `cmp' will report that almost every byte +of the two files differs. + + `diff3' normally compares three input files line by line, finds +groups of lines that differ, and reports each group of differing lines. +Its output is designed to make it easy to inspect two different sets of +changes to the same file. + +* Menu: + +* Hunks:: Groups of differing lines. +* White Space:: Suppressing differences in white space. +* Blank Lines:: Suppressing differences in blank lines. +* Case Folding:: Suppressing differences in alphabetic case. +* Specified Folding:: Suppressing differences that match regular expressions. +* Brief:: Summarizing which files are different. +* Binary:: Comparing binary files or forcing text comparisons. + + +File: diff.info, Node: Hunks, Next: White Space, Up: Comparison + +Hunks +===== + + When comparing two files, `diff' finds sequences of lines common to +both files, interspersed with groups of differing lines called "hunks". +Comparing two identical files yields one sequence of common lines and +no hunks, because no lines differ. Comparing two entirely different +files yields no common lines and one large hunk that contains all lines +of both files. In general, there are many ways to match up lines +between two given files. `diff' tries to minimize the total hunk size +by finding large sequences of common lines interspersed with small +hunks of differing lines. + + For example, suppose the file `F' contains the three lines `a', `b', +`c', and the file `G' contains the same three lines in reverse order +`c', `b', `a'. If `diff' finds the line `c' as common, then the command +`diff F G' produces this output: + + 1,2d0 + < a + < b + 3a2,3 + > b + > a + +But if `diff' notices the common line `b' instead, it produces this +output: + + 1c1 + < a + --- + > c + 3c3 + < c + --- + > a + +It is also possible to find `a' as the common line. `diff' does not +always find an optimal matching between the files; it takes shortcuts +to run faster. But its output is usually close to the shortest +possible. You can adjust this tradeoff with the `--minimal' option +(*note diff Performance::). + + +File: diff.info, Node: White Space, Next: Blank Lines, Prev: Hunks, Up: Comparison + +Suppressing Differences in Blank and Tab Spacing +================================================ + + The `-E' and `--ignore-tab-expansion' options ignore the distinction +between tabs and spaces on input. A tab is considered to be equivalent +to the number of spaces to the next tab stop. `diff' assumes that tab +stops are set every 8 print columns. + + The `-b' and `--ignore-space-change' options are stronger. They +ignore white space at line end, and consider all other sequences of one +or more white space characters to be equivalent. With these options, +`diff' considers the following two lines to be equivalent, where `$' +denotes the line end: + + Here lyeth muche rychnesse in lytell space. -- John Heywood$ + Here lyeth muche rychnesse in lytell space. -- John Heywood $ + + The `-w' and `--ignore-all-space' options are stronger still. They +ignore difference even if one line has white space where the other line +has none. "White space" characters include tab, newline, vertical tab, +form feed, carriage return, and space; some locales may define +additional characters to be white space. With these options, `diff' +considers the following two lines to be equivalent, where `$' denotes +the line end and `^M' denotes a carriage return: + + Here lyeth muche rychnesse in lytell space.-- John Heywood$ + He relyeth much erychnes seinly tells pace. --John Heywood ^M$ + + +File: diff.info, Node: Blank Lines, Next: Case Folding, Prev: White Space, Up: Comparison + +Suppressing Differences in Blank Lines +====================================== + + The `-B' and `--ignore-blank-lines' options ignore insertions or +deletions of blank lines. These options affect only lines that are +completely empty; they do not affect lines that look empty but contain +space or tab characters. With these options, for example, a file +containing + 1. A point is that which has no part. + + 2. A line is breadthless length. + -- Euclid, The Elements, I + +is considered identical to a file containing + 1. A point is that which has no part. + 2. A line is breadthless length. + + + -- Euclid, The Elements, I + + +File: diff.info, Node: Case Folding, Next: Specified Folding, Prev: Blank Lines, Up: Comparison + +Suppressing Case Differences +============================ + + GNU `diff' can treat lower case letters as equivalent to their upper +case counterparts, so that, for example, it considers `Funky Stuff', +`funky STUFF', and `fUNKy stuFf' to all be the same. To request this, +use the `-i' or `--ignore-case' option. + + +File: diff.info, Node: Specified Folding, Next: Brief, Prev: Case Folding, Up: Comparison + +Suppressing Lines Matching a Regular Expression +=============================================== + + To ignore insertions and deletions of lines that match a +`grep'-style regular expression, use the `-I REGEXP' or +`--ignore-matching-lines=REGEXP' option. You should escape regular +expressions that contain shell metacharacters to prevent the shell from +expanding them. For example, `diff -I '^[[:digit:]]'' ignores all +changes to lines beginning with a digit. + + However, `-I' only ignores the insertion or deletion of lines that +contain the regular expression if every changed line in the hunk--every +insertion and every deletion--matches the regular expression. In other +words, for each nonignorable change, `diff' prints the complete set of +changes in its vicinity, including the ignorable ones. + + You can specify more than one regular expression for lines to ignore +by using more than one `-I' option. `diff' tries to match each line +against each regular expression. + + +File: diff.info, Node: Brief, Next: Binary, Prev: Specified Folding, Up: Comparison + +Summarizing Which Files Differ +============================== + + When you only want to find out whether files are different, and you +don't care what the differences are, you can use the summary output +format. In this format, instead of showing the differences between the +files, `diff' simply reports whether files differ. The `-q' and +`--brief' options select this output format. + + This format is especially useful when comparing the contents of two +directories. It is also much faster than doing the normal line by line +comparisons, because `diff' can stop analyzing the files as soon as it +knows that there are any differences. + + You can also get a brief indication of whether two files differ by +using `cmp'. For files that are identical, `cmp' produces no output. +When the files differ, by default, `cmp' outputs the byte and line +number where the first difference occurs. You can use the `-s' option +to suppress that information, so that `cmp' produces no output and +reports whether the files differ using only its exit status (*note +Invoking cmp::). + + Unlike `diff', `cmp' cannot compare directories; it can only compare +two files. + + +File: diff.info, Node: Binary, Prev: Brief, Up: Comparison + +Binary Files and Forcing Text Comparisons +========================================= + + If `diff' thinks that either of the two files it is comparing is +binary (a non-text file), it normally treats that pair of files much as +if the summary output format had been selected (*note Brief::), and +reports only that the binary files are different. This is because line +by line comparisons are usually not meaningful for binary files. + + `diff' determines whether a file is text or binary by checking the +first few bytes in the file; the exact number of bytes is system +dependent, but it is typically several thousand. If every byte in that +part of the file is non-null, `diff' considers the file to be text; +otherwise it considers the file to be binary. + + Sometimes you might want to force `diff' to consider files to be +text. For example, you might be comparing text files that contain null +characters; `diff' would erroneously decide that those are non-text +files. Or you might be comparing documents that are in a format used +by a word processing system that uses null characters to indicate +special formatting. You can force `diff' to consider all files to be +text files, and compare them line by line, by using the `-a' or +`--text' option. If the files you compare using this option do not in +fact contain text, they will probably contain few newline characters, +and the `diff' output will consist of hunks showing differences between +long lines of whatever characters the files contain. + + You can also force `diff' to consider all files to be binary files, +and report only whether they differ (but not how). Use the `-q' or +`--brief' option for this. + + Differing binary files are considered to cause trouble because the +resulting `diff' output does not capture all the differences. This +trouble causes `diff' to exit with status 2. However, this trouble +cannot occur with the `--a' or `--text' option, or with the `-q' or +`--brief' option, as these options both cause `diff' to treat binary +files like text files. + + In operating systems that distinguish between text and binary files, +`diff' normally reads and writes all data as text. Use the `--binary' +option to force `diff' to read and write binary data instead. This +option has no effect on a POSIX-compliant system like GNU or +traditional Unix. However, many personal computer operating systems +represent the end of a line with a carriage return followed by a +newline. On such systems, `diff' normally ignores these carriage +returns on input and generates them at the end of each output line, but +with the `--binary' option `diff' treats each carriage return as just +another input character, and does not generate a carriage return at the +end of each output line. This can be useful when dealing with non-text +files that are meant to be interchanged with POSIX-compliant systems. + + The `--strip-trailing-cr' causes `diff' to treat input lines that +end in carriage return followed by newline as if they end in plain +newline. This can be useful when comparing text that is imperfectly +imported from many personal computer operating systems. This option +affects how lines are read, which in turn affects how they are compared +and output. + + If you want to compare two files byte by byte, you can use the `cmp' +program with the `-l' option to show the values of each differing byte +in the two files. With GNU `cmp', you can also use the `-b' option to +show the ASCII representation of those bytes. *Note Invoking cmp::, +for more information. + + If `diff3' thinks that any of the files it is comparing is binary (a +non-text file), it normally reports an error, because such comparisons +are usually not useful. `diff3' uses the same test as `diff' to decide +whether a file is binary. As with `diff', if the input files contain a +few non-text bytes but otherwise are like text files, you can force +`diff3' to consider all files to be text files and compare them line by +line by using the `-a' or `--text' options. + + +File: diff.info, Node: Output Formats, Next: Incomplete Lines, Prev: Comparison, Up: Top + +`diff' Output Formats +********************* + + `diff' has several mutually exclusive options for output format. +The following sections describe each format, illustrating how `diff' +reports the differences between two sample input files. + +* Menu: + +* Sample diff Input:: Sample `diff' input files for examples. +* Normal:: Showing differences without surrounding text. +* Context:: Showing differences with the surrounding text. +* Side by Side:: Showing differences in two columns. +* Scripts:: Generating scripts for other programs. +* If-then-else:: Merging files with if-then-else. + + +File: diff.info, Node: Sample diff Input, Next: Normal, Up: Output Formats + +Two Sample Input Files +====================== + + Here are two sample files that we will use in numerous examples to +illustrate the output of `diff' and how various options can change it. + + This is the file `lao': + + The Way that can be told of is not the eternal Way; + The name that can be named is not the eternal name. + The Nameless is the origin of Heaven and Earth; + The Named is the mother of all things. + Therefore let there always be non-being, + so we may see their subtlety, + And let there always be being, + so we may see their outcome. + The two are the same, + But after they are produced, + they have different names. + + This is the file `tzu': + + The Nameless is the origin of Heaven and Earth; + The named is the mother of all things. + + Therefore let there always be non-being, + so we may see their subtlety, + And let there always be being, + so we may see their outcome. + The two are the same, + But after they are produced, + they have different names. + They both may be called deep and profound. + Deeper and more profound, + The door of all subtleties! + + In this example, the first hunk contains just the first two lines of +`lao', the second hunk contains the fourth line of `lao' opposing the +second and third lines of `tzu', and the last hunk contains just the +last three lines of `tzu'. + + +File: diff.info, Node: Normal, Next: Context, Prev: Sample diff Input, Up: Output Formats + +Showing Differences Without Context +=================================== + + The "normal" `diff' output format shows each hunk of differences +without any surrounding context. Sometimes such output is the clearest +way to see how lines have changed, without the clutter of nearby +unchanged lines (although you can get similar results with the context +or unified formats by using 0 lines of context). However, this format +is no longer widely used for sending out patches; for that purpose, the +context format (*note Context Format::) and the unified format (*note +Unified Format::) are superior. Normal format is the default for +compatibility with older versions of `diff' and the POSIX standard. +Use the `--normal' option to select this output format explicitly. + +* Menu: + +* Detailed Normal:: A detailed description of normal output format. +* Example Normal:: Sample output in the normal format. + + +File: diff.info, Node: Detailed Normal, Next: Example Normal, Up: Normal + +Detailed Description of Normal Format +------------------------------------- + + The normal output format consists of one or more hunks of +differences; each hunk shows one area where the files differ. Normal +format hunks look like this: + + CHANGE-COMMAND + < FROM-FILE-LINE + < FROM-FILE-LINE... + --- + > TO-FILE-LINE + > TO-FILE-LINE... + + There are three types of change commands. Each consists of a line +number or comma-separated range of lines in the first file, a single +character indicating the kind of change to make, and a line number or +comma-separated range of lines in the second file. All line numbers are +the original line numbers in each file. The types of change commands +are: + +`LaR' + Add the lines in range R of the second file after line L of the + first file. For example, `8a12,15' means append lines 12-15 of + file 2 after line 8 of file 1; or, if changing file 2 into file 1, + delete lines 12-15 of file 2. + +`FcT' + Replace the lines in range F of the first file with lines in range + T of the second file. This is like a combined add and delete, but + more compact. For example, `5,7c8,10' means change lines 5-7 of + file 1 to read as lines 8-10 of file 2; or, if changing file 2 into + file 1, change lines 8-10 of file 2 to read as lines 5-7 of file 1. + +`RdL' + Delete the lines in range R from the first file; line L is where + they would have appeared in the second file had they not been + deleted. For example, `5,7d3' means delete lines 5-7 of file 1; + or, if changing file 2 into file 1, append lines 5-7 of file 1 + after line 3 of file 2. + + +File: diff.info, Node: Example Normal, Prev: Detailed Normal, Up: Normal + +An Example of Normal Format +--------------------------- + + Here is the output of the command `diff lao tzu' (*note Sample diff +Input::, for the complete contents of the two files). Notice that it +shows only the lines that are different between the two files. + + 1,2d0 + < The Way that can be told of is not the eternal Way; + < The name that can be named is not the eternal name. + 4c2,3 + < The Named is the mother of all things. + --- + > The named is the mother of all things. + > + 11a11,13 + > They both may be called deep and profound. + > Deeper and more profound, + > The door of all subtleties! + + +File: diff.info, Node: Context, Next: Side by Side, Prev: Normal, Up: Output Formats + +Showing Differences in Their Context +==================================== + + Usually, when you are looking at the differences between files, you +will also want to see the parts of the files near the lines that +differ, to help you understand exactly what has changed. These nearby +parts of the files are called the "context". + + GNU `diff' provides two output formats that show context around the +differing lines: "context format" and "unified format". It can +optionally show in which function or section of the file the differing +lines are found. + + If you are distributing new versions of files to other people in the +form of `diff' output, you should use one of the output formats that +show context so that they can apply the diffs even if they have made +small changes of their own to the files. `patch' can apply the diffs +in this case by searching in the files for the lines of context around +the differing lines; if those lines are actually a few lines away from +where the diff says they are, `patch' can adjust the line numbers +accordingly and still apply the diff correctly. *Note Imperfect::, for +more information on using `patch' to apply imperfect diffs. + +* Menu: + +* Context Format:: An output format that shows surrounding lines. +* Unified Format:: A more compact output format that shows context. +* Sections:: Showing which sections of the files differences are in. +* Alternate Names:: Showing alternate file names in context headers. + + +File: diff.info, Node: Context Format, Next: Unified Format, Up: Context + +Context Format +-------------- + + The context output format shows several lines of context around the +lines that differ. It is the standard format for distributing updates +to source code. + + To select this output format, use the `-C LINES', +`--context[=LINES]', or `-c' option. The argument LINES that some of +these options take is the number of lines of context to show. If you +do not specify LINES, it defaults to three. For proper operation, +`patch' typically needs at least two lines of context. + +* Menu: + +* Detailed Context:: A detailed description of the context output format. +* Example Context:: Sample output in context format. +* Less Context:: Another sample with less context. + + +File: diff.info, Node: Detailed Context, Next: Example Context, Up: Context Format + +Detailed Description of Context Format +...................................... + + The context output format starts with a two-line header, which looks +like this: + + *** FROM-FILE FROM-FILE-MODIFICATION-TIME + --- TO-FILE TO-FILE-MODIFICATION TIME + +The time stamp normally looks like `2002-02-21 23:30:39.942229878 +-0800' to indicate the date, time with fractional seconds, and time +zone in Internet RFC 2822 format +(ftp://ftp.isi.edu/in-notes/rfc2822.txt). However, a traditional time +stamp like `Thu Feb 21 23:30:39 2002' is used if the `LC_TIME' locale +category is either `C' or `POSIX'. + + You can change the header's content with the `--label=LABEL' option; +see *Note Alternate Names::. + + Next come one or more hunks of differences; each hunk shows one area +where the files differ. Context format hunks look like this: + + *************** + *** FROM-FILE-LINE-RANGE **** + FROM-FILE-LINE + FROM-FILE-LINE... + --- TO-FILE-LINE-RANGE ---- + TO-FILE-LINE + TO-FILE-LINE... + + The lines of context around the lines that differ start with two +space characters. The lines that differ between the two files start +with one of the following indicator characters, followed by a space +character: + +`!' + A line that is part of a group of one or more lines that changed + between the two files. There is a corresponding group of lines + marked with `!' in the part of this hunk for the other file. + +`+' + An "inserted" line in the second file that corresponds to nothing + in the first file. + +`-' + A "deleted" line in the first file that corresponds to nothing in + the second file. + + If all of the changes in a hunk are insertions, the lines of +FROM-FILE are omitted. If all of the changes are deletions, the lines +of TO-FILE are omitted. + + +File: diff.info, Node: Example Context, Next: Less Context, Prev: Detailed Context, Up: Context Format + +An Example of Context Format +............................ + + Here is the output of `diff -c lao tzu' (*note Sample diff Input::, +for the complete contents of the two files). Notice that up to three +lines that are not different are shown around each line that is +different; they are the context lines. Also notice that the first two +hunks have run together, because their contents overlap. + + *** lao 2002-02-21 23:30:39.942229878 -0800 + --- tzu 2002-02-21 23:30:50.442260588 -0800 + *************** + *** 1,7 **** + - The Way that can be told of is not the eternal Way; + - The name that can be named is not the eternal name. + The Nameless is the origin of Heaven and Earth; + ! The Named is the mother of all things. + Therefore let there always be non-being, + so we may see their subtlety, + And let there always be being, + --- 1,6 ---- + The Nameless is the origin of Heaven and Earth; + ! The named is the mother of all things. + ! + Therefore let there always be non-being, + so we may see their subtlety, + And let there always be being, + *************** + *** 9,11 **** + --- 8,13 ---- + The two are the same, + But after they are produced, + they have different names. + + They both may be called deep and profound. + + Deeper and more profound, + + The door of all subtleties! + + +File: diff.info, Node: Less Context, Prev: Example Context, Up: Context Format + +An Example of Context Format with Less Context +.............................................. + + Here is the output of `diff -C 1 lao tzu' (*note Sample diff +Input::, for the complete contents of the two files). Notice that at +most one context line is reported here. + + *** lao 2002-02-21 23:30:39.942229878 -0800 + --- tzu 2002-02-21 23:30:50.442260588 -0800 + *************** + *** 1,5 **** + - The Way that can be told of is not the eternal Way; + - The name that can be named is not the eternal name. + The Nameless is the origin of Heaven and Earth; + ! The Named is the mother of all things. + Therefore let there always be non-being, + --- 1,4 ---- + The Nameless is the origin of Heaven and Earth; + ! The named is the mother of all things. + ! + Therefore let there always be non-being, + *************** + *** 11 **** + --- 10,13 ---- + they have different names. + + They both may be called deep and profound. + + Deeper and more profound, + + The door of all subtleties! + + +File: diff.info, Node: Unified Format, Next: Sections, Prev: Context Format, Up: Context + +Unified Format +-------------- + + The unified output format is a variation on the context format that +is more compact because it omits redundant context lines. To select +this output format, use the `-U LINES', `--unified[=LINES]', or `-u' +option. The argument LINES is the number of lines of context to show. +When it is not given, it defaults to three. + + At present, only GNU `diff' can produce this format and only GNU +`patch' can automatically apply diffs in this format. For proper +operation, `patch' typically needs at least three lines of context. + +* Menu: + +* Detailed Unified:: A detailed description of unified format. +* Example Unified:: Sample output in unified format. + + +File: diff.info, Node: Detailed Unified, Next: Example Unified, Up: Unified Format + +Detailed Description of Unified Format +...................................... + + The unified output format starts with a two-line header, which looks +like this: + + --- FROM-FILE FROM-FILE-MODIFICATION-TIME + +++ TO-FILE TO-FILE-MODIFICATION-TIME + +The time stamp looks like `2002-02-21 23:30:39.942229878 -0800' to +indicate the date, time with fractional seconds, and time zone. + + You can change the header's content with the `--label=LABEL' option; +see *Note Alternate Names::. + + Next come one or more hunks of differences; each hunk shows one area +where the files differ. Unified format hunks look like this: + + @@ FROM-FILE-RANGE TO-FILE-RANGE @@ + LINE-FROM-EITHER-FILE + LINE-FROM-EITHER-FILE... + + The lines common to both files begin with a space character. The +lines that actually differ between the two files have one of the +following indicator characters in the left print column: + +`+' + A line was added here to the first file. + +`-' + A line was removed here from the first file. + + +File: diff.info, Node: Example Unified, Prev: Detailed Unified, Up: Unified Format + +An Example of Unified Format +............................ + + Here is the output of the command `diff -u lao tzu' (*note Sample +diff Input::, for the complete contents of the two files): + + --- lao 2002-02-21 23:30:39.942229878 -0800 + +++ tzu 2002-02-21 23:30:50.442260588 -0800 + @@ -1,7 +1,6 @@ + -The Way that can be told of is not the eternal Way; + -The name that can be named is not the eternal name. + The Nameless is the origin of Heaven and Earth; + -The Named is the mother of all things. + +The named is the mother of all things. + + + Therefore let there always be non-being, + so we may see their subtlety, + And let there always be being, + @@ -9,3 +8,6 @@ + The two are the same, + But after they are produced, + they have different names. + +They both may be called deep and profound. + +Deeper and more profound, + +The door of all subtleties! + + +File: diff.info, Node: Sections, Next: Alternate Names, Prev: Unified Format, Up: Context + +Showing Which Sections Differences Are in +----------------------------------------- + + Sometimes you might want to know which part of the files each change +falls in. If the files are source code, this could mean which function +was changed. If the files are documents, it could mean which chapter or +appendix was changed. GNU `diff' can show this by displaying the +nearest section heading line that precedes the differing lines. Which +lines are "section headings" is determined by a regular expression. + +* Menu: + +* Specified Headings:: Showing headings that match regular expressions. +* C Function Headings:: Showing headings of C functions. + + +File: diff.info, Node: Specified Headings, Next: C Function Headings, Up: Sections + +Showing Lines That Match Regular Expressions +............................................ + + To show in which sections differences occur for files that are not +source code for C or similar languages, use the `-F REGEXP' or +`--show-function-line=REGEXP' option. `diff' considers lines that +match the `grep'-style regular expression REGEXP to be the beginning of +a section of the file. Here are suggested regular expressions for some +common languages: + +`^[[:alpha:]$_]' + C, C++, Prolog + +`^(' + Lisp + +`^@node' + Texinfo + + This option does not automatically select an output format; in order +to use it, you must select the context format (*note Context Format::) +or unified format (*note Unified Format::). In other output formats it +has no effect. + + The `-F' and `--show-function-line' options find the nearest +unchanged line that precedes each hunk of differences and matches the +given regular expression. Then they add that line to the end of the +line of asterisks in the context format, or to the `@@' line in unified +format. If no matching line exists, they leave the output for that +hunk unchanged. If that line is more than 40 characters long, they +output only the first 40 characters. You can specify more than one +regular expression for such lines; `diff' tries to match each line +against each regular expression, starting with the last one given. This +means that you can use `-p' and `-F' together, if you wish. + + +File: diff.info, Node: C Function Headings, Prev: Specified Headings, Up: Sections + +Showing C Function Headings +........................... + + To show in which functions differences occur for C and similar +languages, you can use the `-p' or `--show-c-function' option. This +option automatically defaults to the context output format (*note +Context Format::), with the default number of lines of context. You +can override that number with `-C LINES' elsewhere in the command line. +You can override both the format and the number with `-U LINES' +elsewhere in the command line. + + The `-p' and `--show-c-function' options are equivalent to `-F +'^[[:alpha:]$_]'' if the unified format is specified, otherwise `-c -F +'^[[:alpha:]$_]'' (*note Specified Headings::). GNU `diff' provides +them for the sake of convenience. + + +File: diff.info, Node: Alternate Names, Prev: Sections, Up: Context + +Showing Alternate File Names +---------------------------- + + If you are comparing two files that have meaningless or uninformative +names, you might want `diff' to show alternate names in the header of +the context and unified output formats. To do this, use the +`--label=LABEL' option. The first time you give this option, its +argument replaces the name and date of the first file in the header; +the second time, its argument replaces the name and date of the second +file. If you give this option more than twice, `diff' reports an +error. The `--label' option does not affect the file names in the `pr' +header when the `-l' or `--paginate' option is used (*note +Pagination::). + + Here are the first two lines of the output from `diff -C 2 +--label=original --label=modified lao tzu': + + *** original + --- modified + + +File: diff.info, Node: Side by Side, Next: Scripts, Prev: Context, Up: Output Formats + +Showing Differences Side by Side +================================ + + `diff' can produce a side by side difference listing of two files. +The files are listed in two columns with a gutter between them. The +gutter contains one of the following markers: + +white space + The corresponding lines are in common. That is, either the lines + are identical, or the difference is ignored because of one of the + `--ignore' options (*note White Space::). + +`|' + The corresponding lines differ, and they are either both complete + or both incomplete. + +`<' + The files differ and only the first file contains the line. + +`>' + The files differ and only the second file contains the line. + +`(' + Only the first file contains the line, but the difference is + ignored. + +`)' + Only the second file contains the line, but the difference is + ignored. + +`\' + The corresponding lines differ, and only the first line is + incomplete. + +`/' + The corresponding lines differ, and only the second line is + incomplete. + + Normally, an output line is incomplete if and only if the lines that +it contains are incomplete; *Note Incomplete Lines::. However, when an +output line represents two differing lines, one might be incomplete +while the other is not. In this case, the output line is complete, but +its the gutter is marked `\' if the first line is incomplete, `/' if +the second line is. + + Side by side format is sometimes easiest to read, but it has +limitations. It generates much wider output than usual, and truncates +lines that are too long to fit. Also, it relies on lining up output +more heavily than usual, so its output looks particularly bad if you +use varying width fonts, nonstandard tab stops, or nonprinting +characters. + + You can use the `sdiff' command to interactively merge side by side +differences. *Note Interactive Merging::, for more information on +merging files. + +* Menu: + +* Side by Side Format:: Controlling side by side output format. +* Example Side by Side:: Sample side by side output. + + +File: diff.info, Node: Side by Side Format, Next: Example Side by Side, Up: Side by Side + +Controlling Side by Side Format +------------------------------- + + The `-y' or `--side-by-side' option selects side by side format. +Because side by side output lines contain two input lines, the output +is wider than usual: normally 130 print columns, which can fit onto a +traditional printer line. You can set the width of the output with the +`-W COLUMNS' or `--width=COLUMNS' option. The output is split into two +halves of equal width, separated by a small gutter to mark differences; +the right half is aligned to a tab stop so that tabs line up. Input +lines that are too long to fit in half of an output line are truncated +for output. + + The `--left-column' option prints only the left column of two common +lines. The `--suppress-common-lines' option suppresses common lines +entirely. + + +File: diff.info, Node: Example Side by Side, Prev: Side by Side Format, Up: Side by Side + +An Example of Side by Side Format +--------------------------------- + + Here is the output of the command `diff -y -W 72 lao tzu' (*note +Sample diff Input::, for the complete contents of the two files). + + The Way that can be told of is n < + The name that can be named is no < + The Nameless is the origin of He The Nameless is the origin of He + The Named is the mother of all t | The named is the mother of all t + > + Therefore let there always be no Therefore let there always be no + so we may see their subtlety, so we may see their subtlety, + And let there always be being, And let there always be being, + so we may see their outcome. so we may see their outcome. + The two are the same, The two are the same, + But after they are produced, But after they are produced, + they have different names. they have different names. + > They both may be called deep and + > Deeper and more profound, + > The door of all subtleties! + + +File: diff.info, Node: Scripts, Next: If-then-else, Prev: Side by Side, Up: Output Formats + +Making Edit Scripts +=================== + + Several output modes produce command scripts for editing FROM-FILE +to produce TO-FILE. + +* Menu: + +* ed Scripts:: Using `diff' to produce commands for `ed'. +* Forward ed:: Making forward `ed' scripts. +* RCS:: A special `diff' output format used by RCS. + + +File: diff.info, Node: ed Scripts, Next: Forward ed, Up: Scripts + +`ed' Scripts +------------ + + `diff' can produce commands that direct the `ed' text editor to +change the first file into the second file. Long ago, this was the +only output mode that was suitable for editing one file into another +automatically; today, with `patch', it is almost obsolete. Use the +`-e' or `--ed' option to select this output format. + + Like the normal format (*note Normal::), this output format does not +show any context; unlike the normal format, it does not include the +information necessary to apply the diff in reverse (to produce the first +file if all you have is the second file and the diff). + + If the file `d' contains the output of `diff -e old new', then the +command `(cat d && echo w) | ed - old' edits `old' to make it a copy of +`new'. More generally, if `d1', `d2', ..., `dN' contain the outputs of +`diff -e old new1', `diff -e new1 new2', ..., `diff -e newN-1 newN', +respectively, then the command `(cat d1 d2 ... dN && echo w) | ed - +old' edits `old' to make it a copy of `newN'. + +* Menu: + +* Detailed ed:: A detailed description of `ed' format. +* Example ed:: A sample `ed' script. + + +File: diff.info, Node: Detailed ed, Next: Example ed, Up: ed Scripts + +Detailed Description of `ed' Format +................................... + + The `ed' output format consists of one or more hunks of differences. +The changes closest to the ends of the files come first so that +commands that change the number of lines do not affect how `ed' +interprets line numbers in succeeding commands. `ed' format hunks look +like this: + + CHANGE-COMMAND + TO-FILE-LINE + TO-FILE-LINE... + . + + Because `ed' uses a single period on a line to indicate the end of +input, GNU `diff' protects lines of changes that contain a single +period on a line by writing two periods instead, then writing a +subsequent `ed' command to change the two periods into one. The `ed' +format cannot represent an incomplete line, so if the second file ends +in a changed incomplete line, `diff' reports an error and then pretends +that a newline was appended. + + There are three types of change commands. Each consists of a line +number or comma-separated range of lines in the first file and a single +character indicating the kind of change to make. All line numbers are +the original line numbers in the file. The types of change commands +are: + +`La' + Add text from the second file after line L in the first file. For + example, `8a' means to add the following lines after line 8 of file + 1. + +`Rc' + Replace the lines in range R in the first file with the following + lines. Like a combined add and delete, but more compact. For + example, `5,7c' means change lines 5-7 of file 1 to read as the + text file 2. + +`Rd' + Delete the lines in range R from the first file. For example, + `5,7d' means delete lines 5-7 of file 1. + + +File: diff.info, Node: Example ed, Prev: Detailed ed, Up: ed Scripts + +Example `ed' Script +................... + + Here is the output of `diff -e lao tzu' (*note Sample diff Input::, +for the complete contents of the two files): + + 11a + They both may be called deep and profound. + Deeper and more profound, + The door of all subtleties! + . + 4c + The named is the mother of all things. + + . + 1,2d + + +File: diff.info, Node: Forward ed, Next: RCS, Prev: ed Scripts, Up: Scripts + +Forward `ed' Scripts +-------------------- + + `diff' can produce output that is like an `ed' script, but with +hunks in forward (front to back) order. The format of the commands is +also changed slightly: command characters precede the lines they +modify, spaces separate line numbers in ranges, and no attempt is made +to disambiguate hunk lines consisting of a single period. Like `ed' +format, forward `ed' format cannot represent incomplete lines. + + Forward `ed' format is not very useful, because neither `ed' nor +`patch' can apply diffs in this format. It exists mainly for +compatibility with older versions of `diff'. Use the `-f' or +`--forward-ed' option to select it. + + +File: diff.info, Node: RCS, Prev: Forward ed, Up: Scripts + +RCS Scripts +----------- + + The RCS output format is designed specifically for use by the +Revision Control System, which is a set of free programs used for +organizing different versions and systems of files. Use the `-n' or +`--rcs' option to select this output format. It is like the forward +`ed' format (*note Forward ed::), but it can represent arbitrary +changes to the contents of a file because it avoids the forward `ed' +format's problems with lines consisting of a single period and with +incomplete lines. Instead of ending text sections with a line +consisting of a single period, each command specifies the number of +lines it affects; a combination of the `a' and `d' commands are used +instead of `c'. Also, if the second file ends in a changed incomplete +line, then the output also ends in an incomplete line. + + Here is the output of `diff -n lao tzu' (*note Sample diff Input::, +for the complete contents of the two files): + + d1 2 + d4 1 + a4 2 + The named is the mother of all things. + + a11 3 + They both may be called deep and profound. + Deeper and more profound, + The door of all subtleties! + + +File: diff.info, Node: If-then-else, Prev: Scripts, Up: Output Formats + +Merging Files with If-then-else +=============================== + + You can use `diff' to merge two files of C source code. The output +of `diff' in this format contains all the lines of both files. Lines +common to both files are output just once; the differing parts are +separated by the C preprocessor directives `#ifdef NAME' or `#ifndef +NAME', `#else', and `#endif'. When compiling the output, you select +which version to use by either defining or leaving undefined the macro +NAME. + + To merge two files, use `diff' with the `-D NAME' or `--ifdef=NAME' +option. The argument NAME is the C preprocessor identifier to use in +the `#ifdef' and `#ifndef' directives. + + For example, if you change an instance of `wait (&s)' to `waitpid +(-1, &s, 0)' and then merge the old and new files with the +`--ifdef=HAVE_WAITPID' option, then the affected part of your code +might look like this: + + do { + #ifndef HAVE_WAITPID + if ((w = wait (&s)) < 0 && errno != EINTR) + #else /* HAVE_WAITPID */ + if ((w = waitpid (-1, &s, 0)) < 0 && errno != EINTR) + #endif /* HAVE_WAITPID */ + return w; + } while (w != child); + + You can specify formats for languages other than C by using line +group formats and line formats, as described in the next sections. + +* Menu: + +* Line Group Formats:: Formats for general if-then-else line groups. +* Line Formats:: Formats for each line in a line group. +* Detailed If-then-else:: A detailed description of if-then-else format. +* Example If-then-else:: Sample if-then-else format output. + + +File: diff.info, Node: Line Group Formats, Next: Line Formats, Up: If-then-else + +Line Group Formats +------------------ + + Line group formats let you specify formats suitable for many +applications that allow if-then-else input, including programming +languages and text formatting languages. A line group format specifies +the output format for a contiguous group of similar lines. + + For example, the following command compares the TeX files `old' and +`new', and outputs a merged file in which old regions are surrounded by +`\begin{em}'-`\end{em}' lines, and new regions are surrounded by +`\begin{bf}'-`\end{bf}' lines. + + diff \ + --old-group-format='\begin{em} + %<\end{em} + ' \ + --new-group-format='\begin{bf} + %>\end{bf} + ' \ + old new + + The following command is equivalent to the above example, but it is a +little more verbose, because it spells out the default line group +formats. + + diff \ + --old-group-format='\begin{em} + %<\end{em} + ' \ + --new-group-format='\begin{bf} + %>\end{bf} + ' \ + --unchanged-group-format='%=' \ + --changed-group-format='\begin{em} + %<\end{em} + \begin{bf} + %>\end{bf} + ' \ + old new + + Here is a more advanced example, which outputs a diff listing with +headers containing line numbers in a "plain English" style. + + diff \ + --unchanged-group-format='' \ + --old-group-format='-------- %dn line%(n=1?:s) deleted at %df: + %<' \ + --new-group-format='-------- %dN line%(N=1?:s) added after %de: + %>' \ + --changed-group-format='-------- %dn line%(n=1?:s) changed at %df: + %<-------- to: + %>' \ + old new + + To specify a line group format, use `diff' with one of the options +listed below. You can specify up to four line group formats, one for +each kind of line group. You should quote FORMAT, because it typically +contains shell metacharacters. + +`--old-group-format=FORMAT' + These line groups are hunks containing only lines from the first + file. The default old group format is the same as the changed + group format if it is specified; otherwise it is a format that + outputs the line group as-is. + +`--new-group-format=FORMAT' + These line groups are hunks containing only lines from the second + file. The default new group format is same as the changed group + format if it is specified; otherwise it is a format that outputs + the line group as-is. + +`--changed-group-format=FORMAT' + These line groups are hunks containing lines from both files. The + default changed group format is the concatenation of the old and + new group formats. + +`--unchanged-group-format=FORMAT' + These line groups contain lines common to both files. The default + unchanged group format is a format that outputs the line group + as-is. + + In a line group format, ordinary characters represent themselves; +conversion specifications start with `%' and have one of the following +forms. + +`%<' + stands for the lines from the first file, including the trailing + newline. Each line is formatted according to the old line format + (*note Line Formats::). + +`%>' + stands for the lines from the second file, including the trailing + newline. Each line is formatted according to the new line format. + +`%=' + stands for the lines common to both files, including the trailing + newline. Each line is formatted according to the unchanged line + format. + +`%%' + stands for `%'. + +`%c'C'' + where C is a single character, stands for C. C may not be a + backslash or an apostrophe. For example, `%c':'' stands for a + colon, even inside the then-part of an if-then-else format, which + a colon would normally terminate. + +`%c'\O'' + where O is a string of 1, 2, or 3 octal digits, stands for the + character with octal code O. For example, `%c'\0'' stands for a + null character. + +`FN' + where F is a `printf' conversion specification and N is one of the + following letters, stands for N's value formatted with F. + + `e' + The line number of the line just before the group in the old + file. + + `f' + The line number of the first line in the group in the old + file; equals E + 1. + + `l' + The line number of the last line in the group in the old file. + + `m' + The line number of the line just after the group in the old + file; equals L + 1. + + `n' + The number of lines in the group in the old file; equals L - + F + 1. + + `E, F, L, M, N' + Likewise, for lines in the new file. + + The `printf' conversion specification can be `%d', `%o', `%x', or + `%X', specifying decimal, octal, lower case hexadecimal, or upper + case hexadecimal output respectively. After the `%' the following + options can appear in sequence: a series of zero or more flags; an + integer specifying the minimum field width; and a period followed + by an optional integer specifying the minimum number of digits. + The flags are `-' for left-justification, `'' for separating the + digit into groups as specified by the `LC_NUMERIC' locale category, + and `0' for padding with zeros instead of spaces. For example, + `%5dN' prints the number of new lines in the group in a field of + width 5 characters, using the `printf' format `"%5d"'. + +`(A=B?T:E)' + If A equals B then T else E. A and B are each either a decimal + constant or a single letter interpreted as above. This format + spec is equivalent to T if A's value equals B's; otherwise it is + equivalent to E. + + For example, `%(N=0?no:%dN) line%(N=1?:s)' is equivalent to `no + lines' if N (the number of lines in the group in the the new file) + is 0, to `1 line' if N is 1, and to `%dN lines' otherwise. + + +File: diff.info, Node: Line Formats, Next: Detailed If-then-else, Prev: Line Group Formats, Up: If-then-else + +Line Formats +------------ + + Line formats control how each line taken from an input file is +output as part of a line group in if-then-else format. + + For example, the following command outputs text with a one-character +change indicator to the left of the text. The first character of output +is `-' for deleted lines, `|' for added lines, and a space for +unchanged lines. The formats contain newline characters where newlines +are desired on output. + + diff \ + --old-line-format='-%l + ' \ + --new-line-format='|%l + ' \ + --unchanged-line-format=' %l + ' \ + old new + + To specify a line format, use one of the following options. You +should quote FORMAT, since it often contains shell metacharacters. + +`--old-line-format=FORMAT' + formats lines just from the first file. + +`--new-line-format=FORMAT' + formats lines just from the second file. + +`--unchanged-line-format=FORMAT' + formats lines common to both files. + +`--line-format=FORMAT' + formats all lines; in effect, it sets all three above options + simultaneously. + + In a line format, ordinary characters represent themselves; +conversion specifications start with `%' and have one of the following +forms. + +`%l' + stands for the contents of the line, not counting its trailing + newline (if any). This format ignores whether the line is + incomplete; *Note Incomplete Lines::. + +`%L' + stands for the contents of the line, including its trailing newline + (if any). If a line is incomplete, this format preserves its + incompleteness. + +`%%' + stands for `%'. + +`%c'C'' + where C is a single character, stands for C. C may not be a + backslash or an apostrophe. For example, `%c':'' stands for a + colon. + +`%c'\O'' + where O is a string of 1, 2, or 3 octal digits, stands for the + character with octal code O. For example, `%c'\0'' stands for a + null character. + +`Fn' + where F is a `printf' conversion specification, stands for the + line number formatted with F. For example, `%.5dn' prints the + line number using the `printf' format `"%.5d"'. *Note Line Group + Formats::, for more about printf conversion specifications. + + The default line format is `%l' followed by a newline character. + + If the input contains tab characters and it is important that they +line up on output, you should ensure that `%l' or `%L' in a line format +is just after a tab stop (e.g. by preceding `%l' or `%L' with a tab +character), or you should use the `-t' or `--expand-tabs' option. + + Taken together, the line and line group formats let you specify many +different formats. For example, the following command uses a format +similar to normal `diff' format. You can tailor this command to get +fine control over `diff' output. + + diff \ + --old-line-format='< %l + ' \ + --new-line-format='> %l + ' \ + --old-group-format='%df%(f=l?:,%dl)d%dE + %<' \ + --new-group-format='%dea%dF%(F=L?:,%dL) + %>' \ + --changed-group-format='%df%(f=l?:,%dl)c%dF%(F=L?:,%dL) + %<--- + %>' \ + --unchanged-group-format='' \ + old new + + +File: diff.info, Node: Detailed If-then-else, Next: Example If-then-else, Prev: Line Formats, Up: If-then-else + +Detailed Description of If-then-else Format +------------------------------------------- + + For lines common to both files, `diff' uses the unchanged line group +format. For each hunk of differences in the merged output format, if +the hunk contains only lines from the first file, `diff' uses the old +line group format; if the hunk contains only lines from the second +file, `diff' uses the new group format; otherwise, `diff' uses the +changed group format. + + The old, new, and unchanged line formats specify the output format of +lines from the first file, lines from the second file, and lines common +to both files, respectively. + + The option `--ifdef=NAME' is equivalent to the following sequence of +options using shell syntax: + + --old-group-format='#ifndef NAME + %<#endif /* ! NAME */ + ' \ + --new-group-format='#ifdef NAME + %>#endif /* NAME */ + ' \ + --unchanged-group-format='%=' \ + --changed-group-format='#ifndef NAME + %<#else /* NAME */ + %>#endif /* NAME */ + ' + + You should carefully check the `diff' output for proper nesting. +For example, when using the `-D NAME' or `--ifdef=NAME' option, you +should check that if the differing lines contain any of the C +preprocessor directives `#ifdef', `#ifndef', `#else', `#elif', or +`#endif', they are nested properly and match. If they don't, you must +make corrections manually. It is a good idea to carefully check the +resulting code anyway to make sure that it really does what you want it +to; depending on how the input files were produced, the output might +contain duplicate or otherwise incorrect code. + + The `patch' `-D NAME' option behaves like the `diff' `-D NAME' +option, except it operates on a file and a diff to produce a merged +file; *Note patch Options::. + + +File: diff.info, Node: Example If-then-else, Prev: Detailed If-then-else, Up: If-then-else + +An Example of If-then-else Format +--------------------------------- + + Here is the output of `diff -DTWO lao tzu' (*note Sample diff +Input::, for the complete contents of the two files): + + #ifndef TWO + The Way that can be told of is not the eternal Way; + The name that can be named is not the eternal name. + #endif /* ! TWO */ + The Nameless is the origin of Heaven and Earth; + #ifndef TWO + The Named is the mother of all things. + #else /* TWO */ + The named is the mother of all things. + + #endif /* TWO */ + Therefore let there always be non-being, + so we may see their subtlety, + And let there always be being, + so we may see their outcome. + The two are the same, + But after they are produced, + they have different names. + #ifdef TWO + They both may be called deep and profound. + Deeper and more profound, + The door of all subtleties! + #endif /* TWO */ + + +File: diff.info, Node: Incomplete Lines, Next: Comparing Directories, Prev: Output Formats, Up: Top + +Incomplete Lines +**************** + + When an input file ends in a non-newline character, its last line is +called an "incomplete line" because its last character is not a +newline. All other lines are called "full lines" and end in a newline +character. Incomplete lines do not match full lines unless differences +in white space are ignored (*note White Space::). + + An incomplete line is normally distinguished on output from a full +line by a following line that starts with `\'. However, the RCS format +(*note RCS::) outputs the incomplete line as-is, without any trailing +newline or following line. The side by side format normally represents +incomplete lines as-is, but in some cases uses a `\' or `/' gutter +marker; *Note Side by Side::. The if-then-else line format preserves a +line's incompleteness with `%L', and discards the newline with `%l'; +*Note Line Formats::. Finally, with the `ed' and forward `ed' output +formats (*note Output Formats::) `diff' cannot represent an incomplete +line, so it pretends there was a newline and reports an error. + + For example, suppose `F' and `G' are one-byte files that contain +just `f' and `g', respectively. Then `diff F G' outputs + + 1c1 + < f + \ No newline at end of file + --- + > g + \ No newline at end of file + +(The exact message may differ in non-English locales.) `diff -n F G' +outputs the following without a trailing newline: + + d1 1 + a1 1 + g + +`diff -e F G' reports two errors and outputs the following: + + 1c + g + . + + +File: diff.info, Node: Comparing Directories, Next: Adjusting Output, Prev: Incomplete Lines, Up: Top + +Comparing Directories +********************* + + You can use `diff' to compare some or all of the files in two +directory trees. When both file name arguments to `diff' are +directories, it compares each file that is contained in both +directories, examining file names in alphabetical order as specified by +the `LC_COLLATE' locale category. Normally `diff' is silent about +pairs of files that contain no differences, but if you use the `-s' or +`--report-identical-files' option, it reports pairs of identical files. +Normally `diff' reports subdirectories common to both directories +without comparing subdirectories' files, but if you use the `-r' or +`--recursive' option, it compares every corresponding pair of files in +the directory trees, as many levels deep as they go. + + For file names that are in only one of the directories, `diff' +normally does not show the contents of the file that exists; it reports +only that the file exists in that directory and not in the other. You +can make `diff' act as though the file existed but was empty in the +other directory, so that it outputs the entire contents of the file that +actually exists. (It is output as either an insertion or a deletion, +depending on whether it is in the first or the second directory given.) +To do this, use the `-N' or `--new-file' option. + + If the older directory contains one or more large files that are not +in the newer directory, you can make the patch smaller by using the +`--unidirectional-new-file' option instead of `-N'. This option is +like `-N' except that it only inserts the contents of files that appear +in the second directory but not the first (that is, files that were +added). At the top of the patch, write instructions for the user +applying the patch to remove the files that were deleted before +applying the patch. *Note Making Patches::, for more discussion of +making patches for distribution. + + To ignore some files while comparing directories, use the `-x +PATTERN' or `--exclude=PATTERN' option. This option ignores any files +or subdirectories whose base names match the shell pattern PATTERN. +Unlike in the shell, a period at the start of the base of a file name +matches a wildcard at the start of a pattern. You should enclose +PATTERN in quotes so that the shell does not expand it. For example, +the option `-x '*.[ao]'' ignores any file whose name ends with `.a' or +`.o'. + + This option accumulates if you specify it more than once. For +example, using the options `-x 'RCS' -x '*,v'' ignores any file or +subdirectory whose base name is `RCS' or ends with `,v'. + + If you need to give this option many times, you can instead put the +patterns in a file, one pattern per line, and use the `-X FILE' or +`--exclude-from=FILE' option. + + If you have been comparing two directories and stopped partway +through, later you might want to continue where you left off. You can +do this by using the `-S FILE' or `--starting-file=FILE' option. This +compares only the file FILE and all alphabetically later files in the +topmost directory level. + + If two directories differ only in that file names are lower case in +one directory and upper case in the upper, `diff' normally reports many +differences because it compares file names in a case sensitive way. +With the `--ignore-file-name-case' option, `diff' ignores case +differences in file names, so that for example the contents of the file +`Tao' in one directory are compared to the contents of the file `TAO' +in the other. The `--no-ignore-file-name-case' option cancels the +effect of the `--ignore-file-name-case' option, reverting to the default +behavior. + + If an `-x PATTERN', `--exclude=PATTERN', `-X FILE', or +`--exclude-from=FILE' option is specified while the +`--ignore-file-name-case' option is in effect, case is ignored when +excluding file names matching the specified patterns. + + +File: diff.info, Node: Adjusting Output, Next: diff Performance, Prev: Comparing Directories, Up: Top + +Making `diff' Output Prettier +***************************** + + `diff' provides several ways to adjust the appearance of its output. +These adjustments can be applied to any output format. + +* Menu: + +* Tabs:: Preserving the alignment of tab stops. +* Pagination:: Page numbering and time-stamping `diff' output. + + +File: diff.info, Node: Tabs, Next: Pagination, Up: Adjusting Output + +Preserving Tab Stop Alignment +============================= + + The lines of text in some of the `diff' output formats are preceded +by one or two characters that indicate whether the text is inserted, +deleted, or changed. The addition of those characters can cause tabs to +move to the next tab stop, throwing off the alignment of columns in the +line. GNU `diff' provides two ways to make tab-aligned columns line up +correctly. + + The first way is to have `diff' convert all tabs into the correct +number of spaces before outputting them; select this method with the +`-t' or `--expand-tabs' option. `diff' assumes that tab stops are set +every 8 print columns. To use this form of output with `patch', you +must give `patch' the `-l' or `--ignore-white-space' option (*note +Changed White Space::, for more information). + + The other method for making tabs line up correctly is to add a tab +character instead of a space after the indicator character at the +beginning of the line. This ensures that all following tab characters +are in the same position relative to tab stops that they were in the +original files, so that the output is aligned correctly. Its +disadvantage is that it can make long lines too long to fit on one line +of the screen or the paper. It also does not work with the unified +output format, which does not have a space character after the change +type indicator character. Select this method with the `-T' or +`--initial-tab' option. + + +File: diff.info, Node: Pagination, Prev: Tabs, Up: Adjusting Output + +Paginating `diff' Output +======================== + + It can be convenient to have long output page-numbered and +time-stamped. The `-l' and `--paginate' options do this by sending the +`diff' output through the `pr' program. Here is what the page header +might look like for `diff -lc lao tzu': + + 2002-02-22 14:20 diff -lc lao tzu Page 1 + + +File: diff.info, Node: diff Performance, Next: Comparing Three Files, Prev: Adjusting Output, Up: Top + +`diff' Performance Tradeoffs +**************************** + + GNU `diff' runs quite efficiently; however, in some circumstances +you can cause it to run faster or produce a more compact set of changes. + + One way to improve `diff' performance is to use hard or symbolic +links to files instead of copies. This improves performance because +`diff' normally does not need to read two hard or symbolic links to the +same file, since their contents must be identical. For example, +suppose you copy a large directory hierarchy, make a few changes to the +copy, and then often use `diff -r' to compare the original to the copy. +If the original files are read-only, you can greatly improve +performance by creating the copy using hard or symbolic links (e.g., +with GNU `cp -lR' or `cp -sR'). Before editing a file in the copy for +the first time, you should break the link and replace it with a regular +copy. + + You can also affect the performance of GNU `diff' by giving it +options that change the way it compares files. Performance has more +than one dimension. These options improve one aspect of performance at +the cost of another, or they improve performance in some cases while +hurting it in others. + + The way that GNU `diff' determines which lines have changed always +comes up with a near-minimal set of differences. Usually it is good +enough for practical purposes. If the `diff' output is large, you +might want `diff' to use a modified algorithm that sometimes produces a +smaller set of differences. The `-d' or `--minimal' option does this; +however, it can also cause `diff' to run more slowly than usual, so it +is not the default behavior. + + When the files you are comparing are large and have small groups of +changes scattered throughout them, you can use the +`--speed-large-files' option to make a different modification to the +algorithm that `diff' uses. If the input files have a constant small +density of changes, this option speeds up the comparisons without +changing the output. If not, `diff' might produce a larger set of +differences; however, the output will still be correct. + + Normally `diff' discards the prefix and suffix that is common to +both files before it attempts to find a minimal set of differences. +This makes `diff' run faster, but occasionally it may produce +non-minimal output. The `--horizon-lines=LINES' option prevents `diff' +from discarding the last LINES lines of the prefix and the first LINES +lines of the suffix. This gives `diff' further opportunities to find a +minimal output. + + Suppose a run of changed lines includes a sequence of lines at one +end and there is an identical sequence of lines just outside the other +end. The `diff' command is free to choose which identical sequence is +included in the hunk. In this case, `diff' normally shifts the hunk's +boundaries when this merges adjacent hunks, or shifts a hunk's lines +towards the end of the file. Merging hunks can make the output look +nicer in some cases. + + +File: diff.info, Node: Comparing Three Files, Next: diff3 Merging, Prev: diff Performance, Up: Top + +Comparing Three Files +********************* + + Use the program `diff3' to compare three files and show any +differences among them. (`diff3' can also merge files; see *Note diff3 +Merging::). + + The "normal" `diff3' output format shows each hunk of differences +without surrounding context. Hunks are labeled depending on whether +they are two-way or three-way, and lines are annotated by their +location in the input files. + + *Note Invoking diff3::, for more information on how to run `diff3'. + +* Menu: + +* Sample diff3 Input:: Sample `diff3' input for examples. +* Detailed diff3 Normal:: A detailed description of normal output format. +* diff3 Hunks:: The format of normal output format. +* Example diff3 Normal:: Sample output in the normal format. + + +File: diff.info, Node: Sample diff3 Input, Next: Detailed diff3 Normal, Up: Comparing Three Files + +A Third Sample Input File +========================= + + Here is a third sample file that will be used in examples to +illustrate the output of `diff3' and how various options can change it. +The first two files are the same that we used for `diff' (*note Sample +diff Input::). This is the third sample file, called `tao': + + The Way that can be told of is not the eternal Way; + The name that can be named is not the eternal name. + The Nameless is the origin of Heaven and Earth; + The named is the mother of all things. + + Therefore let there always be non-being, + so we may see their subtlety, + And let there always be being, + so we may see their result. + The two are the same, + But after they are produced, + they have different names. + + -- The Way of Lao-Tzu, tr. Wing-tsit Chan + + +File: diff.info, Node: Detailed diff3 Normal, Next: diff3 Hunks, Prev: Sample diff3 Input, Up: Comparing Three Files + +Detailed Description of `diff3' Normal Format +============================================= + + Each hunk begins with a line marked `===='. Three-way hunks have +plain `====' lines, and two-way hunks have `1', `2', or `3' appended to +specify which of the three input files differ in that hunk. The hunks +contain copies of two or three sets of input lines each preceded by one +or two commands identifying where the lines came from. + + Normally, two spaces precede each copy of an input line to +distinguish it from the commands. But with the `-T' or `--initial-tab' +option, `diff3' uses a tab instead of two spaces; this lines up tabs +correctly. *Note Tabs::, for more information. + + Commands take the following forms: + +`FILE:La' + This hunk appears after line L of file FILE, and contains no lines + in that file. To edit this file to yield the other files, one + must append hunk lines taken from the other files. For example, + `1:11a' means that the hunk follows line 11 in the first file and + contains no lines from that file. + +`FILE:Rc' + This hunk contains the lines in the range R of file FILE. The + range R is a comma-separated pair of line numbers, or just one + number if the range is a singleton. To edit this file to yield the + other files, one must change the specified lines to be the lines + taken from the other files. For example, `2:11,13c' means that + the hunk contains lines 11 through 13 from the second file. + + If the last line in a set of input lines is incomplete (*note +Incomplete Lines::), it is distinguished on output from a full line by +a following line that starts with `\'. + + +File: diff.info, Node: diff3 Hunks, Next: Example diff3 Normal, Prev: Detailed diff3 Normal, Up: Comparing Three Files + +`diff3' Hunks +============= + + Groups of lines that differ in two or three of the input files are +called "diff3 hunks", by analogy with `diff' hunks (*note Hunks::). If +all three input files differ in a `diff3' hunk, the hunk is called a +"three-way hunk"; if just two input files differ, it is a "two-way +hunk". + + As with `diff', several solutions are possible. When comparing the +files `A', `B', and `C', `diff3' normally finds `diff3' hunks by +merging the two-way hunks output by the two commands `diff A B' and +`diff A C'. This does not necessarily minimize the size of the output, +but exceptions should be rare. + + For example, suppose `F' contains the three lines `a', `b', `f', `G' +contains the lines `g', `b', `g', and `H' contains the lines `a', `b', +`h'. `diff3 F G H' might output the following: + + ====2 + 1:1c + 3:1c + a + 2:1c + g + ==== + 1:3c + f + 2:3c + g + 3:3c + h + +because it found a two-way hunk containing `a' in the first and third +files and `g' in the second file, then the single line `b' common to +all three files, then a three-way hunk containing the last line of each +file. + + +File: diff.info, Node: Example diff3 Normal, Prev: diff3 Hunks, Up: Comparing Three Files + +An Example of `diff3' Normal Format +=================================== + + Here is the output of the command `diff3 lao tzu tao' (*note Sample +diff3 Input::, for the complete contents of the files). Notice that it +shows only the lines that are different among the three files. + + ====2 + 1:1,2c + 3:1,2c + The Way that can be told of is not the eternal Way; + The name that can be named is not the eternal name. + 2:0a + ====1 + 1:4c + The Named is the mother of all things. + 2:2,3c + 3:4,5c + The named is the mother of all things. + + ====3 + 1:8c + 2:7c + so we may see their outcome. + 3:9c + so we may see their result. + ==== + 1:11a + 2:11,13c + They both may be called deep and profound. + Deeper and more profound, + The door of all subtleties! + 3:13,14c + + -- The Way of Lao-Tzu, tr. Wing-tsit Chan + + +File: diff.info, Node: diff3 Merging, Next: Interactive Merging, Prev: Comparing Three Files, Up: Top + +Merging From a Common Ancestor +****************************** + + When two people have made changes to copies of the same file, +`diff3' can produce a merged output that contains both sets of changes +together with warnings about conflicts. + + One might imagine programs with names like `diff4' and `diff5' to +compare more than three files simultaneously, but in practice the need +rarely arises. You can use `diff3' to merge three or more sets of +changes to a file by merging two change sets at a time. + + `diff3' can incorporate changes from two modified versions into a +common preceding version. This lets you merge the sets of changes +represented by the two newer files. Specify the common ancestor version +as the second argument and the two newer versions as the first and third +arguments, like this: + + diff3 MINE OLDER YOURS + +You can remember the order of the arguments by noting that they are in +alphabetical order. + + You can think of this as subtracting OLDER from YOURS and adding the +result to MINE, or as merging into MINE the changes that would turn +OLDER into YOURS. This merging is well-defined as long as MINE and +OLDER match in the neighborhood of each such change. This fails to be +true when all three input files differ or when only OLDER differs; we +call this a "conflict". When all three input files differ, we call the +conflict an "overlap". + + `diff3' gives you several ways to handle overlaps and conflicts. +You can omit overlaps or conflicts, or select only overlaps, or mark +conflicts with special `<<<<<<<' and `>>>>>>>' lines. + + `diff3' can output the merge results as an `ed' script that that can +be applied to the first file to yield the merged output. However, it +is usually better to have `diff3' generate the merged output directly; +this bypasses some problems with `ed'. + +* Menu: + +* Which Changes:: Selecting changes to incorporate. +* Marking Conflicts:: Marking conflicts. +* Bypassing ed:: Generating merged output directly. +* Merging Incomplete Lines:: How `diff3' merges incomplete lines. +* Saving the Changed File:: Emulating System V behavior. + + +File: diff.info, Node: Which Changes, Next: Marking Conflicts, Up: diff3 Merging + +Selecting Which Changes to Incorporate +====================================== + + You can select all unmerged changes from OLDER to YOURS for merging +into MINE with the `-e' or `--ed' option. You can select only the +nonoverlapping unmerged changes with `-3' or `--easy-only', and you can +select only the overlapping changes with `-x' or `--overlap-only'. + + The `-e', `-3' and `-x' options select only "unmerged changes", i.e. +changes where MINE and YOURS differ; they ignore changes from OLDER to +YOURS where MINE and YOURS are identical, because they assume that such +changes have already been merged. If this assumption is not a safe +one, you can use the `-A' or `--show-all' option (*note Marking +Conflicts::). + + Here is the output of the command `diff3' with each of these three +options (*note Sample diff3 Input::, for the complete contents of the +files). Notice that `-e' outputs the union of the disjoint sets of +changes output by `-3' and `-x'. + + Output of `diff3 -e lao tzu tao': + 11a + + -- The Way of Lao-Tzu, tr. Wing-tsit Chan + . + 8c + so we may see their result. + . + + Output of `diff3 -3 lao tzu tao': + 8c + so we may see their result. + . + + Output of `diff3 -x lao tzu tao': + 11a + + -- The Way of Lao-Tzu, tr. Wing-tsit Chan + . + + +File: diff.info, Node: Marking Conflicts, Next: Bypassing ed, Prev: Which Changes, Up: diff3 Merging + +Marking Conflicts +================= + + `diff3' can mark conflicts in the merged output by bracketing them +with special marker lines. A conflict that comes from two files A and +B is marked as follows: + + <<<<<<< A + lines from A + ======= + lines from B + >>>>>>> B + + A conflict that comes from three files A, B and C is marked as +follows: + + <<<<<<< A + lines from A + ||||||| B + lines from B + ======= + lines from C + >>>>>>> C + + The `-A' or `--show-all' option acts like the `-e' option, except +that it brackets conflicts, and it outputs all changes from OLDER to +YOURS, not just the unmerged changes. Thus, given the sample input +files (*note Sample diff3 Input::), `diff3 -A lao tzu tao' puts +brackets around the conflict where only `tzu' differs: + + <<<<<<< tzu + ======= + The Way that can be told of is not the eternal Way; + The name that can be named is not the eternal name. + >>>>>>> tao + + And it outputs the three-way conflict as follows: + + <<<<<<< lao + ||||||| tzu + They both may be called deep and profound. + Deeper and more profound, + The door of all subtleties! + ======= + + -- The Way of Lao-Tzu, tr. Wing-tsit Chan + >>>>>>> tao + + The `-E' or `--show-overlap' option outputs less information than +the `-A' or `--show-all' option, because it outputs only unmerged +changes, and it never outputs the contents of the second file. Thus +the `-E' option acts like the `-e' option, except that it brackets the +first and third files from three-way overlapping changes. Similarly, +`-X' acts like `-x', except it brackets all its (necessarily +overlapping) changes. For example, for the three-way overlapping +change above, the `-E' and `-X' options output the following: + + <<<<<<< lao + ======= + + -- The Way of Lao-Tzu, tr. Wing-tsit Chan + >>>>>>> tao + + If you are comparing files that have meaningless or uninformative +names, you can use the `-L LABEL' or `--label=LABEL' option to show +alternate names in the `<<<<<<<', `|||||||' and `>>>>>>>' brackets. +This option can be given up to three times, once for each input file. +Thus `diff3 -A -L X -L Y -L Z A B C' acts like `diff3 -A A B C', except +that the output looks like it came from files named `X', `Y' and `Z' +rather than from files named `A', `B' and `C'. + + +File: diff.info, Node: Bypassing ed, Next: Merging Incomplete Lines, Prev: Marking Conflicts, Up: diff3 Merging + +Generating the Merged Output Directly +===================================== + + With the `-m' or `--merge' option, `diff3' outputs the merged file +directly. This is more efficient than using `ed' to generate it, and +works even with non-text files that `ed' would reject. If you specify +`-m' without an `ed' script option, `-A' (`--show-all') is assumed. + + For example, the command `diff3 -m lao tzu tao' (*note Sample diff3 +Input:: for a copy of the input files) would output the following: + + <<<<<<< tzu + ======= + The Way that can be told of is not the eternal Way; + The name that can be named is not the eternal name. + >>>>>>> tao + The Nameless is the origin of Heaven and Earth; + The Named is the mother of all things. + Therefore let there always be non-being, + so we may see their subtlety, + And let there always be being, + so we may see their result. + The two are the same, + But after they are produced, + they have different names. + <<<<<<< lao + ||||||| tzu + They both may be called deep and profound. + Deeper and more profound, + The door of all subtleties! + ======= + + -- The Way of Lao-Tzu, tr. Wing-tsit Chan + >>>>>>> tao + + +File: diff.info, Node: Merging Incomplete Lines, Next: Saving the Changed File, Prev: Bypassing ed, Up: diff3 Merging + +How `diff3' Merges Incomplete Lines +=================================== + + With `-m', incomplete lines (*note Incomplete Lines::) are simply +copied to the output as they are found; if the merged output ends in an +conflict and one of the input files ends in an incomplete line, +succeeding `|||||||', `=======' or `>>>>>>>' brackets appear somewhere +other than the start of a line because they are appended to the +incomplete line. + + Without `-m', if an `ed' script option is specified and an +incomplete line is found, `diff3' generates a warning and acts as if a +newline had been present. + + +File: diff.info, Node: Saving the Changed File, Prev: Merging Incomplete Lines, Up: diff3 Merging + +Saving the Changed File +======================= + + Traditional Unix `diff3' generates an `ed' script without the +trailing `w' and `q' commands that save the changes. System V `diff3' +generates these extra commands. GNU `diff3' normally behaves like +traditional Unix `diff3', but with the `-i' option it behaves like +System V `diff3' and appends the `w' and `q' commands. + + The `-i' option requires one of the `ed' script options `-AeExX3', +and is incompatible with the merged output option `-m'. + + +File: diff.info, Node: Interactive Merging, Next: Merging with patch, Prev: diff3 Merging, Up: Top + +Interactive Merging with `sdiff' +******************************** + + With `sdiff', you can merge two files interactively based on a +side-by-side `-y' format comparison (*note Side by Side::). Use `-o +FILE' or `--output=FILE' to specify where to put the merged text. +*Note Invoking sdiff::, for more details on the options to `sdiff'. + + Another way to merge files interactively is to use the Emacs Lisp +package `emerge'. *Note emerge: (emacs)emerge, for more information. + +* Menu: + +* sdiff Option Summary:: Summary of `sdiff' options. +* Merge Commands:: Merging two files interactively. + + +File: diff.info, Node: sdiff Option Summary, Next: Merge Commands, Up: Interactive Merging + +Specifying `diff' Options to `sdiff' +==================================== + + The following `sdiff' options have the same meaning as for `diff'. +*Note diff Options::, for the use of these options. + + -a -b -d -i -t -v + -B -E -I REGEXP + + --ignore-blank-lines --ignore-case + --ignore-matching-lines=REGEXP --ignore-space-change + --ignore-tab-expansion + --left-column --minimal --speed-large-files + --strip-trailing-cr --suppress-common-lines --expand-tabs + --text --version --width=COLUMNS + + For historical reasons, `sdiff' has alternate names for some +options. The `-l' option is equivalent to the `--left-column' option, +and similarly `-s' is equivalent to `--suppress-common-lines'. The +meaning of the `sdiff' `-w' and `-W' options is interchanged from that +of `diff': with `sdiff', `-w COLUMNS' is equivalent to +`--width=COLUMNS', and `-W' is equivalent to `--ignore-all-space'. +`sdiff' without the `-o' option is equivalent to `diff' with the `-y' +or `--side-by-side' option (*note Side by Side::). + + +File: diff.info, Node: Merge Commands, Prev: sdiff Option Summary, Up: Interactive Merging + +Merge Commands +============== + + Groups of common lines, with a blank gutter, are copied from the +first file to the output. After each group of differing lines, `sdiff' +prompts with `%' and pauses, waiting for one of the following commands. +Follow each command with . + +`e' + Discard both versions. Invoke a text editor on an empty temporary + file, then copy the resulting file to the output. + +`eb' + Concatenate the two versions, edit the result in a temporary file, + then copy the edited result to the output. + +`ed' + Like `eb', except precede each version with a header that shows + what file and lines the version came from. + +`el' + Edit a copy of the left version, then copy the result to the + output. + +`er' + Edit a copy of the right version, then copy the result to the + output. + +`l' + Copy the left version to the output. + +`q' + Quit. + +`r' + Copy the right version to the output. + +`s' + Silently copy common lines. + +`v' + Verbosely copy common lines. This is the default. + + The text editor invoked is specified by the `EDITOR' environment +variable if it is set. The default is system-dependent. + + +File: diff.info, Node: Merging with patch, Next: Making Patches, Prev: Interactive Merging, Up: Top + +Merging with `patch' +******************** + + `patch' takes comparison output produced by `diff' and applies the +differences to a copy of the original file, producing a patched +version. With `patch', you can distribute just the changes to a set of +files instead of distributing the entire file set; your correspondents +can apply `patch' to update their copy of the files with your changes. +`patch' automatically determines the diff format, skips any leading or +trailing headers, and uses the headers to determine which file to +patch. This lets your correspondents feed a mail message containing a +difference listing directly to `patch'. + + `patch' detects and warns about common problems like forward +patches. It saves any patches that it could not apply. It can also +maintain a `patchlevel.h' file to ensure that your correspondents apply +diffs in the proper order. + + `patch' accepts a series of diffs in its standard input, usually +separated by headers that specify which file to patch. It applies +`diff' hunks (*note Hunks::) one by one. If a hunk does not exactly +match the original file, `patch' uses heuristics to try to patch the +file as well as it can. If no approximate match can be found, `patch' +rejects the hunk and skips to the next hunk. `patch' normally replaces +each file F with its new version, putting reject hunks (if any) into +`F.rej'. + + *Note Invoking patch::, for detailed information on the options to +`patch'. + +* Menu: + +* patch Input:: Selecting the type of `patch' input. +* Revision Control:: Getting files from RCS, SCCS, etc. +* Imperfect:: Dealing with imperfect patches. +* Creating and Removing:: Creating and removing files with a patch. +* Patching Time Stamps:: Updating time stamps on patched files. +* Multiple Patches:: Handling multiple patches in a file. +* patch Directories:: Changing directory and stripping directories. +* Backups:: Whether backup files are made. +* Backup Names:: Backup file names. +* Reject Names:: Reject file names. +* patch Messages:: Messages and questions `patch' can produce. +* patch and POSIX:: Conformance to the POSIX standard. +* patch and Tradition:: GNU versus traditional `patch'. + + +File: diff.info, Node: patch Input, Next: Revision Control, Up: Merging with patch + +Selecting the `patch' Input Format +================================== + + `patch' normally determines which `diff' format the patch file uses +by examining its contents. For patch files that contain particularly +confusing leading text, you might need to use one of the following +options to force `patch' to interpret the patch file as a certain +format of diff. The output formats listed here are the only ones that +`patch' can understand. + +`-c' +`--context' + context diff. + +`-e' +`--ed' + `ed' script. + +`-n' +`--normal' + normal diff. + +`-u' +`--unified' + unified diff. + + +File: diff.info, Node: Revision Control, Next: Imperfect, Prev: patch Input, Up: Merging with patch + +Revision Control +================ + + If a nonexistent input file is under a revision control system +supported by `patch', `patch' normally asks the user whether to get (or +check out) the file from the revision control system. Patch currently +supports RCS, ClearCase and SCCS. Under RCS and SCCS, `patch' also +asks when the input file is read-only and matches the default version +in the revision control system. + + The `-g NUM' or `--get=NUM' affects access to files under supported +revision control systems. If NUM is positive, `patch' gets the file +without asking the user; if zero, `patch' neither asks the user nor +gets the file; and if negative, `patch' asks the user before getting +the file. The default value of NUM is given by the value of the +`PATCH_GET' environment variable if it is set; if not, the default +value is zero if `patch' is conforming to POSIX, negative otherwise. +*Note patch and POSIX::. + + The choice of revision control system is unaffected by the +`VERSION_CONTROL' environment variable (*note Backup Names::). + + +File: diff.info, Node: Imperfect, Next: Creating and Removing, Prev: Revision Control, Up: Merging with patch + +Applying Imperfect Patches +========================== + + `patch' tries to skip any leading text in the patch file, apply the +diff, and then skip any trailing text. Thus you can feed a mail +message directly to `patch', and it should work. If the entire diff is +indented by a constant amount of white space, `patch' automatically +ignores the indentation. If a context diff contains trailing carriage +return on each line, `patch' automatically ignores the carriage return. +If a context diff has been encapsulated by prepending `- ' to lines +beginning with `-' as per Internet RFC 934 +(ftp://ftp.isi.edu/in-notes/rfc934.txt), `patch' automatically +unencapsulates the input. + + However, certain other types of imperfect input require user +intervention or testing. + +* Menu: + +* Changed White Space:: When tabs and spaces don't match exactly. +* Reversed Patches:: Applying reversed patches correctly. +* Inexact:: Helping `patch' find close matches. +* Dry Runs:: Predicting what `patch' will do. + + +File: diff.info, Node: Changed White Space, Next: Reversed Patches, Up: Imperfect + +Applying Patches with Changed White Space +----------------------------------------- + + Sometimes mailers, editors, or other programs change spaces into +tabs, or vice versa. If this happens to a patch file or an input file, +the files might look the same, but `patch' will not be able to match +them properly. If this problem occurs, use the `-l' or +`--ignore-white-space' option, which makes `patch' compare blank +characters (i.e. spaces and tabs) loosely so that any nonempty sequence +of blanks in the patch file matches any nonempty sequence of blanks in +the input files. Non-blank characters must still match exactly. Each +line of the context must still match a line in the input file. + + +File: diff.info, Node: Reversed Patches, Next: Inexact, Prev: Changed White Space, Up: Imperfect + +Applying Reversed Patches +------------------------- + + Sometimes people run `diff' with the new file first instead of +second. This creates a diff that is "reversed". To apply such +patches, give `patch' the `-R' or `--reverse' option. `patch' then +attempts to swap each hunk around before applying it. Rejects come out +in the swapped format. + + Often `patch' can guess that the patch is reversed. If the first +hunk of a patch fails, `patch' reverses the hunk to see if it can apply +it that way. If it can, `patch' asks you if you want to have the `-R' +option set; if it can't, `patch' continues to apply the patch normally. +This method cannot detect a reversed patch if it is a normal diff and +the first command is an append (which should have been a delete) since +appends always succeed, because a null context matches anywhere. But +most patches add or change lines rather than delete them, so most +reversed normal diffs begin with a delete, which fails, and `patch' +notices. + + If you apply a patch that you have already applied, `patch' thinks +it is a reversed patch and offers to un-apply the patch. This could be +construed as a feature. If you did this inadvertently and you don't +want to un-apply the patch, just answer `n' to this offer and to the +subsequent "apply anyway" question--or type `C-c' to kill the `patch' +process. + + +File: diff.info, Node: Inexact, Next: Dry Runs, Prev: Reversed Patches, Up: Imperfect + +Helping `patch' Find Inexact Matches +------------------------------------ + + For context diffs, and to a lesser extent normal diffs, `patch' can +detect when the line numbers mentioned in the patch are incorrect, and +it attempts to find the correct place to apply each hunk of the patch. +As a first guess, it takes the line number mentioned in the hunk, plus +or minus any offset used in applying the previous hunk. If that is not +the correct place, `patch' scans both forward and backward for a set of +lines matching the context given in the hunk. + + First `patch' looks for a place where all lines of the context +match. If it cannot find such a place, and it is reading a context or +unified diff, and the maximum fuzz factor is set to 1 or more, then +`patch' makes another scan, ignoring the first and last line of +context. If that fails, and the maximum fuzz factor is set to 2 or +more, it makes another scan, ignoring the first two and last two lines +of context are ignored. It continues similarly if the maximum fuzz +factor is larger. + + The `-F LINES' or `--fuzz=LINES' option sets the maximum fuzz factor +to LINES. This option only applies to context and unified diffs; it +ignores up to LINES lines while looking for the place to install a +hunk. Note that a larger fuzz factor increases the odds of making a +faulty patch. The default fuzz factor is 2; there is no point to +setting it to more than the number of lines of context in the diff, +ordinarily 3. + + If `patch' cannot find a place to install a hunk of the patch, it +writes the hunk out to a reject file (*note Reject Names::, for +information on how reject files are named). It writes out rejected +hunks in context format no matter what form the input patch is in. If +the input is a normal or `ed' diff, many of the contexts are simply +null. The line numbers on the hunks in the reject file may be +different from those in the patch file: they show the approximate +location where `patch' thinks the failed hunks belong in the new file +rather than in the old one. + + If the `--verbose' option is given, then as it completes each hunk +`patch' tells you whether the hunk succeeded or failed, and if it +failed, on which line (in the new file) `patch' thinks the hunk should +go. If this is different from the line number specified in the diff, +it tells you the offset. A single large offset _may_ indicate that +`patch' installed a hunk in the wrong place. `patch' also tells you if +it used a fuzz factor to make the match, in which case you should also +be slightly suspicious. + + `patch' cannot tell if the line numbers are off in an `ed' script, +and can only detect wrong line numbers in a normal diff when it finds a +change or delete command. It may have the same problem with a context +diff using a fuzz factor equal to or greater than the number of lines +of context shown in the diff (typically 3). In these cases, you should +probably look at a context diff between your original and patched input +files to see if the changes make sense. Compiling without errors is a +pretty good indication that the patch worked, but not a guarantee. + + A patch against an empty file applies to a nonexistent file, and vice +versa. *Note Creating and Removing::. + + `patch' usually produces the correct results, even when it must make +many guesses. However, the results are guaranteed only when the patch +is applied to an exact copy of the file that the patch was generated +from. + + +File: diff.info, Node: Dry Runs, Prev: Inexact, Up: Imperfect + +Predicting what `patch' will do +------------------------------- + + It may not be obvious in advance what `patch' will do with a +complicated or poorly formatted patch. If you are concerned that the +input might cause `patch' to modify the wrong files, you can use the +`--dry-run' option, which causes `patch' to print the results of +applying patches without actually changing any files. You can then +inspect the diagnostics generated by the dry run to see whether `patch' +will modify the files that you expect. If the patch does not do what +you want, you can modify the patch (or the other options to `patch') +and try another dry run. Once you are satisfied with the proposed +patch you can apply it by invoking `patch' as before, but this time +without the `--dry-run' option. + + +File: diff.info, Node: Creating and Removing, Next: Patching Time Stamps, Prev: Imperfect, Up: Merging with patch + +Creating and Removing Files +=========================== + + Sometimes when comparing two directories, a file may exist in one +directory but not the other. If you give `diff' the `-N' or +`--new-file' option, or if you supply an old or new file that is named +`/dev/null' or is empty and is dated the Epoch (1970-01-01 00:00:00 +UTC), `diff' outputs a patch that adds or deletes the contents of this +file. When given such a patch, `patch' normally creates a new file or +removes the old file. However, when conforming to POSIX (*note patch +and POSIX::), `patch' does not remove the old file, but leaves it empty. +The `-E' or `--remove-empty-files' option causes `patch' to remove +output files that are empty after applying a patch, even if the patch +does not appear to be one that removed the file. + + If the patch appears to create a file that already exists, `patch' +asks for confirmation before applying the patch. + + +File: diff.info, Node: Patching Time Stamps, Next: Multiple Patches, Prev: Creating and Removing, Up: Merging with patch + +Updating Time Stamps on Patched Files +===================================== + + When `patch' updates a file, it normally sets the file's +last-modified time stamp to the current time of day. If you are using +`patch' to track a software distribution, this can cause `make' to +incorrectly conclude that a patched file is out of date. For example, +if `syntax.c' depends on `syntax.y', and `patch' updates `syntax.c' and +then `syntax.y', then `syntax.c' will normally appear to be out of date +with respect to `syntax.y' even though its contents are actually up to +date. + + The `-Z' or `--set-utc' option causes `patch' to set a patched +file's modification and access times to the time stamps given in +context diff headers. If the context diff headers do not specify a +time zone, they are assumed to use Coordinated Universal Time (UTC, +often known as GMT). + + The `-T' or `--set-time' option acts like `-Z' or `--set-utc', +except that it assumes that the context diff headers' time stamps use +local time instead of UTC. This option is not recommended, because +patches using local time cannot easily be used by people in other time +zones, and because local time stamps are ambiguous when local clocks +move backwards during daylight-saving time adjustments. If the context +diff headers specify a time zone, this option is equivalent to `-Z' or +`--set-utc'. + + `patch' normally refrains from setting a file's time stamps if the +file's original last-modified time stamp does not match the time given +in the diff header, of if the file's contents do not exactly match the +patch. However, if the `-f' or `--force' option is given, the file's +time stamps are set regardless. + + Due to the limitations of the current `diff' format, `patch' cannot +update the times of files whose contents have not changed. Also, if +you set file time stamps to values other than the current time of day, +you should also remove (e.g., with `make clean') all files that depend +on the patched files, so that later invocations of `make' do not get +confused by the patched files' times. + + +File: diff.info, Node: Multiple Patches, Next: patch Directories, Prev: Patching Time Stamps, Up: Merging with patch + +Multiple Patches in a File +========================== + + If the patch file contains more than one patch, and if you do not +specify an input file on the command line, `patch' tries to apply each +patch as if they came from separate patch files. This means that it +determines the name of the file to patch for each patch, and that it +examines the leading text before each patch for file names and +prerequisite revision level (*note Making Patches::, for more on that +topic). + + `patch' uses the following rules to intuit a file name from the +leading text before a patch. First, `patch' takes an ordered list of +candidate file names as follows: + + * If the header is that of a context diff, `patch' takes the old and + new file names in the header. A name is ignored if it does not + have enough slashes to satisfy the `-pNUM' or `--strip=NUM' + option. The name `/dev/null' is also ignored. + + * If there is an `Index:' line in the leading garbage and if either + the old and new names are both absent or if `patch' is conforming + to POSIX, `patch' takes the name in the `Index:' line. + + * For the purpose of the following rules, the candidate file names + are considered to be in the order (old, new, index), regardless of + the order that they appear in the header. + +Then `patch' selects a file name from the candidate list as follows: + + * If some of the named files exist, `patch' selects the first name + if conforming to POSIX, and the best name otherwise. + + * If `patch' is not ignoring RCS, ClearCase, and SCCS (*note + Revision Control::), and no named files exist but an RCS, + ClearCase, or SCCS master is found, `patch' selects the first + named file with an RCS, ClearCase, or SCCS master. + + * If no named files exist, no RCS, ClearCase, or SCCS master was + found, some names are given, `patch' is not conforming to POSIX, + and the patch appears to create a file, `patch' selects the best + name requiring the creation of the fewest directories. + + * If no file name results from the above heuristics, you are asked + for the name of the file to patch, and `patch' selects that name. + + To determine the "best" of a nonempty list of file names, `patch' +first takes all the names with the fewest path name components; of +those, it then takes all the names with the shortest basename; of +those, it then takes all the shortest names; finally, it takes the +first remaining name. + + *Note patch and POSIX::, to see whether `patch' is conforming to +POSIX. + + +File: diff.info, Node: patch Directories, Next: Backups, Prev: Multiple Patches, Up: Merging with patch + +Applying Patches in Other Directories +===================================== + + The `-d DIRECTORY' or `--directory=DIRECTORY' option to `patch' +makes directory DIRECTORY the current directory for interpreting both +file names in the patch file, and file names given as arguments to +other options (such as `-B' and `-o'). For example, while in a mail +reading program, you can patch a file in the `/usr/src/emacs' directory +directly from a message containing the patch like this: + + | patch -d /usr/src/emacs + + Sometimes the file names given in a patch contain leading +directories, but you keep your files in a directory different from the +one given in the patch. In those cases, you can use the `-pNUMBER' or +`--strip=NUMBER' option to set the file name strip count to NUMBER. +The strip count tells `patch' how many slashes, along with the directory +names between them, to strip from the front of file names. A sequence +of one or more adjacent slashes is counted as a single slash. By +default, `patch' strips off all leading directories, leaving just the +base file names. + + For example, suppose the file name in the patch file is +`/gnu/src/emacs/etc/NEWS'. Using `-p0' gives the entire file name +unmodified, `-p1' gives `gnu/src/emacs/etc/NEWS' (no leading slash), +`-p4' gives `etc/NEWS', and not specifying `-p' at all gives `NEWS'. + + `patch' looks for each file (after any slashes have been stripped) +in the current directory, or if you used the `-d DIRECTORY' option, in +that directory. + + +File: diff.info, Node: Backups, Next: Backup Names, Prev: patch Directories, Up: Merging with patch + +Backup Files +============ + + Normally, `patch' creates a backup file if the patch does not +exactly match the original input file, because in that case the +original data might not be recovered if you undo the patch with `patch +-R' (*note Reversed Patches::). However, when conforming to POSIX, +`patch' does not create backup files by default. *Note patch and +POSIX::. + + The `-b' or `--backup' option causes `patch' to make a backup file +regardless of whether the patch matches the original input. The +`--backup-if-mismatch' option causes `patch' to create backup files for +mismatches files; this is the default when not conforming to POSIX. The +`--no-backup-if-mismatch' option causes `patch' to not create backup +files, even for mismatched patches; this is the default when conforming +to POSIX. + + When backing up a file that does not exist, an empty, unreadable +backup file is created as a placeholder to represent the nonexistent +file. + + +File: diff.info, Node: Backup Names, Next: Reject Names, Prev: Backups, Up: Merging with patch + +Backup File Names +================= + + Normally, `patch' renames an original input file into a backup file +by appending to its name the extension `.orig', or `~' if using `.orig' +would make the backup file name too long.(1) The `-z BACKUP-SUFFIX' or +`--suffix=BACKUP-SUFFIX' option causes `patch' to use BACKUP-SUFFIX as +the backup extension instead. + + Alternately, you can specify the extension for backup files with the +`SIMPLE_BACKUP_SUFFIX' environment variable, which the options override. + + `patch' can also create numbered backup files the way GNU Emacs +does. With this method, instead of having a single backup of each file, +`patch' makes a new backup file name each time it patches a file. For +example, the backups of a file named `sink' would be called, +successively, `sink.~1~', `sink.~2~', `sink.~3~', etc. + + The `-V BACKUP-STYLE' or `--version-control=BACKUP-STYLE' option +takes as an argument a method for creating backup file names. You can +alternately control the type of backups that `patch' makes with the +`PATCH_VERSION_CONTROL' environment variable, which the `-V' option +overrides. If `PATCH_VERSION_CONTROL' is not set, the +`VERSION_CONTROL' environment variable is used instead. Please note +that these options and variables control backup file names; they do not +affect the choice of revision control system (*note Revision Control::). + + The values of these environment variables and the argument to the +`-V' option are like the GNU Emacs `version-control' variable (*note +Backup Names: (emacs)Backup Names., for more information on backup +versions in Emacs). They also recognize synonyms that are more +descriptive. The valid values are listed below; unique abbreviations +are acceptable. + +`t' +`numbered' + Always make numbered backups. + +`nil' +`existing' + Make numbered backups of files that already have them, simple + backups of the others. This is the default. + +`never' +`simple' + Always make simple backups. + + You can also tell `patch' to prepend a prefix, such as a directory +name, to produce backup file names. The `-B PREFIX' or +`--prefix=PREFIX' option makes backup files by prepending PREFIX to +them. The `-Y PREFIX' or `--basename-prefix=PREFIX' prepends PREFIX to +the last file name component of backup file names instead; for example, +`-Y ~' causes the backup name for `dir/file.c' to be `dir/~file.c'. If +you use either of these prefix options, the suffix-based options are +ignored. + + If you specify the output file with the `-o' option, that file is +the one that is backed up, not the input file. + + Options that affect the names of backup files do not affect whether +backups are made. For example, if you specify the +`--no-backup-if-mismatch' option, none of the options described in this +section have any affect, because no backups are made. + + ---------- Footnotes ---------- + + (1) A coding error in GNU `patch' version 2.5.4 causes it to always +use `~', but this should be fixed in the next release. + + +File: diff.info, Node: Reject Names, Next: patch Messages, Prev: Backup Names, Up: Merging with patch + +Reject File Names +================= + + The names for reject files (files containing patches that `patch' +could not find a place to apply) are normally the name of the output +file with `.rej' appended (or `#' if if using `.rej' would make the +backup file name too long). + + Alternatively, you can tell `patch' to place all of the rejected +patches in a single file. The `-r REJECT-FILE' or +`--reject-file=REJECT-FILE' option uses REJECT-FILE as the reject file +name. + + +File: diff.info, Node: patch Messages, Next: patch and POSIX, Prev: Reject Names, Up: Merging with patch + +Messages and Questions from `patch' +=================================== + + `patch' can produce a variety of messages, especially if it has +trouble decoding its input. In a few situations where it's not sure +how to proceed, `patch' normally prompts you for more information from +the keyboard. There are options to produce more or fewer messages, to +have it not ask for keyboard input, and to affect the way that file +names are quoted in messages. + +* Menu: + +* More or Fewer Messages:: Controlling the verbosity of `patch'. +* patch and Keyboard Input:: Inhibiting keyboard input. +* patch Quoting Style:: Quoting file names in diagnostics. + + `patch' exits with status 0 if all hunks are applied successfully, 1 +if some hunks cannot be applied, and 2 if there is more serious trouble. +When applying a set of patches in a loop, you should check the exit +status, so you don't apply a later patch to a partially patched file. + + +File: diff.info, Node: More or Fewer Messages, Next: patch and Keyboard Input, Up: patch Messages + +Controlling the Verbosity of `patch' +------------------------------------ + + You can cause `patch' to produce more messages by using the +`--verbose' option. For example, when you give this option, the +message `Hmm...' indicates that `patch' is reading text in the patch +file, attempting to determine whether there is a patch in that text, +and if so, what kind of patch it is. + + You can inhibit all terminal output from `patch', unless an error +occurs, by using the `-s', `--quiet', or `--silent' option. + + +File: diff.info, Node: patch and Keyboard Input, Next: patch Quoting Style, Prev: More or Fewer Messages, Up: patch Messages + +Inhibiting Keyboard Input +------------------------- + + There are two ways you can prevent `patch' from asking you any +questions. The `-f' or `--force' option assumes that you know what you +are doing. It causes `patch' to do the following: + + * Skip patches that do not contain file names in their headers. + + * Patch files even though they have the wrong version for the + `Prereq:' line in the patch; + + * Assume that patches are not reversed even if they look like they + are. + +The `-t' or `--batch' option is similar to `-f', in that it suppresses +questions, but it makes somewhat different assumptions: + + * Skip patches that do not contain file names in their headers (the + same as `-f'). + + * Skip patches for which the file has the wrong version for the + `Prereq:' line in the patch; + + * Assume that patches are reversed if they look like they are. + + +File: diff.info, Node: patch Quoting Style, Prev: patch and Keyboard Input, Up: patch Messages + +`patch' Quoting Style +--------------------- + + When `patch' outputs a file name in a diagnostic message, it can +format the name in any of several ways. This can be useful to output +file names unambiguously, even if they contain punctuation or special +characters like newlines. The `--quoting-style=WORD' option controls +how names are output. The WORD should be one of the following: + +`literal' + Output names as-is. + +`shell' + Quote names for the shell if they contain shell metacharacters or + would cause ambiguous output. + +`shell-always' + Quote names for the shell, even if they would normally not require + quoting. + +`c' + Quote names as for a C language string. + +`escape' + Quote as with `c' except omit the surrounding double-quote + characters. + + You can specify the default value of the `--quoting-style' option +with the environment variable `QUOTING_STYLE'. If that environment +variable is not set, the default value is `shell', but this default may +change in a future version of `patch'. + + +File: diff.info, Node: patch and POSIX, Next: patch and Tradition, Prev: patch Messages, Up: Merging with patch + +`patch' and the POSIX Standard +============================== + + If you specify the `--posix' option, or set the `POSIXLY_CORRECT' +environment variable, `patch' conforms more strictly to the POSIX +standard, as follows: + + * Take the first existing file from the list (old, new, index) when + intuiting file names from diff headers. *Note Multiple Patches::. + + * Do not remove files that are removed by a diff. *Note Creating + and Removing::. + + * Do not ask whether to get files from RCS, ClearCase, or SCCS. + *Note Revision Control::. + + * Require that all options precede the files in the command line. + + * Do not backup files, even when there is a mismatch. *Note + Backups::. + + + +File: diff.info, Node: patch and Tradition, Prev: patch and POSIX, Up: Merging with patch + +GNU `patch' and Traditional `patch' +=================================== + + The current version of GNU `patch' normally follows the POSIX +standard. *Note patch and POSIX::, for the few exceptions to this +general rule. + + Unfortunately, POSIX redefined the behavior of `patch' in several +important ways. You should be aware of the following differences if +you must interoperate with traditional `patch', or with GNU `patch' +version 2.1 and earlier. + + * In traditional `patch', the `-p' option's operand was optional, + and a bare `-p' was equivalent to `-p0'. The `-p' option now + requires an operand, and `-p 0' is now equivalent to `-p0'. For + maximum compatibility, use options like `-p0' and `-p1'. + + Also, traditional `patch' simply counted slashes when stripping + path prefixes; `patch' now counts pathname components. That is, a + sequence of one or more adjacent slashes now counts as a single + slash. For maximum portability, avoid sending patches containing + `//' in file names. + + * In traditional `patch', backups were enabled by default. This + behavior is now enabled with the `-b' or `--backup' option. + + Conversely, in POSIX `patch', backups are never made, even when + there is a mismatch. In GNU `patch', this behavior is enabled + with the `--no-backup-if-mismatch' option, or by conforming to + POSIX. + + The `-b SUFFIX' option of traditional `patch' is equivalent to the + `-b -z SUFFIX' options of GNU `patch'. + + * Traditional `patch' used a complicated (and incompletely + documented) method to intuit the name of the file to be patched + from the patch header. This method did not conform to POSIX, and + had a few gotchas. Now `patch' uses a different, equally + complicated (but better documented) method that is optionally + POSIX-conforming; we hope it has fewer gotchas. The two methods + are compatible if the file names in the context diff header and the + `Index:' line are all identical after prefix-stripping. Your + patch is normally compatible if each header's file names all + contain the same number of slashes. + + * When traditional `patch' asked the user a question, it sent the + question to standard error and looked for an answer from the first + file in the following list that was a terminal: standard error, + standard output, `/dev/tty', and standard input. Now `patch' + sends questions to standard output and gets answers from + `/dev/tty'. Defaults for some answers have been changed so that + `patch' never goes into an infinite loop when using default + answers. + + * Traditional `patch' exited with a status value that counted the + number of bad hunks, or with status 1 if there was real trouble. + Now `patch' exits with status 1 if some hunks failed, or with 2 if + there was real trouble. + + * Limit yourself to the following options when sending instructions + meant to be executed by anyone running GNU `patch', traditional + `patch', or a `patch' that conforms to POSIX. Spaces are + significant in the following list, and operands are required. + + `-c' + `-d DIR' + `-D DEFINE' + `-e' + `-l' + `-n' + `-N' + `-o OUTFILE' + `-pNUM' + `-R' + `-r REJECTFILE' + + + +File: diff.info, Node: Making Patches, Next: Invoking cmp, Prev: Merging with patch, Up: Top + +Tips for Making and Using Patches +********************************* + + Use some common sense when making and using patches. For example, +when sending bug fixes to a program's maintainer, send several small +patches, one per independent subject, instead of one large, +harder-to-digest patch that covers all the subjects. + + Here are some other things you should keep in mind if you are going +to distribute patches for updating a software package. + +* Menu: + +* Tips for Patch Producers:: Advice for making patches. +* Tips for Patch Consumers:: Advice for using patches. +* Avoiding Common Mistakes:: Avoiding common mistakes when using `patch'. +* Generating Smaller Patches:: How to generate smaller patches. + + +File: diff.info, Node: Tips for Patch Producers, Next: Tips for Patch Consumers, Up: Making Patches + +Tips for Patch Producers +======================== + + To create a patch that changes an older version of a package into a +newer version, first make a copy of the older and newer versions in +adjacent subdirectories. It is common to do that by unpacking `tar' +archives of the two versions. + + To generate the patch, use the command `diff -Naur OLD NEW' where +OLD and NEW identify the old and new directories. The names OLD and +NEW should not contain any slashes. The `-N' option lets the patch +create and remove files; `-a' lets the patch update non-text files; `-u' +generates useful time stamps and enough context; and `-r' lets the +patch update subdirectories. Here is an example command, using Bourne +shell syntax: + + diff -Naur gcc-3.0.3 gcc-3.0.4 + + Tell your recipients how to apply the patches. This should include +which working directory to use, and which `patch' options to use; the +option `-p1' is recommended. Test your procedure by pretending to be a +recipient and applying your patches to a copy of the original files. + + *Note Avoiding Common Mistakes::, for how to avoid common mistakes +when generating a patch. + + +File: diff.info, Node: Tips for Patch Consumers, Next: Avoiding Common Mistakes, Prev: Tips for Patch Producers, Up: Making Patches + +Tips for Patch Consumers +======================== + + A patch producer should tell recipients how to apply the patches, so +the first rule of thumb for a patch consumer is to follow the +instructions supplied with the patch. + + GNU `diff' can analyze files with arbitrarily long lines and files +that end in incomplete lines. However, older versions of `patch' +cannot patch such files. If you are having trouble applying such +patches, try upgrading to a recent version of GNU `patch'. + + +File: diff.info, Node: Avoiding Common Mistakes, Next: Generating Smaller Patches, Prev: Tips for Patch Consumers, Up: Making Patches + +Avoiding Common Mistakes +======================== + + When producing a patch for multiple files, apply `diff' to +directories whose names do not have slashes. This reduces confusion +when the patch consumer specifies the `-pNUMBER' option, since this +option can have surprising results when the old and new file names have +different numbers of slashes. For example, do not send a patch with a +header that looks like this: + + diff -Naur v2.0.29/prog/README prog/README + --- v2.0.29/prog/README 2002-03-10 23:30:39.942229878 -0800 + +++ prog/README 2002-03-17 20:49:32.442260588 -0800 + +because the two file names have different numbers of slashes, and +different versions of `patch' interpret the file names differently. To +avoid confusion, send output that looks like this instead: + + diff -Naur v2.0.29/prog/README v2.0.30/prog/README + --- v2.0.29/prog/README 2002-03-10 23:30:39.942229878 -0800 + +++ v2.0.30/prog/README 2002-03-17 20:49:32.442260588 -0800 + + Make sure you have specified the file names correctly, either in a +context diff header or with an `Index:' line. Take care to not send out +reversed patches, since these make people wonder whether they have +already applied the patch. + + Avoid sending patches that compare backup file names like +`README.orig' or `README~', since this might confuse `patch' into +patching a backup file instead of the real file. Instead, send patches +that compare the same base file names in different directories, e.g. +`old/README' and `new/README'. + + To save people from partially applying a patch before other patches +that should have gone before it, you can make the first patch in the +patch file update a file with a name like `patchlevel.h' or +`version.c', which contains a patch level or version number. If the +input file contains the wrong version number, `patch' will complain +immediately. + + An even clearer way to prevent this problem is to put a `Prereq:' +line before the patch. If the leading text in the patch file contains a +line that starts with `Prereq:', `patch' takes the next word from that +line (normally a version number) and checks whether the next input file +contains that word, preceded and followed by either white space or a +newline. If not, `patch' prompts you for confirmation before +proceeding. This makes it difficult to accidentally apply patches in +the wrong order. + + +File: diff.info, Node: Generating Smaller Patches, Prev: Avoiding Common Mistakes, Up: Making Patches + +Generating Smaller Patches +========================== + + The simplest way to generate a patch is to use `diff -Naur' (*note +Tips for Patch Producers::), but you might be able to reduce the size +of the patch by renaming or removing some files before making the +patch. If the older version of the package contains any files that the +newer version does not, or if any files have been renamed between the +two versions, make a list of `rm' and `mv' commands for the user to +execute in the old version directory before applying the patch. Then +run those commands yourself in the scratch directory. + + If there are any files that you don't need to include in the patch +because they can easily be rebuilt from other files (for example, +`TAGS' and output from `yacc' and `makeinfo'), exclude them from the +patch by giving `diff' the `-x PATTERN' option (*note Comparing +Directories::). If you want your patch to modify a derived file +because your recipients lack tools to build it, make sure that the +patch for the derived file follows any patches for files that it +depends on, so that the recipients' time stamps will not confuse `make'. + + Now you can create the patch using `diff -Naur'. Make sure to +specify the scratch directory first and the newer directory second. + + Add to the top of the patch a note telling the user any `rm' and +`mv' commands to run before applying the patch. Then you can remove +the scratch directory. + + You can also shrink the patch size by using fewer lines of context, +but bear in mind that `patch' typically needs at least two lines for +proper operation when patches do not exactly match the input files. + + +File: diff.info, Node: Invoking cmp, Next: Invoking diff, Prev: Making Patches, Up: Top + +Invoking `cmp' +************** + + The `cmp' command compares two files, and if they differ, tells the +first byte and line number where they differ. Bytes and lines are +numbered starting with 1. The arguments of `cmp' are as follows: + + cmp OPTIONS... FROM-FILE [TO-FILE [FROM-SKIP [TO-SKIP]]] + + The file name `-' is always the standard input. `cmp' also uses the +standard input if one file name is omitted. The FROM-SKIP and TO-SKIP +operands specify how many bytes to ignore at the start of each file; +they are equivalent to the `--ignore-initial=FROM-SKIP:TO-SKIP' option. + + An exit status of 0 means no differences were found, 1 means some +differences were found, and 2 means trouble. + +* Menu: + +* cmp Options:: Summary of options to `cmp'. + + +File: diff.info, Node: cmp Options, Up: Invoking cmp + +Options to `cmp' +================ + + Below is a summary of all of the options that GNU `cmp' accepts. +Most options have two equivalent names, one of which is a single letter +preceded by `-', and the other of which is a long name preceded by +`--'. Multiple single letter options (unless they take an argument) +can be combined into a single command line word: `-bl' is equivalent to +`-b -l'. + +`-b' +`--print-bytes' + Print the differing bytes. Display control bytes as a `^' + followed by a letter of the alphabet and precede bytes that have + the high bit set with `M-' (which stands for "meta"). + +`--help' + Output a summary of usage and then exit. + +`-i SKIP' +`--ignore-initial=SKIP' + Ignore any differences in the first SKIP bytes of the input files. + Treat files with fewer than SKIP bytes as if they are empty. If + SKIP is of the form `FROM-SKIP:TO-SKIP', skip the first FROM-SKIP + bytes of the first input file and the first TO-SKIP bytes of the + second. + +`-l' +`--verbose' + Print the (decimal) byte numbers and (octal) values of all + differing bytes. + +`-n COUNT' +`--bytes=COUNT' + Compare at most COUNT input bytes. + +`-s' +`--quiet' +`--silent' + Do not print anything; only return an exit status indicating + whether the files differ. + +`-v' +`--version' + Output version information and then exit. + + In the above table, operands that are byte counts are normally +decimal, but may be preceded by `0' for octal and `0x' for hexadecimal. + + A byte count can be followed by a suffix to specify a multiple of +that count; in this case an omitted integer is understood to be 1. A +bare size letter, or one followed by `iB', specifies a multiple using +powers of 1024. A size letter followed by `B' specifies powers of 1000 +instead. For example, `-n 4M' and `-n 4MiB' are equivalent to `-n +4194304', whereas `-n 4MB' is equivalent to `-n 4000000'. This +notation is upward compatible with the SI prefixes +(http://www.bipm.fr/enus/3_SI/si-prefixes.html) for decimal multiples +and with the IEC 60027-2 prefixes for binary multiples +(http://physics.nist.gov/cuu/Units/binary.html). + + The following suffixes are defined. Large sizes like `1Y' may be +rejected by your computer due to limitations of its arithmetic. + +`kB' + kilobyte: 10^3 = 1000. + +`k' +`K' +`KiB' + kibibyte: 2^10 = 1024. `K' is special: the SI prefix is `k' and + the IEC 60027-2 prefix is `Ki', but tradition and POSIX use `k' to + mean `KiB'. + +`MB' + megabyte: 10^6 = 1,000,000. + +`M' +`MiB' + mebibyte: 2^20 = 1,048,576. + +`GB' + gigabyte: 10^9 = 1,000,000,000. + +`G' +`GiB' + gibibyte: 2^30 = 1,073,741,824. + +`TB' + terabyte: 10^12 = 1,000,000,000,000. + +`T' +`TiB' + tebibyte: 2^40 = 1,099,511,627,776. + +`PB' + petabyte: 10^15 = 1,000,000,000,000,000. + +`P' +`PiB' + pebibyte: 2^50 = 1,125,899,906,842,624. + +`EB' + exabyte: 10^18 = 1,000,000,000,000,000,000. + +`E' +`EiB' + exbibyte: 2^60 = 1,152,921,504,606,846,976. + +`ZB' + zettabyte: 10^21 = 1,000,000,000,000,000,000,000 + +`Z' +`ZiB' + 2^70 = 1,180,591,620,717,411,303,424. (`Zi' is a GNU extension to + IEC 60027-2.) + +`YB' + yottabyte: 10^24 = 1,000,000,000,000,000,000,000,000. + +`Y' +`YiB' + 2^80 = 1,208,925,819,614,629,174,706,176. (`Yi' is a GNU + extension to IEC 60027-2.) + + +File: diff.info, Node: Invoking diff, Next: Invoking diff3, Prev: Invoking cmp, Up: Top + +Invoking `diff' +*************** + + The format for running the `diff' command is: + + diff OPTIONS... FILES... + + In the simplest case, two file names FROM-FILE and TO-FILE are +given, and `diff' compares the contents of FROM-FILE and TO-FILE. A +file name of `-' stands for text read from the standard input. As a +special case, `diff - -' compares a copy of standard input to itself. + + If one file is a directory and the other is not, `diff' compares the +file in the directory whose name is that of the non-directory. The +non-directory file must not be `-'. + + If two file names are given and both are directories, `diff' +compares corresponding files in both directories, in alphabetical +order; this comparison is not recursive unless the `-r' or +`--recursive' option is given. `diff' never compares the actual +contents of a directory as if it were a file. The file that is fully +specified may not be standard input, because standard input is nameless +and the notion of "file with the same name" does not apply. + + If the `--from-file=FILE' option is given, the number of file names +is arbitrary, and FILE is compared to each named file. Similarly, if +the `--to-file=FILE' option is given, each named file is compared to +FILE. + + `diff' options begin with `-', so normally file names may not begin +with `-'. However, `--' as an argument by itself treats the remaining +arguments as file names even if they begin with `-'. + + An exit status of 0 means no differences were found, 1 means some +differences were found, and 2 means trouble. + +* Menu: + +* diff Options:: Summary of options to `diff'. + + +File: diff.info, Node: diff Options, Up: Invoking diff + +Options to `diff' +================= + + Below is a summary of all of the options that GNU `diff' accepts. +Most options have two equivalent names, one of which is a single letter +preceded by `-', and the other of which is a long name preceded by +`--'. Multiple single letter options (unless they take an argument) +can be combined into a single command line word: `-ac' is equivalent to +`-a -c'. Long named options can be abbreviated to any unique prefix of +their name. Brackets ([ and ]) indicate that an option takes an +optional argument. + +`-a' +`--text' + Treat all files as text and compare them line-by-line, even if they + do not seem to be text. *Note Binary::. + +`-b' +`--ignore-space-change' + Ignore changes in amount of white space. *Note White Space::. + +`-B' +`--ignore-blank-lines' + Ignore changes that just insert or delete blank lines. *Note + Blank Lines::. + +`--binary' + Read and write data in binary mode. *Note Binary::. + +`-c' + Use the context output format, showing three lines of context. + *Note Context Format::. + +`-C LINES' +`--context[=LINES]' + Use the context output format, showing LINES (an integer) lines of + context, or three if LINES is not given. *Note Context Format::. + For proper operation, `patch' typically needs at least two lines of + context. + + On older systems, `diff' supports an obsolete option `-LINES' that + has effect when combined with `-c' or `-p'. POSIX 1003.1-2001 + (*note Standards conformance::) does not allow this; use `-C LINES' + instead. + +`--changed-group-format=FORMAT' + Use FORMAT to output a line group containing differing lines from + both files in if-then-else format. *Note Line Group Formats::. + +`-d' +`--minimal' + Change the algorithm perhaps find a smaller set of changes. This + makes `diff' slower (sometimes much slower). *Note diff + Performance::. + +`-D NAME' +`--ifdef=NAME' + Make merged `#ifdef' format output, conditional on the preprocessor + macro NAME. *Note If-then-else::. + +`-e' +`--ed' + Make output that is a valid `ed' script. *Note ed Scripts::. + +`-E' +`--ignore-tab-expansion' + Ignore changes due to tab expansion. *Note White Space::. + +`-f' +`--forward-ed' + Make output that looks vaguely like an `ed' script but has changes + in the order they appear in the file. *Note Forward ed::. + +`-F REGEXP' +`--show-function-line=REGEXP' + In context and unified format, for each hunk of differences, show + some of the last preceding line that matches REGEXP. *Note + Specified Headings::. + +`--from-file=FILE' + Compare FILE to each operand; FILE may be a directory. + +`--help' + Output a summary of usage and then exit. + +`--horizon-lines=LINES' + Do not discard the last LINES lines of the common prefix and the + first LINES lines of the common suffix. *Note diff Performance::. + +`-i' +`--ignore-case' + Ignore changes in case; consider upper- and lower-case letters + equivalent. *Note Case Folding::. + +`-I REGEXP' +`--ignore-matching-lines=REGEXP' + Ignore changes that just insert or delete lines that match REGEXP. + *Note Specified Folding::. + +`--ignore-file-name-case' + Ignore case when comparing file names during recursive comparison. + *Note Comparing Directories::. + +`-l' +`--paginate' + Pass the output through `pr' to paginate it. *Note Pagination::. + +`--label=LABEL' + Use LABEL instead of the file name in the context format (*note + Context Format::) and unified format (*note Unified Format::) + headers. *Note RCS::. + +`--left-column' + Print only the left column of two common lines in side by side + format. *Note Side by Side Format::. + +`--line-format=FORMAT' + Use FORMAT to output all input lines in if-then-else format. + *Note Line Formats::. + +`-n' +`--rcs' + Output RCS-format diffs; like `-f' except that each command + specifies the number of lines affected. *Note RCS::. + +`-N' +`--new-file' + In directory comparison, if a file is found in only one directory, + treat it as present but empty in the other directory. *Note + Comparing Directories::. + +`--new-group-format=FORMAT' + Use FORMAT to output a group of lines taken from just the second + file in if-then-else format. *Note Line Group Formats::. + +`--new-line-format=FORMAT' + Use FORMAT to output a line taken from just the second file in + if-then-else format. *Note Line Formats::. + +`--old-group-format=FORMAT' + Use FORMAT to output a group of lines taken from just the first + file in if-then-else format. *Note Line Group Formats::. + +`--old-line-format=FORMAT' + Use FORMAT to output a line taken from just the first file in + if-then-else format. *Note Line Formats::. + +`-p' +`--show-c-function' + Show which C function each change is in. *Note C Function + Headings::. + +`-q' +`--brief' + Report only whether the files differ, not the details of the + differences. *Note Brief::. + +`-r' +`--recursive' + When comparing directories, recursively compare any subdirectories + found. *Note Comparing Directories::. + +`-s' +`--report-identical-files' + Report when two files are the same. *Note Comparing Directories::. + +`-S FILE' +`--starting-file=FILE' + When comparing directories, start with the file FILE. This is + used for resuming an aborted comparison. *Note Comparing + Directories::. + +`--speed-large-files' + Use heuristics to speed handling of large files that have numerous + scattered small changes. *Note diff Performance::. + +`--strip-trailing-cr' + Strip any trailing carriage return at the end of an input line. + *Note Binary::. + +`--suppress-common-lines' + Do not print common lines in side by side format. *Note Side by + Side Format::. + +`-t' +`--expand-tabs' + Expand tabs to spaces in the output, to preserve the alignment of + tabs in the input files. *Note Tabs::. + +`-T' +`--initial-tab' + Output a tab rather than a space before the text of a line in + normal or context format. This causes the alignment of tabs in + the line to look normal. *Note Tabs::. + +`--to-file=FILE' + Compare each operand to FILE; FILE may be a directory. + +`-u' + Use the unified output format, showing three lines of context. + *Note Unified Format::. + +`--unchanged-group-format=FORMAT' + Use FORMAT to output a group of common lines taken from both files + in if-then-else format. *Note Line Group Formats::. + +`--unchanged-line-format=FORMAT' + Use FORMAT to output a line common to both files in if-then-else + format. *Note Line Formats::. + +`--unidirectional-new-file' + When comparing directories, if a file appears only in the second + directory of the two, treat it as present but empty in the other. + *Note Comparing Directories::. + +`-U LINES' +`--unified[=LINES]' + Use the unified output format, showing LINES (an integer) lines of + context, or three if LINES is not given. *Note Unified Format::. + For proper operation, `patch' typically needs at least two lines of + context. + + On older systems, `diff' supports an obsolete option `-LINES' that + has effect when combined with `-u'. POSIX 1003.1-2001 (*note + Standards conformance::) does not allow this; use `-U LINES' + instead. + +`-v' +`--version' + Output version information and then exit. + +`-w' +`--ignore-all-space' + Ignore white space when comparing lines. *Note White Space::. + +`-W COLUMNS' +`--width=COLUMNS' + Output at most COLUMNS (default 130) print columns per line in + side by side format. *Note Side by Side Format::. + +`-x PATTERN' +`--exclude=PATTERN' + When comparing directories, ignore files and subdirectories whose + basenames match PATTERN. *Note Comparing Directories::. + +`-X FILE' +`--exclude-from=FILE' + When comparing directories, ignore files and subdirectories whose + basenames match any pattern contained in FILE. *Note Comparing + Directories::. + +`-y' +`--side-by-side' + Use the side by side output format. *Note Side by Side Format::. + + +File: diff.info, Node: Invoking diff3, Next: Invoking patch, Prev: Invoking diff, Up: Top + +Invoking `diff3' +**************** + + The `diff3' command compares three files and outputs descriptions of +their differences. Its arguments are as follows: + + diff3 OPTIONS... MINE OLDER YOURS + + The files to compare are MINE, OLDER, and YOURS. At most one of +these three file names may be `-', which tells `diff3' to read the +standard input for that file. + + An exit status of 0 means `diff3' was successful, 1 means some +conflicts were found, and 2 means trouble. + +* Menu: + +* diff3 Options:: Summary of options to `diff3'. + + +File: diff.info, Node: diff3 Options, Up: Invoking diff3 + +Options to `diff3' +================== + + Below is a summary of all of the options that GNU `diff3' accepts. +Multiple single letter options (unless they take an argument) can be +combined into a single command line argument. + +`-a' +`--text' + Treat all files as text and compare them line-by-line, even if they + do not appear to be text. *Note Binary::. + +`-A' +`--show-all' + Incorporate all unmerged changes from OLDER to YOURS into MINE, + surrounding conflicts with bracket lines. *Note Marking + Conflicts::. + +`--diff-program=PROGRAM' + Use the compatible comparison program PROGRAM to compare files + instead of `diff'. + +`-e' +`--ed' + Generate an `ed' script that incorporates all the changes from + OLDER to YOURS into MINE. *Note Which Changes::. + +`-E' +`--show-overlap' + Like `-e', except bracket lines from overlapping changes' first + and third files. *Note Marking Conflicts::. With `-E', an + overlapping change looks like this: + + <<<<<<< MINE + lines from MINE + ======= + lines from YOURS + >>>>>>> YOURS + +`--help' + Output a summary of usage and then exit. + +`-i' + Generate `w' and `q' commands at the end of the `ed' script for + System V compatibility. This option must be combined with one of + the `-AeExX3' options, and may not be combined with `-m'. *Note + Saving the Changed File::. + +`-L LABEL' +`--label=LABEL' + Use the label LABEL for the brackets output by the `-A', `-E' and + `-X' options. This option may be given up to three times, one for + each input file. The default labels are the names of the input + files. Thus `diff3 -L X -L Y -L Z -m A B C' acts like `diff3 -m A + B C', except that the output looks like it came from files named + `X', `Y' and `Z' rather than from files named `A', `B' and `C'. + *Note Marking Conflicts::. + +`-m' +`--merge' + Apply the edit script to the first file and send the result to + standard output. Unlike piping the output from `diff3' to `ed', + this works even for binary files and incomplete lines. `-A' is + assumed if no edit script option is specified. *Note Bypassing + ed::. + +`-T' +`--initial-tab' + Output a tab rather than two spaces before the text of a line in + normal format. This causes the alignment of tabs in the line to + look normal. *Note Tabs::. + +`-v' +`--version' + Output version information and then exit. + +`-x' +`--overlap-only' + Like `-e', except output only the overlapping changes. *Note + Which Changes::. + +`-X' + Like `-E', except output only the overlapping changes. In other + words, like `-x', except bracket changes as in `-E'. *Note + Marking Conflicts::. + +`-3' +`--easy-only' + Like `-e', except output only the nonoverlapping changes. *Note + Which Changes::. + + +File: diff.info, Node: Invoking patch, Next: Invoking sdiff, Prev: Invoking diff3, Up: Top + +Invoking `patch' +**************** + + Normally `patch' is invoked like this: + + patch +to coordinate with other volunteers. + +* Menu: + +* Shortcomings:: Suggested projects for improvements. +* Bugs:: Reporting bugs. + + +File: diff.info, Node: Shortcomings, Next: Bugs, Up: Projects + +Suggested Projects for Improving GNU `diff' and `patch' +======================================================= + + One should be able to use GNU `diff' to generate a patch from any +pair of directory trees, and given the patch and a copy of one such +tree, use `patch' to generate a faithful copy of the other. +Unfortunately, some changes to directory trees cannot be expressed using +current patch formats; also, `patch' does not handle some of the +existing formats. These shortcomings motivate the following suggested +projects. + +* Menu: + +* Internationalization:: Handling multibyte and varying-width characters. +* Changing Structure:: Handling changes to the directory structure. +* Special Files:: Handling symbolic links, device special files, etc. +* Unusual File Names:: Handling file names that contain unusual characters. +* Time Stamp Order:: Outputting diffs in time stamp order. +* Ignoring Changes:: Ignoring certain changes while showing others. +* Speedups:: Improving performance. + + +File: diff.info, Node: Internationalization, Next: Changing Structure, Up: Shortcomings + +Handling Multibyte and Varying-Width Characters +----------------------------------------------- + + `diff', `diff3' and `sdiff' treat each line of input as a string of +unibyte characters. This can mishandle multibyte characters in some +cases. For example, when asked to ignore spaces, `diff' does not +properly ignore a multibyte space character. + + Also, `diff' currently assumes that each byte is one column wide, +and this assumption is incorrect in some locales, e.g., locales that +use UTF-8 encoding. This causes problems with the `-y' or +`--side-by-side' option of `diff'. + + These problems need to be fixed without unduly affecting the +performance of the utilities in unibyte environments. + + The IBM GNU/Linux Technology Center Internationalization Team has +proposed some patches to support internationalized `diff' +`http://oss.software.ibm.com/developer/opensource/linux/patches/i18n/diffutils-2.7.2-i18n-0.1.patch.gz'. +Unfortunately, these patches are incomplete and are to an older version +of `diff', so more work needs to be done in this area. + + +File: diff.info, Node: Changing Structure, Next: Special Files, Prev: Internationalization, Up: Shortcomings + +Handling Changes to the Directory Structure +------------------------------------------- + + `diff' and `patch' do not handle some changes to directory +structure. For example, suppose one directory tree contains a directory +named `D' with some subsidiary files, and another contains a file with +the same name `D'. `diff -r' does not output enough information for +`patch' to transform the directory subtree into the file. + + There should be a way to specify that a file has been removed without +having to include its entire contents in the patch file. There should +also be a way to tell `patch' that a file was renamed, even if there is +no way for `diff' to generate such information. There should be a way +to tell `patch' that a file's time stamp has changed, even if its +contents have not changed. + + These problems can be fixed by extending the `diff' output format to +represent changes in directory structure, and extending `patch' to +understand these extensions. + + +File: diff.info, Node: Special Files, Next: Unusual File Names, Prev: Changing Structure, Up: Shortcomings + +Files that are Neither Directories Nor Regular Files +---------------------------------------------------- + + Some files are neither directories nor regular files: they are +unusual files like symbolic links, device special files, named pipes, +and sockets. Currently, `diff' treats symbolic links like regular +files; it treats other special files like regular files if they are +specified at the top level, but simply reports their presence when +comparing directories. This means that `patch' cannot represent changes +to such files. For example, if you change which file a symbolic link +points to, `diff' outputs the difference between the two files, instead +of the change to the symbolic link. + + `diff' should optionally report changes to special files specially, +and `patch' should be extended to understand these extensions. + + +File: diff.info, Node: Unusual File Names, Next: Time Stamp Order, Prev: Special Files, Up: Shortcomings + +File Names that Contain Unusual Characters +------------------------------------------ + + When a file name contains an unusual character like a newline or +white space, `diff -r' generates a patch that `patch' cannot parse. +The problem is with format of `diff' output, not just with `patch', +because with odd enough file names one can cause `diff' to generate a +patch that is syntactically correct but patches the wrong files. The +format of `diff' output should be extended to handle all possible file +names. + + +File: diff.info, Node: Time Stamp Order, Next: Ignoring Changes, Prev: Unusual File Names, Up: Shortcomings + +Outputting Diffs in Time Stamp Order +------------------------------------ + + Applying `patch' to a multiple-file diff can result in files whose +time stamps are out of order. GNU `patch' has options to restore the +time stamps of the updated files (*note Patching Time Stamps::), but +sometimes it is useful to generate a patch that works even if the +recipient does not have GNU patch, or does not use these options. One +way to do this would be to implement a `diff' option to output diffs in +time stamp order. + + +File: diff.info, Node: Ignoring Changes, Next: Speedups, Prev: Time Stamp Order, Up: Shortcomings + +Ignoring Certain Changes +------------------------ + + It would be nice to have a feature for specifying two strings, one in +FROM-FILE and one in TO-FILE, which should be considered to match. +Thus, if the two strings are `foo' and `bar', then if two lines differ +only in that `foo' in file 1 corresponds to `bar' in file 2, the lines +are treated as identical. + + It is not clear how general this feature can or should be, or what +syntax should be used for it. + + A partial substitute is to filter one or both files before comparing, +e.g.: + + sed 's/foo/bar/g' file1 | diff - file2 + + However, this outputs the filtered text, not the original. + + +File: diff.info, Node: Speedups, Prev: Ignoring Changes, Up: Shortcomings + +Improving Performance +--------------------- + + When comparing two large directory structures, one of which was +originally copied from the other with time stamps preserved (e.g., with +`cp -pR'), it would greatly improve performance if an option told +`diff' to assume that two files with the same size and time stamps have +the same content. *Note diff Performance::. + + +File: diff.info, Node: Bugs, Prev: Shortcomings, Up: Projects + +Reporting Bugs +============== + + If you think you have found a bug in GNU `cmp', `diff', `diff3', or +`sdiff', please report it by electronic mail to the GNU utilities bug +report mailing list +(http://mail.gnu.org/mailman/listinfo/bug-gnu-utils) +. Please send bug reports for GNU `patch' to +. Send as precise a description of the problem as +you can, including the output of the `--version' option and sample +input files that produce the bug, if applicable. If you have a +nontrivial fix for the bug, please send it as well. If you have a +patch, please send it too. It may simplify the maintainer's job if the +patch is relative to a recent test release, which you can find in the +directory `ftp://alpha.gnu.org/gnu/diffutils/'. + + +File: diff.info, Node: Copying This Manual, Next: Index, Prev: Projects, Up: Top + +Copying This Manual +******************* + +* Menu: + +* GNU Free Documentation License:: License for copying this manual. + + +File: diff.info, Node: GNU Free Documentation License, Up: Copying This Manual + +GNU Free Documentation License +============================== + + Version 1.1, March 2000 + Copyright (C) 2000 Free Software Foundation, Inc. + 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA + + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + 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 "Acknowledgments" or "Dedications", + preserve the section's title, and preserve in the section all + the substance and tone of each of the contributor + acknowledgments 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 + "Acknowledgments", 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. + +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. + + +File: diff.info, Node: Index, Prev: Copying This Manual, Up: Top + +Index +***** + +* Menu: + +* ! output format: Context. +* +- output format: Unified Format. +* < output format: Normal. +* <<<<<<< for marking conflicts: Marking Conflicts. +* _POSIX2_VERSION: Standards conformance. +* aligning tab stops: Tabs. +* alternate file names: Alternate Names. +* backup file names: Backup Names. +* backup file strategy: Backups. +* binary file diff: Binary. +* blank and tab difference suppression: White Space. +* blank line difference suppression: Blank Lines. +* brief difference reports: Brief. +* bug reports: Bugs. +* C function headings: C Function Headings. +* C if-then-else output format: If-then-else. +* case difference suppression: Case Folding. +* ClearCase: Revision Control. +* cmp invocation: Invoking cmp. +* cmp options: cmp Options. +* columnar output: Side by Side. +* common mistakes with patches: Avoiding Common Mistakes. +* comparing three files: Comparing Three Files. +* conflict: diff3 Merging. +* conflict marking: Marking Conflicts. +* context output format: Context. +* creating files: Creating and Removing. +* diagnostics from patch: patch Messages. +* diff invocation: Invoking diff. +* diff merging: Interactive Merging. +* diff options: diff Options. +* diff sample input: Sample diff Input. +* diff3 hunks: diff3 Hunks. +* diff3 invocation: Invoking diff3. +* diff3 options: diff3 Options. +* diff3 sample input: Sample diff3 Input. +* directories and patch: patch Directories. +* directory structure changes: Changing Structure. +* dry runs for patch: Dry Runs. +* ed script output format: ed Scripts. +* EDITOR: Merge Commands. +* empty files, removing: Creating and Removing. +* exabyte, definition of: cmp Options. +* exbibyte, definition of: cmp Options. +* FDL, GNU Free Documentation License: GNU Free Documentation License. +* file name alternates: Alternate Names. +* file names with unusual characters: Unusual File Names. +* format of diff output: Output Formats. +* format of diff3 output: Comparing Three Files. +* formats for if-then-else line groups: Line Group Formats. +* forward ed script output format: Forward ed. +* full lines: Incomplete Lines. +* function headings, C: C Function Headings. +* fuzz factor when patching: Inexact. +* gibibyte, definition of: cmp Options. +* gigabyte, definition of: cmp Options. +* headings: Sections. +* hunks: Hunks. +* hunks for diff3: diff3 Hunks. +* if-then-else output format: If-then-else. +* ifdef output format: If-then-else. +* imperfect patch application: Imperfect. +* incomplete line merging: Merging Incomplete Lines. +* incomplete lines: Incomplete Lines. +* inexact patches: Inexact. +* inhibit messages from patch: More or Fewer Messages. +* interactive merging: Interactive Merging. +* introduction: Comparison. +* intuiting file names from patches: Multiple Patches. +* invoking cmp: Invoking cmp. +* invoking diff: Invoking diff. +* invoking diff3: Invoking diff3. +* invoking patch: Invoking patch. +* invoking sdiff: Invoking sdiff. +* keyboard input to patch: patch and Keyboard Input. +* kibibyte, definition of: cmp Options. +* kilobyte, definition of: cmp Options. +* LC_COLLATE: Comparing Directories. +* LC_NUMERIC: Line Group Formats. +* LC_TIME: Detailed Context. +* line formats: Line Formats. +* line group formats: Line Group Formats. +* mebibyte, definition of: cmp Options. +* megabyte, definition of: cmp Options. +* merge commands: Merge Commands. +* merged diff3 format: Bypassing ed. +* merged output format: If-then-else. +* merging from a common ancestor: diff3 Merging. +* merging interactively: Merge Commands. +* messages from patch: patch Messages. +* multibyte characters: Internationalization. +* multiple patches: Multiple Patches. +* newline treatment by diff: Incomplete Lines. +* normal output format: Normal. +* options for cmp: cmp Options. +* options for diff: diff Options. +* options for diff3: diff3 Options. +* options for patch: patch Options. +* options for sdiff: sdiff Options. +* output formats: Output Formats. +* overlap: diff3 Merging. +* overlapping change, selection of: Which Changes. +* overview of diff and patch: Overview. +* paginating diff output: Pagination. +* patch consumer tips: Tips for Patch Consumers. +* patch input format: patch Input. +* patch invocation: Invoking patch. +* patch messages and questions: patch Messages. +* patch options: patch Options. +* patch producer tips: Tips for Patch Producers. +* patch, common mistakes: Avoiding Common Mistakes. +* PATCH_GET: Revision Control. +* PATCH_VERSION_CONTROL: Backup Names. +* patches, shrinking: Generating Smaller Patches. +* patching directories: patch Directories. +* pebibyte, definition of: cmp Options. +* performance of diff: diff Performance. +* petabyte, definition of: cmp Options. +* POSIX <1>: Standards conformance. +* POSIX: patch and POSIX. +* POSIXLY_CORRECT <1>: patch and POSIX. +* POSIXLY_CORRECT: Standards conformance. +* projects for directories: Shortcomings. +* quoting style: patch Quoting Style. +* QUOTING_STYLE: patch Quoting Style. +* RCS: Revision Control. +* RCS script output format: RCS. +* regular expression matching headings: Specified Headings. +* regular expression suppression: Specified Folding. +* reject file names: Reject Names. +* removing empty files: Creating and Removing. +* reporting bugs: Bugs. +* reversed patches: Reversed Patches. +* revision control: Revision Control. +* sample input for diff: Sample diff Input. +* sample input for diff3: Sample diff3 Input. +* SCCS: Revision Control. +* script output formats: Scripts. +* sdiff invocation: Invoking sdiff. +* sdiff options: sdiff Options. +* sdiff output format: sdiff Option Summary. +* section headings: Sections. +* side by side: Side by Side. +* side by side format: Side by Side Format. +* SIMPLE_BACKUP_SUFFIX: Backup Names. +* special files: Special Files. +* specified headings: Specified Headings. +* summarizing which files differ: Brief. +* System V diff3 compatibility: Saving the Changed File. +* tab and blank difference suppression: White Space. +* tab stop alignment: Tabs. +* tebibyte, definition of: cmp Options. +* terabyte, definition of: cmp Options. +* testing patch: Dry Runs. +* text versus binary diff: Binary. +* time stamp format, context diffs: Detailed Context. +* time stamp format, unified diffs: Detailed Unified. +* time stamps on patched files: Patching Time Stamps. +* traditional patch: patch and Tradition. +* two-column output: Side by Side. +* unified output format: Unified Format. +* unmerged change: Which Changes. +* varying-width characters: Internationalization. +* verbose messages from patch: More or Fewer Messages. +* version control: Revision Control. +* VERSION_CONTROL <1>: Backup Names. +* VERSION_CONTROL: Revision Control. +* white space in patches: Changed White Space. +* yottabyte, definition of: cmp Options. +* zettabyte, definition of: cmp Options. + + + +Tag Table: +Node: Top1653 +Node: Overview4045 +Node: Comparison7202 +Node: Hunks9888 +Node: White Space11313 +Node: Blank Lines12807 +Node: Case Folding13562 +Node: Specified Folding13977 +Node: Brief15052 +Node: Binary16295 +Node: Output Formats20358 +Node: Sample diff Input21076 +Node: Normal22569 +Node: Detailed Normal23564 +Node: Example Normal25289 +Node: Context26011 +Node: Context Format27567 +Node: Detailed Context28345 +Node: Example Context30234 +Node: Less Context31748 +Node: Unified Format32894 +Node: Detailed Unified33676 +Node: Example Unified34787 +Node: Sections35807 +Node: Specified Headings36552 +Node: C Function Headings38083 +Node: Alternate Names38908 +Node: Side by Side39808 +Node: Side by Side Format41947 +Node: Example Side by Side42836 +Node: Scripts44162 +Node: ed Scripts44563 +Node: Detailed ed45756 +Node: Example ed47497 +Node: Forward ed47934 +Node: RCS48696 +Node: If-then-else49904 +Node: Line Group Formats51572 +Node: Line Formats57437 +Node: Detailed If-then-else60693 +Node: Example If-then-else62583 +Node: Incomplete Lines63632 +Node: Comparing Directories65263 +Node: Adjusting Output69220 +Node: Tabs69645 +Node: Pagination71177 +Node: diff Performance71626 +Node: Comparing Three Files74708 +Node: Sample diff3 Input75580 +Node: Detailed diff3 Normal76528 +Node: diff3 Hunks78307 +Node: Example diff3 Normal79593 +Node: diff3 Merging80616 +Node: Which Changes82854 +Node: Marking Conflicts84258 +Node: Bypassing ed86714 +Node: Merging Incomplete Lines88068 +Node: Saving the Changed File88784 +Node: Interactive Merging89390 +Node: sdiff Option Summary90094 +Node: Merge Commands91242 +Node: Merging with patch92503 +Node: patch Input94867 +Node: Revision Control95537 +Node: Imperfect96689 +Node: Changed White Space97825 +Node: Reversed Patches98606 +Node: Inexact100056 +Node: Dry Runs103599 +Node: Creating and Removing104447 +Node: Patching Time Stamps105486 +Node: Multiple Patches107677 +Node: patch Directories110328 +Node: Backups111942 +Node: Backup Names112996 +Ref: Backup Names-Footnote-1115955 +Node: Reject Names116082 +Node: patch Messages116660 +Node: More or Fewer Messages117706 +Node: patch and Keyboard Input118319 +Node: patch Quoting Style119332 +Node: patch and POSIX120464 +Node: patch and Tradition121290 +Node: Making Patches124734 +Node: Tips for Patch Producers125552 +Node: Tips for Patch Consumers126796 +Node: Avoiding Common Mistakes127421 +Node: Generating Smaller Patches129934 +Node: Invoking cmp131683 +Node: cmp Options132532 +Node: Invoking diff135896 +Node: diff Options137599 +Node: Invoking diff3145722 +Node: diff3 Options146352 +Node: Invoking patch149255 +Node: patch Options150455 +Node: Invoking sdiff155669 +Node: sdiff Options156808 +Node: Standards conformance159561 +Node: Projects161299 +Node: Shortcomings162002 +Node: Internationalization163092 +Node: Changing Structure164247 +Node: Special Files165336 +Node: Unusual File Names166282 +Node: Time Stamp Order166904 +Node: Ignoring Changes167531 +Node: Speedups168285 +Node: Bugs168733 +Node: Copying This Manual169574 +Node: GNU Free Documentation License169782 +Node: Index189646 + +End Tag Table diff --git a/src/apps/bin/diffutils-2.8.1/doc/diff.texi b/src/apps/bin/diffutils-2.8.1/doc/diff.texi new file mode 100644 index 0000000000..fe20fd55f9 --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/doc/diff.texi @@ -0,0 +1,4556 @@ +\input texinfo @c -*-texinfo-*- +@comment $Id: diff.texi,v 1.1 2004/03/02 00:45:49 michaelphipps Exp $ +@comment %**start of header +@setfilename diff.info +@include version.texi +@settitle Comparing and Merging Files +@syncodeindex vr cp +@setchapternewpage odd +@comment %**end of header +@copying +This manual is for GNU Diffutils +(version @value{VERSION}, @value{UPDATED}), +and documents the @sc{gnu} @command{diff}, @command{diff3}, +@command{sdiff}, and @command{cmp} commands for showing the +differences between files and the @sc{gnu} @command{patch} command for +using their output to update files. + +Copyright @copyright{} 1992, 1993, 1994, 1998, 2001, 2002 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 the Front-Cover texts being ``A GNU Manual,'' +and with the Back-Cover Texts as in (a) below. A copy of the +license is included in the section entitled ``GNU Free Documentation +License.'' + +(a) The FSF's Back-Cover Text is: ``You have freedom to copy and modify +this GNU Manual, like GNU software. Copies published by the Free +Software Foundation raise funds for GNU development.'' +@end quotation +@end copying + +@c Debian install-info (up through at least version 1.9.20) uses only the +@c first dircategory. Put this one first, as it is more useful in practice. +@dircategory Individual utilities +@direntry +* cmp: (diff)Invoking cmp. Compare 2 files byte by byte. +* diff: (diff)Invoking diff. Compare 2 files line by line. +* diff3: (diff)Invoking diff3. Compare 3 files line by line. +* patch: (diff)Invoking patch. Apply a patch to a file. +* sdiff: (diff)Invoking sdiff. Merge 2 files side-by-side. +@end direntry + +@dircategory GNU packages +@direntry +* Diff: (diff). Comparing and merging files. +@end direntry + +@titlepage +@title Comparing and Merging Files +@subtitle for Diffutils @value{VERSION} and @code{patch} 2.5.4 +@subtitle @value{UPDATED} +@author David MacKenzie, Paul Eggert, and Richard Stallman +@page +@vskip 0pt plus 1filll +@insertcopying +@end titlepage + +@shortcontents +@contents + +@ifnottex +@node Top +@top Comparing and Merging Files + +@insertcopying +@end ifnottex + +@menu +* Overview:: Preliminary information. +* Comparison:: What file comparison means. + +* Output Formats:: Formats for two-way difference reports. +* Incomplete Lines:: Lines that lack trailing newlines. +* Comparing Directories:: Comparing files and directories. +* Adjusting Output:: Making @command{diff} output prettier. +* diff Performance:: Making @command{diff} smarter or faster. + +* Comparing Three Files:: Formats for three-way difference reports. +* diff3 Merging:: Merging from a common ancestor. + +* Interactive Merging:: Interactive merging with @command{sdiff}. + +* Merging with patch:: Using @command{patch} to change old files into new ones. +* Making Patches:: Tips for making and using patch distributions. + +* Invoking cmp:: Compare two files byte by byte. +* Invoking diff:: Compare two files line by line. +* Invoking diff3:: Compare three files line by line. +* Invoking patch:: Apply a diff file to an original. +* Invoking sdiff:: Side-by-side merge of file differences. + +* Standards conformance:: Conformance to the @sc{posix} standard. +* Projects:: If you've found a bug or other shortcoming. + +* Copying This Manual:: How to make copies of this manual. +* Index:: Index. +@end menu + +@node Overview +@unnumbered Overview +@cindex overview of @command{diff} and @command{patch} + +Computer users often find occasion to ask how two files differ. Perhaps +one file is a newer version of the other file. Or maybe the two files +started out as identical copies but were changed by different people. + +You can use the @command{diff} command to show differences between two +files, or each corresponding file in two directories. @command{diff} +outputs differences between files line by line in any of several +formats, selectable by command line options. This set of differences is +often called a @dfn{diff} or @dfn{patch}. For files that are identical, +@command{diff} normally produces no output; for binary (non-text) files, +@command{diff} normally reports only that they are different. + +You can use the @command{cmp} command to show the byte and line numbers +where two files differ. @command{cmp} can also show all the bytes +that differ between the two files, side by side. A way to compare +two files character by character is the Emacs command @kbd{M-x +compare-windows}. @xref{Other Window, , Other Window, emacs, The @sc{gnu} +Emacs Manual}, for more information on that command. + +You can use the @command{diff3} command to show differences among three +files. When two people have made independent changes to a common +original, @command{diff3} can report the differences between the original +and the two changed versions, and can produce a merged file that +contains both persons' changes together with warnings about conflicts. + +You can use the @command{sdiff} command to merge two files interactively. + +You can use the set of differences produced by @command{diff} to distribute +updates to text files (such as program source code) to other people. +This method is especially useful when the differences are small compared +to the complete files. Given @command{diff} output, you can use the +@command{patch} program to update, or @dfn{patch}, a copy of the file. If you +think of @command{diff} as subtracting one file from another to produce +their difference, you can think of @command{patch} as adding the difference +to one file to reproduce the other. + +This manual first concentrates on making diffs, and later shows how to +use diffs to update files. + +@sc{gnu} @command{diff} was written by Paul Eggert, Mike Haertel, +David Hayes, Richard Stallman, and Len Tower. Wayne Davison designed and +implemented the unified output format. The basic algorithm is described +in ``An O(ND) Difference Algorithm and its Variations'', Eugene W. Myers, +@cite{Algorithmica} Vol.@: 1 No.@: 2, 1986, pp.@: 251--266; and in ``A File +Comparison Program'', Webb Miller and Eugene W. Myers, +@cite{Software---Practice and Experience} Vol.@: 15 No.@: 11, 1985, +pp.@: 1025--1040. +@c From: "Gene Myers" +@c They are about the same basic algorithm; the Algorithmica +@c paper gives a rigorous treatment and the sub-algorithm for +@c delivering scripts and should be the primary reference, but +@c both should be mentioned. +The algorithm was independently discovered as described in +``Algorithms for Approximate String Matching'', +E. Ukkonen, @cite{Information and Control} Vol.@: 64, 1985, pp.@: 100--118. +@c From: "Gene Myers" +@c Date: Wed, 29 Sep 1993 08:27:55 MST +@c Ukkonen should be given credit for also discovering the algorithm used +@c in GNU diff. + +@sc{gnu} @command{diff3} was written by Randy Smith. @sc{gnu} +@command{sdiff} was written by Thomas Lord. @sc{gnu} @command{cmp} +was written by Torbjorn Granlund and David MacKenzie. + +@command{patch} was written mainly by Larry Wall and Paul Eggert; +several @sc{gnu} enhancements were contributed by Wayne Davison and +David MacKenzie. Parts of this manual are adapted from a manual page +written by Larry Wall, with his permission. + +@node Comparison +@chapter What Comparison Means +@cindex introduction + +There are several ways to think about the differences between two files. +One way to think of the differences is as a series of lines that were +deleted from, inserted in, or changed in one file to produce the other +file. @command{diff} compares two files line by line, finds groups of +lines that differ, and reports each group of differing lines. It can +report the differing lines in several formats, which have different +purposes. + +@sc{gnu} @command{diff} can show whether files are different without detailing +the differences. It also provides ways to suppress certain kinds of +differences that are not important to you. Most commonly, such +differences are changes in the amount of white space between words or +lines. @command{diff} also provides ways to suppress differences in +alphabetic case or in lines that match a regular expression that you +provide. These options can accumulate; for example, you can ignore +changes in both white space and alphabetic case. + +Another way to think of the differences between two files is as a +sequence of pairs of bytes that can be either identical or +different. @command{cmp} reports the differences between two files +byte by byte, instead of line by line. As a result, it is often +more useful than @command{diff} for comparing binary files. For text +files, @command{cmp} is useful mainly when you want to know only whether +two files are identical, or whether one file is a prefix of the other. + +To illustrate the effect that considering changes byte by byte +can have compared with considering them line by line, think of what +happens if a single newline character is added to the beginning of a +file. If that file is then compared with an otherwise identical file +that lacks the newline at the beginning, @command{diff} will report that a +blank line has been added to the file, while @command{cmp} will report that +almost every byte of the two files differs. + +@command{diff3} normally compares three input files line by line, finds +groups of lines that differ, and reports each group of differing lines. +Its output is designed to make it easy to inspect two different sets of +changes to the same file. + +@menu +* Hunks:: Groups of differing lines. +* White Space:: Suppressing differences in white space. +* Blank Lines:: Suppressing differences in blank lines. +* Case Folding:: Suppressing differences in alphabetic case. +* Specified Folding:: Suppressing differences that match regular expressions. +* Brief:: Summarizing which files are different. +* Binary:: Comparing binary files or forcing text comparisons. +@end menu + +@node Hunks +@section Hunks +@cindex hunks + +When comparing two files, @command{diff} finds sequences of lines common to +both files, interspersed with groups of differing lines called +@dfn{hunks}. Comparing two identical files yields one sequence of +common lines and no hunks, because no lines differ. Comparing two +entirely different files yields no common lines and one large hunk that +contains all lines of both files. In general, there are many ways to +match up lines between two given files. @command{diff} tries to minimize +the total hunk size by finding large sequences of common lines +interspersed with small hunks of differing lines. + +For example, suppose the file @file{F} contains the three lines +@samp{a}, @samp{b}, @samp{c}, and the file @file{G} contains the same +three lines in reverse order @samp{c}, @samp{b}, @samp{a}. If +@command{diff} finds the line @samp{c} as common, then the command +@samp{diff F G} produces this output: + +@example +1,2d0 +< a +< b +3a2,3 +> b +> a +@end example + +@noindent +But if @command{diff} notices the common line @samp{b} instead, it produces +this output: + +@example +1c1 +< a +--- +> c +3c3 +< c +--- +> a +@end example + +@noindent +It is also possible to find @samp{a} as the common line. @command{diff} +does not always find an optimal matching between the files; it takes +shortcuts to run faster. But its output is usually close to the +shortest possible. You can adjust this tradeoff with the +@option{--minimal} option (@pxref{diff Performance}). + +@node White Space +@section Suppressing Differences in Blank and Tab Spacing +@cindex blank and tab difference suppression +@cindex tab and blank difference suppression + +The @option{-E} and @option{--ignore-tab-expansion} options ignore the +distinction between tabs and spaces on input. A tab is considered to be +equivalent to the number of spaces to the next tab stop. @command{diff} +assumes that tab stops are set every 8 print columns. + +The @option{-b} and @option{--ignore-space-change} options are stronger. +They ignore white space at line end, and consider all other sequences of +one or more white space characters to be equivalent. With these +options, @command{diff} considers the following two lines to be equivalent, +where @samp{$} denotes the line end: + +@example +Here lyeth muche rychnesse in lytell space. -- John Heywood$ +Here lyeth muche rychnesse in lytell space. -- John Heywood $ +@end example + +The @option{-w} and @option{--ignore-all-space} options are stronger still. +They ignore difference even if one line has white space where +the other line has none. @dfn{White space} characters include +tab, newline, vertical tab, form feed, carriage return, and space; +some locales may define additional characters to be white space. +With these options, @command{diff} considers the +following two lines to be equivalent, where @samp{$} denotes the line +end and @samp{^M} denotes a carriage return: + +@example +Here lyeth muche rychnesse in lytell space.-- John Heywood$ + He relyeth much erychnes seinly tells pace. --John Heywood ^M$ +@end example + +@node Blank Lines +@section Suppressing Differences in Blank Lines +@cindex blank line difference suppression + +The @option{-B} and @option{--ignore-blank-lines} options ignore insertions +or deletions of blank lines. These options affect only lines +that are completely empty; they do not affect lines that look empty but +contain space or tab characters. With these options, for example, a +file containing +@example +1. A point is that which has no part. + +2. A line is breadthless length. +-- Euclid, The Elements, I +@end example +@noindent +is considered identical to a file containing +@example +1. A point is that which has no part. +2. A line is breadthless length. + + +-- Euclid, The Elements, I +@end example + +@node Case Folding +@section Suppressing Case Differences +@cindex case difference suppression + +@sc{gnu} @command{diff} can treat lower case letters as equivalent to their +upper case counterparts, so that, for example, it considers @samp{Funky +Stuff}, @samp{funky STUFF}, and @samp{fUNKy stuFf} to all be the same. +To request this, use the @option{-i} or @option{--ignore-case} option. + +@node Specified Folding +@section Suppressing Lines Matching a Regular Expression +@cindex regular expression suppression + +To ignore insertions and deletions of lines that match a +@command{grep}-style regular expression, use the @option{-I +@var{regexp}} or @option{--ignore-matching-lines=@var{regexp}} option. +You should escape +regular expressions that contain shell metacharacters to prevent the +shell from expanding them. For example, @samp{diff -I '^[[:digit:]]'} ignores +all changes to lines beginning with a digit. + +However, @option{-I} only ignores the insertion or deletion of lines that +contain the regular expression if every changed line in the hunk---every +insertion and every deletion---matches the regular expression. In other +words, for each nonignorable change, @command{diff} prints the complete set +of changes in its vicinity, including the ignorable ones. + +You can specify more than one regular expression for lines to ignore by +using more than one @option{-I} option. @command{diff} tries to match each +line against each regular expression. + +@node Brief +@section Summarizing Which Files Differ +@cindex summarizing which files differ +@cindex brief difference reports + +When you only want to find out whether files are different, and you +don't care what the differences are, you can use the summary output +format. In this format, instead of showing the differences between the +files, @command{diff} simply reports whether files differ. The @option{-q} +and @option{--brief} options select this output format. + +This format is especially useful when comparing the contents of two +directories. It is also much faster than doing the normal line by line +comparisons, because @command{diff} can stop analyzing the files as soon as +it knows that there are any differences. + +You can also get a brief indication of whether two files differ by using +@command{cmp}. For files that are identical, @command{cmp} produces no +output. When the files differ, by default, @command{cmp} outputs the byte +and line number where the first difference occurs. You can use +the @option{-s} option to suppress that information, so that @command{cmp} +produces no output and reports whether the files differ using only its +exit status (@pxref{Invoking cmp}). + +@c Fix this. +Unlike @command{diff}, @command{cmp} cannot compare directories; it can only +compare two files. + +@node Binary +@section Binary Files and Forcing Text Comparisons +@cindex binary file diff +@cindex text versus binary diff + +If @command{diff} thinks that either of the two files it is comparing is +binary (a non-text file), it normally treats that pair of files much as +if the summary output format had been selected (@pxref{Brief}), and +reports only that the binary files are different. This is because line +by line comparisons are usually not meaningful for binary files. + +@command{diff} determines whether a file is text or binary by checking the +first few bytes in the file; the exact number of bytes is system +dependent, but it is typically several thousand. If every byte in +that part of the file is non-null, @command{diff} considers the file to be +text; otherwise it considers the file to be binary. + +Sometimes you might want to force @command{diff} to consider files to be +text. For example, you might be comparing text files that contain +null characters; @command{diff} would erroneously decide that those are +non-text files. Or you might be comparing documents that are in a +format used by a word processing system that uses null characters to +indicate special formatting. You can force @command{diff} to consider all +files to be text files, and compare them line by line, by using the +@option{-a} or @option{--text} option. If the files you compare using this +option do not in fact contain text, they will probably contain few +newline characters, and the @command{diff} output will consist of hunks +showing differences between long lines of whatever characters the files +contain. + +You can also force @command{diff} to consider all files to be binary files, +and report only whether they differ (but not how). Use the +@option{-q} or @option{--brief} option for this. + +Differing binary files are considered to cause trouble because the +resulting @command{diff} output does not capture all the differences. +This trouble causes @command{diff} to exit with status 2. However, +this trouble cannot occur with the @option{--a} or @option{--text} +option, or with the @option{-q} or @option{--brief} option, as these +options both cause @command{diff} to treat binary files like text +files. + +In operating systems that distinguish between text and binary files, +@command{diff} normally reads and writes all data as text. Use the +@option{--binary} option to force @command{diff} to read and write binary +data instead. This option has no effect on a @sc{posix}-compliant system +like @sc{gnu} or traditional Unix. However, many personal computer +operating systems represent the end of a line with a carriage return +followed by a newline. On such systems, @command{diff} normally ignores +these carriage returns on input and generates them at the end of each +output line, but with the @option{--binary} option @command{diff} treats +each carriage return as just another input character, and does not +generate a carriage return at the end of each output line. This can be +useful when dealing with non-text files that are meant to be +interchanged with @sc{posix}-compliant systems. + +The @option{--strip-trailing-cr} causes @command{diff} to treat input +lines that end in carriage return followed by newline as if they end +in plain newline. This can be useful when comparing text that is +imperfectly imported from many personal computer operating systems. +This option affects how lines are read, which in turn affects how they +are compared and output. + +If you want to compare two files byte by byte, you can use the +@command{cmp} program with the @option{-l} option to show the values +of each differing byte in the two files. With @sc{gnu} @command{cmp}, +you can also use the @option{-b} option to show the @sc{ascii} +representation of those bytes. @xref{Invoking cmp}, for more +information. + +If @command{diff3} thinks that any of the files it is comparing is binary +(a non-text file), it normally reports an error, because such +comparisons are usually not useful. @command{diff3} uses the same test as +@command{diff} to decide whether a file is binary. As with @command{diff}, if +the input files contain a few non-text bytes but otherwise are like +text files, you can force @command{diff3} to consider all files to be text +files and compare them line by line by using the @option{-a} or +@option{--text} options. + +@node Output Formats +@chapter @command{diff} Output Formats +@cindex output formats +@cindex format of @command{diff} output + +@command{diff} has several mutually exclusive options for output format. +The following sections describe each format, illustrating how +@command{diff} reports the differences between two sample input files. + +@menu +* Sample diff Input:: Sample @command{diff} input files for examples. +* Normal:: Showing differences without surrounding text. +* Context:: Showing differences with the surrounding text. +* Side by Side:: Showing differences in two columns. +* Scripts:: Generating scripts for other programs. +* If-then-else:: Merging files with if-then-else. +@end menu + +@node Sample diff Input +@section Two Sample Input Files +@cindex @command{diff} sample input +@cindex sample input for @command{diff} + +Here are two sample files that we will use in numerous examples to +illustrate the output of @command{diff} and how various options can change +it. + +This is the file @file{lao}: + +@example +The Way that can be told of is not the eternal Way; +The name that can be named is not the eternal name. +The Nameless is the origin of Heaven and Earth; +The Named is the mother of all things. +Therefore let there always be non-being, + so we may see their subtlety, +And let there always be being, + so we may see their outcome. +The two are the same, +But after they are produced, + they have different names. +@end example + +This is the file @file{tzu}: + +@example +The Nameless is the origin of Heaven and Earth; +The named is the mother of all things. + +Therefore let there always be non-being, + so we may see their subtlety, +And let there always be being, + so we may see their outcome. +The two are the same, +But after they are produced, + they have different names. +They both may be called deep and profound. +Deeper and more profound, +The door of all subtleties! +@end example + +In this example, the first hunk contains just the first two lines of +@file{lao}, the second hunk contains the fourth line of @file{lao} +opposing the second and third lines of @file{tzu}, and the last hunk +contains just the last three lines of @file{tzu}. + +@node Normal +@section Showing Differences Without Context +@cindex normal output format +@cindex @samp{<} output format + +The ``normal'' @command{diff} output format shows each hunk of differences +without any surrounding context. Sometimes such output is the clearest +way to see how lines have changed, without the clutter of nearby +unchanged lines (although you can get similar results with the context +or unified formats by using 0 lines of context). However, this format +is no longer widely used for sending out patches; for that purpose, the +context format (@pxref{Context Format}) and the unified format +(@pxref{Unified Format}) are superior. Normal format is the default for +compatibility with older versions of @command{diff} and the @sc{posix} +standard. Use the @option{--normal} option to select this output +format explicitly. + +@menu +* Detailed Normal:: A detailed description of normal output format. +* Example Normal:: Sample output in the normal format. +@end menu + +@node Detailed Normal +@subsection Detailed Description of Normal Format + +The normal output format consists of one or more hunks of differences; +each hunk shows one area where the files differ. Normal format hunks +look like this: + +@example +@var{change-command} +< @var{from-file-line} +< @var{from-file-line}@dots{} +--- +> @var{to-file-line} +> @var{to-file-line}@dots{} +@end example + +There are three types of change commands. Each consists of a line +number or comma-separated range of lines in the first file, a single +character indicating the kind of change to make, and a line number or +comma-separated range of lines in the second file. All line numbers are +the original line numbers in each file. The types of change commands +are: + +@table @samp +@item @var{l}a@var{r} +Add the lines in range @var{r} of the second file after line @var{l} of +the first file. For example, @samp{8a12,15} means append lines 12--15 +of file 2 after line 8 of file 1; or, if changing file 2 into file 1, +delete lines 12--15 of file 2. + +@item @var{f}c@var{t} +Replace the lines in range @var{f} of the first file with lines in range +@var{t} of the second file. This is like a combined add and delete, but +more compact. For example, @samp{5,7c8,10} means change lines 5--7 of +file 1 to read as lines 8--10 of file 2; or, if changing file 2 into +file 1, change lines 8--10 of file 2 to read as lines 5--7 of file 1. + +@item @var{r}d@var{l} +Delete the lines in range @var{r} from the first file; line @var{l} is where +they would have appeared in the second file had they not been deleted. +For example, @samp{5,7d3} means delete lines 5--7 of file 1; or, if +changing file 2 into file 1, append lines 5--7 of file 1 after line 3 of +file 2. +@end table + +@node Example Normal +@subsection An Example of Normal Format + +Here is the output of the command @samp{diff lao tzu} +(@pxref{Sample diff Input}, for the complete contents of the two files). +Notice that it shows only the lines that are different between the two +files. + +@example +1,2d0 +< The Way that can be told of is not the eternal Way; +< The name that can be named is not the eternal name. +4c2,3 +< The Named is the mother of all things. +--- +> The named is the mother of all things. +> +11a11,13 +> They both may be called deep and profound. +> Deeper and more profound, +> The door of all subtleties! +@end example + +@node Context +@section Showing Differences in Their Context +@cindex context output format +@cindex @samp{!} output format + +Usually, when you are looking at the differences between files, you will +also want to see the parts of the files near the lines that differ, to +help you understand exactly what has changed. These nearby parts of the +files are called the @dfn{context}. + +@sc{gnu} @command{diff} provides two output formats that show context +around the differing lines: @dfn{context format} and @dfn{unified +format}. It can optionally show in which function or section of the +file the differing lines are found. + +If you are distributing new versions of files to other people in the +form of @command{diff} output, you should use one of the output formats +that show context so that they can apply the diffs even if they have +made small changes of their own to the files. @command{patch} can apply +the diffs in this case by searching in the files for the lines of +context around the differing lines; if those lines are actually a few +lines away from where the diff says they are, @command{patch} can adjust +the line numbers accordingly and still apply the diff correctly. +@xref{Imperfect}, for more information on using @command{patch} to apply +imperfect diffs. + +@menu +* Context Format:: An output format that shows surrounding lines. +* Unified Format:: A more compact output format that shows context. +* Sections:: Showing which sections of the files differences are in. +* Alternate Names:: Showing alternate file names in context headers. +@end menu + +@node Context Format +@subsection Context Format + +The context output format shows several lines of context around the +lines that differ. It is the standard format for distributing updates +to source code. + +To select this output format, use the @option{-C @var{lines}}, +@option{--context@r{[}=@var{lines}@r{]}}, or @option{-c} option. The +argument @var{lines} that some of these options take is the number of +lines of context to show. If you do not specify @var{lines}, it +defaults to three. For proper operation, @command{patch} typically needs +at least two lines of context. + +@menu +* Detailed Context:: A detailed description of the context output format. +* Example Context:: Sample output in context format. +* Less Context:: Another sample with less context. +@end menu + +@node Detailed Context +@subsubsection Detailed Description of Context Format + +The context output format starts with a two-line header, which looks +like this: + +@example +*** @var{from-file} @var{from-file-modification-time} +--- @var{to-file} @var{to-file-modification time} +@end example + +@noindent +@vindex LC_TIME +@cindex time stamp format, context diffs +The time stamp normally looks like @samp{2002-02-21 23:30:39.942229878 +-0800} to indicate the date, time with fractional seconds, and time +zone in @uref{ftp://ftp.isi.edu/in-notes/rfc2822.txt, Internet RFC +2822 format}. However, a traditional time stamp like @samp{Thu Feb 21 +23:30:39 2002} is used if the @env{LC_TIME} locale category is either +@samp{C} or @samp{POSIX}. + +You can change the header's content with the +@option{--label=@var{label}} option; see @ref{Alternate Names}. + +Next come one or more hunks of differences; each hunk shows one area +where the files differ. Context format hunks look like this: + +@example +*************** +*** @var{from-file-line-range} **** + @var{from-file-line} + @var{from-file-line}@dots{} +--- @var{to-file-line-range} ---- + @var{to-file-line} + @var{to-file-line}@dots{} +@end example + +The lines of context around the lines that differ start with two space +characters. The lines that differ between the two files start with one +of the following indicator characters, followed by a space character: + +@table @samp +@item ! +A line that is part of a group of one or more lines that changed between +the two files. There is a corresponding group of lines marked with +@samp{!} in the part of this hunk for the other file. + +@item + +An ``inserted'' line in the second file that corresponds to nothing in +the first file. + +@item - +A ``deleted'' line in the first file that corresponds to nothing in the +second file. +@end table + +If all of the changes in a hunk are insertions, the lines of +@var{from-file} are omitted. If all of the changes are deletions, the +lines of @var{to-file} are omitted. + +@node Example Context +@subsubsection An Example of Context Format + +Here is the output of @samp{diff -c lao tzu} (@pxref{Sample diff Input}, +for the complete contents of the two files). Notice that up to three +lines that are not different are shown around each line that is +different; they are the context lines. Also notice that the first two +hunks have run together, because their contents overlap. + +@example +*** lao 2002-02-21 23:30:39.942229878 -0800 +--- tzu 2002-02-21 23:30:50.442260588 -0800 +*************** +*** 1,7 **** +- The Way that can be told of is not the eternal Way; +- The name that can be named is not the eternal name. + The Nameless is the origin of Heaven and Earth; +! The Named is the mother of all things. + Therefore let there always be non-being, + so we may see their subtlety, + And let there always be being, +--- 1,6 ---- + The Nameless is the origin of Heaven and Earth; +! The named is the mother of all things. +! + Therefore let there always be non-being, + so we may see their subtlety, + And let there always be being, +*************** +*** 9,11 **** +--- 8,13 ---- + The two are the same, + But after they are produced, + they have different names. ++ They both may be called deep and profound. ++ Deeper and more profound, ++ The door of all subtleties! +@end example + +@node Less Context +@subsubsection An Example of Context Format with Less Context + +Here is the output of @samp{diff -C 1 lao tzu} (@pxref{Sample diff +Input}, for the complete contents of the two files). Notice that at +most one context line is reported here. + +@example +*** lao 2002-02-21 23:30:39.942229878 -0800 +--- tzu 2002-02-21 23:30:50.442260588 -0800 +*************** +*** 1,5 **** +- The Way that can be told of is not the eternal Way; +- The name that can be named is not the eternal name. + The Nameless is the origin of Heaven and Earth; +! The Named is the mother of all things. + Therefore let there always be non-being, +--- 1,4 ---- + The Nameless is the origin of Heaven and Earth; +! The named is the mother of all things. +! + Therefore let there always be non-being, +*************** +*** 11 **** +--- 10,13 ---- + they have different names. ++ They both may be called deep and profound. ++ Deeper and more profound, ++ The door of all subtleties! +@end example + +@node Unified Format +@subsection Unified Format +@cindex unified output format +@cindex @samp{+-} output format + +The unified output format is a variation on the context format that is +more compact because it omits redundant context lines. To select this +output format, use the @option{-U @var{lines}}, +@option{--unified@r{[}=@var{lines}@r{]}}, or @option{-u} +option. The argument @var{lines} is the number of lines of context to +show. When it is not given, it defaults to three. + +At present, only @sc{gnu} @command{diff} can produce this format and +only @sc{gnu} @command{patch} can automatically apply diffs in this +format. For proper operation, @command{patch} typically needs at +least three lines of context. + +@menu +* Detailed Unified:: A detailed description of unified format. +* Example Unified:: Sample output in unified format. +@end menu + +@node Detailed Unified +@subsubsection Detailed Description of Unified Format + +The unified output format starts with a two-line header, which looks +like this: + +@example +--- @var{from-file} @var{from-file-modification-time} ++++ @var{to-file} @var{to-file-modification-time} +@end example + +@noindent +@cindex time stamp format, unified diffs +The time stamp looks like @samp{2002-02-21 23:30:39.942229878 -0800} +to indicate the date, time with fractional seconds, and time zone. + +You can change the header's content with the +@option{--label=@var{label}} option; see @xref{Alternate Names}. + +Next come one or more hunks of differences; each hunk shows one area +where the files differ. Unified format hunks look like this: + +@example +@@@@ @var{from-file-range} @var{to-file-range} @@@@ + @var{line-from-either-file} + @var{line-from-either-file}@dots{} +@end example + +The lines common to both files begin with a space character. The lines +that actually differ between the two files have one of the following +indicator characters in the left print column: + +@table @samp +@item + +A line was added here to the first file. + +@item - +A line was removed here from the first file. +@end table + +@node Example Unified +@subsubsection An Example of Unified Format + +Here is the output of the command @samp{diff -u lao tzu} +(@pxref{Sample diff Input}, for the complete contents of the two files): + +@example +--- lao 2002-02-21 23:30:39.942229878 -0800 ++++ tzu 2002-02-21 23:30:50.442260588 -0800 +@@@@ -1,7 +1,6 @@@@ +-The Way that can be told of is not the eternal Way; +-The name that can be named is not the eternal name. + The Nameless is the origin of Heaven and Earth; +-The Named is the mother of all things. ++The named is the mother of all things. ++ + Therefore let there always be non-being, + so we may see their subtlety, + And let there always be being, +@@@@ -9,3 +8,6 @@@@ + The two are the same, + But after they are produced, + they have different names. ++They both may be called deep and profound. ++Deeper and more profound, ++The door of all subtleties! +@end example + +@node Sections +@subsection Showing Which Sections Differences Are in +@cindex headings +@cindex section headings + +Sometimes you might want to know which part of the files each change +falls in. If the files are source code, this could mean which function +was changed. If the files are documents, it could mean which chapter or +appendix was changed. @sc{gnu} @command{diff} can show this by displaying the +nearest section heading line that precedes the differing lines. Which +lines are ``section headings'' is determined by a regular expression. + +@menu +* Specified Headings:: Showing headings that match regular expressions. +* C Function Headings:: Showing headings of C functions. +@end menu + +@node Specified Headings +@subsubsection Showing Lines That Match Regular Expressions +@cindex specified headings +@cindex regular expression matching headings + +To show in which sections differences occur for files that are not +source code for C or similar languages, use the @option{-F @var{regexp}} +or @option{--show-function-line=@var{regexp}} option. @command{diff} +considers lines that match the @command{grep}-style regular expression +@var{regexp} to be the beginning +of a section of the file. Here are suggested regular expressions for +some common languages: + +@c Please add to this list, e.g. Fortran, Pascal, Perl, Python. +@table @samp +@item ^[[:alpha:]$_] +C, C++, Prolog +@item ^( +Lisp +@item ^@@node +Texinfo +@end table + +This option does not automatically select an output format; in order to +use it, you must select the context format (@pxref{Context Format}) or +unified format (@pxref{Unified Format}). In other output formats it +has no effect. + +The @option{-F} and @option{--show-function-line} options find the nearest +unchanged line that precedes each hunk of differences and matches the +given regular expression. Then they add that line to the end of the +line of asterisks in the context format, or to the @samp{@@@@} line in +unified format. If no matching line exists, they leave the output for +that hunk unchanged. If that line is more than 40 characters long, they +output only the first 40 characters. You can specify more than one +regular expression for such lines; @command{diff} tries to match each line +against each regular expression, starting with the last one given. This +means that you can use @option{-p} and @option{-F} together, if you wish. + +@node C Function Headings +@subsubsection Showing C Function Headings +@cindex C function headings +@cindex function headings, C + +To show in which functions differences occur for C and similar +languages, you can use the @option{-p} or @option{--show-c-function} option. +This option automatically defaults to the context output format +(@pxref{Context Format}), with the default number of lines of context. +You can override that number with @option{-C @var{lines}} elsewhere in the +command line. You can override both the format and the number with +@option{-U @var{lines}} elsewhere in the command line. + +The @option{-p} and @option{--show-c-function} options are equivalent to +@option{-F '^[[:alpha:]$_]'} if the unified format is specified, otherwise +@option{-c -F '^[[:alpha:]$_]'} (@pxref{Specified Headings}). @sc{gnu} +@command{diff} provides them for the sake of convenience. + +@node Alternate Names +@subsection Showing Alternate File Names +@cindex alternate file names +@cindex file name alternates + +If you are comparing two files that have meaningless or uninformative +names, you might want @command{diff} to show alternate names in the header +of the context and unified output formats. To do this, use the +@option{--label=@var{label}} option. The first time +you give this option, its argument replaces the name and date of the +first file in the header; the second time, its argument replaces the +name and date of the second file. If you give this option more than +twice, @command{diff} reports an error. The @option{--label} option does not +affect the file names in the @command{pr} header when the @option{-l} or +@option{--paginate} option is used (@pxref{Pagination}). + +Here are the first two lines of the output from @samp{diff -C 2 +--label=original --label=modified lao tzu}: + +@example +*** original +--- modified +@end example + +@node Side by Side +@section Showing Differences Side by Side +@cindex side by side +@cindex two-column output +@cindex columnar output + +@command{diff} can produce a side by side difference listing of two files. +The files are listed in two columns with a gutter between them. The +gutter contains one of the following markers: + +@table @asis +@item white space +The corresponding lines are in common. That is, either the lines are +identical, or the difference is ignored because of one of the +@option{--ignore} options (@pxref{White Space}). + +@item @samp{|} +The corresponding lines differ, and they are either both complete +or both incomplete. + +@item @samp{<} +The files differ and only the first file contains the line. + +@item @samp{>} +The files differ and only the second file contains the line. + +@item @samp{(} +Only the first file contains the line, but the difference is ignored. + +@item @samp{)} +Only the second file contains the line, but the difference is ignored. + +@item @samp{\} +The corresponding lines differ, and only the first line is incomplete. + +@item @samp{/} +The corresponding lines differ, and only the second line is incomplete. +@end table + +Normally, an output line is incomplete if and only if the lines that it +contains are incomplete; @xref{Incomplete Lines}. However, when an +output line represents two differing lines, one might be incomplete +while the other is not. In this case, the output line is complete, +but its the gutter is marked @samp{\} if the first line is incomplete, +@samp{/} if the second line is. + +Side by side format is sometimes easiest to read, but it has limitations. +It generates much wider output than usual, and truncates lines that are +too long to fit. Also, it relies on lining up output more heavily than +usual, so its output looks particularly bad if you use varying +width fonts, nonstandard tab stops, or nonprinting characters. + +You can use the @command{sdiff} command to interactively merge side by side +differences. @xref{Interactive Merging}, for more information on merging files. + +@menu +* Side by Side Format:: Controlling side by side output format. +* Example Side by Side:: Sample side by side output. +@end menu + +@node Side by Side Format +@subsection Controlling Side by Side Format +@cindex side by side format + +The @option{-y} or @option{--side-by-side} option selects side by side +format. Because side by side output lines contain two input lines, the +output is wider than usual: normally 130 print columns, which can fit +onto a traditional printer line. You can set the width of the output +with the @option{-W @var{columns}} or @option{--width=@var{columns}} +option. The output is split into two halves of equal width, separated by a +small gutter to mark differences; the right half is aligned to a tab +stop so that tabs line up. Input lines that are too long to fit in half +of an output line are truncated for output. + +The @option{--left-column} option prints only the left column of two +common lines. The @option{--suppress-common-lines} option suppresses +common lines entirely. + +@node Example Side by Side +@subsection An Example of Side by Side Format + +Here is the output of the command @samp{diff -y -W 72 lao tzu} +(@pxref{Sample diff Input}, for the complete contents of the two files). + +@example +The Way that can be told of is n < +The name that can be named is no < +The Nameless is the origin of He The Nameless is the origin of He +The Named is the mother of all t | The named is the mother of all t + > +Therefore let there always be no Therefore let there always be no + so we may see their subtlety, so we may see their subtlety, +And let there always be being, And let there always be being, + so we may see their outcome. so we may see their outcome. +The two are the same, The two are the same, +But after they are produced, But after they are produced, + they have different names. they have different names. + > They both may be called deep and + > Deeper and more profound, + > The door of all subtleties! +@end example + +@node Scripts +@section Making Edit Scripts +@cindex script output formats + +Several output modes produce command scripts for editing @var{from-file} +to produce @var{to-file}. + +@menu +* ed Scripts:: Using @command{diff} to produce commands for @command{ed}. +* Forward ed:: Making forward @command{ed} scripts. +* RCS:: A special @command{diff} output format used by @sc{rcs}. +@end menu + +@node ed Scripts +@subsection @command{ed} Scripts +@cindex @command{ed} script output format + +@command{diff} can produce commands that direct the @command{ed} text editor +to change the first file into the second file. Long ago, this was the +only output mode that was suitable for editing one file into another +automatically; today, with @command{patch}, it is almost obsolete. Use the +@option{-e} or @option{--ed} option to select this output format. + +Like the normal format (@pxref{Normal}), this output format does not +show any context; unlike the normal format, it does not include the +information necessary to apply the diff in reverse (to produce the first +file if all you have is the second file and the diff). + +If the file @file{d} contains the output of @samp{diff -e old new}, then +the command @samp{(cat d && echo w) | ed - old} edits @file{old} to make +it a copy of @file{new}. More generally, if @file{d1}, @file{d2}, +@dots{}, @file{dN} contain the outputs of @samp{diff -e old new1}, +@samp{diff -e new1 new2}, @dots{}, @samp{diff -e newN-1 newN}, +respectively, then the command @samp{(cat d1 d2 @dots{} dN && echo w) | +ed - old} edits @file{old} to make it a copy of @file{newN}. + +@menu +* Detailed ed:: A detailed description of @command{ed} format. +* Example ed:: A sample @command{ed} script. +@end menu + +@node Detailed ed +@subsubsection Detailed Description of @command{ed} Format + +The @command{ed} output format consists of one or more hunks of +differences. The changes closest to the ends of the files come first so +that commands that change the number of lines do not affect how +@command{ed} interprets line numbers in succeeding commands. @command{ed} +format hunks look like this: + +@example +@var{change-command} +@var{to-file-line} +@var{to-file-line}@dots{} +. +@end example + +Because @command{ed} uses a single period on a line to indicate the end of +input, @sc{gnu} @command{diff} protects lines of changes that contain a single +period on a line by writing two periods instead, then writing a +subsequent @command{ed} command to change the two periods into one. The +@command{ed} format cannot represent an incomplete line, so if the second +file ends in a changed incomplete line, @command{diff} reports an error and +then pretends that a newline was appended. + +There are three types of change commands. Each consists of a line +number or comma-separated range of lines in the first file and a single +character indicating the kind of change to make. All line numbers are +the original line numbers in the file. The types of change commands +are: + +@table @samp +@item @var{l}a +Add text from the second file after line @var{l} in the first file. For +example, @samp{8a} means to add the following lines after line 8 of file +1. + +@item @var{r}c +Replace the lines in range @var{r} in the first file with the following +lines. Like a combined add and delete, but more compact. For example, +@samp{5,7c} means change lines 5--7 of file 1 to read as the text file +2. + +@item @var{r}d +Delete the lines in range @var{r} from the first file. For example, +@samp{5,7d} means delete lines 5--7 of file 1. +@end table + +@node Example ed +@subsubsection Example @command{ed} Script + +Here is the output of @samp{diff -e lao tzu} (@pxref{Sample +diff Input}, for the complete contents of the two files): + +@example +11a +They both may be called deep and profound. +Deeper and more profound, +The door of all subtleties! +. +4c +The named is the mother of all things. + +. +1,2d +@end example + +@node Forward ed +@subsection Forward @command{ed} Scripts +@cindex forward @command{ed} script output format + +@command{diff} can produce output that is like an @command{ed} script, but +with hunks in forward (front to back) order. The format of the commands +is also changed slightly: command characters precede the lines they +modify, spaces separate line numbers in ranges, and no attempt is made +to disambiguate hunk lines consisting of a single period. Like +@command{ed} format, forward @command{ed} format cannot represent incomplete +lines. + +Forward @command{ed} format is not very useful, because neither @command{ed} +nor @command{patch} can apply diffs in this format. It exists mainly for +compatibility with older versions of @command{diff}. Use the @option{-f} or +@option{--forward-ed} option to select it. + +@node RCS +@subsection @sc{rcs} Scripts +@cindex @sc{rcs} script output format + +The @sc{rcs} output format is designed specifically for use by the Revision +Control System, which is a set of free programs used for organizing +different versions and systems of files. Use the @option{-n} or +@option{--rcs} option to select this output format. It is like the +forward @command{ed} format (@pxref{Forward ed}), but it can represent +arbitrary changes to the contents of a file because it avoids the +forward @command{ed} format's problems with lines consisting of a single +period and with incomplete lines. Instead of ending text sections with +a line consisting of a single period, each command specifies the number +of lines it affects; a combination of the @samp{a} and @samp{d} +commands are used instead of @samp{c}. Also, if the second file ends +in a changed incomplete line, then the output also ends in an +incomplete line. + +Here is the output of @samp{diff -n lao tzu} (@pxref{Sample +diff Input}, for the complete contents of the two files): + +@example +d1 2 +d4 1 +a4 2 +The named is the mother of all things. + +a11 3 +They both may be called deep and profound. +Deeper and more profound, +The door of all subtleties! +@end example + +@node If-then-else +@section Merging Files with If-then-else +@cindex merged output format +@cindex if-then-else output format +@cindex C if-then-else output format +@cindex @command{ifdef} output format + +You can use @command{diff} to merge two files of C source code. The output +of @command{diff} in this format contains all the lines of both files. +Lines common to both files are output just once; the differing parts are +separated by the C preprocessor directives @code{#ifdef @var{name}} or +@code{#ifndef @var{name}}, @code{#else}, and @code{#endif}. When +compiling the output, you select which version to use by either defining +or leaving undefined the macro @var{name}. + +To merge two files, use @command{diff} with the @option{-D @var{name}} or +@option{--ifdef=@var{name}} option. The argument @var{name} is the C +preprocessor identifier to use in the @code{#ifdef} and @code{#ifndef} +directives. + +For example, if you change an instance of @code{wait (&s)} to +@code{waitpid (-1, &s, 0)} and then merge the old and new files with +the @option{--ifdef=HAVE_WAITPID} option, then the affected part of your code +might look like this: + +@example + do @{ +#ifndef HAVE_WAITPID + if ((w = wait (&s)) < 0 && errno != EINTR) +#else /* HAVE_WAITPID */ + if ((w = waitpid (-1, &s, 0)) < 0 && errno != EINTR) +#endif /* HAVE_WAITPID */ + return w; + @} while (w != child); +@end example + +You can specify formats for languages other than C by using line group +formats and line formats, as described in the next sections. + +@menu +* Line Group Formats:: Formats for general if-then-else line groups. +* Line Formats:: Formats for each line in a line group. +* Detailed If-then-else:: A detailed description of if-then-else format. +* Example If-then-else:: Sample if-then-else format output. +@end menu + +@node Line Group Formats +@subsection Line Group Formats +@cindex line group formats +@cindex formats for if-then-else line groups + +Line group formats let you specify formats suitable for many +applications that allow if-then-else input, including programming +languages and text formatting languages. A line group format specifies +the output format for a contiguous group of similar lines. + +For example, the following command compares the TeX files @file{old} +and @file{new}, and outputs a merged file in which old regions are +surrounded by @samp{\begin@{em@}}-@samp{\end@{em@}} lines, and new +regions are surrounded by @samp{\begin@{bf@}}-@samp{\end@{bf@}} lines. + +@example +diff \ + --old-group-format='\begin@{em@} +%<\end@{em@} +' \ + --new-group-format='\begin@{bf@} +%>\end@{bf@} +' \ + old new +@end example + +The following command is equivalent to the above example, but it is a +little more verbose, because it spells out the default line group formats. + +@example +diff \ + --old-group-format='\begin@{em@} +%<\end@{em@} +' \ + --new-group-format='\begin@{bf@} +%>\end@{bf@} +' \ + --unchanged-group-format='%=' \ + --changed-group-format='\begin@{em@} +%<\end@{em@} +\begin@{bf@} +%>\end@{bf@} +' \ + old new +@end example + +Here is a more advanced example, which outputs a diff listing with +headers containing line numbers in a ``plain English'' style. + +@example +diff \ + --unchanged-group-format='' \ + --old-group-format='-------- %dn line%(n=1?:s) deleted at %df: +%<' \ + --new-group-format='-------- %dN line%(N=1?:s) added after %de: +%>' \ + --changed-group-format='-------- %dn line%(n=1?:s) changed at %df: +%<-------- to: +%>' \ + old new +@end example + +To specify a line group format, use @command{diff} with one of the options +listed below. You can specify up to four line group formats, one for +each kind of line group. You should quote @var{format}, because it +typically contains shell metacharacters. + +@table @option +@item --old-group-format=@var{format} +These line groups are hunks containing only lines from the first file. +The default old group format is the same as the changed group format if +it is specified; otherwise it is a format that outputs the line group as-is. + +@item --new-group-format=@var{format} +These line groups are hunks containing only lines from the second +file. The default new group format is same as the changed group +format if it is specified; otherwise it is a format that outputs the +line group as-is. + +@item --changed-group-format=@var{format} +These line groups are hunks containing lines from both files. The +default changed group format is the concatenation of the old and new +group formats. + +@item --unchanged-group-format=@var{format} +These line groups contain lines common to both files. The default +unchanged group format is a format that outputs the line group as-is. +@end table + +In a line group format, ordinary characters represent themselves; +conversion specifications start with @samp{%} and have one of the +following forms. + +@table @samp +@item %< +stands for the lines from the first file, including the trailing newline. +Each line is formatted according to the old line format (@pxref{Line Formats}). + +@item %> +stands for the lines from the second file, including the trailing newline. +Each line is formatted according to the new line format. + +@item %= +stands for the lines common to both files, including the trailing newline. +Each line is formatted according to the unchanged line format. + +@item %% +stands for @samp{%}. + +@item %c'@var{C}' +where @var{C} is a single character, stands for @var{C}. +@var{C} may not be a backslash or an apostrophe. +For example, @samp{%c':'} stands for a colon, even inside +the then-part of an if-then-else format, which a colon would +normally terminate. + +@item %c'\@var{O}' +where @var{O} is a string of 1, 2, or 3 octal digits, +stands for the character with octal code @var{O}. +For example, @samp{%c'\0'} stands for a null character. + +@item @var{F}@var{n} +where @var{F} is a @code{printf} conversion specification and @var{n} is one +of the following letters, stands for @var{n}'s value formatted with @var{F}. + +@table @samp +@item e +The line number of the line just before the group in the old file. + +@item f +The line number of the first line in the group in the old file; +equals @var{e} + 1. + +@item l +The line number of the last line in the group in the old file. + +@item m +The line number of the line just after the group in the old file; +equals @var{l} + 1. + +@item n +The number of lines in the group in the old file; equals @var{l} - @var{f} + 1. + +@item E, F, L, M, N +Likewise, for lines in the new file. + +@end table + +@vindex LC_NUMERIC +The @code{printf} conversion specification can be @samp{%d}, +@samp{%o}, @samp{%x}, or @samp{%X}, specifying decimal, octal, +lower case hexadecimal, or upper case hexadecimal output +respectively. After the @samp{%} the following options can appear in +sequence: a series of zero or more flags; an integer +specifying the minimum field width; and a period followed by an +optional integer specifying the minimum number of digits. +The flags are @samp{-} for left-justification, @samp{'} for separating +the digit into groups as specified by the @env{LC_NUMERIC} locale category, +and @samp{0} for padding with zeros instead of spaces. +For example, @samp{%5dN} prints the number of new lines in the group +in a field of width 5 characters, using the @code{printf} format @code{"%5d"}. + +@item (@var{A}=@var{B}?@var{T}:@var{E}) +If @var{A} equals @var{B} then @var{T} else @var{E}. +@var{A} and @var{B} are each either a decimal constant +or a single letter interpreted as above. +This format spec is equivalent to @var{T} if +@var{A}'s value equals @var{B}'s; otherwise it is equivalent to @var{E}. + +For example, @samp{%(N=0?no:%dN) line%(N=1?:s)} is equivalent to +@samp{no lines} if @var{N} (the number of lines in the group in the the +new file) is 0, to @samp{1 line} if @var{N} is 1, and to @samp{%dN lines} +otherwise. +@end table + +@node Line Formats +@subsection Line Formats +@cindex line formats + +Line formats control how each line taken from an input file is +output as part of a line group in if-then-else format. + +For example, the following command outputs text with a one-character +change indicator to the left of the text. The first character of output +is @samp{-} for deleted lines, @samp{|} for added lines, and a space for +unchanged lines. The formats contain newline characters where newlines +are desired on output. + +@example +diff \ + --old-line-format='-%l +' \ + --new-line-format='|%l +' \ + --unchanged-line-format=' %l +' \ + old new +@end example + +To specify a line format, use one of the following options. You should +quote @var{format}, since it often contains shell metacharacters. + +@table @option +@item --old-line-format=@var{format} +formats lines just from the first file. + +@item --new-line-format=@var{format} +formats lines just from the second file. + +@item --unchanged-line-format=@var{format} +formats lines common to both files. + +@item --line-format=@var{format} +formats all lines; in effect, it sets all three above options simultaneously. +@end table + +In a line format, ordinary characters represent themselves; +conversion specifications start with @samp{%} and have one of the +following forms. + +@table @samp +@item %l +stands for the contents of the line, not counting its trailing +newline (if any). This format ignores whether the line is incomplete; +@xref{Incomplete Lines}. + +@item %L +stands for the contents of the line, including its trailing newline +(if any). If a line is incomplete, this format preserves its +incompleteness. + +@item %% +stands for @samp{%}. + +@item %c'@var{C}' +where @var{C} is a single character, stands for @var{C}. +@var{C} may not be a backslash or an apostrophe. +For example, @samp{%c':'} stands for a colon. + +@item %c'\@var{O}' +where @var{O} is a string of 1, 2, or 3 octal digits, +stands for the character with octal code @var{O}. +For example, @samp{%c'\0'} stands for a null character. + +@item @var{F}n +where @var{F} is a @code{printf} conversion specification, +stands for the line number formatted with @var{F}. +For example, @samp{%.5dn} prints the line number using the +@code{printf} format @code{"%.5d"}. @xref{Line Group Formats}, for +more about printf conversion specifications. + +@end table + +The default line format is @samp{%l} followed by a newline character. + +If the input contains tab characters and it is important that they line +up on output, you should ensure that @samp{%l} or @samp{%L} in a line +format is just after a tab stop (e.g.@: by preceding @samp{%l} or +@samp{%L} with a tab character), or you should use the @option{-t} or +@option{--expand-tabs} option. + +Taken together, the line and line group formats let you specify many +different formats. For example, the following command uses a format +similar to normal @command{diff} format. You can tailor this command +to get fine control over @command{diff} output. + +@example +diff \ + --old-line-format='< %l +' \ + --new-line-format='> %l +' \ + --old-group-format='%df%(f=l?:,%dl)d%dE +%<' \ + --new-group-format='%dea%dF%(F=L?:,%dL) +%>' \ + --changed-group-format='%df%(f=l?:,%dl)c%dF%(F=L?:,%dL) +%<--- +%>' \ + --unchanged-group-format='' \ + old new +@end example + +@node Detailed If-then-else +@subsection Detailed Description of If-then-else Format + +For lines common to both files, @command{diff} uses the unchanged line +group format. For each hunk of differences in the merged output +format, if the hunk contains only lines from the first file, +@command{diff} uses the old line group format; if the hunk contains only +lines from the second file, @command{diff} uses the new group format; +otherwise, @command{diff} uses the changed group format. + +The old, new, and unchanged line formats specify the output format of +lines from the first file, lines from the second file, and lines common +to both files, respectively. + +The option @option{--ifdef=@var{name}} is equivalent to +the following sequence of options using shell syntax: + +@example +--old-group-format='#ifndef @var{name} +%<#endif /* ! @var{name} */ +' \ +--new-group-format='#ifdef @var{name} +%>#endif /* @var{name} */ +' \ +--unchanged-group-format='%=' \ +--changed-group-format='#ifndef @var{name} +%<#else /* @var{name} */ +%>#endif /* @var{name} */ +' +@end example + +You should carefully check the @command{diff} output for proper nesting. +For example, when using the @option{-D @var{name}} or +@option{--ifdef=@var{name}} option, you should check that if the +differing lines contain any of the C preprocessor directives +@samp{#ifdef}, @samp{#ifndef}, @samp{#else}, @samp{#elif}, or +@samp{#endif}, they are nested properly and match. If they don't, you +must make corrections manually. It is a good idea to carefully check +the resulting code anyway to make sure that it really does what you +want it to; depending on how the input files were produced, the output +might contain duplicate or otherwise incorrect code. + +The @command{patch} @option{-D @var{name}} option behaves like +the @command{diff} @option{-D @var{name}} option, except it operates on +a file and a diff to produce a merged file; @xref{patch Options}. + +@node Example If-then-else +@subsection An Example of If-then-else Format + +Here is the output of @samp{diff -DTWO lao tzu} (@pxref{Sample +diff Input}, for the complete contents of the two files): + +@example +#ifndef TWO +The Way that can be told of is not the eternal Way; +The name that can be named is not the eternal name. +#endif /* ! TWO */ +The Nameless is the origin of Heaven and Earth; +#ifndef TWO +The Named is the mother of all things. +#else /* TWO */ +The named is the mother of all things. + +#endif /* TWO */ +Therefore let there always be non-being, + so we may see their subtlety, +And let there always be being, + so we may see their outcome. +The two are the same, +But after they are produced, + they have different names. +#ifdef TWO +They both may be called deep and profound. +Deeper and more profound, +The door of all subtleties! +#endif /* TWO */ +@end example + +@node Incomplete Lines +@chapter Incomplete Lines +@cindex incomplete lines +@cindex full lines +@cindex newline treatment by @command{diff} + +When an input file ends in a non-newline character, its last line is +called an @dfn{incomplete line} because its last character is not a +newline. All other lines are called @dfn{full lines} and end in a +newline character. Incomplete lines do not match full lines unless +differences in white space are ignored (@pxref{White Space}). + +An incomplete line is normally distinguished on output from a full line +by a following line that starts with @samp{\}. However, the @sc{rcs} format +(@pxref{RCS}) outputs the incomplete line as-is, without any trailing +newline or following line. The side by side format normally represents +incomplete lines as-is, but in some cases uses a @samp{\} or @samp{/} +gutter marker; @xref{Side by Side}. The if-then-else line format +preserves a line's incompleteness with @samp{%L}, and discards the +newline with @samp{%l}; @xref{Line Formats}. Finally, with the +@command{ed} and forward @command{ed} output formats (@pxref{Output Formats}) +@command{diff} cannot represent an incomplete line, so it pretends there +was a newline and reports an error. + +For example, suppose @file{F} and @file{G} are one-byte files that +contain just @samp{f} and @samp{g}, respectively. Then @samp{diff F G} +outputs + +@example +1c1 +< f +\ No newline at end of file +--- +> g +\ No newline at end of file +@end example + +@noindent +(The exact message may differ in non-English locales.) +@samp{diff -n F G} outputs the following without a trailing newline: + +@example +d1 1 +a1 1 +g +@end example + +@noindent +@samp{diff -e F G} reports two errors and outputs the following: + +@example +1c +g +. +@end example + +@node Comparing Directories +@chapter Comparing Directories + +@vindex LC_COLLATE +You can use @command{diff} to compare some or all of the files in two +directory trees. When both file name arguments to @command{diff} are +directories, it compares each file that is contained in both +directories, examining file names in alphabetical order as specified by +the @env{LC_COLLATE} locale category. Normally +@command{diff} is silent about pairs of files that contain no differences, +but if you use the @option{-s} or @option{--report-identical-files} option, +it reports pairs of identical files. Normally @command{diff} reports +subdirectories common to both directories without comparing +subdirectories' files, but if you use the @option{-r} or +@option{--recursive} option, it compares every corresponding pair of files +in the directory trees, as many levels deep as they go. + +For file names that are in only one of the directories, @command{diff} +normally does not show the contents of the file that exists; it reports +only that the file exists in that directory and not in the other. You +can make @command{diff} act as though the file existed but was empty in the +other directory, so that it outputs the entire contents of the file that +actually exists. (It is output as either an insertion or a +deletion, depending on whether it is in the first or the second +directory given.) To do this, use the @option{-N} or @option{--new-file} +option. + +If the older directory contains one or more large files that are not in +the newer directory, you can make the patch smaller by using the +@option{--unidirectional-new-file} option instead of @option{-N}. +This option is like @option{-N} except that it only inserts the contents +of files that appear in the second directory but not the first (that is, +files that were added). At the top of the patch, write instructions for +the user applying the patch to remove the files that were deleted before +applying the patch. @xref{Making Patches}, for more discussion of +making patches for distribution. + +To ignore some files while comparing directories, use the @option{-x +@var{pattern}} or @option{--exclude=@var{pattern}} option. This option +ignores any files or subdirectories whose base names match the shell +pattern @var{pattern}. Unlike in the shell, a period at the start of +the base of a file name matches a wildcard at the start of a pattern. +You should enclose @var{pattern} in quotes so that the shell does not +expand it. For example, the option @option{-x '*.[ao]'} ignores any file +whose name ends with @samp{.a} or @samp{.o}. + +This option accumulates if you specify it more than once. For example, +using the options @option{-x 'RCS' -x '*,v'} ignores any file or +subdirectory whose base name is @samp{RCS} or ends with @samp{,v}. + +If you need to give this option many times, you can instead put the +patterns in a file, one pattern per line, and use the @option{-X +@var{file}} or @option{--exclude-from=@var{file}} option. + +If you have been comparing two directories and stopped partway through, +later you might want to continue where you left off. You can do this by +using the @option{-S @var{file}} or @option{--starting-file=@var{file}} +option. This compares only the file @var{file} and all alphabetically +later files in the topmost directory level. + +If two directories differ only in that file names are lower case in +one directory and upper case in the upper, @command{diff} normally +reports many differences because it compares file names in a +case sensitive way. With the @option{--ignore-file-name-case} option, +@command{diff} ignores case differences in file names, so that for example +the contents of the file @file{Tao} in one directory are compared to +the contents of the file @file{TAO} in the other. The +@option{--no-ignore-file-name-case} option cancels the effect of the +@option{--ignore-file-name-case} option, reverting to the default +behavior. + +If an @option{-x @var{pattern}}, @option{--exclude=@var{pattern}}, +@option{-X @var{file}}, or @option{--exclude-from=@var{file}} option +is specified while the @option{--ignore-file-name-case} option is in +effect, case is ignored when excluding file names matching the +specified patterns. + +@node Adjusting Output +@chapter Making @command{diff} Output Prettier + +@command{diff} provides several ways to adjust the appearance of its output. +These adjustments can be applied to any output format. + +@menu +* Tabs:: Preserving the alignment of tab stops. +* Pagination:: Page numbering and time-stamping @command{diff} output. +@end menu + +@node Tabs +@section Preserving Tab Stop Alignment +@cindex tab stop alignment +@cindex aligning tab stops + +The lines of text in some of the @command{diff} output formats are preceded +by one or two characters that indicate whether the text is inserted, +deleted, or changed. The addition of those characters can cause tabs to +move to the next tab stop, throwing off the alignment of columns in the +line. @sc{gnu} @command{diff} provides two ways to make tab-aligned columns +line up correctly. + +The first way is to have @command{diff} convert all tabs into the correct +number of spaces before outputting them; select this method with the +@option{-t} or @option{--expand-tabs} option. @command{diff} assumes that +tab stops are set every 8 print columns. To use this form of output with +@command{patch}, you must give @command{patch} the @option{-l} or +@option{--ignore-white-space} option (@pxref{Changed White Space}, for more +information). + +The other method for making tabs line up correctly is to add a tab +character instead of a space after the indicator character at the +beginning of the line. This ensures that all following tab characters +are in the same position relative to tab stops that they were in the +original files, so that the output is aligned correctly. Its +disadvantage is that it can make long lines too long to fit on one line +of the screen or the paper. It also does not work with the unified +output format, which does not have a space character after the change +type indicator character. Select this method with the @option{-T} or +@option{--initial-tab} option. + +@node Pagination +@section Paginating @command{diff} Output +@cindex paginating @command{diff} output + +It can be convenient to have long output page-numbered and time-stamped. +The @option{-l} and @option{--paginate} options do this by sending the +@command{diff} output through the @command{pr} program. Here is what the page +header might look like for @samp{diff -lc lao tzu}: + +@example +2002-02-22 14:20 diff -lc lao tzu Page 1 +@end example + +@node diff Performance +@chapter @command{diff} Performance Tradeoffs +@cindex performance of @command{diff} + +@sc{gnu} @command{diff} runs quite efficiently; however, in some circumstances +you can cause it to run faster or produce a more compact set of changes. + +One way to improve @command{diff} performance is to use hard or +symbolic links to files instead of copies. This improves performance +because @command{diff} normally does not need to read two hard or +symbolic links to the same file, since their contents must be +identical. For example, suppose you copy a large directory hierarchy, +make a few changes to the copy, and then often use @samp{diff -r} to +compare the original to the copy. If the original files are +read-only, you can greatly improve performance by creating the copy +using hard or symbolic links (e.g., with @sc{gnu} @samp{cp -lR} or +@samp{cp -sR}). Before editing a file in the copy for the first time, +you should break the link and replace it with a regular copy. + +You can also affect the performance of @sc{gnu} @command{diff} by +giving it options that change the way it compares files. +Performance has more than one dimension. These options improve one +aspect of performance at the cost of another, or they improve +performance in some cases while hurting it in others. + +The way that @sc{gnu} @command{diff} determines which lines have changed always +comes up with a near-minimal set of differences. Usually it is good +enough for practical purposes. If the @command{diff} output is large, you +might want @command{diff} to use a modified algorithm that sometimes +produces a smaller set of differences. The @option{-d} or +@option{--minimal} option does this; however, it can also cause +@command{diff} to run more slowly than usual, so it is not the default +behavior. + +When the files you are comparing are large and have small groups of +changes scattered throughout them, you can use the +@option{--speed-large-files} option to make a different modification to +the algorithm that @command{diff} uses. If the input files have a constant +small density of changes, this option speeds up the comparisons without +changing the output. If not, @command{diff} might produce a larger set of +differences; however, the output will still be correct. + +Normally @command{diff} discards the prefix and suffix that is common to +both files before it attempts to find a minimal set of differences. +This makes @command{diff} run faster, but occasionally it may produce +non-minimal output. The @option{--horizon-lines=@var{lines}} option +prevents @command{diff} from discarding the last @var{lines} lines of the +prefix and the first @var{lines} lines of the suffix. This gives +@command{diff} further opportunities to find a minimal output. + +Suppose a run of changed lines includes a sequence of lines at one end +and there is an identical sequence of lines just outside the other end. +The @command{diff} command is free to choose which identical sequence is +included in the hunk. In this case, @command{diff} normally shifts the +hunk's boundaries when this merges adjacent hunks, or shifts a hunk's +lines towards the end of the file. Merging hunks can make the output +look nicer in some cases. + +@node Comparing Three Files +@chapter Comparing Three Files +@cindex comparing three files +@cindex format of @command{diff3} output + +Use the program @command{diff3} to compare three files and show any +differences among them. (@command{diff3} can also merge files; see +@ref{diff3 Merging}). + +The ``normal'' @command{diff3} output format shows each hunk of +differences without surrounding context. Hunks are labeled depending +on whether they are two-way or three-way, and lines are annotated by +their location in the input files. + +@xref{Invoking diff3}, for more information on how to run @command{diff3}. + +@menu +* Sample diff3 Input:: Sample @command{diff3} input for examples. +* Detailed diff3 Normal:: A detailed description of normal output format. +* diff3 Hunks:: The format of normal output format. +* Example diff3 Normal:: Sample output in the normal format. +@end menu + +@node Sample diff3 Input +@section A Third Sample Input File +@cindex @command{diff3} sample input +@cindex sample input for @command{diff3} + +Here is a third sample file that will be used in examples to illustrate +the output of @command{diff3} and how various options can change it. The +first two files are the same that we used for @command{diff} (@pxref{Sample +diff Input}). This is the third sample file, called @file{tao}: + +@example +The Way that can be told of is not the eternal Way; +The name that can be named is not the eternal name. +The Nameless is the origin of Heaven and Earth; +The named is the mother of all things. + +Therefore let there always be non-being, + so we may see their subtlety, +And let there always be being, + so we may see their result. +The two are the same, +But after they are produced, + they have different names. + + -- The Way of Lao-Tzu, tr. Wing-tsit Chan +@end example + +@node Detailed diff3 Normal +@section Detailed Description of @command{diff3} Normal Format + +Each hunk begins with a line marked @samp{====}. Three-way hunks have +plain @samp{====} lines, and two-way hunks have @samp{1}, @samp{2}, or +@samp{3} appended to specify which of the three input files differ in +that hunk. The hunks contain copies of two or three sets of input +lines each preceded by one or two commands identifying where the lines +came from. + +Normally, two spaces precede each copy of an input line to distinguish +it from the commands. But with the @option{-T} or @option{--initial-tab} +option, @command{diff3} uses a tab instead of two spaces; this lines up +tabs correctly. @xref{Tabs}, for more information. + +Commands take the following forms: + +@table @samp +@item @var{file}:@var{l}a +This hunk appears after line @var{l} of file @var{file}, and +contains no lines in that file. To edit this file to yield the other +files, one must append hunk lines taken from the other files. For +example, @samp{1:11a} means that the hunk follows line 11 in the first +file and contains no lines from that file. + +@item @var{file}:@var{r}c +This hunk contains the lines in the range @var{r} of file @var{file}. +The range @var{r} is a comma-separated pair of line numbers, or just one +number if the range is a singleton. To edit this file to yield the +other files, one must change the specified lines to be the lines taken +from the other files. For example, @samp{2:11,13c} means that the hunk +contains lines 11 through 13 from the second file. +@end table + +If the last line in a set of input lines is incomplete +(@pxref{Incomplete Lines}), it is distinguished on output from a full +line by a following line that starts with @samp{\}. + +@node diff3 Hunks +@section @command{diff3} Hunks +@cindex hunks for @command{diff3} +@cindex @command{diff3} hunks + +Groups of lines that differ in two or three of the input files are +called @dfn{diff3 hunks}, by analogy with @command{diff} hunks +(@pxref{Hunks}). If all three input files differ in a @command{diff3} +hunk, the hunk is called a @dfn{three-way hunk}; if just two input files +differ, it is a @dfn{two-way hunk}. + +As with @command{diff}, several solutions are possible. When comparing the +files @samp{A}, @samp{B}, and @samp{C}, @command{diff3} normally finds +@command{diff3} hunks by merging the two-way hunks output by the two +commands @samp{diff A B} and @samp{diff A C}. This does not necessarily +minimize the size of the output, but exceptions should be rare. + +For example, suppose @file{F} contains the three lines @samp{a}, +@samp{b}, @samp{f}, @file{G} contains the lines @samp{g}, @samp{b}, +@samp{g}, and @file{H} contains the lines @samp{a}, @samp{b}, +@samp{h}. @samp{diff3 F G H} might output the following: + +@example +====2 +1:1c +3:1c + a +2:1c + g +==== +1:3c + f +2:3c + g +3:3c + h +@end example + +@noindent +because it found a two-way hunk containing @samp{a} in the first and +third files and @samp{g} in the second file, then the single line +@samp{b} common to all three files, then a three-way hunk containing +the last line of each file. + +@node Example diff3 Normal +@section An Example of @command{diff3} Normal Format + +Here is the output of the command @samp{diff3 lao tzu tao} +(@pxref{Sample diff3 Input}, for the complete contents of the files). +Notice that it shows only the lines that are different among the three +files. + +@example +====2 +1:1,2c +3:1,2c + The Way that can be told of is not the eternal Way; + The name that can be named is not the eternal name. +2:0a +====1 +1:4c + The Named is the mother of all things. +2:2,3c +3:4,5c + The named is the mother of all things. + +====3 +1:8c +2:7c + so we may see their outcome. +3:9c + so we may see their result. +==== +1:11a +2:11,13c + They both may be called deep and profound. + Deeper and more profound, + The door of all subtleties! +3:13,14c + + -- The Way of Lao-Tzu, tr. Wing-tsit Chan +@end example + +@node diff3 Merging +@chapter Merging From a Common Ancestor +@cindex merging from a common ancestor + +When two people have made changes to copies of the same file, +@command{diff3} can produce a merged output that contains both sets of +changes together with warnings about conflicts. + +One might imagine programs with names like @command{diff4} and @command{diff5} +to compare more than three files simultaneously, but in practice the +need rarely arises. You can use @command{diff3} to merge three or more +sets of changes to a file by merging two change sets at a time. + +@command{diff3} can incorporate changes from two modified versions into a +common preceding version. This lets you merge the sets of changes +represented by the two newer files. Specify the common ancestor version +as the second argument and the two newer versions as the first and third +arguments, like this: + +@example +diff3 @var{mine} @var{older} @var{yours} +@end example + +@noindent +You can remember the order of the arguments by noting that they are in +alphabetical order. + +@cindex conflict +@cindex overlap +You can think of this as subtracting @var{older} from @var{yours} and +adding the result to @var{mine}, or as merging into @var{mine} the +changes that would turn @var{older} into @var{yours}. This merging is +well-defined as long as @var{mine} and @var{older} match in the +neighborhood of each such change. This fails to be true when all three +input files differ or when only @var{older} differs; we call this +a @dfn{conflict}. When all three input files differ, we call the +conflict an @dfn{overlap}. + +@command{diff3} gives you several ways to handle overlaps and conflicts. +You can omit overlaps or conflicts, or select only overlaps, +or mark conflicts with special @samp{<<<<<<<} and @samp{>>>>>>>} lines. + +@command{diff3} can output the merge results as an @command{ed} script that +that can be applied to the first file to yield the merged output. +However, it is usually better to have @command{diff3} generate the merged +output directly; this bypasses some problems with @command{ed}. + +@menu +* Which Changes:: Selecting changes to incorporate. +* Marking Conflicts:: Marking conflicts. +* Bypassing ed:: Generating merged output directly. +* Merging Incomplete Lines:: How @command{diff3} merges incomplete lines. +* Saving the Changed File:: Emulating System V behavior. +@end menu + +@node Which Changes +@section Selecting Which Changes to Incorporate +@cindex overlapping change, selection of +@cindex unmerged change + +You can select all unmerged changes from @var{older} to @var{yours} for merging +into @var{mine} with the @option{-e} or @option{--ed} option. You can +select only the nonoverlapping unmerged changes with @option{-3} or +@option{--easy-only}, and you can select only the overlapping changes with +@option{-x} or @option{--overlap-only}. + +The @option{-e}, @option{-3} and @option{-x} options select only +@dfn{unmerged changes}, i.e.@: changes where @var{mine} and @var{yours} +differ; they ignore changes from @var{older} to @var{yours} where +@var{mine} and @var{yours} are identical, because they assume that such +changes have already been merged. If this assumption is not a safe +one, you can use the @option{-A} or @option{--show-all} option +(@pxref{Marking Conflicts}). + +Here is the output of the command @command{diff3} with each of these three +options (@pxref{Sample diff3 Input}, for the complete contents of the files). +Notice that @option{-e} outputs the union of the disjoint sets of changes +output by @option{-3} and @option{-x}. + +Output of @samp{diff3 -e lao tzu tao}: +@example +11a + + -- The Way of Lao-Tzu, tr. Wing-tsit Chan +. +8c + so we may see their result. +. +@end example + +Output of @samp{diff3 -3 lao tzu tao}: +@example +8c + so we may see their result. +. +@end example + +Output of @samp{diff3 -x lao tzu tao}: +@example +11a + + -- The Way of Lao-Tzu, tr. Wing-tsit Chan +. +@end example + +@node Marking Conflicts +@section Marking Conflicts +@cindex conflict marking +@cindex @samp{<<<<<<<} for marking conflicts + +@command{diff3} can mark conflicts in the merged output by +bracketing them with special marker lines. A conflict +that comes from two files @var{A} and @var{B} is marked as follows: + +@example +<<<<<<< @var{A} +@r{lines from @var{A}} +======= +@r{lines from @var{B}} +>>>>>>> @var{B} +@end example + +A conflict that comes from three files @var{A}, @var{B} and @var{C} is +marked as follows: + +@example +<<<<<<< @var{A} +@r{lines from @var{A}} +||||||| @var{B} +@r{lines from @var{B}} +======= +@r{lines from @var{C}} +>>>>>>> @var{C} +@end example + +The @option{-A} or @option{--show-all} option acts like the @option{-e} +option, except that it brackets conflicts, and it outputs all changes +from @var{older} to @var{yours}, not just the unmerged changes. Thus, +given the sample input files (@pxref{Sample diff3 Input}), @samp{diff3 +-A lao tzu tao} puts brackets around the conflict where only @file{tzu} +differs: + +@example +<<<<<<< tzu +======= +The Way that can be told of is not the eternal Way; +The name that can be named is not the eternal name. +>>>>>>> tao +@end example + +And it outputs the three-way conflict as follows: + +@example +<<<<<<< lao +||||||| tzu +They both may be called deep and profound. +Deeper and more profound, +The door of all subtleties! +======= + + -- The Way of Lao-Tzu, tr. Wing-tsit Chan +>>>>>>> tao +@end example + +The @option{-E} or @option{--show-overlap} option outputs less information +than the @option{-A} or @option{--show-all} option, because it outputs only +unmerged changes, and it never outputs the contents of the second +file. Thus the @option{-E} option acts like the @option{-e} option, +except that it brackets the first and third files from three-way +overlapping changes. Similarly, @option{-X} acts like @option{-x}, except +it brackets all its (necessarily overlapping) changes. For example, +for the three-way overlapping change above, the @option{-E} and @option{-X} +options output the following: + +@example +<<<<<<< lao +======= + + -- The Way of Lao-Tzu, tr. Wing-tsit Chan +>>>>>>> tao +@end example + +If you are comparing files that have meaningless or uninformative names, +you can use the @option{-L @var{label}} or @option{--label=@var{label}} +option to show alternate names in the @samp{<<<<<<<}, @samp{|||||||} +and @samp{>>>>>>>} brackets. This option can be given up to three +times, once for each input file. Thus @samp{diff3 -A -L X -L Y -L Z A +B C} acts like @samp{diff3 -A A B C}, except that the output looks like +it came from files named @samp{X}, @samp{Y} and @samp{Z} rather than +from files named @samp{A}, @samp{B} and @samp{C}. + +@node Bypassing ed +@section Generating the Merged Output Directly +@cindex merged @command{diff3} format + +With the @option{-m} or @option{--merge} option, @command{diff3} outputs the +merged file directly. This is more efficient than using @command{ed} to +generate it, and works even with non-text files that @command{ed} would +reject. If you specify @option{-m} without an @command{ed} script option, +@option{-A} (@option{--show-all}) is assumed. + +For example, the command @samp{diff3 -m lao tzu tao} +(@pxref{Sample diff3 Input} for a copy of the input files) would output +the following: + +@example +<<<<<<< tzu +======= +The Way that can be told of is not the eternal Way; +The name that can be named is not the eternal name. +>>>>>>> tao +The Nameless is the origin of Heaven and Earth; +The Named is the mother of all things. +Therefore let there always be non-being, + so we may see their subtlety, +And let there always be being, + so we may see their result. +The two are the same, +But after they are produced, + they have different names. +<<<<<<< lao +||||||| tzu +They both may be called deep and profound. +Deeper and more profound, +The door of all subtleties! +======= + + -- The Way of Lao-Tzu, tr. Wing-tsit Chan +>>>>>>> tao +@end example + +@node Merging Incomplete Lines +@section How @command{diff3} Merges Incomplete Lines +@cindex incomplete line merging + +With @option{-m}, incomplete lines (@pxref{Incomplete Lines}) are simply +copied to the output as they are found; if the merged output ends in an +conflict and one of the input files ends in an incomplete +line, succeeding @samp{|||||||}, @samp{=======} or @samp{>>>>>>>} +brackets appear somewhere other than the start of a line because +they are appended to the incomplete line. + +Without @option{-m}, if an @command{ed} script option is specified and an +incomplete line is found, @command{diff3} generates a warning and acts as +if a newline had been present. + +@node Saving the Changed File +@section Saving the Changed File +@cindex System V @command{diff3} compatibility + +Traditional Unix @command{diff3} generates an @command{ed} script without the +trailing @samp{w} and @samp{q} commands that save the changes. +System V @command{diff3} generates these extra commands. @sc{gnu} +@command{diff3} normally behaves like traditional Unix +@command{diff3}, but with the @option{-i} option it behaves like +System V @command{diff3} and appends the @samp{w} and @samp{q} +commands. + +The @option{-i} option requires one of the @command{ed} script options +@option{-AeExX3}, and is incompatible with the merged output option +@option{-m}. + +@node Interactive Merging +@chapter Interactive Merging with @command{sdiff} +@cindex diff merging +@cindex interactive merging + +With @command{sdiff}, you can merge two files interactively based on a +side-by-side @option{-y} format comparison (@pxref{Side by Side}). Use +@option{-o @var{file}} or @option{--output=@var{file}} to specify where to +put the merged text. @xref{Invoking sdiff}, for more details on the +options to @command{sdiff}. + +Another way to merge files interactively is to use the Emacs Lisp +package @command{emerge}. @xref{emerge, , emerge, emacs, The @sc{gnu} Emacs +Manual}, for more information. + +@menu +* sdiff Option Summary:: Summary of @command{sdiff} options. +* Merge Commands:: Merging two files interactively. +@end menu + +@node sdiff Option Summary +@section Specifying @command{diff} Options to @command{sdiff} +@cindex @command{sdiff} output format + +The following @command{sdiff} options have the same meaning as for +@command{diff}. @xref{diff Options}, for the use of these options. + +@example +-a -b -d -i -t -v +-B -E -I @var{regexp} + +--ignore-blank-lines --ignore-case +--ignore-matching-lines=@var{regexp} --ignore-space-change +--ignore-tab-expansion +--left-column --minimal --speed-large-files +--strip-trailing-cr --suppress-common-lines --expand-tabs +--text --version --width=@var{columns} +@end example + +For historical reasons, @command{sdiff} has alternate names for some +options. The @option{-l} option is equivalent to the +@option{--left-column} option, and similarly @option{-s} is equivalent +to @option{--suppress-common-lines}. The meaning of the @command{sdiff} +@option{-w} and @option{-W} options is interchanged from that of +@command{diff}: with @command{sdiff}, @option{-w @var{columns}} is +equivalent to @option{--width=@var{columns}}, and @option{-W} is +equivalent to @option{--ignore-all-space}. @command{sdiff} without the +@option{-o} option is equivalent to @command{diff} with the @option{-y} +or @option{--side-by-side} option (@pxref{Side by Side}). + +@node Merge Commands +@section Merge Commands +@cindex merge commands +@cindex merging interactively + +Groups of common lines, with a blank gutter, are copied from the first +file to the output. After each group of differing lines, @command{sdiff} +prompts with @samp{%} and pauses, waiting for one of the following +commands. Follow each command with @key{RET}. + +@table @samp +@item e +Discard both versions. +Invoke a text editor on an empty temporary file, +then copy the resulting file to the output. + +@item eb +Concatenate the two versions, edit the result in a temporary file, +then copy the edited result to the output. + +@item ed +Like @samp{eb}, except precede each version with a header that +shows what file and lines the version came from. + +@item el +Edit a copy of the left version, then copy the result to the output. + +@item er +Edit a copy of the right version, then copy the result to the output. + +@item l +Copy the left version to the output. + +@item q +Quit. + +@item r +Copy the right version to the output. + +@item s +Silently copy common lines. + +@item v +Verbosely copy common lines. This is the default. +@end table + +@vindex EDITOR +The text editor invoked is specified by the @env{EDITOR} environment +variable if it is set. The default is system-dependent. + +@node Merging with patch +@chapter Merging with @command{patch} + +@command{patch} takes comparison output produced by @command{diff} and applies +the differences to a copy of the original file, producing a patched +version. With @command{patch}, you can distribute just the changes to a +set of files instead of distributing the entire file set; your +correspondents can apply @command{patch} to update their copy of the files +with your changes. @command{patch} automatically determines the diff +format, skips any leading or trailing headers, and uses the headers to +determine which file to patch. This lets your correspondents feed a +mail message containing a difference listing directly to +@command{patch}. + +@command{patch} detects and warns about common problems like forward +patches. It saves any patches that it could not apply. It can also maintain a +@code{patchlevel.h} file to ensure that your correspondents apply +diffs in the proper order. + +@command{patch} accepts a series of diffs in its standard input, usually +separated by headers that specify which file to patch. It applies +@command{diff} hunks (@pxref{Hunks}) one by one. If a hunk does not +exactly match the original file, @command{patch} uses heuristics to try to +patch the file as well as it can. If no approximate match can be found, +@command{patch} rejects the hunk and skips to the next hunk. @command{patch} +normally replaces each file @var{f} with its new version, putting reject +hunks (if any) into @samp{@var{f}.rej}. + +@xref{Invoking patch}, for detailed information on the options to +@command{patch}. + +@menu +* patch Input:: Selecting the type of @command{patch} input. +* Revision Control:: Getting files from @sc{rcs}, @sc{sccs}, etc. +* Imperfect:: Dealing with imperfect patches. +* Creating and Removing:: Creating and removing files with a patch. +* Patching Time Stamps:: Updating time stamps on patched files. +* Multiple Patches:: Handling multiple patches in a file. +* patch Directories:: Changing directory and stripping directories. +* Backups:: Whether backup files are made. +* Backup Names:: Backup file names. +* Reject Names:: Reject file names. +* patch Messages:: Messages and questions @command{patch} can produce. +* patch and POSIX:: Conformance to the @sc{posix} standard. +* patch and Tradition:: @sc{gnu} versus traditional @command{patch}. +@end menu + +@node patch Input +@section Selecting the @command{patch} Input Format +@cindex @command{patch} input format + +@command{patch} normally determines which @command{diff} format the patch +file uses by examining its contents. For patch files that contain +particularly confusing leading text, you might need to use one of the +following options to force @command{patch} to interpret the patch file as a +certain format of diff. The output formats listed here are the only +ones that @command{patch} can understand. + +@table @option +@item -c +@itemx --context +context diff. + +@item -e +@itemx --ed +@command{ed} script. + +@item -n +@itemx --normal +normal diff. + +@item -u +@itemx --unified +unified diff. +@end table + +@node Revision Control +@section Revision Control +@cindex revision control +@cindex version control +@cindex @sc{rcs} +@cindex ClearCase +@cindex @sc{sccs} + +If a nonexistent input file is under a revision control system +supported by @command{patch}, @command{patch} normally asks the user +whether to get (or check out) the file from the revision control +system. Patch currently supports @sc{rcs}, ClearCase and @sc{sccs}. +Under @sc{rcs} and @sc{sccs}, @command{patch} also asks when the input +file is read-only and matches the default version in the revision +control system. + +@vindex PATCH_GET +The @option{-g @var{num}} or @option{--get=@var{num}} affects access +to files under supported revision control systems. If @var{num} is +positive, @command{patch} gets the file without asking the user; if +zero, @command{patch} neither asks the user nor gets the file; and if +negative, @command{patch} asks the user before getting the file. The +default value of @var{num} is given by the value of the +@env{PATCH_GET} environment variable if it is set; if not, the default +value is zero if @command{patch} is conforming to @sc{posix}, negative +otherwise. @xref{patch and POSIX}. + +@vindex VERSION_CONTROL +The choice of revision control system is unaffected by the +@env{VERSION_CONTROL} environment variable (@pxref{Backup Names}). + +@node Imperfect +@section Applying Imperfect Patches +@cindex imperfect patch application + +@command{patch} tries to skip any leading text in the patch file, +apply the diff, and then skip any trailing text. Thus you can feed a +mail message directly to @command{patch}, and it should work. If the +entire diff is indented by a constant amount of white space, +@command{patch} automatically ignores the indentation. If a context +diff contains trailing carriage return on each line, @command{patch} +automatically ignores the carriage return. If a context diff has been +encapsulated by prepending @w{@samp{- }} to lines beginning with @samp{-} +as per @uref{ftp://ftp.isi.edu/in-notes/rfc934.txt, Internet RFC 934}, +@command{patch} automatically unencapsulates the input. + +However, certain other types of imperfect input require user +intervention or testing. + +@menu +* Changed White Space:: When tabs and spaces don't match exactly. +* Reversed Patches:: Applying reversed patches correctly. +* Inexact:: Helping @command{patch} find close matches. +* Dry Runs:: Predicting what @command{patch} will do. +@end menu + +@node Changed White Space +@subsection Applying Patches with Changed White Space +@cindex white space in patches + +Sometimes mailers, editors, or other programs change spaces into tabs, +or vice versa. If this happens to a patch file or an input file, the +files might look the same, but @command{patch} will not be able to match +them properly. If this problem occurs, use the @option{-l} or +@option{--ignore-white-space} option, which makes @command{patch} compare +blank characters (i.e.@: spaces and tabs) loosely so that any nonempty +sequence of blanks in the patch file matches any nonempty sequence of +blanks in the input files. Non-blank +characters must still match exactly. Each line of the context must +still match a line in the input file. + +@node Reversed Patches +@subsection Applying Reversed Patches +@cindex reversed patches + +Sometimes people run @command{diff} with the new file first instead of +second. This creates a diff that is ``reversed''. To apply such +patches, give @command{patch} the @option{-R} or @option{--reverse} option. +@command{patch} then attempts to swap each hunk around before applying it. +Rejects come out in the swapped format. + +Often @command{patch} can guess that the patch is reversed. If the first +hunk of a patch fails, @command{patch} reverses the hunk to see if it can +apply it that way. If it can, @command{patch} asks you if you want to have +the @option{-R} option set; if it can't, @command{patch} continues to apply +the patch normally. This method cannot detect a reversed patch if it is +a normal diff and the first command is an append (which should have been +a delete) since appends always succeed, because a null context matches +anywhere. But most patches add or change lines rather than delete them, +so most reversed normal diffs begin with a delete, which fails, and +@command{patch} notices. + +If you apply a patch that you have already applied, @command{patch} thinks +it is a reversed patch and offers to un-apply the patch. This could be +construed as a feature. If you did this inadvertently and you don't +want to un-apply the patch, just answer @samp{n} to this offer and to +the subsequent ``apply anyway'' question---or type @kbd{C-c} to kill the +@command{patch} process. + +@node Inexact +@subsection Helping @command{patch} Find Inexact Matches +@cindex inexact patches +@cindex fuzz factor when patching + +For context diffs, and to a lesser extent normal diffs, @command{patch} can +detect when the line numbers mentioned in the patch are incorrect, and +it attempts to find the correct place to apply each hunk of the patch. +As a first guess, it takes the line number mentioned in the hunk, plus +or minus any offset used in applying the previous hunk. If that is not +the correct place, @command{patch} scans both forward and backward for a +set of lines matching the context given in the hunk. + +First @command{patch} looks for a place where all lines of the context +match. If it cannot find such a place, and it is reading a context or +unified diff, and the maximum fuzz factor is set to 1 or more, then +@command{patch} makes another scan, ignoring the first and last line of +context. If that fails, and the maximum fuzz factor is set to 2 or +more, it makes another scan, ignoring the first two and last two lines +of context are ignored. It continues similarly if the maximum fuzz +factor is larger. + +The @option{-F @var{lines}} or @option{--fuzz=@var{lines}} option sets the +maximum fuzz factor to @var{lines}. This option only applies to context +and unified diffs; it ignores up to @var{lines} lines while looking for +the place to install a hunk. Note that a larger fuzz factor increases +the odds of making a faulty patch. The default fuzz factor is 2; there +is no point to setting it to more than the number of lines of context +in the diff, ordinarily 3. + +If @command{patch} cannot find a place to install a hunk of the patch, it +writes the hunk out to a reject file (@pxref{Reject Names}, for information +on how reject files are named). It writes out rejected hunks in context +format no matter what form the input patch is in. If the input is a +normal or @command{ed} diff, many of the contexts are simply null. The +line numbers on the hunks in the reject file may be different from those +in the patch file: they show the approximate location where @command{patch} +thinks the failed hunks belong in the new file rather than in the old +one. + +If the @option{--verbose} option is given, then +as it completes each hunk @command{patch} tells you whether the hunk +succeeded or failed, and if it failed, on which line (in the new file) +@command{patch} thinks the hunk should go. If this is different from the +line number specified in the diff, it tells you the offset. A single +large offset @emph{may} indicate that @command{patch} installed a hunk in +the wrong place. @command{patch} also tells you if it used a fuzz factor +to make the match, in which case you should also be slightly suspicious. + +@command{patch} cannot tell if the line numbers are off in an @command{ed} +script, and can only detect wrong line numbers in a normal diff when it +finds a change or delete command. It may have the same problem with a +context diff using a fuzz factor equal to or greater than the number of +lines of context shown in the diff (typically 3). In these cases, you +should probably look at a context diff between your original and patched +input files to see if the changes make sense. Compiling without errors +is a pretty good indication that the patch worked, but not a guarantee. + +A patch against an empty file applies to a nonexistent file, and vice +versa. @xref{Creating and Removing}. + +@command{patch} usually produces the correct results, even when it must +make many guesses. However, the results are guaranteed only when +the patch is applied to an exact copy of the file that the patch was +generated from. + +@node Dry Runs +@subsection Predicting what @command{patch} will do +@cindex testing @command{patch} +@cindex dry runs for @command{patch} + +It may not be obvious in advance what @command{patch} will do with a +complicated or poorly formatted patch. If you are concerned that the +input might cause @command{patch} to modify the wrong files, you can +use the @option{--dry-run} option, which causes @command{patch} to +print the results of applying patches without actually changing any +files. You can then inspect the diagnostics generated by the dry run +to see whether @command{patch} will modify the files that you expect. +If the patch does not do what you want, you can modify the patch (or +the other options to @command{patch}) and try another dry run. Once +you are satisfied with the proposed patch you can apply it by invoking +@command{patch} as before, but this time without the +@option{--dry-run} option. + +@node Creating and Removing +@section Creating and Removing Files +@cindex creating files +@cindex empty files, removing +@cindex removing empty files + +Sometimes when comparing two directories, a file may exist in one +directory but not the other. If you give @command{diff} the +@option{-N} or @option{--new-file} option, or if you supply an old or +new file that is named @file{/dev/null} or is empty and is dated the +Epoch (1970-01-01 00:00:00 UTC), @command{diff} outputs a patch that +adds or deletes the contents of this file. When given such a patch, +@command{patch} normally creates a new file or removes the old file. +However, when conforming to @sc{posix} (@pxref{patch and POSIX}), +@command{patch} does not remove the old file, but leaves it empty. +The @option{-E} or @option{--remove-empty-files} option causes +@command{patch} to remove output files that are empty after applying a +patch, even if the patch does not appear to be one that removed the +file. + +If the patch appears to create a file that already exists, +@command{patch} asks for confirmation before applying the patch. + +@node Patching Time Stamps +@section Updating Time Stamps on Patched Files +@cindex time stamps on patched files + +When @command{patch} updates a file, it normally sets the file's +last-modified time stamp to the current time of day. If you are using +@command{patch} to track a software distribution, this can cause +@command{make} to incorrectly conclude that a patched file is out of +date. For example, if @file{syntax.c} depends on @file{syntax.y}, and +@command{patch} updates @file{syntax.c} and then @file{syntax.y}, then +@file{syntax.c} will normally appear to be out of date with respect to +@file{syntax.y} even though its contents are actually up to date. + +The @option{-Z} or @option{--set-utc} option causes @command{patch} to +set a patched file's modification and access times to the time stamps +given in context diff headers. If the context diff headers do not +specify a time zone, they are assumed to use Coordinated Universal +Time (@sc{utc}, often known as @sc{gmt}). + +The @option{-T} or @option{--set-time} option acts like @option{-Z} or +@option{--set-utc}, except that it assumes that the context diff +headers' time stamps use local time instead of @sc{utc}. This option +is not recommended, because patches using local time cannot easily be +used by people in other time zones, and because local time stamps are +ambiguous when local clocks move backwards during daylight-saving time +adjustments. If the context diff headers specify a time zone, this +option is equivalent to @option{-Z} or @option{--set-utc}. + +@command{patch} normally refrains from setting a file's time stamps if +the file's original last-modified time stamp does not match the time +given in the diff header, of if the file's contents do not exactly +match the patch. However, if the @option{-f} or @option{--force} +option is given, the file's time stamps are set regardless. + +Due to the limitations of the current @command{diff} format, +@command{patch} cannot update the times of files whose contents have +not changed. Also, if you set file time stamps to values other than +the current time of day, you should also remove (e.g., with @samp{make +clean}) all files that depend on the patched files, so that later +invocations of @command{make} do not get confused by the patched +files' times. + +@node Multiple Patches +@section Multiple Patches in a File +@cindex multiple patches +@cindex intuiting file names from patches + +If the patch file contains more than one patch, and if you do not +specify an input file on the command line, @command{patch} tries to +apply each patch as if they came from separate patch files. This +means that it determines the name of the file to patch for each patch, +and that it examines the leading text before each patch for file names +and prerequisite revision level (@pxref{Making Patches}, for more on +that topic). + +@command{patch} uses the following rules to intuit a file name from +the leading text before a patch. First, @command{patch} takes an +ordered list of candidate file names as follows: + +@itemize @bullet +@item +If the header is that of a context diff, @command{patch} takes the old +and new file names in the header. A name is ignored if it does not +have enough slashes to satisfy the @option{-p@var{num}} or +@option{--strip=@var{num}} option. The name @file{/dev/null} is also +ignored. + +@item +If there is an @samp{Index:} line in the leading garbage and if either +the old and new names are both absent or if @command{patch} is +conforming to @sc{posix}, @command{patch} takes the name in the +@samp{Index:} line. + +@item +For the purpose of the following rules, the candidate file names are +considered to be in the order (old, new, index), regardless of the +order that they appear in the header. +@end itemize + +@noindent +Then @command{patch} selects a file name from the candidate list as +follows: + +@itemize @bullet +@item +If some of the named files exist, @command{patch} selects the first +name if conforming to @sc{posix}, and the best name otherwise. + +@item +If @command{patch} is not ignoring @sc{rcs}, ClearCase, and @sc{sccs} +(@pxref{Revision Control}), and no named files exist but an @sc{rcs}, +ClearCase, or @sc{sccs} master is found, @command{patch} selects the +first named file with an @sc{rcs}, ClearCase, or @sc{sccs} master. + +@item +If no named files exist, no @sc{rcs}, ClearCase, or @sc{sccs} master +was found, some names are given, @command{patch} is not conforming to +@sc{posix}, and the patch appears to create a file, @command{patch} +selects the best name requiring the creation of the fewest +directories. + +@item +If no file name results from the above heuristics, you are asked for +the name of the file to patch, and @command{patch} selects that name. +@end itemize + +To determine the @dfn{best} of a nonempty list of file names, +@command{patch} first takes all the names with the fewest path name +components; of those, it then takes all the names with the shortest +basename; of those, it then takes all the shortest names; finally, it +takes the first remaining name. + +@xref{patch and POSIX}, to see whether @command{patch} is conforming +to @sc{posix}. + +@node patch Directories +@section Applying Patches in Other Directories +@cindex directories and patch +@cindex patching directories + +The @option{-d @var{directory}} or @option{--directory=@var{directory}} +option to @command{patch} makes directory @var{directory} the current +directory for interpreting both file names in the patch file, and file +names given as arguments to other options (such as @option{-B} and +@option{-o}). For example, while in a mail reading program, you can patch +a file in the @file{/usr/src/emacs} directory directly from a message +containing the patch like this: + +@example +| patch -d /usr/src/emacs +@end example + +Sometimes the file names given in a patch contain leading directories, +but you keep your files in a directory different from the one given in +the patch. In those cases, you can use the +@option{-p@var{number}} or @option{--strip=@var{number}} +option to set the file name strip count to @var{number}. The strip +count tells @command{patch} how many slashes, along with the directory +names between them, to strip from the front of file names. A sequence +of one or more adjacent slashes is counted as a single slash. By +default, @command{patch} strips off all leading directories, leaving +just the base file names. + +For example, suppose the file name in the patch file is +@file{/gnu/src/emacs/etc/NEWS}. Using @option{-p0} gives the +entire file name unmodified, @option{-p1} gives +@file{gnu/src/emacs/etc/NEWS} (no leading slash), @option{-p4} gives +@file{etc/NEWS}, and not specifying @option{-p} at all gives @file{NEWS}. + +@command{patch} looks for each file (after any slashes have been stripped) +in the current directory, or if you used the @option{-d @var{directory}} +option, in that directory. + +@node Backups +@section Backup Files +@cindex backup file strategy + +Normally, @command{patch} creates a backup file if the patch does not +exactly match the original input file, because in that case the +original data might not be recovered if you undo the patch with +@samp{patch -R} (@pxref{Reversed Patches}). However, when conforming +to @sc{posix}, @command{patch} does not create backup files by +default. @xref{patch and POSIX}. + +The @option{-b} or @option{--backup} option causes @command{patch} to +make a backup file regardless of whether the patch matches the +original input. The @option{--backup-if-mismatch} option causes +@command{patch} to create backup files for mismatches files; this is +the default when not conforming to @sc{posix}. The +@option{--no-backup-if-mismatch} option causes @command{patch} to not +create backup files, even for mismatched patches; this is the default +when conforming to @sc{posix}. + +When backing up a file that does not exist, an empty, unreadable +backup file is created as a placeholder to represent the nonexistent +file. + +@node Backup Names +@section Backup File Names +@cindex backup file names + +Normally, @command{patch} renames an original input file into a backup +file by appending to its name the extension @samp{.orig}, or @samp{~} +if using @samp{.orig} would make the backup file name too +long.@footnote{A coding error in @sc{gnu} @command{patch} version +2.5.4 causes it to always use @samp{~}, but this should be fixed in +the next release.} The @option{-z @var{backup-suffix}} or +@option{--suffix=@var{backup-suffix}} option causes @command{patch} to +use @var{backup-suffix} as the backup extension instead. + +@vindex SIMPLE_BACKUP_SUFFIX +Alternately, you can specify the extension for backup files with the +@env{SIMPLE_BACKUP_SUFFIX} environment variable, which the options +override. + +@command{patch} can also create numbered backup files the way @sc{gnu} Emacs +does. With this method, instead of having a single backup of each file, +@command{patch} makes a new backup file name each time it patches a file. +For example, the backups of a file named @file{sink} would be called, +successively, @file{sink.~1~}, @file{sink.~2~}, @file{sink.~3~}, etc. + +@vindex PATCH_VERSION_CONTROL +@vindex VERSION_CONTROL +The @option{-V @var{backup-style}} or +@option{--version-control=@var{backup-style}} option takes as an +argument a method for creating backup file names. You can alternately +control the type of backups that @command{patch} makes with the +@env{PATCH_VERSION_CONTROL} environment variable, which the +@option{-V} option overrides. If @env{PATCH_VERSION_CONTROL} is not +set, the @env{VERSION_CONTROL} environment variable is used instead. +Please note that these options and variables control backup file +names; they do not affect the choice of revision control system +(@pxref{Revision Control}). + +The values of these environment variables and the argument to the +@option{-V} option are like the @sc{gnu} Emacs @code{version-control} +variable (@pxref{Backup Names, , , emacs, The @sc{gnu} Emacs Manual}, +for more information on backup versions in Emacs). They also +recognize synonyms that are more descriptive. The valid values are +listed below; unique abbreviations are acceptable. + +@table @option +@item t +@itemx numbered +Always make numbered backups. + +@item nil +@itemx existing +Make numbered backups of files that already have them, simple backups of +the others. This is the default. + +@item never +@itemx simple +Always make simple backups. +@end table + +You can also tell @command{patch} to prepend a prefix, such as a +directory name, to produce backup file names. The @option{-B +@var{prefix}} or @option{--prefix=@var{prefix}} option makes backup +files by prepending @var{prefix} to them. The @option{-Y +@var{prefix}} or @option{--basename-prefix=@var{prefix}} prepends +@var{prefix} to the last file name component of backup file names +instead; for example, @option{-Y ~} causes the backup name for +@file{dir/file.c} to be @file{dir/~file.c}. If you use either of +these prefix options, the suffix-based options are ignored. + +If you specify the output file with the @option{-o} option, that file is +the one that is backed up, not the input file. + +Options that affect the names of backup files do not affect whether +backups are made. For example, if you specify the +@option{--no-backup-if-mismatch} option, none of the options described +in this section have any affect, because no backups are made. + +@node Reject Names +@section Reject File Names +@cindex reject file names + +The names for reject files (files containing patches that +@command{patch} could not find a place to apply) are normally the name +of the output file with @samp{.rej} appended (or @samp{#} if if using +@samp{.rej} would make the backup file name too long). + +Alternatively, you can tell @command{patch} to place all of the rejected +patches in a single file. The @option{-r @var{reject-file}} or +@option{--reject-file=@var{reject-file}} option uses @var{reject-file} as +the reject file name. + +@node patch Messages +@section Messages and Questions from @command{patch} +@cindex @command{patch} messages and questions +@cindex diagnostics from @command{patch} +@cindex messages from @command{patch} + +@command{patch} can produce a variety of messages, especially if it +has trouble decoding its input. In a few situations where it's not +sure how to proceed, @command{patch} normally prompts you for more +information from the keyboard. There are options to produce more or +fewer messages, to have it not ask for keyboard input, and to +affect the way that file names are quoted in messages. + +@menu +* More or Fewer Messages:: Controlling the verbosity of @command{patch}. +* patch and Keyboard Input:: Inhibiting keyboard input. +* patch Quoting Style:: Quoting file names in diagnostics. +@end menu + +@command{patch} exits with status 0 if all hunks are applied successfully, +1 if some hunks cannot be applied, and 2 if there is more serious trouble. +When applying a set of patches in a loop, you should check the +exit status, so you don't apply a later patch to a partially patched +file. + +@node More or Fewer Messages +@subsection Controlling the Verbosity of @command{patch} +@cindex verbose messages from @command{patch} +@cindex inhibit messages from @command{patch} + +You can cause @command{patch} to produce more messages by using the +@option{--verbose} option. For example, when you give this option, +the message @samp{Hmm...} indicates that @command{patch} is reading text in +the patch file, attempting to determine whether there is a patch in that +text, and if so, what kind of patch it is. + +You can inhibit all terminal output from @command{patch}, unless an error +occurs, by using the @option{-s}, @option{--quiet}, or @option{--silent} +option. + +@node patch and Keyboard Input +@subsection Inhibiting Keyboard Input +@cindex keyboard input to @command{patch} + +There are two ways you can prevent @command{patch} from asking you any +questions. The @option{-f} or @option{--force} option assumes that you know +what you are doing. It causes @command{patch} to do the following: + +@itemize @bullet +@item +Skip patches that do not contain file names in their headers. + +@item +Patch files even though they have the wrong version for the +@samp{Prereq:} line in the patch; + +@item +Assume that patches are not reversed even if they look like they are. +@end itemize + +@noindent +The @option{-t} or @option{--batch} option is similar to @option{-f}, in that +it suppresses questions, but it makes somewhat different assumptions: + +@itemize @bullet +@item +Skip patches that do not contain file names in their headers +(the same as @option{-f}). + +@item +Skip patches for which the file has the wrong version for the +@samp{Prereq:} line in the patch; + +@item +Assume that patches are reversed if they look like they are. +@end itemize + +@node patch Quoting Style +@subsection @command{patch} Quoting Style +@cindex quoting style + +When @command{patch} outputs a file name in a diagnostic message, it +can format the name in any of several ways. This can be useful to +output file names unambiguously, even if they contain punctuation or +special characters like newlines. The +@option{--quoting-style=@var{word}} option controls how names are +output. The @var{word} should be one of the following: + +@table @samp +@item literal +Output names as-is. +@item shell +Quote names for the shell if they contain shell metacharacters or would +cause ambiguous output. +@item shell-always +Quote names for the shell, even if they would normally not require quoting. +@item c +Quote names as for a C language string. +@item escape +Quote as with @samp{c} except omit the surrounding double-quote +characters. +@c The following are not yet implemented in patch 2.5.4. +@c @item clocale +@c Quote as with @samp{c} except use quotation marks appropriate for the +@c locale. +@c @item locale +@c @c Use @t instead of @samp to avoid duplicate quoting in some output styles. +@c Like @samp{clocale}, but quote @t{`like this'} instead of @t{"like +@c this"} in the default C locale. This looks nicer on many displays. +@end table + +@vindex QUOTING_STYLE +You can specify the default value of the @option{--quoting-style} +option with the environment variable @env{QUOTING_STYLE}. If that +environment variable is not set, the default value is @samp{shell}, +but this default may change in a future version of @command{patch}. + +@node patch and POSIX +@section @command{patch} and the @sc{posix} Standard +@cindex @sc{posix} + +@vindex POSIXLY_CORRECT +If you specify the @option{--posix} option, or set the +@env{POSIXLY_CORRECT} environment variable, @command{patch} conforms +more strictly to the @sc{posix} standard, as follows: + +@itemize @bullet +@item +Take the first existing file from the list (old, new, index) +when intuiting file names from diff headers. @xref{Multiple Patches}. + +@item +Do not remove files that are removed by a diff. +@xref{Creating and Removing}. + +@item +Do not ask whether to get files from @sc{rcs}, ClearCase, or +@sc{sccs}. @xref{Revision Control}. + +@item +Require that all options precede the files in the command line. + +@item +Do not backup files, even when there is a mismatch. @xref{Backups}. + +@end itemize + +@node patch and Tradition +@section @sc{gnu} @command{patch} and Traditional @command{patch} +@cindex traditional @command{patch} + +The current version of @sc{gnu} @command{patch} normally follows the +@sc{posix} standard. @xref{patch and POSIX}, for the few exceptions +to this general rule. + +Unfortunately, @sc{posix} redefined the behavior of @command{patch} in +several important ways. You should be aware of the following +differences if you must interoperate with traditional @command{patch}, +or with @sc{gnu} @command{patch} version 2.1 and earlier. + +@itemize @bullet +@item +In traditional @command{patch}, the @option{-p} option's operand was +optional, and a bare @option{-p} was equivalent to @option{-p0}. The +@option{-p} option now requires an operand, and @option{-p@ 0} is now +equivalent to @option{-p0}. For maximum compatibility, use options +like @option{-p0} and @option{-p1}. + +Also, traditional @command{patch} simply counted slashes when +stripping path prefixes; @command{patch} now counts pathname +components. That is, a sequence of one or more adjacent slashes now +counts as a single slash. For maximum portability, avoid sending +patches containing @file{//} in file names. + +@item +In traditional @command{patch}, backups were enabled by default. This +behavior is now enabled with the @option{-b} or @option{--backup} +option. + +Conversely, in @sc{posix} @command{patch}, backups are never made, +even when there is a mismatch. In @sc{gnu} @command{patch}, this +behavior is enabled with the @option{--no-backup-if-mismatch} option, +or by conforming to @sc{posix}. + +The @option{-b@ @var{suffix}} option of traditional @command{patch} is +equivalent to the @samp{-b -z@ @var{suffix}} options of @sc{gnu} +@command{patch}. + +@item +Traditional @command{patch} used a complicated (and incompletely +documented) method to intuit the name of the file to be patched from +the patch header. This method did not conform to @sc{posix}, and had +a few gotchas. Now @command{patch} uses a different, equally +complicated (but better documented) method that is optionally +@sc{posix}-conforming; we hope it has fewer gotchas. The two methods +are compatible if the file names in the context diff header and the +@samp{Index:} line are all identical after prefix-stripping. Your +patch is normally compatible if each header's file names all contain +the same number of slashes. + +@item +When traditional @command{patch} asked the user a question, it sent +the question to standard error and looked for an answer from the first +file in the following list that was a terminal: standard error, +standard output, @file{/dev/tty}, and standard input. Now +@command{patch} sends questions to standard output and gets answers +from @file{/dev/tty}. Defaults for some answers have been changed so +that @command{patch} never goes into an infinite loop when using +default answers. + +@item +Traditional @command{patch} exited with a status value that counted +the number of bad hunks, or with status 1 if there was real trouble. +Now @command{patch} exits with status 1 if some hunks failed, or with +2 if there was real trouble. + +@item +Limit yourself to the following options when sending instructions +meant to be executed by anyone running @sc{gnu} @command{patch}, +traditional @command{patch}, or a @command{patch} that conforms to +@sc{posix}. Spaces are significant in the following list, and +operands are required. + +@example +@option{-c} +@option{-d @var{dir}} +@option{-D @var{define}} +@option{-e} +@option{-l} +@option{-n} +@option{-N} +@option{-o @var{outfile}} +@option{-p@var{num}} +@option{-R} +@option{-r @var{rejectfile}} +@end example + +@end itemize + +@node Making Patches +@chapter Tips for Making and Using Patches + +Use some common sense when making and using patches. For example, +when sending bug fixes to a program's maintainer, send several small +patches, one per independent subject, instead of one large, +harder-to-digest patch that covers all the subjects. + +Here are some other things you should keep in mind if you are going to +distribute patches for updating a software package. + +@menu +* Tips for Patch Producers:: Advice for making patches. +* Tips for Patch Consumers:: Advice for using patches. +* Avoiding Common Mistakes:: Avoiding common mistakes when using @command{patch}. +* Generating Smaller Patches:: How to generate smaller patches. +@end menu + +@node Tips for Patch Producers +@section Tips for Patch Producers +@cindex patch producer tips + +To create a patch that changes an older version of a package into a +newer version, first make a copy of the older and newer versions in +adjacent subdirectories. It is common to do that by unpacking +@command{tar} archives of the two versions. + +To generate the patch, use the command @samp{diff -Naur @var{old} +@var{new}} where @var{old} and @var{new} identify the old and new +directories. The names @var{old} and @var{new} should not contain any +slashes. The @option{-N} option lets the patch create and remove +files; @option{-a} lets the patch update non-text files; @option{-u} +generates useful time stamps and enough context; and @option{-r} lets +the patch update subdirectories. Here is an example command, using +Bourne shell syntax: + +@example +diff -Naur gcc-3.0.3 gcc-3.0.4 +@end example + +Tell your recipients how to apply the patches. This should include +which working directory to use, and which @command{patch} options to +use; the option @samp{-p1} is recommended. Test your procedure by +pretending to be a recipient and applying your patches to a copy of +the original files. + +@xref{Avoiding Common Mistakes}, for how to avoid common mistakes when +generating a patch. + +@node Tips for Patch Consumers +@section Tips for Patch Consumers +@cindex patch consumer tips + +A patch producer should tell recipients how to apply the patches, so +the first rule of thumb for a patch consumer is to follow the +instructions supplied with the patch. + +@sc{gnu} @command{diff} can analyze files with arbitrarily long lines +and files that end in incomplete lines. However, older versions of +@command{patch} cannot patch such files. If you are having trouble +applying such patches, try upgrading to a recent version of @sc{gnu} +@command{patch}. + +@node Avoiding Common Mistakes +@section Avoiding Common Mistakes +@cindex common mistakes with patches +@cindex patch, common mistakes + +When producing a patch for multiple files, apply @command{diff} to +directories whose names do not have slashes. This reduces confusion +when the patch consumer specifies the @option{-p@var{number}} option, +since this option can have surprising results when the old and new +file names have different numbers of slashes. For example, do not +send a patch with a header that looks like this: + +@example +diff -Naur v2.0.29/prog/README prog/README +--- v2.0.29/prog/README 2002-03-10 23:30:39.942229878 -0800 ++++ prog/README 2002-03-17 20:49:32.442260588 -0800 +@end example + +@noindent +because the two file names have different numbers of slashes, and +different versions of @command{patch} interpret the file names +differently. To avoid confusion, send output that looks like this +instead: + +@example +diff -Naur v2.0.29/prog/README v2.0.30/prog/README +--- v2.0.29/prog/README 2002-03-10 23:30:39.942229878 -0800 ++++ v2.0.30/prog/README 2002-03-17 20:49:32.442260588 -0800 +@end example + +Make sure you have specified the file names correctly, either in a +context diff header or with an @samp{Index:} line. Take care to not send out +reversed patches, since these make people wonder whether they have +already applied the patch. + +Avoid sending patches that compare backup file names like +@file{README.orig} or @file{README~}, since this might confuse +@command{patch} into patching a backup file instead of the real file. +Instead, send patches that compare the same base file names in +different directories, e.g.@: @file{old/README} and @file{new/README}. + +To save people from partially applying a patch before other patches that +should have gone before it, you can make the first patch in the patch +file update a file with a name like @file{patchlevel.h} or +@file{version.c}, which contains a patch level or version number. If +the input file contains the wrong version number, @command{patch} will +complain immediately. + +An even clearer way to prevent this problem is to put a @samp{Prereq:} +line before the patch. If the leading text in the patch file contains a +line that starts with @samp{Prereq:}, @command{patch} takes the next word +from that line (normally a version number) and checks whether the next +input file contains that word, preceded and followed by either +white space or a newline. If not, @command{patch} prompts you for +confirmation before proceeding. This makes it difficult to accidentally +apply patches in the wrong order. + +@node Generating Smaller Patches +@section Generating Smaller Patches +@cindex patches, shrinking + +The simplest way to generate a patch is to use @samp{diff -Naur} +(@pxref{Tips for Patch Producers}), but you might be able to reduce +the size of the patch by renaming or removing some files before making +the patch. If the older version of the package contains any files +that the newer version does not, or if any files have been renamed +between the two versions, make a list of @command{rm} and @command{mv} +commands for the user to execute in the old version directory before +applying the patch. Then run those commands yourself in the scratch +directory. + +If there are any files that you don't need to include in the patch +because they can easily be rebuilt from other files (for example, +@file{TAGS} and output from @command{yacc} and @command{makeinfo}), +exclude them from the patch by giving @command{diff} the @option{-x +@var{pattern}} option (@pxref{Comparing Directories}). If you want +your patch to modify a derived file because your recipients lack tools +to build it, make sure that the patch for the derived file follows any +patches for files that it depends on, so that the recipients' time +stamps will not confuse @command{make}. + +Now you can create the patch using @samp{diff -Naur}. Make sure to +specify the scratch directory first and the newer directory second. + +Add to the top of the patch a note telling the user any @command{rm} and +@command{mv} commands to run before applying the patch. Then you can +remove the scratch directory. + +You can also shrink the patch size by using fewer lines of context, +but bear in mind that @command{patch} typically needs at least two +lines for proper operation when patches do not exactly match the input +files. + +@node Invoking cmp +@chapter Invoking @command{cmp} +@cindex invoking @command{cmp} +@cindex @command{cmp} invocation + +The @command{cmp} command compares two files, and if they differ, +tells the first byte and line number where they differ. Bytes and +lines are numbered starting with 1. The arguments of @command{cmp} +are as follows: + +@example +cmp @var{options}@dots{} @var{from-file} @r{[}@var{to-file} @r{[}@var{from-skip} @r{[}@var{to-skip}@r{]}@r{]}@r{]} +@end example + +The file name @file{-} is always the standard input. @command{cmp} +also uses the standard input if one file name is omitted. The +@var{from-skip} and @var{to-skip} operands specify how many bytes to +ignore at the start of each file; they are equivalent to the +@option{--ignore-initial=@var{from-skip}:@var{to-skip}} option. + +An exit status of 0 means no differences were found, 1 means some +differences were found, and 2 means trouble. + +@menu +* cmp Options:: Summary of options to @command{cmp}. +@end menu + +@node cmp Options +@section Options to @command{cmp} +@cindex @command{cmp} options +@cindex options for @command{cmp} + +Below is a summary of all of the options that @sc{gnu} @command{cmp} accepts. +Most options have two equivalent names, one of which is a single letter +preceded by @samp{-}, and the other of which is a long name preceded by +@samp{--}. Multiple single letter options (unless they take an +argument) can be combined into a single command line word: @option{-bl} is +equivalent to @option{-b -l}. + +@table @option +@item -b +@itemx --print-bytes +Print the differing bytes. Display control bytes as a +@samp{^} followed by a letter of the alphabet and precede bytes +that have the high bit set with @samp{M-} (which stands for ``meta''). + +@item --help +Output a summary of usage and then exit. + +@item -i @var{skip} +@itemx --ignore-initial=@var{skip} +Ignore any differences in the first @var{skip} bytes of the input +files. Treat files with fewer than @var{skip} bytes as if they are +empty. If @var{skip} is of the form +@option{@var{from-skip}:@var{to-skip}}, skip the first @var{from-skip} +bytes of the first input file and the first @var{to-skip} bytes of the +second. + +@item -l +@itemx --verbose +Print the (decimal) byte numbers and (octal) values of all differing bytes. + +@item -n @var{count} +@itemx --bytes=@var{count} +Compare at most @var{count} input bytes. + +@item -s +@itemx --quiet +@itemx --silent +Do not print anything; only return an exit status indicating whether +the files differ. + +@item -v +@itemx --version +Output version information and then exit. +@end table + +In the above table, operands that are byte counts are normally +decimal, but may be preceded by @samp{0} for octal and @samp{0x} for +hexadecimal. + +A byte count can be followed by a suffix to specify a multiple of that +count; in this case an omitted integer is understood to be 1. A bare +size letter, or one followed by @samp{iB}, specifies a multiple using +powers of 1024. A size letter followed by @samp{B} specifies powers +of 1000 instead. For example, @option{-n 4M} and @option{-n 4MiB} are +equivalent to @option{-n 4194304}, whereas @option{-n 4MB} is +equivalent to @option{-n 4000000}. This notation is upward compatible +with the @uref{http://www.bipm.fr/enus/3_SI/si-prefixes.html, SI +prefixes} for decimal multiples and with the +@uref{http://physics.nist.gov/cuu/Units/binary.html, IEC 60027-2 +prefixes for binary multiples}. + +The following suffixes are defined. Large sizes like @code{1Y} may be +rejected by your computer due to limitations of its arithmetic. + +@table @samp +@item kB +@cindex kilobyte, definition of +kilobyte: @math{10^3 = 1000}. +@item k +@itemx K +@itemx KiB +@cindex kibibyte, definition of +kibibyte: @math{2^10 = 1024}. @samp{K} is special: the SI prefix is +@samp{k} and the IEC 60027-2 prefix is @samp{Ki}, but tradition and +@sc{posix} use @samp{k} to mean @samp{KiB}. +@item MB +@cindex megabyte, definition of +megabyte: @math{10^6 = 1,000,000}. +@item M +@itemx MiB +@cindex mebibyte, definition of +mebibyte: @math{2^20 = 1,048,576}. +@item GB +@cindex gigabyte, definition of +gigabyte: @math{10^9 = 1,000,000,000}. +@item G +@itemx GiB +@cindex gibibyte, definition of +gibibyte: @math{2^30 = 1,073,741,824}. +@item TB +@cindex terabyte, definition of +terabyte: @math{10^12 = 1,000,000,000,000}. +@item T +@itemx TiB +@cindex tebibyte, definition of +tebibyte: @math{2^40 = 1,099,511,627,776}. +@item PB +@cindex petabyte, definition of +petabyte: @math{10^15 = 1,000,000,000,000,000}. +@item P +@itemx PiB +@cindex pebibyte, definition of +pebibyte: @math{2^50 = 1,125,899,906,842,624}. +@item EB +@cindex exabyte, definition of +exabyte: @math{10^18 = 1,000,000,000,000,000,000}. +@item E +@itemx EiB +@cindex exbibyte, definition of +exbibyte: @math{2^60 = 1,152,921,504,606,846,976}. +@item ZB +@cindex zettabyte, definition of +zettabyte: @math{10^21 = 1,000,000,000,000,000,000,000} +@item Z +@itemx ZiB +@math{2^70 = 1,180,591,620,717,411,303,424}. +(@samp{Zi} is a GNU extension to IEC 60027-2.) +@item YB +@cindex yottabyte, definition of +yottabyte: @math{10^24 = 1,000,000,000,000,000,000,000,000}. +@item Y +@itemx YiB +@math{2^80 = 1,208,925,819,614,629,174,706,176}. +(@samp{Yi} is a GNU extension to IEC 60027-2.) +@end table + +@node Invoking diff +@chapter Invoking @command{diff} +@cindex invoking @command{diff} +@cindex @command{diff} invocation + +The format for running the @command{diff} command is: + +@example +diff @var{options}@dots{} @var{files}@dots{} +@end example + +In the simplest case, two file names @var{from-file} and +@var{to-file} are given, and @command{diff} compares the contents of +@var{from-file} and @var{to-file}. A file name of @file{-} stands for +text read from the standard input. As a special case, @samp{diff - -} +compares a copy of standard input to itself. + +If one file is a directory and the other is not, @command{diff} compares +the file in the directory whose name is that of the non-directory. +The non-directory file must not be @file{-}. + +If two file names are given and both are directories, +@command{diff} compares corresponding files in both directories, in +alphabetical order; this comparison is not recursive unless the +@option{-r} or @option{--recursive} option is given. @command{diff} never +compares the actual contents of a directory as if it were a file. The +file that is fully specified may not be standard input, because standard +input is nameless and the notion of ``file with the same name'' does not +apply. + +If the @option{--from-file=@var{file}} option is given, the number of +file names is arbitrary, and @var{file} is compared to each named file. +Similarly, if the @option{--to-file=@var{file}} option is given, each +named file is compared to @var{file}. + +@command{diff} options begin with @samp{-}, so normally file names +may not begin with @samp{-}. However, @option{--} as an +argument by itself treats the remaining arguments as file names even if +they begin with @samp{-}. + +An exit status of 0 means no differences were found, 1 means some +differences were found, and 2 means trouble. + +@menu +* diff Options:: Summary of options to @command{diff}. +@end menu + +@node diff Options +@section Options to @command{diff} +@cindex @command{diff} options +@cindex options for @command{diff} + +Below is a summary of all of the options that @sc{gnu} @command{diff} accepts. +Most options have two equivalent names, one of which is a single letter +preceded by @samp{-}, and the other of which is a long name preceded by +@samp{--}. Multiple single letter options (unless they take an +argument) can be combined into a single command line word: @option{-ac} is +equivalent to @option{-a -c}. Long named options can be abbreviated to +any unique prefix of their name. Brackets ([ and ]) indicate that an +option takes an optional argument. + +@table @option +@item -a +@itemx --text +Treat all files as text and compare them line-by-line, even if they +do not seem to be text. @xref{Binary}. + +@item -b +@itemx --ignore-space-change +Ignore changes in amount of white space. @xref{White Space}. + +@item -B +@itemx --ignore-blank-lines +Ignore changes that just insert or delete blank lines. @xref{Blank +Lines}. + +@item --binary +Read and write data in binary mode. @xref{Binary}. + +@item -c +Use the context output format, showing three lines of context. +@xref{Context Format}. + +@item -C @var{lines} +@itemx --context@r{[}=@var{lines}@r{]} +Use the context output format, showing @var{lines} (an integer) lines of +context, or three if @var{lines} is not given. @xref{Context Format}. +For proper operation, @command{patch} typically needs at least two lines of +context. + +On older systems, @command{diff} supports an obsolete option +@option{-@var{lines}} that has effect when combined with @option{-c} +or @option{-p}. @sc{posix} 1003.1-2001 (@pxref{Standards +conformance}) does not allow this; use @option{-C @var{lines}} +instead. + +@item --changed-group-format=@var{format} +Use @var{format} to output a line group containing differing lines from +both files in if-then-else format. @xref{Line Group Formats}. + +@item -d +@itemx --minimal +Change the algorithm perhaps find a smaller set of changes. This makes +@command{diff} slower (sometimes much slower). @xref{diff Performance}. + +@item -D @var{name} +@itemx --ifdef=@var{name} +Make merged @samp{#ifdef} format output, conditional on the preprocessor +macro @var{name}. @xref{If-then-else}. + +@item -e +@itemx --ed +Make output that is a valid @command{ed} script. @xref{ed Scripts}. + +@item -E +@itemx --ignore-tab-expansion +Ignore changes due to tab expansion. +@xref{White Space}. + +@item -f +@itemx --forward-ed +Make output that looks vaguely like an @command{ed} script but has changes +in the order they appear in the file. @xref{Forward ed}. + +@item -F @var{regexp} +@itemx --show-function-line=@var{regexp} +In context and unified format, for each hunk of differences, show some +of the last preceding line that matches @var{regexp}. @xref{Specified +Headings}. + +@item --from-file=@var{file} +Compare @var{file} to each operand; @var{file} may be a directory. + +@item --help +Output a summary of usage and then exit. + +@item --horizon-lines=@var{lines} +Do not discard the last @var{lines} lines of the common prefix +and the first @var{lines} lines of the common suffix. +@xref{diff Performance}. + +@item -i +@itemx --ignore-case +Ignore changes in case; consider upper- and lower-case letters +equivalent. @xref{Case Folding}. + +@item -I @var{regexp} +@itemx --ignore-matching-lines=@var{regexp} +Ignore changes that just insert or delete lines that match @var{regexp}. +@xref{Specified Folding}. + +@item --ignore-file-name-case +Ignore case when comparing file names during recursive comparison. +@xref{Comparing Directories}. + +@item -l +@itemx --paginate +Pass the output through @command{pr} to paginate it. @xref{Pagination}. + +@item --label=@var{label} +Use @var{label} instead of the file name in the context format +(@pxref{Context Format}) and unified format (@pxref{Unified Format}) +headers. @xref{RCS}. + +@item --left-column +Print only the left column of two common lines in side by side format. +@xref{Side by Side Format}. + +@item --line-format=@var{format} +Use @var{format} to output all input lines in if-then-else format. +@xref{Line Formats}. + +@item -n +@itemx --rcs +Output @sc{rcs}-format diffs; like @option{-f} except that each command +specifies the number of lines affected. @xref{RCS}. + +@item -N +@itemx --new-file +In directory comparison, if a file is found in only one directory, +treat it as present but empty in the other directory. @xref{Comparing +Directories}. + +@item --new-group-format=@var{format} +Use @var{format} to output a group of lines taken from just the second +file in if-then-else format. @xref{Line Group Formats}. + +@item --new-line-format=@var{format} +Use @var{format} to output a line taken from just the second file in +if-then-else format. @xref{Line Formats}. + +@item --old-group-format=@var{format} +Use @var{format} to output a group of lines taken from just the first +file in if-then-else format. @xref{Line Group Formats}. + +@item --old-line-format=@var{format} +Use @var{format} to output a line taken from just the first file in +if-then-else format. @xref{Line Formats}. + +@item -p +@itemx --show-c-function +Show which C function each change is in. @xref{C Function Headings}. + +@item -q +@itemx --brief +Report only whether the files differ, not the details of the +differences. @xref{Brief}. + +@item -r +@itemx --recursive +When comparing directories, recursively compare any subdirectories +found. @xref{Comparing Directories}. + +@item -s +@itemx --report-identical-files +Report when two files are the same. @xref{Comparing Directories}. + +@item -S @var{file} +@itemx --starting-file=@var{file} +When comparing directories, start with the file @var{file}. This is +used for resuming an aborted comparison. @xref{Comparing Directories}. + +@item --speed-large-files +Use heuristics to speed handling of large files that have numerous +scattered small changes. @xref{diff Performance}. + +@item --strip-trailing-cr +Strip any trailing carriage return at the end of an input line. +@xref{Binary}. + +@item --suppress-common-lines +Do not print common lines in side by side format. +@xref{Side by Side Format}. + +@item -t +@itemx --expand-tabs +Expand tabs to spaces in the output, to preserve the alignment of tabs +in the input files. @xref{Tabs}. + +@item -T +@itemx --initial-tab +Output a tab rather than a space before the text of a line in normal or +context format. This causes the alignment of tabs in the line to look +normal. @xref{Tabs}. + +@item --to-file=@var{file} +Compare each operand to @var{file}; @var{file} may be a directory. + +@item -u +Use the unified output format, showing three lines of context. +@xref{Unified Format}. + +@item --unchanged-group-format=@var{format} +Use @var{format} to output a group of common lines taken from both files +in if-then-else format. @xref{Line Group Formats}. + +@item --unchanged-line-format=@var{format} +Use @var{format} to output a line common to both files in if-then-else +format. @xref{Line Formats}. + +@item --unidirectional-new-file +When comparing directories, if a file appears only in the second +directory of the two, treat it as present but empty in the other. +@xref{Comparing Directories}. + +@item -U @var{lines} +@itemx --unified@r{[}=@var{lines}@r{]} +Use the unified output format, showing @var{lines} (an integer) lines of +context, or three if @var{lines} is not given. @xref{Unified Format}. +For proper operation, @command{patch} typically needs at least two lines of +context. + +On older systems, @command{diff} supports an obsolete option +@option{-@var{lines}} that has effect when combined with @option{-u}. +@sc{posix} 1003.1-2001 (@pxref{Standards conformance}) does not allow +this; use @option{-U @var{lines}} instead. + +@item -v +@itemx --version +Output version information and then exit. + +@item -w +@itemx --ignore-all-space +Ignore white space when comparing lines. @xref{White Space}. + +@item -W @var{columns} +@itemx --width=@var{columns} +Output at most @var{columns} (default 130) print columns per line in +side by side format. @xref{Side by Side Format}. + +@item -x @var{pattern} +@itemx --exclude=@var{pattern} +When comparing directories, ignore files and subdirectories whose basenames +match @var{pattern}. @xref{Comparing Directories}. + +@item -X @var{file} +@itemx --exclude-from=@var{file} +When comparing directories, ignore files and subdirectories whose basenames +match any pattern contained in @var{file}. @xref{Comparing Directories}. + +@item -y +@itemx --side-by-side +Use the side by side output format. @xref{Side by Side Format}. +@end table + +@node Invoking diff3 +@chapter Invoking @command{diff3} +@cindex invoking @command{diff3} +@cindex @command{diff3} invocation + +The @command{diff3} command compares three files and outputs descriptions +of their differences. Its arguments are as follows: + +@example +diff3 @var{options}@dots{} @var{mine} @var{older} @var{yours} +@end example + +The files to compare are @var{mine}, @var{older}, and @var{yours}. +At most one of these three file names may be @file{-}, +which tells @command{diff3} to read the standard input for that file. + +An exit status of 0 means @command{diff3} was successful, 1 means some +conflicts were found, and 2 means trouble. + +@menu +* diff3 Options:: Summary of options to @command{diff3}. +@end menu + +@node diff3 Options +@section Options to @command{diff3} +@cindex @command{diff3} options +@cindex options for @command{diff3} + +Below is a summary of all of the options that @sc{gnu} @command{diff3} +accepts. Multiple single letter options (unless they take an argument) +can be combined into a single command line argument. + +@table @option +@item -a +@itemx --text +Treat all files as text and compare them line-by-line, even if they +do not appear to be text. @xref{Binary}. + +@item -A +@itemx --show-all +Incorporate all unmerged changes from @var{older} to @var{yours} into +@var{mine}, surrounding conflicts with bracket lines. +@xref{Marking Conflicts}. + +@item --diff-program=@var{program} +Use the compatible comparison program @var{program} to compare files +instead of @command{diff}. + +@item -e +@itemx --ed +Generate an @command{ed} script that incorporates all the changes from +@var{older} to @var{yours} into @var{mine}. @xref{Which Changes}. + +@item -E +@itemx --show-overlap +Like @option{-e}, except bracket lines from overlapping changes' first +and third files. +@xref{Marking Conflicts}. +With @option{-E}, an overlapping change looks like this: + +@example +<<<<<<< @var{mine} +@r{lines from @var{mine}} +======= +@r{lines from @var{yours}} +>>>>>>> @var{yours} +@end example + +@item --help +Output a summary of usage and then exit. + +@item -i +Generate @samp{w} and @samp{q} commands at the end of the @command{ed} +script for System V compatibility. This option must be combined with +one of the @option{-AeExX3} options, and may not be combined with @option{-m}. +@xref{Saving the Changed File}. + +@item -L @var{label} +@itemx --label=@var{label} +Use the label @var{label} for the brackets output by the @option{-A}, +@option{-E} and @option{-X} options. This option may be given up to three +times, one for each input file. The default labels are the names of +the input files. Thus @samp{diff3 -L X -L Y -L Z -m A B C} acts like +@samp{diff3 -m A B C}, except that the output looks like it came from +files named @samp{X}, @samp{Y} and @samp{Z} rather than from files +named @samp{A}, @samp{B} and @samp{C}. @xref{Marking Conflicts}. + +@item -m +@itemx --merge +Apply the edit script to the first file and send the result to standard +output. Unlike piping the output from @command{diff3} to @command{ed}, this +works even for binary files and incomplete lines. @option{-A} is assumed +if no edit script option is specified. @xref{Bypassing ed}. + +@item -T +@itemx --initial-tab +Output a tab rather than two spaces before the text of a line in normal format. +This causes the alignment of tabs in the line to look normal. @xref{Tabs}. + +@item -v +@itemx --version +Output version information and then exit. + +@item -x +@itemx --overlap-only +Like @option{-e}, except output only the overlapping changes. +@xref{Which Changes}. + +@item -X +Like @option{-E}, except output only the overlapping changes. +In other words, like @option{-x}, except bracket changes as in @option{-E}. +@xref{Marking Conflicts}. + +@item -3 +@itemx --easy-only +Like @option{-e}, except output only the nonoverlapping changes. +@xref{Which Changes}. +@end table + +@node Invoking patch +@chapter Invoking @command{patch} +@cindex invoking @command{patch} +@cindex @command{patch} invocation + +Normally @command{patch} is invoked like this: + +@example +patch <@var{patchfile} +@end example + +The full format for invoking @command{patch} is: + +@example +patch @var{options}@dots{} @r{[}@var{origfile} @r{[}@var{patchfile}@r{]}@r{]} +@end example + +You can also specify where to read the patch from with the @option{-i +@var{patchfile}} or @option{--input=@var{patchfile}} option. +If you do not specify @var{patchfile}, or if @var{patchfile} is +@file{-}, @command{patch} reads the patch (that is, the @command{diff} output) +from the standard input. + +If you do not specify an input file on the command line, @command{patch} +tries to intuit from the @dfn{leading text} (any text in the patch +that comes before the @command{diff} output) which file to edit. +@xref{Multiple Patches}. + +By default, @command{patch} replaces the original input file with the +patched version, possibly after renaming the original file into a +backup file (@pxref{Backup Names}, for a description of how +@command{patch} names backup files). You can also specify where to +put the output with the @option{-o @var{file}} or +@option{--output=@var{file}} option; however, do not use this option +if @var{file} is one of the input files. + +@menu +* patch Options:: Summary table of options to @command{patch}. +@end menu + +@node patch Options +@section Options to @command{patch} +@cindex @command{patch} options +@cindex options for @command{patch} + +Here is a summary of all of the options that @sc{gnu} @command{patch} +accepts. @xref{patch and Tradition}, for which of these options are +safe to use in older versions of @command{patch}. + +Multiple single-letter options that do not take an argument can be +combined into a single command line argument with only one dash. + +@table @option +@item -b +@itemx --backup +Back up the original contents of each file, even if backups would +normally not be made. @xref{Backups}. + +@item -B @var{prefix} +@itemx --prefix=@var{prefix} +Prepend @var{prefix} to backup file names. @xref{Backup Names}. + +@item --backup-if-mismatch +Back up the original contents of each file if the patch does not +exactly match the file. This is the default behavior when not +conforming to @sc{posix}. @xref{Backups}. + +@item --binary +Read and write all files in binary mode, except for standard output +and @file{/dev/tty}. This option has no effect on +@sc{posix}-conforming systems like @sc{gnu}/Linux. On systems where +this option makes a difference, the patch should be generated by +@samp{diff -a --binary}. @xref{Binary}. + +@item -c +@itemx --context +Interpret the patch file as a context diff. @xref{patch Input}. + +@item -d @var{directory} +@itemx --directory=@var{directory} +Make directory @var{directory} the current directory for interpreting +both file names in the patch file, and file names given as arguments to +other options. @xref{patch Directories}. + +@item -D @var{name} +@itemx --ifdef=@var{name} +Make merged if-then-else output using @var{name}. @xref{If-then-else}. + +@item --dry-run +Print the results of applying the patches without actually changing +any files. @xref{Dry Runs}. + +@item -e +@itemx --ed +Interpret the patch file as an @command{ed} script. @xref{patch Input}. + +@item -E +@itemx --remove-empty-files +Remove output files that are empty after the patches have been applied. +@xref{Creating and Removing}. + +@item -f +@itemx --force +Assume that the user knows exactly what he or she is doing, and do not +ask any questions. @xref{patch Messages}. + +@item -F @var{lines} +@itemx --fuzz=@var{lines} +Set the maximum fuzz factor to @var{lines}. @xref{Inexact}. + +@item -g @var{num} +@itemx --get=@var{num} +If @var{num} is positive, get input files from a revision control +system as necessary; if zero, do not get the files; if negative, ask +the user whether to get the files. @xref{Revision Control}. + +@item --help +Output a summary of usage and then exit. + +@item -i @var{patchfile} +@itemx --input=@var{patchfile} +Read the patch from @var{patchfile} rather than from standard input. +@xref{patch Options}. + +@item -l +@itemx --ignore-white-space +Let any sequence of blanks (spaces or tabs) in the patch file match +any sequence of blanks in the input file. @xref{Changed White Space}. + +@item -n +@itemx --normal +Interpret the patch file as a normal diff. @xref{patch Input}. + +@item -N +@itemx --forward +Ignore patches that @command{patch} thinks are reversed or already applied. +See also @option{-R}. @xref{Reversed Patches}. + +@item --no-backup-if-mismatch +Do not back up the original contents of files. This is the default +behavior when conforming to @sc{posix}. @xref{Backups}. + +@item -o @var{file} +@itemx --output=@var{file} +Use @var{file} as the output file name. @xref{patch Options}. + +@item -p@var{number} +@itemx --strip=@var{number} +Set the file name strip count to @var{number}. @xref{patch Directories}. + +@item --posix +Conform to @sc{posix}, as if the @env{POSIXLY_CORRECT} environment +variable had been set. @xref{patch and POSIX}. + +@item --quoting-style=@var{word} +Use style @var{word} to quote names in diagnostics, as if the +@env{QUOTING_STYLE} environment variable had been set to @var{word}. +@xref{patch Quoting Style}. + +@item -r @var{reject-file} +@itemx --reject-file=@var{reject-file} +Use @var{reject-file} as the reject file name. @xref{Reject Names}. + +@item -R +@itemx --reverse +Assume that this patch was created with the old and new files swapped. +@xref{Reversed Patches}. + +@item -s +@itemx --quiet +@itemx --silent +Work silently unless an error occurs. @xref{patch Messages}. + +@item -t +@itemx --batch +Do not ask any questions. @xref{patch Messages}. + +@item -T +@itemx --set-time +Set the modification and access times of patched files from time +stamps given in context diff headers, assuming that the context diff +headers use local time. @xref{Patching Time Stamps}. + +@item -u +@itemx --unified +Interpret the patch file as a unified diff. @xref{patch Input}. + +@item -v +@itemx --version +Output version information and then exit. + +@item -V @var{backup-style} +@itemx --version=control=@var{backup-style} +Select the naming convention for backup file names. @xref{Backup Names}. + +@item --verbose +Print more diagnostics than usual. @xref{patch Messages}. + +@item -x @var{number} +@itemx --debug=@var{number} +Set internal debugging flags. Of interest only to @command{patch} +patchers. + +@item -Y @var{prefix} +@itemx --basename-prefix=@var{prefix} +Prepend @var{prefix} to base names of backup files. @xref{Backup Names}. + +@item -z @var{suffix} +@itemx --suffix=@var{suffix} +Use @var{suffix} as the backup extension instead of @samp{.orig} or +@samp{~}. @xref{Backup Names}. + +@item -Z +@itemx --set-utc +Set the modification and access times of patched files from time +stamps given in context diff headers, assuming that the context diff +headers use @sc{utc}. @xref{Patching Time Stamps}. + +@end table + +@node Invoking sdiff +@chapter Invoking @command{sdiff} +@cindex invoking @command{sdiff} +@cindex @command{sdiff} invocation + +The @command{sdiff} command merges two files and interactively outputs the +results. Its arguments are as follows: + +@example +sdiff -o @var{outfile} @var{options}@dots{} @var{from-file} @var{to-file} +@end example + +This merges @var{from-file} with @var{to-file}, with output to @var{outfile}. +If @var{from-file} is a directory and @var{to-file} is not, @command{sdiff} +compares the file in @var{from-file} whose file name is that of @var{to-file}, +and vice versa. @var{from-file} and @var{to-file} may not both be +directories. + +@command{sdiff} options begin with @samp{-}, so normally @var{from-file} +and @var{to-file} may not begin with @samp{-}. However, @option{--} as an +argument by itself treats the remaining arguments as file names even if +they begin with @samp{-}. You may not use @file{-} as an input file. + +@command{sdiff} without @option{-o} (or @option{--output}) produces a +side-by-side difference. This usage is obsolete; use the @option{-y} +or @option{--side-by-side} option of @command{diff} instead. + +An exit status of 0 means no differences were found, 1 means some +differences were found, and 2 means trouble. + +@menu +* sdiff Options:: Summary of options to @command{diff}. +@end menu + +@node sdiff Options +@section Options to @command{sdiff} +@cindex @command{sdiff} options +@cindex options for @command{sdiff} + +Below is a summary of all of the options that @sc{gnu} @command{sdiff} accepts. +Each option has two equivalent names, one of which is a single +letter preceded by @samp{-}, and the other of which is a long name +preceded by @samp{--}. Multiple single letter options (unless they take +an argument) can be combined into a single command line argument. Long +named options can be abbreviated to any unique prefix of their name. + +@table @option +@item -a +@itemx --text +Treat all files as text and compare them line-by-line, even if they +do not appear to be text. @xref{Binary}. + +@item -b +@itemx --ignore-space-change +Ignore changes in amount of white space. @xref{White Space}. + +@item -B +@itemx --ignore-blank-lines +Ignore changes that just insert or delete blank lines. @xref{Blank +Lines}. + +@item -d +@itemx --minimal +Change the algorithm to perhaps find a smaller set of changes. This +makes @command{sdiff} slower (sometimes much slower). @xref{diff +Performance}. + +@item --diff-program=@var{program} +Use the compatible comparison program @var{program} to compare files +instead of @command{diff}. + +@item -E +@itemx --ignore-tab-expansion +Ignore changes due to tab expansion. +@xref{White Space}. + +@item --help +Output a summary of usage and then exit. + +@item -i +@itemx --ignore-case +Ignore changes in case; consider upper- and lower-case to be the same. +@xref{Case Folding}. + +@item -I @var{regexp} +@itemx --ignore-matching-lines=@var{regexp} +Ignore changes that just insert or delete lines that match @var{regexp}. +@xref{Specified Folding}. + +@item -l +@itemx --left-column +Print only the left column of two common lines. +@xref{Side by Side Format}. + +@item -o @var{file} +@itemx --output=@var{file} +Put merged output into @var{file}. This option is required for merging. + +@item -s +@itemx --suppress-common-lines +Do not print common lines. @xref{Side by Side Format}. + +@item --speed-large-files +Use heuristics to speed handling of large files that have numerous +scattered small changes. @xref{diff Performance}. + +@item --strip-trailing-cr +Strip any trailing carriage return at the end of an input line. +@xref{Binary}. + +@item -t +@itemx --expand-tabs +Expand tabs to spaces in the output, to preserve the alignment of tabs +in the input files. @xref{Tabs}. + +@item -v +@itemx --version +Output version information and then exit. + +@item -w @var{columns} +@itemx --width=@var{columns} +Output at most @var{columns} (default 130) print columns per line. +@xref{Side by Side Format}. Note that for historical reasons, this +option is @option{-W} in @command{diff}, @option{-w} in @command{sdiff}. + +@item -W +@itemx --ignore-all-space +Ignore white space when comparing lines. @xref{White Space}. +Note that for historical reasons, this option is @option{-w} in @command{diff}, +@option{-W} in @command{sdiff}. +@end table + +@node Standards conformance +@chapter Standards conformance +@cindex @sc{posix} + +@vindex POSIXLY_CORRECT +In a few cases, the @sc{gnu} utilities' default behavior is +incompatible with the @sc{posix} standard. To suppress these +incompatibilities, define the @env{POSIXLY_CORRECT} environment +variable. Unless you are checking for @sc{posix} conformance, you +probably do not need to define @env{POSIXLY_CORRECT}. + +Normally options and operands can appear in any order, and programs act +as if all the options appear before any operands. For example, +@samp{diff lao tzu -C 2} acts like @samp{diff -C 2 lao tzu}, since +@samp{2} is an option-argument of @option{-C}. However, if the +@env{POSIXLY_CORRECT} environment variable is set, options must appear +before operands, unless otherwise specified for a particular command. + +Newer versions of @sc{posix} are occasionally incompatible with older +versions. For example, older versions of @sc{posix} allowed the +command @samp{diff -c -10} to have the same meaning as @samp{diff -C +10}, but @sc{posix} 1003.1-2001 @samp{diff} no longer allows +digit-string options like @option{-10}. + +@vindex _POSIX2_VERSION +The @sc{gnu} utilities normally conform to the version of @sc{posix} +that is standard for your system. To cause them to conform to a +different version of @sc{posix}, define the @env{_POSIX2_VERSION} +environment variable to a value of the form @var{yyyymm} specifying +the year and month the standard was adopted. Two values are currently +supported for @env{_POSIX2_VERSION}: @samp{199209} stands for +@sc{posix} 1003.2-1992, and @samp{200112} stands for @sc{posix} +1003.1-2001. For example, if you are running older software that +assumes an older version of @sc{posix} and uses @samp{diff -c -10}, +you can work around the compatibility problems by setting +@samp{_POSIX2_VERSION=199209} in your environment. + +@node Projects +@chapter Future Projects + +Here are some ideas for improving @sc{gnu} @command{diff} and +@command{patch}. The @sc{gnu} project has identified some +improvements as potential programming projects for volunteers. You +can also help by reporting any bugs that you find. + +If you are a programmer and would like to contribute something to the +@sc{gnu} project, please consider volunteering for one of these +projects. If you are seriously contemplating work, please write to +@email{gnu@@gnu.org} to coordinate with other volunteers. + +@menu +* Shortcomings:: Suggested projects for improvements. +* Bugs:: Reporting bugs. +@end menu + +@node Shortcomings +@section Suggested Projects for Improving @sc{gnu} @command{diff} and @command{patch} +@cindex projects for directories + +One should be able to use @sc{gnu} @command{diff} to generate a patch from any +pair of directory trees, and given the patch and a copy of one such +tree, use @command{patch} to generate a faithful copy of the other. +Unfortunately, some changes to directory trees cannot be expressed using +current patch formats; also, @command{patch} does not handle some of the +existing formats. These shortcomings motivate the following suggested +projects. + +@menu +* Internationalization:: Handling multibyte and varying-width characters. +* Changing Structure:: Handling changes to the directory structure. +* Special Files:: Handling symbolic links, device special files, etc. +* Unusual File Names:: Handling file names that contain unusual characters. +* Time Stamp Order:: Outputting diffs in time stamp order. +* Ignoring Changes:: Ignoring certain changes while showing others. +* Speedups:: Improving performance. +@end menu + +@node Internationalization +@subsection Handling Multibyte and Varying-Width Characters +@cindex multibyte characters +@cindex varying-width characters + +@command{diff}, @command{diff3} and @command{sdiff} treat each line of +input as a string of unibyte characters. This can mishandle multibyte +characters in some cases. For example, when asked to ignore spaces, +@command{diff} does not properly ignore a multibyte space character. + +Also, @command{diff} currently assumes that each byte is one column +wide, and this assumption is incorrect in some locales, e.g., locales +that use UTF-8 encoding. This causes problems with the @option{-y} or +@option{--side-by-side} option of @command{diff}. + +These problems need to be fixed without unduly affecting the +performance of the utilities in unibyte environments. + +The IBM GNU/Linux Technology Center Internationalization Team has +proposed some patches to support internationalized @command{diff} +@uref{http://oss.software.ibm.com/developer/opensource/linux/patches/i18n/diffutils-2.7.2-i18n-0.1.patch.gz}. +Unfortunately, these patches are incomplete and are to an older +version of @command{diff}, so more work needs to be done in this area. + +@node Changing Structure +@subsection Handling Changes to the Directory Structure +@cindex directory structure changes + +@command{diff} and @command{patch} do not handle some changes to directory +structure. For example, suppose one directory tree contains a directory +named @samp{D} with some subsidiary files, and another contains a file +with the same name @samp{D}. @samp{diff -r} does not output enough +information for @command{patch} to transform the directory subtree into +the file. + +There should be a way to specify that a file has been removed without +having to include its entire contents in the patch file. There should +also be a way to tell @command{patch} that a file was renamed, even if +there is no way for @command{diff} to generate such information. +There should be a way to tell @command{patch} that a file's time stamp +has changed, even if its contents have not changed. + +These problems can be fixed by extending the @command{diff} output format +to represent changes in directory structure, and extending @command{patch} +to understand these extensions. + +@node Special Files +@subsection Files that are Neither Directories Nor Regular Files +@cindex special files + +Some files are neither directories nor regular files: they are unusual +files like symbolic links, device special files, named pipes, and +sockets. Currently, @command{diff} treats symbolic links like regular files; +it treats other special files like regular files if they are specified +at the top level, but simply reports their presence when comparing +directories. This means that @command{patch} cannot represent changes +to such files. For example, if you change which file a symbolic link +points to, @command{diff} outputs the difference between the two files, +instead of the change to the symbolic link. + +@c This might not be a good idea; is it wise for root to install devices +@c this way? +@command{diff} should optionally report changes to special files specially, +and @command{patch} should be extended to understand these extensions. + +@node Unusual File Names +@subsection File Names that Contain Unusual Characters +@cindex file names with unusual characters + +When a file name contains an unusual character like a newline or +white space, @samp{diff -r} generates a patch that @command{patch} cannot +parse. The problem is with format of @command{diff} output, not just with +@command{patch}, because with odd enough file names one can cause +@command{diff} to generate a patch that is syntactically correct but +patches the wrong files. The format of @command{diff} output should be +extended to handle all possible file names. + +@node Time Stamp Order +@subsection Outputting Diffs in Time Stamp Order + +Applying @command{patch} to a multiple-file diff can result in files +whose time stamps are out of order. @sc{gnu} @command{patch} has +options to restore the time stamps of the updated files +(@pxref{Patching Time Stamps}), but sometimes it is useful to generate +a patch that works even if the recipient does not have @sc{gnu} patch, +or does not use these options. One way to do this would be to +implement a @command{diff} option to output diffs in time stamp order. + +@node Ignoring Changes +@subsection Ignoring Certain Changes + +It would be nice to have a feature for specifying two strings, one in +@var{from-file} and one in @var{to-file}, which should be considered to +match. Thus, if the two strings are @samp{foo} and @samp{bar}, then if +two lines differ only in that @samp{foo} in file 1 corresponds to +@samp{bar} in file 2, the lines are treated as identical. + +It is not clear how general this feature can or should be, or +what syntax should be used for it. + +A partial substitute is to filter one or both files before comparing, +e.g.: + +@example +sed 's/foo/bar/g' file1 | diff - file2 +@end example + +However, this outputs the filtered text, not the original. + +@node Speedups +@subsection Improving Performance + +When comparing two large directory structures, one of which was +originally copied from the other with time stamps preserved (e.g., +with @samp{cp -pR}), it would greatly improve performance if an option +told @command{diff} to assume that two files with the same size and +time stamps have the same content. @xref{diff Performance}. + +@node Bugs +@section Reporting Bugs +@cindex bug reports +@cindex reporting bugs + +If you think you have found a bug in @sc{gnu} @command{cmp}, +@command{diff}, @command{diff3}, or @command{sdiff}, please report it +by electronic mail to the +@uref{http://mail.gnu.org/mailman/listinfo/bug-gnu-utils,GNU utilities +bug report mailing list} @email{bug-gnu-utils@@gnu.org}. Please send +bug reports for @sc{gnu} @command{patch} to +@email{bug-patch@@gnu.org}. Send as precise a description of the +problem as you can, including the output of the @option{--version} +option and sample input files that produce the bug, if applicable. If +you have a nontrivial fix for the bug, please send it as well. If you +have a patch, please send it too. It may simplify the maintainer's +job if the patch is relative to a recent test release, which you can +find in the directory @uref{ftp://alpha.gnu.org/gnu/diffutils/}. + +@node Copying This Manual +@appendix Copying This Manual + +@menu +* GNU Free Documentation License:: License for copying this manual. +@end menu + +@include fdl.texi + +@node Index +@appendix Index + +@printindex cp + +@bye diff --git a/src/apps/bin/diffutils-2.8.1/doc/fdl.texi b/src/apps/bin/diffutils-2.8.1/doc/fdl.texi new file mode 100644 index 0000000000..361f90f7bb --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/doc/fdl.texi @@ -0,0 +1,403 @@ + +@node GNU Free Documentation License +@appendixsec GNU Free Documentation License + +@cindex FDL, GNU Free Documentation License +@center Version 1.1, March 2000 + +@display +Copyright @copyright{} 2000 Free Software Foundation, Inc. +59 Temple Place, Suite 330, Boston, MA 02111-1307, USA + +Everyone is permitted to copy and distribute verbatim copies +of this license document, but changing it is not allowed. +@end display + +@enumerate 0 +@item +PREAMBLE + +The purpose of this License is to make a manual, textbook, or other +written document @dfn{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. + +@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 +@sc{ascii} without markup, Texinfo input format, La@TeX{} input format, +@acronym{SGML} or @acronym{XML} using a publicly available +@acronym{DTD}, and standard-conforming simple @acronym{HTML} designed +for human modification. Opaque formats include PostScript, +@acronym{PDF}, proprietary formats that can be read and edited only by +proprietary word processors, @acronym{SGML} or @acronym{XML} for which +the @acronym{DTD} and/or processing tools are not generally available, +and the machine-generated @acronym{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. + +@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. + +@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. + +@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: + +@enumerate A +@item +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. + +@item +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). + +@item +State on the Title page the name of the publisher of the +Modified Version, as the publisher. + +@item +Preserve all the copyright notices of the Document. + +@item +Add an appropriate copyright notice for your modifications +adjacent to the other copyright notices. + +@item +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. + +@item +Preserve in that license notice the full lists of Invariant Sections +and required Cover Texts given in the Document's license notice. + +@item +Include an unaltered copy of this License. + +@item +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. + +@item +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. + +@item +In any section entitled ``Acknowledgments'' or ``Dedications'', +preserve the section's title, and preserve in the section all the +substance and tone of each of the contributor acknowledgments +and/or dedications given therein. + +@item +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. + +@item +Delete any section entitled ``Endorsements''. Such a section +may not be included in the Modified Version. + +@item +Do not retitle any existing section as ``Endorsements'' +or to conflict in title with any Invariant Section. +@end enumerate + +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. + +@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 ``Acknowledgments'', +and any sections entitled ``Dedications''. You must delete all sections +entitled ``Endorsements.'' + +@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. + +@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. + +@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. + +@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. + +@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 +@uref{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 + +@page +@appendixsubsec 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. + +@c Local Variables: +@c ispell-local-pdict: "ispell-dict" +@c End: + diff --git a/src/apps/bin/diffutils-2.8.1/doc/stamp-vti b/src/apps/bin/diffutils-2.8.1/doc/stamp-vti new file mode 100644 index 0000000000..5e7a10cf72 --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/doc/stamp-vti @@ -0,0 +1,4 @@ +@set UPDATED 5 April 2002 +@set UPDATED-MONTH April 2002 +@set EDITION 2.8.1 +@set VERSION 2.8.1 diff --git a/src/apps/bin/diffutils-2.8.1/doc/version.texi b/src/apps/bin/diffutils-2.8.1/doc/version.texi new file mode 100644 index 0000000000..5e7a10cf72 --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/doc/version.texi @@ -0,0 +1,4 @@ +@set UPDATED 5 April 2002 +@set UPDATED-MONTH April 2002 +@set EDITION 2.8.1 +@set VERSION 2.8.1 diff --git a/src/apps/bin/diffutils-2.8.1/exgettext b/src/apps/bin/diffutils-2.8.1/exgettext new file mode 100755 index 0000000000..c2a83466fe --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/exgettext @@ -0,0 +1,123 @@ +#! /bin/sh +# Wrapper around gettext for programs using the msgid convention. + +# Copyright (C) 1998, 2001 Free Software Foundation, Inc. + +# Written by Paul Eggert . + +# 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 GNU CC; see the file COPYING. If not, write to +# the Free Software Foundation, 59 Temple Place - Suite 330, +# Boston, MA 02111-1307, USA. + +# Always operate in the C locale. +LANG=C +LANGUAGE=C +LC_ALL=C +export LANG LANGUAGE LC_ALL + +# Set AWK if environment has not already set it. +AWK=${AWK-awk} + +# The argument to this wrapper is the xgettext command to be executed. +# Extract the xgettext program name from the rest of the command. +xgettext=${1?} +shift + +# Save work if we're just wrapping a no-op. +case $xgettext in +:) exit;; +esac + +# Find the files to be scanned, and the directory to scan them from. +directory=. +files= +for i +do + case $i in + --directory=*) + directory=`expr " $i" : ' --directory=\(.*\)'`;; + --files-from=*) + files_from=`expr " $i" : ' --files-from=\(.*\)'` + files=`$AWK '/^[^#]/ { print }' $files_from`;; + esac +done + +# Generate keyword options for xgettext, +# by scanning for declarations of functions +# whose parameter names end in "msgid". +generate_keyword_options=' + /^[A-Z_a-z].*\(.*msgid[,)]/ { + + paren_index = index($0, "(") + + name = substr($0, 1, paren_index - 1) + sub(/[^0-9A-Z_a-z]*$/, "", name) + sub(/[ ]+PARAMS/, "", name) + sub(/[ ]+VPARAMS/, "", name) + sub(/.*[^0-9A-Z_a-z]/, "", name) + + args = substr($0, paren_index) + sub(/msgid[,)].*/, "", args) + for (n = 1; sub(/^[^,]*,/, "", args); n++) { + continue; + } + + if (n == 1) { + keyword = name + } else { + keyword = name ":" n + } + + if (! keyword_seen[keyword]++) { + print "--keyword=" keyword + } + } +' +keyword_options=`( + cd $directory && + $AWK "$generate_keyword_options" $files < /dev/null +)` || exit + +# Generate temporary file reflecting the %e strings in the scanned files. +tmp=tmp-emsgids.c + +generate_emsgids=' + /%e.*}/ { + line = $0 + while ((percent_index = index(line, "%e")) != 0) { + line = substr(line, percent_index + 2) + bracket_index = index(line, "}") + if (bracket_index == 0) { + continue + } + msgid = substr(line, 1, bracket_index - 1) + if (index(msgid, "%") != 0) { + continue + } + printf "#line %d \"%s\"\n", FNR, FILENAME + printf "_(\"%s\")\n", msgid + line = substr(line, bracket_index + 1) + } + } +' +(cd $directory && + $AWK "$generate_emsgids" $files < /dev/null +) > $directory/$tmp || exit + +# Run the xgettext command, with temporary added as a file to scan. +"$xgettext" $keyword_options ${1+"$@"} $tmp || exit + +# Clean up. +# If we don't get here, `make clean' will remove this file later. +rm -f $directory/$tmp diff --git a/src/apps/bin/diffutils-2.8.1/lib/Jamfile b/src/apps/bin/diffutils-2.8.1/lib/Jamfile new file mode 100644 index 0000000000..e14cc3be18 --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/lib/Jamfile @@ -0,0 +1,43 @@ +SubDir OBOS_TOP src apps bin diffutils-2.8.1 lib ; + +SubDirCcFlags += -DHAVE_CONFIG_H ; + +StaticLibrary diffutils : +alloca.c +basename.c +c-stack.c +cmpbuf.c +error.c +exclude.c +exitfail.c +fnmatch.c +freesoft.c +getopt.c +getopt1.c +hard-locale.c +imaxtostr.c +malloc.c +memchr.c +mkstemp.c +offtostr.c +posixver.c +prepargs.c +quotesys.c +realloc.c +regex.c +setmode.c +strcasecmp.c +strftime.c +strtoimax.c +strtol.c +strtoul.c +strtoull.c +strtoumax.c +tempname.c +umaxtostr.c +waitpid.c +xmalloc.c +xstrtol.c +xstrtoumax.c +: STATIC_LIBRARY_DIR +; diff --git a/src/apps/bin/diffutils-2.8.1/lib/Makefile b/src/apps/bin/diffutils-2.8.1/lib/Makefile new file mode 100644 index 0000000000..bdb5b8f413 --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/lib/Makefile @@ -0,0 +1,493 @@ +# Makefile.in generated by automake 1.6 from Makefile.am. +# lib/Makefile. Generated from Makefile.in by configure. + +# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002 +# Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + + + +# Automakefile for GNU Diffutils library. + +# Copyright (C) 2001, 2002 Free Software Foundation, Inc. +SHELL = /bin/sh + +srcdir = . +top_srcdir = .. + +prefix = /usr/local +exec_prefix = ${prefix} + +bindir = ${exec_prefix}/bin +sbindir = ${exec_prefix}/sbin +libexecdir = ${exec_prefix}/libexec +datadir = ${prefix}/share +sysconfdir = ${prefix}/etc +sharedstatedir = ${prefix}/com +localstatedir = ${prefix}/var +libdir = ${exec_prefix}/lib +infodir = ${prefix}/info +mandir = ${prefix}/man +includedir = ${prefix}/include +oldincludedir = /usr/include +pkgdatadir = $(datadir)/diffutils +pkglibdir = $(libdir)/diffutils +pkgincludedir = $(includedir)/diffutils +top_builddir = .. + +ACLOCAL = ${SHELL} /boot/home/Development/current/src/apps/bin/diffutils-2.8.1/config/missing --run aclocal-1.6 +AUTOCONF = ${SHELL} /boot/home/Development/current/src/apps/bin/diffutils-2.8.1/config/missing --run autoconf +AUTOMAKE = ${SHELL} /boot/home/Development/current/src/apps/bin/diffutils-2.8.1/config/missing --run automake-1.6 +AUTOHEADER = ${SHELL} /boot/home/Development/current/src/apps/bin/diffutils-2.8.1/config/missing --run autoheader + +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = /bin/install -c +INSTALL_PROGRAM = ${INSTALL} +INSTALL_DATA = ${INSTALL} -m 644 +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +INSTALL_SCRIPT = ${INSTALL} +INSTALL_HEADER = $(INSTALL_DATA) +transform = s,x,x, +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +host_alias = +host_triplet = i586-pc-beos + +EXEEXT = +OBJEXT = o +PATH_SEPARATOR = : +AMTAR = ${SHELL} /boot/home/Development/current/src/apps/bin/diffutils-2.8.1/config/missing --run tar +AWK = gawk +BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@ +CATOBJEXT = @CATOBJEXT@ +CC = gcc +CPP = gcc -E +DATADIRNAME = @DATADIRNAME@ +DEPDIR = .deps +GENCAT = @GENCAT@ +GLIBC21 = @GLIBC21@ +GMSGFMT = : +HAVE_LIB = @HAVE_LIB@ +HELP2MAN = ${SHELL} /boot/home/Development/current/src/apps/bin/diffutils-2.8.1/config/missing --run help2man +INSTALL_STRIP_PROGRAM = ${SHELL} $(install_sh) -c -s +INSTOBJEXT = @INSTOBJEXT@ +INTLBISON = @INTLBISON@ +INTLLIBS = +INTLOBJS = @INTLOBJS@ +INTL_LIBTOOL_SUFFIX_PREFIX = @INTL_LIBTOOL_SUFFIX_PREFIX@ +LIB = @LIB@ +LIBICONV = +LIBINTL = +LIB_CLOCK_GETTIME = +LTLIB = @LTLIB@ +LTLIBICONV = +LTLIBINTL = +MKINSTALLDIRS = config/mkinstalldirs +PACKAGE = diffutils +POSUB = +PR_PROGRAM = /bin/pr +RANLIB = ranlib +STRIP = +U = +USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@ +USE_NLS = no +VERSION = 2.8.1 +am__include = include +am__quote = +install_sh = /boot/home/Development/current/src/apps/bin/diffutils-2.8.1/config/install-sh + +noinst_LIBRARIES = libdiffutils.a + +EXTRA_DIST = alloca.c fnmatch.c inttostr.c malloc.c memchr.c mkstemp.c \ + realloc.c regex.c strcasecmp.c strtoimax.c strtol.c tempname.c waitpid.c \ + xstrtol.c + +SUBDIRS = posix + +noinst_HEADERS = \ + c-stack.h cmpbuf.h dirname.h error.h exclude.h exitfail.h \ + fnmatch.hin freesoft.h getopt.h \ + gettext.h hard-locale.h inttostr.h prepargs.h posixver.h quotesys.h \ + regex.hin setmode.h unlocked-io.h xalloc.h xstrtol.h + + +libdiffutils_a_SOURCES = \ + basename.c c-stack.c cmpbuf.c error.c exclude.c exitfail.c \ + freesoft.c getopt.c getopt1.c \ + hard-locale.c imaxtostr.c offtostr.c prepargs.c posixver.c quotesys.c \ + setmode.c strftime.c umaxtostr.c xmalloc.c xstrtoumax.c + + +libdiffutils_a_LIBADD = fnmatch.o regex.o +libdiffutils_a_DEPENDENCIES = $(libdiffutils_a_LIBADD) + +DISTCLEANFILES = fnmatch.h fnmatch.hno regex.h regex.hno +subdir = lib +mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +LIBRARIES = $(noinst_LIBRARIES) + +libdiffutils_a_AR = $(AR) cru +am_libdiffutils_a_OBJECTS = basename.$(OBJEXT) c-stack.$(OBJEXT) \ + cmpbuf.$(OBJEXT) error.$(OBJEXT) exclude.$(OBJEXT) \ + exitfail.$(OBJEXT) freesoft.$(OBJEXT) getopt.$(OBJEXT) \ + getopt1.$(OBJEXT) hard-locale.$(OBJEXT) imaxtostr.$(OBJEXT) \ + offtostr.$(OBJEXT) prepargs.$(OBJEXT) posixver.$(OBJEXT) \ + quotesys.$(OBJEXT) setmode.$(OBJEXT) strftime.$(OBJEXT) \ + umaxtostr.$(OBJEXT) xmalloc.$(OBJEXT) xstrtoumax.$(OBJEXT) +libdiffutils_a_OBJECTS = $(am_libdiffutils_a_OBJECTS) + +DEFS = -DHAVE_CONFIG_H +DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) +CPPFLAGS = +LDFLAGS = +LIBS = +depcomp = $(SHELL) $(top_srcdir)/config/depcomp +am__depfiles_maybe = depfiles +DEP_FILES = $(DEPDIR)/alloca.Po $(DEPDIR)/fnmatch.Po \ + $(DEPDIR)/malloc.Po $(DEPDIR)/memchr.Po \ + $(DEPDIR)/mkstemp.Po $(DEPDIR)/realloc.Po \ + $(DEPDIR)/regex.Po $(DEPDIR)/strcasecmp.Po \ + $(DEPDIR)/strtoul.Po $(DEPDIR)/strtoull.Po \ + $(DEPDIR)/strtoumax.Po $(DEPDIR)/tempname.Po \ + $(DEPDIR)/waitpid.Po ./$(DEPDIR)/basename.Po \ + ./$(DEPDIR)/c-stack.Po ./$(DEPDIR)/cmpbuf.Po \ + ./$(DEPDIR)/error.Po ./$(DEPDIR)/exclude.Po \ + ./$(DEPDIR)/exitfail.Po ./$(DEPDIR)/freesoft.Po \ + ./$(DEPDIR)/getopt.Po ./$(DEPDIR)/getopt1.Po \ + ./$(DEPDIR)/hard-locale.Po ./$(DEPDIR)/imaxtostr.Po \ + ./$(DEPDIR)/offtostr.Po ./$(DEPDIR)/posixver.Po \ + ./$(DEPDIR)/prepargs.Po ./$(DEPDIR)/quotesys.Po \ + ./$(DEPDIR)/setmode.Po ./$(DEPDIR)/strftime.Po \ + ./$(DEPDIR)/umaxtostr.Po ./$(DEPDIR)/xmalloc.Po \ + ./$(DEPDIR)/xstrtoumax.Po +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +CCLD = $(CC) +LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ +CFLAGS = -g -O2 +DIST_SOURCES = $(libdiffutils_a_SOURCES) +HEADERS = $(noinst_HEADERS) + + +RECURSIVE_TARGETS = info-recursive dvi-recursive install-info-recursive \ + uninstall-info-recursive all-recursive install-data-recursive \ + install-exec-recursive installdirs-recursive install-recursive \ + uninstall-recursive check-recursive installcheck-recursive +DIST_COMMON = $(noinst_HEADERS) Makefile.am Makefile.in alloca.c \ + fnmatch.c malloc.c memchr.c mkstemp.c realloc.c regex.c \ + strcasecmp.c strtoul.c strtoull.c strtoumax.c tempname.c \ + waitpid.c +DIST_SUBDIRS = $(SUBDIRS) +SOURCES = $(libdiffutils_a_SOURCES) + +all: all-recursive + +.SUFFIXES: +.SUFFIXES: .c .o .obj +$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.ac $(ACLOCAL_M4) + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnits lib/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) + +AR = ar + +clean-noinstLIBRARIES: + -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES) +libdiffutils.a: $(libdiffutils_a_OBJECTS) $(libdiffutils_a_DEPENDENCIES) + -rm -f libdiffutils.a + $(libdiffutils_a_AR) libdiffutils.a $(libdiffutils_a_OBJECTS) $(libdiffutils_a_LIBADD) + $(RANLIB) libdiffutils.a + +mostlyclean-compile: + -rm -f *.$(OBJEXT) core *.core + +distclean-compile: + -rm -f *.tab.c + +include $(DEPDIR)/alloca.Po +include $(DEPDIR)/fnmatch.Po +include $(DEPDIR)/malloc.Po +include $(DEPDIR)/memchr.Po +include $(DEPDIR)/mkstemp.Po +include $(DEPDIR)/realloc.Po +include $(DEPDIR)/regex.Po +include $(DEPDIR)/strcasecmp.Po +include $(DEPDIR)/strtoul.Po +include $(DEPDIR)/strtoull.Po +include $(DEPDIR)/strtoumax.Po +include $(DEPDIR)/tempname.Po +include $(DEPDIR)/waitpid.Po +include ./$(DEPDIR)/basename.Po +include ./$(DEPDIR)/c-stack.Po +include ./$(DEPDIR)/cmpbuf.Po +include ./$(DEPDIR)/error.Po +include ./$(DEPDIR)/exclude.Po +include ./$(DEPDIR)/exitfail.Po +include ./$(DEPDIR)/freesoft.Po +include ./$(DEPDIR)/getopt.Po +include ./$(DEPDIR)/getopt1.Po +include ./$(DEPDIR)/hard-locale.Po +include ./$(DEPDIR)/imaxtostr.Po +include ./$(DEPDIR)/offtostr.Po +include ./$(DEPDIR)/posixver.Po +include ./$(DEPDIR)/prepargs.Po +include ./$(DEPDIR)/quotesys.Po +include ./$(DEPDIR)/setmode.Po +include ./$(DEPDIR)/strftime.Po +include ./$(DEPDIR)/umaxtostr.Po +include ./$(DEPDIR)/xmalloc.Po +include ./$(DEPDIR)/xstrtoumax.Po + +distclean-depend: + -rm -rf $(DEPDIR) ./$(DEPDIR) + +.c.o: + source='$<' object='$@' libtool=no \ + depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' \ + $(CCDEPMODE) $(depcomp) \ + $(COMPILE) -c `test -f $< || echo '$(srcdir)/'`$< + +.c.obj: + source='$<' object='$@' libtool=no \ + depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' \ + $(CCDEPMODE) $(depcomp) \ + $(COMPILE) -c `cygpath -w $<` +CCDEPMODE = depmode=gcc +uninstall-info-am: + +# This directory's subdirectories are mostly independent; you can cd +# into them and run `make' without going through this Makefile. +# To change the values of `make' variables: instead of editing Makefiles, +# (1) if the variable is set in `config.status', edit `config.status' +# (which will cause the Makefiles to be regenerated when you run `make'); +# (2) otherwise, pass the desired values on the `make' command line. +$(RECURSIVE_TARGETS): + @set fnord $(MAKEFLAGS); amf=$$2; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +mostlyclean-recursive clean-recursive distclean-recursive \ +maintainer-clean-recursive: + @set fnord $(MAKEFLAGS); amf=$$2; \ + dot_seen=no; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + rev=''; for subdir in $$list; do \ + if test "$$subdir" = "."; then :; else \ + rev="$$subdir $$rev"; \ + fi; \ + done; \ + rev="$$rev ."; \ + target=`echo $@ | sed s/-recursive//`; \ + for subdir in $$rev; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ + done && test -z "$$fail" +tags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + done + +ETAGS = etags +ETAGSFLAGS = + +tags: TAGS + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + mkid -fID $$unique + +TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -f $$subdir/TAGS && tags="$$tags -i $$here/$$subdir/TAGS"; \ + fi; \ + done; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + test -z "$(ETAGS_ARGS)$$tags$$unique" \ + || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique + +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 +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) + +top_distdir = .. +distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) + +distdir: $(DISTFILES) + @for file in $(DISTFILES); do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + dir="/$$dir"; \ + $(mkinstalldirs) "$(distdir)$$dir"; \ + else \ + dir=''; \ + fi; \ + if test -d $$d/$$file; then \ + cp -pR $$d/$$file $(distdir)$$dir \ + || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -d $(distdir)/$$subdir \ + || mkdir $(distdir)/$$subdir \ + || exit 1; \ + (cd $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$(top_distdir)" \ + distdir=../$(distdir)/$$subdir \ + distdir) \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-recursive +all-am: Makefile $(LIBRARIES) $(HEADERS) +installdirs: installdirs-recursive +installdirs-am: + +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -rm -f Makefile $(CONFIG_CLEAN_FILES) stamp-h stamp-h[0-9]* + -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-recursive + +clean-am: clean-generic clean-noinstLIBRARIES mostlyclean-am + +distclean: distclean-recursive + +distclean-am: clean-am distclean-compile distclean-depend \ + distclean-generic distclean-tags + +dvi: dvi-recursive + +dvi-am: + +info: info-recursive + +info-am: + +install-data-am: + +install-exec-am: + +install-info: install-info-recursive + +install-man: + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-compile mostlyclean-generic + +uninstall-am: uninstall-info-am + +uninstall-info: uninstall-info-recursive + +.PHONY: $(RECURSIVE_TARGETS) GTAGS all all-am check check-am clean \ + clean-generic clean-noinstLIBRARIES clean-recursive distclean \ + distclean-compile distclean-depend distclean-generic \ + distclean-recursive distclean-tags distdir dvi dvi-am \ + dvi-recursive info info-am info-recursive install install-am \ + install-data install-data-am install-data-recursive \ + install-exec install-exec-am install-exec-recursive \ + install-info install-info-am install-info-recursive install-man \ + install-recursive install-strip installcheck installcheck-am \ + installdirs installdirs-am installdirs-recursive \ + maintainer-clean maintainer-clean-generic \ + maintainer-clean-recursive mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-recursive tags tags-recursive \ + uninstall uninstall-am uninstall-info-am \ + uninstall-info-recursive uninstall-recursive + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/src/apps/bin/diffutils-2.8.1/lib/Makefile.am b/src/apps/bin/diffutils-2.8.1/lib/Makefile.am new file mode 100644 index 0000000000..dd3ae13dff --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/lib/Makefile.am @@ -0,0 +1,42 @@ +# Automakefile for GNU Diffutils library. + +# Copyright (C) 2001, 2002 Free Software Foundation, Inc. + +## This program is free software; you can redistribute it and/or modify +## it under the terms of the GNU General Public License as published by +## the Free Software Foundation; either version 2, or (at your option) +## any later version. + +## This program is distributed in the hope that it will be useful, +## but WITHOUT ANY WARRANTY; without even the implied warranty of +## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +## GNU General Public License for more details. + +## You should have received a copy of the GNU General Public License +## along with this program; if not, write to the Free Software +## Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +## 02111-1307, USA. + +noinst_LIBRARIES = libdiffutils.a + +EXTRA_DIST = alloca.c fnmatch.c inttostr.c malloc.c memchr.c mkstemp.c \ + realloc.c regex.c strcasecmp.c strtoimax.c strtol.c tempname.c waitpid.c \ + xstrtol.c +SUBDIRS = posix + +noinst_HEADERS = \ + c-stack.h cmpbuf.h dirname.h error.h exclude.h exitfail.h \ + fnmatch.hin freesoft.h getopt.h \ + gettext.h hard-locale.h inttostr.h prepargs.h posixver.h quotesys.h \ + regex.hin setmode.h unlocked-io.h xalloc.h xstrtol.h + +libdiffutils_a_SOURCES = \ + basename.c c-stack.c cmpbuf.c error.c exclude.c exitfail.c \ + freesoft.c getopt.c getopt1.c \ + hard-locale.c imaxtostr.c offtostr.c prepargs.c posixver.c quotesys.c \ + setmode.c strftime.c umaxtostr.c xmalloc.c xstrtoumax.c + +libdiffutils_a_LIBADD = @ALLOCA@ @LIBOBJS@ +libdiffutils_a_DEPENDENCIES = $(libdiffutils_a_LIBADD) + +DISTCLEANFILES = fnmatch.h fnmatch.hno regex.h regex.hno diff --git a/src/apps/bin/diffutils-2.8.1/lib/Makefile.in b/src/apps/bin/diffutils-2.8.1/lib/Makefile.in new file mode 100644 index 0000000000..d0fbd2ff89 --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/lib/Makefile.in @@ -0,0 +1,493 @@ +# Makefile.in generated by automake 1.6 from Makefile.am. +# @configure_input@ + +# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002 +# Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# Automakefile for GNU Diffutils library. + +# Copyright (C) 2001, 2002 Free Software Foundation, Inc. +SHELL = @SHELL@ + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +prefix = @prefix@ +exec_prefix = @exec_prefix@ + +bindir = @bindir@ +sbindir = @sbindir@ +libexecdir = @libexecdir@ +datadir = @datadir@ +sysconfdir = @sysconfdir@ +sharedstatedir = @sharedstatedir@ +localstatedir = @localstatedir@ +libdir = @libdir@ +infodir = @infodir@ +mandir = @mandir@ +includedir = @includedir@ +oldincludedir = /usr/include +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +top_builddir = .. + +ACLOCAL = @ACLOCAL@ +AUTOCONF = @AUTOCONF@ +AUTOMAKE = @AUTOMAKE@ +AUTOHEADER = @AUTOHEADER@ + +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = @INSTALL@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_DATA = @INSTALL_DATA@ +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_HEADER = $(INSTALL_DATA) +transform = @program_transform_name@ +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +host_alias = @host_alias@ +host_triplet = @host@ + +EXEEXT = @EXEEXT@ +OBJEXT = @OBJEXT@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +AMTAR = @AMTAR@ +AWK = @AWK@ +BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@ +CATOBJEXT = @CATOBJEXT@ +CC = @CC@ +CPP = @CPP@ +DATADIRNAME = @DATADIRNAME@ +DEPDIR = @DEPDIR@ +GENCAT = @GENCAT@ +GLIBC21 = @GLIBC21@ +GMSGFMT = @GMSGFMT@ +HAVE_LIB = @HAVE_LIB@ +HELP2MAN = @HELP2MAN@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INSTOBJEXT = @INSTOBJEXT@ +INTLBISON = @INTLBISON@ +INTLLIBS = @INTLLIBS@ +INTLOBJS = @INTLOBJS@ +INTL_LIBTOOL_SUFFIX_PREFIX = @INTL_LIBTOOL_SUFFIX_PREFIX@ +LIB = @LIB@ +LIBICONV = @LIBICONV@ +LIBINTL = @LIBINTL@ +LIB_CLOCK_GETTIME = @LIB_CLOCK_GETTIME@ +LTLIB = @LTLIB@ +LTLIBICONV = @LTLIBICONV@ +LTLIBINTL = @LTLIBINTL@ +MKINSTALLDIRS = @MKINSTALLDIRS@ +PACKAGE = @PACKAGE@ +POSUB = @POSUB@ +PR_PROGRAM = @PR_PROGRAM@ +RANLIB = @RANLIB@ +STRIP = @STRIP@ +U = @U@ +USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@ +USE_NLS = @USE_NLS@ +VERSION = @VERSION@ +am__include = @am__include@ +am__quote = @am__quote@ +install_sh = @install_sh@ + +noinst_LIBRARIES = libdiffutils.a + +EXTRA_DIST = alloca.c fnmatch.c inttostr.c malloc.c memchr.c mkstemp.c \ + realloc.c regex.c strcasecmp.c strtoimax.c strtol.c tempname.c waitpid.c \ + xstrtol.c + +SUBDIRS = posix + +noinst_HEADERS = \ + c-stack.h cmpbuf.h dirname.h error.h exclude.h exitfail.h \ + fnmatch.hin freesoft.h getopt.h \ + gettext.h hard-locale.h inttostr.h prepargs.h posixver.h quotesys.h \ + regex.hin setmode.h unlocked-io.h xalloc.h xstrtol.h + + +libdiffutils_a_SOURCES = \ + basename.c c-stack.c cmpbuf.c error.c exclude.c exitfail.c \ + freesoft.c getopt.c getopt1.c \ + hard-locale.c imaxtostr.c offtostr.c prepargs.c posixver.c quotesys.c \ + setmode.c strftime.c umaxtostr.c xmalloc.c xstrtoumax.c + + +libdiffutils_a_LIBADD = @ALLOCA@ @LIBOBJS@ +libdiffutils_a_DEPENDENCIES = $(libdiffutils_a_LIBADD) + +DISTCLEANFILES = fnmatch.h fnmatch.hno regex.h regex.hno +subdir = lib +mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +LIBRARIES = $(noinst_LIBRARIES) + +libdiffutils_a_AR = $(AR) cru +am_libdiffutils_a_OBJECTS = basename.$(OBJEXT) c-stack.$(OBJEXT) \ + cmpbuf.$(OBJEXT) error.$(OBJEXT) exclude.$(OBJEXT) \ + exitfail.$(OBJEXT) freesoft.$(OBJEXT) getopt.$(OBJEXT) \ + getopt1.$(OBJEXT) hard-locale.$(OBJEXT) imaxtostr.$(OBJEXT) \ + offtostr.$(OBJEXT) prepargs.$(OBJEXT) posixver.$(OBJEXT) \ + quotesys.$(OBJEXT) setmode.$(OBJEXT) strftime.$(OBJEXT) \ + umaxtostr.$(OBJEXT) xmalloc.$(OBJEXT) xstrtoumax.$(OBJEXT) +libdiffutils_a_OBJECTS = $(am_libdiffutils_a_OBJECTS) + +DEFS = @DEFS@ +DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) +CPPFLAGS = @CPPFLAGS@ +LDFLAGS = @LDFLAGS@ +LIBS = @LIBS@ +depcomp = $(SHELL) $(top_srcdir)/config/depcomp +am__depfiles_maybe = depfiles +@AMDEP_TRUE@DEP_FILES = $(DEPDIR)/alloca.Po $(DEPDIR)/fnmatch.Po \ +@AMDEP_TRUE@ $(DEPDIR)/malloc.Po $(DEPDIR)/memchr.Po \ +@AMDEP_TRUE@ $(DEPDIR)/mkstemp.Po $(DEPDIR)/realloc.Po \ +@AMDEP_TRUE@ $(DEPDIR)/regex.Po $(DEPDIR)/strcasecmp.Po \ +@AMDEP_TRUE@ $(DEPDIR)/strtoul.Po $(DEPDIR)/strtoull.Po \ +@AMDEP_TRUE@ $(DEPDIR)/strtoumax.Po $(DEPDIR)/tempname.Po \ +@AMDEP_TRUE@ $(DEPDIR)/waitpid.Po ./$(DEPDIR)/basename.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/c-stack.Po ./$(DEPDIR)/cmpbuf.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/error.Po ./$(DEPDIR)/exclude.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/exitfail.Po ./$(DEPDIR)/freesoft.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/getopt.Po ./$(DEPDIR)/getopt1.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/hard-locale.Po ./$(DEPDIR)/imaxtostr.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/offtostr.Po ./$(DEPDIR)/posixver.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/prepargs.Po ./$(DEPDIR)/quotesys.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/setmode.Po ./$(DEPDIR)/strftime.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/umaxtostr.Po ./$(DEPDIR)/xmalloc.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/xstrtoumax.Po +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +CCLD = $(CC) +LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ +CFLAGS = @CFLAGS@ +DIST_SOURCES = $(libdiffutils_a_SOURCES) +HEADERS = $(noinst_HEADERS) + + +RECURSIVE_TARGETS = info-recursive dvi-recursive install-info-recursive \ + uninstall-info-recursive all-recursive install-data-recursive \ + install-exec-recursive installdirs-recursive install-recursive \ + uninstall-recursive check-recursive installcheck-recursive +DIST_COMMON = $(noinst_HEADERS) Makefile.am Makefile.in alloca.c \ + fnmatch.c malloc.c memchr.c mkstemp.c realloc.c regex.c \ + strcasecmp.c strtoul.c strtoull.c strtoumax.c tempname.c \ + waitpid.c +DIST_SUBDIRS = $(SUBDIRS) +SOURCES = $(libdiffutils_a_SOURCES) + +all: all-recursive + +.SUFFIXES: +.SUFFIXES: .c .o .obj +$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.ac $(ACLOCAL_M4) + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnits lib/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) + +AR = ar + +clean-noinstLIBRARIES: + -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES) +libdiffutils.a: $(libdiffutils_a_OBJECTS) $(libdiffutils_a_DEPENDENCIES) + -rm -f libdiffutils.a + $(libdiffutils_a_AR) libdiffutils.a $(libdiffutils_a_OBJECTS) $(libdiffutils_a_LIBADD) + $(RANLIB) libdiffutils.a + +mostlyclean-compile: + -rm -f *.$(OBJEXT) core *.core + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/alloca.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/fnmatch.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/malloc.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/memchr.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/mkstemp.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/realloc.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/regex.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/strcasecmp.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/strtoul.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/strtoull.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/strtoumax.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/tempname.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/waitpid.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/basename.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/c-stack.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cmpbuf.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/error.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/exclude.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/exitfail.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/freesoft.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)/hard-locale.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/imaxtostr.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/offtostr.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/posixver.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/prepargs.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/quotesys.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/setmode.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strftime.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/umaxtostr.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xmalloc.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xstrtoumax.Po@am__quote@ + +distclean-depend: + -rm -rf $(DEPDIR) ./$(DEPDIR) + +.c.o: +@AMDEP_TRUE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ +@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ + $(COMPILE) -c `test -f $< || echo '$(srcdir)/'`$< + +.c.obj: +@AMDEP_TRUE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ +@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ + $(COMPILE) -c `cygpath -w $<` +CCDEPMODE = @CCDEPMODE@ +uninstall-info-am: + +# This directory's subdirectories are mostly independent; you can cd +# into them and run `make' without going through this Makefile. +# To change the values of `make' variables: instead of editing Makefiles, +# (1) if the variable is set in `config.status', edit `config.status' +# (which will cause the Makefiles to be regenerated when you run `make'); +# (2) otherwise, pass the desired values on the `make' command line. +$(RECURSIVE_TARGETS): + @set fnord $(MAKEFLAGS); amf=$$2; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +mostlyclean-recursive clean-recursive distclean-recursive \ +maintainer-clean-recursive: + @set fnord $(MAKEFLAGS); amf=$$2; \ + dot_seen=no; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + rev=''; for subdir in $$list; do \ + if test "$$subdir" = "."; then :; else \ + rev="$$subdir $$rev"; \ + fi; \ + done; \ + rev="$$rev ."; \ + target=`echo $@ | sed s/-recursive//`; \ + for subdir in $$rev; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ + done && test -z "$$fail" +tags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + done + +ETAGS = etags +ETAGSFLAGS = + +tags: TAGS + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + mkid -fID $$unique + +TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -f $$subdir/TAGS && tags="$$tags -i $$here/$$subdir/TAGS"; \ + fi; \ + done; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + test -z "$(ETAGS_ARGS)$$tags$$unique" \ + || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique + +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 +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) + +top_distdir = .. +distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) + +distdir: $(DISTFILES) + @for file in $(DISTFILES); do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + dir="/$$dir"; \ + $(mkinstalldirs) "$(distdir)$$dir"; \ + else \ + dir=''; \ + fi; \ + if test -d $$d/$$file; then \ + cp -pR $$d/$$file $(distdir)$$dir \ + || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -d $(distdir)/$$subdir \ + || mkdir $(distdir)/$$subdir \ + || exit 1; \ + (cd $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$(top_distdir)" \ + distdir=../$(distdir)/$$subdir \ + distdir) \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-recursive +all-am: Makefile $(LIBRARIES) $(HEADERS) +installdirs: installdirs-recursive +installdirs-am: + +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -rm -f Makefile $(CONFIG_CLEAN_FILES) stamp-h stamp-h[0-9]* + -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-recursive + +clean-am: clean-generic clean-noinstLIBRARIES mostlyclean-am + +distclean: distclean-recursive + +distclean-am: clean-am distclean-compile distclean-depend \ + distclean-generic distclean-tags + +dvi: dvi-recursive + +dvi-am: + +info: info-recursive + +info-am: + +install-data-am: + +install-exec-am: + +install-info: install-info-recursive + +install-man: + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-compile mostlyclean-generic + +uninstall-am: uninstall-info-am + +uninstall-info: uninstall-info-recursive + +.PHONY: $(RECURSIVE_TARGETS) GTAGS all all-am check check-am clean \ + clean-generic clean-noinstLIBRARIES clean-recursive distclean \ + distclean-compile distclean-depend distclean-generic \ + distclean-recursive distclean-tags distdir dvi dvi-am \ + dvi-recursive info info-am info-recursive install install-am \ + install-data install-data-am install-data-recursive \ + install-exec install-exec-am install-exec-recursive \ + install-info install-info-am install-info-recursive install-man \ + install-recursive install-strip installcheck installcheck-am \ + installdirs installdirs-am installdirs-recursive \ + maintainer-clean maintainer-clean-generic \ + maintainer-clean-recursive mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-recursive tags tags-recursive \ + uninstall uninstall-am uninstall-info-am \ + uninstall-info-recursive uninstall-recursive + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/src/apps/bin/diffutils-2.8.1/lib/alloca.c b/src/apps/bin/diffutils-2.8.1/lib/alloca.c new file mode 100644 index 0000000000..6ad425a4cd --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/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/src/apps/bin/diffutils-2.8.1/lib/basename.c b/src/apps/bin/diffutils-2.8.1/lib/basename.c new file mode 100644 index 0000000000..54f037ed5f --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/lib/basename.c @@ -0,0 +1,79 @@ +/* basename.c -- return the last element in a path + Copyright (C) 1990, 1998, 1999, 2000, 2001 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software Foundation, + Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + +#if HAVE_CONFIG_H +# include +#endif + +#if STDC_HEADERS || HAVE_STRING_H +# include +#endif +#include "dirname.h" + +/* 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. + + Return the address of the last file name component of NAME. If + NAME has no file name components because it is all slashes, return + NAME if it is empty, the address of its last slash otherwise. */ + +char * +base_name (char const *name) +{ + char const *base = name + FILESYSTEM_PREFIX_LEN (name); + char const *p; + + for (p = base; *p; p++) + { + if (ISSLASH (*p)) + { + /* Treat multiple adjacent slashes like a single slash. */ + do p++; + while (ISSLASH (*p)); + + /* If the file name ends in slash, use the trailing slash as + the basename if no non-slashes have been found. */ + if (! *p) + { + if (ISSLASH (*base)) + base = p - 1; + break; + } + + /* *P is a non-slash preceded by a slash. */ + base = p; + } + } + + return (char *) base; +} + +/* Return the length of of the basename NAME. Typically NAME is the + value returned by base_name. Act like strlen (NAME), except omit + redundant trailing slashes. */ + +size_t +base_len (char const *name) +{ + size_t len; + + for (len = strlen (name); 1 < len && ISSLASH (name[len - 1]); len--) + continue; + + return len; +} diff --git a/src/apps/bin/diffutils-2.8.1/lib/c-stack.c b/src/apps/bin/diffutils-2.8.1/lib/c-stack.c new file mode 100644 index 0000000000..85708f3873 --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/lib/c-stack.c @@ -0,0 +1,237 @@ +/* Stack overflow handling. + + Copyright (C) 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. */ + +/* Written by Paul Eggert. */ + +/* This module assumes that each stack frame is smaller than a page. + If you use alloca, dynamic arrays, or large local variables, your + program may extend the stack by more than a page at a time. If so, + the code below may incorrectly report a program error, or worse + yet, may not detect the overflow at all. To avoid this problem, + don't use large local arrays. */ + +#if HAVE_CONFIG_H +# include +#endif + +#include "gettext.h" +#define _(msgid) gettext (msgid) + +#include +#ifndef ENOTSUP +# define ENOTSUP EINVAL +#endif + +#if HAVE_INTTYPES_H +# include +#else +# if HAVE_STDINT_H +# include +# endif +#endif + +#include +#include +#include + +#if HAVE_UNISTD_H +# include +#endif +#ifndef STDERR_FILENO +# define STDERR_FILENO 2 +#endif + +#include "c-stack.h" +#include "exitfail.h" + +extern char *program_name; + +#if HAVE_XSI_STACK_OVERFLOW_HEURISTIC + +# include + + +/* Storage for the alternate signal stack. */ +static union +{ + char buffer[SIGSTKSZ]; + + /* These other members are for proper alignment. There's no + standard way to guarantee stack alignment, but this seems enough + in practice. */ + long double ld; + uintmax_t u; + void *p; +} alternate_signal_stack; + + +/* Direction of the C runtime stack. This function is + async-signal-safe. */ + +# if STACK_DIRECTION +# define find_stack_direction(ptr) STACK_DIRECTION +# else +static int +find_stack_direction (char const *addr) +{ + char dummy; + return ! addr ? find_stack_direction (&dummy) : addr < &dummy ? 1 : -1; +} +# endif + +/* The SIGSEGV handler. */ +static void (* volatile segv_action) (int, siginfo_t *, void *); + +/* Handle a segmentation violation and exit. This function is + async-signal-safe. */ + +static void +segv_handler (int signo, siginfo_t *info, void *context) +{ + /* Clear SIGNO if it seems to have been a stack overflow. */ + if (0 < info->si_code) + { + /* If the faulting address is within the stack, or within one + page of the stack end, assume that it is a stack + overflow. */ + ucontext_t const *user_context = context; + char const *stack_min = user_context->uc_stack.ss_sp; + size_t stack_size = user_context->uc_stack.ss_size; + char const *faulting_address = info->si_addr; + size_t s = faulting_address - stack_min; + size_t page_size = sysconf (_SC_PAGESIZE); + if (find_stack_direction (0) < 0) + s += page_size; + if (s < stack_size + page_size) + signo = 0; + } + + segv_action (signo, info, context); +} + +#endif /* HAVE_XSI_STACK_OVERFLOW_HEURISTIC */ + + +/* Translated messages for program errors and stack overflow. Do not + translate them in the signal handler, since gettext is not + async-signal-safe. */ +static char const * volatile program_error_message; +static char const * volatile stack_overflow_message; + +/* Output an error message, then exit with status EXIT_FAILURE if it + appears to have been a stack overflow, or with a core dump + otherwise. This function is async-signal-safe. */ + +void +c_stack_die (int signo, siginfo_t *info, void *context) +{ + char const *message = + signo ? program_error_message : stack_overflow_message; + write (STDERR_FILENO, program_name, strlen (program_name)); + write (STDERR_FILENO, ": ", 2); + write (STDERR_FILENO, message, strlen (message)); + write (STDERR_FILENO, "\n", 1); + if (! signo) + _exit (exit_failure); +#if HAVE_SIGINFO_T + if (context && info && 0 <= info->si_code) + { + /* Re-raise the exception at the same address. */ + char *addr = info->si_addr; + *addr = 0; + } +#endif + kill (getpid (), signo); +} + + +/* Set up ACTION so that it is invoked on C stack overflow. Return -1 + (setting errno) if this cannot be done. + + ACTION must invoke only async-signal-safe functions. ACTION + together with its callees must not require more than SIGSTKSZ bytes + of stack space. */ + +int +c_stack_action (void (*action) (int, siginfo_t *, void *)) +{ +#if ! HAVE_XSI_STACK_OVERFLOW_HEURISTIC + errno = ENOTSUP; + return -1; +#else + struct sigaction act; + stack_t st; + int r; + + st.ss_flags = 0; + st.ss_sp = alternate_signal_stack.buffer; + st.ss_size = sizeof alternate_signal_stack.buffer; + r = sigaltstack (&st, 0); + if (r != 0) + return r; + + program_error_message = _("program error"); + stack_overflow_message = _("stack overflow"); + segv_action = action; + + sigemptyset (&act.sa_mask); + + /* POSIX 1003.1-2001 says SA_RESETHAND implies SA_NODEFER, but this + is not true on Solaris 8 at least. It doesn't hurt to use + SA_NODEFER here, so leave it in. */ + act.sa_flags = SA_NODEFER | SA_ONSTACK | SA_RESETHAND | SA_SIGINFO; + + act.sa_sigaction = segv_handler; + return sigaction (SIGSEGV, &act, 0); +#endif +} + +#if DEBUG + +#include + +int volatile exit_failure; + +static long +recurse (char *p) +{ + char array[500]; + array[0] = 1; + return *p + recurse (array); +} + +char *program_name; + +int +main (int argc, char **argv) +{ + program_name = argv[0]; + c_stack_action (c_stack_die); + return recurse ("\1"); +} + +#endif /* DEBUG */ + +/* +Local Variables: +compile-command: "gcc -D_GNU_SOURCE -DDEBUG \ + -DHAVE_INTTYPES_H -DHAVE_SIGINFO_T \ + -DHAVE_XSI_STACK_OVERFLOW_HEURISTIC -DHAVE_UNISTD_H \ + -Wall -W -g c-stack.c -o c-stack" +End: +*/ diff --git a/src/apps/bin/diffutils-2.8.1/lib/c-stack.h b/src/apps/bin/diffutils-2.8.1/lib/c-stack.h new file mode 100644 index 0000000000..d592f3d60a --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/lib/c-stack.h @@ -0,0 +1,24 @@ +/* Stack overflow handling. + + Copyright (C) 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. */ + +#if ! HAVE_SIGINFO_T +# define siginfo_t void +#endif + +int c_stack_action (void (*) (int, siginfo_t *, void *)); +void c_stack_die (int, siginfo_t *, void *); diff --git a/src/apps/bin/diffutils-2.8.1/lib/cmpbuf.c b/src/apps/bin/diffutils-2.8.1/lib/cmpbuf.c new file mode 100644 index 0000000000..858aa39346 --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/lib/cmpbuf.c @@ -0,0 +1,147 @@ +/* Buffer primitives for comparison operations. + + Copyright (C) 1993, 1995, 1998, 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; see the file COPYING. + If not, write to the Free Software Foundation, + 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + +#if HAVE_CONFIG_H +# include +#endif + +#include +#include + +#include +#ifndef SA_RESTART +# ifdef SA_INTERRUPT /* e.g. SunOS 4.1.x */ +# define SA_RESTART SA_INTERRUPT +# else +# define SA_RESTART 0 +# endif +#endif + +#if HAVE_UNISTD_H +# include +#endif + +#if HAVE_INTTYPES_H +# include +#endif + +#include +#include "cmpbuf.h" + +/* 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 + +#ifndef PTRDIFF_MAX +# define PTRDIFF_MAX TYPE_MAXIMUM (ptrdiff_t) +#endif +#ifndef SIZE_MAX +# define SIZE_MAX TYPE_MAXIMUM (size_t) +#endif +#ifndef SSIZE_MAX +# define SSIZE_MAX TYPE_MAXIMUM (ssize_t) +#endif + +#undef MIN +#define MIN(a, b) ((a) <= (b) ? (a) : (b)) + +/* Read NBYTES bytes from descriptor FD into BUF. + NBYTES must not be SIZE_MAX. + Return the number of characters successfully read. + On error, return SIZE_MAX, setting errno. + The number returned is always NBYTES unless end-of-file or error. */ + +size_t +block_read (int fd, char *buf, size_t nbytes) +{ + char *bp = buf; + char const *buflim = buf + nbytes; + size_t readlim = SSIZE_MAX; + + do + { + size_t bytes_to_read = MIN (buflim - bp, readlim); + ssize_t nread = read (fd, bp, bytes_to_read); + if (nread <= 0) + { + if (nread == 0) + break; + + /* Accommodate Tru64 5.1, which can't read more than INT_MAX + bytes at a time. They call that a 64-bit OS? */ + if (errno == EINVAL && INT_MAX < bytes_to_read) + { + readlim = INT_MAX; + continue; + } + + /* This is needed for programs that have signal handlers on + older hosts without SA_RESTART. It also accommodates + ancient AIX hosts that set errno to EINTR after uncaught + SIGCONT. See + (1993-04-22). */ + if (! SA_RESTART && errno == EINTR) + continue; + + return SIZE_MAX; + } + bp += nread; + } + while (bp < buflim); + + return bp - buf; +} + +/* Least common multiple of two buffer sizes A and B. However, if + either A or B is zero, or if the multiple is greater than LCM_MAX, + return a reasonable buffer size. */ + +size_t +buffer_lcm (size_t a, size_t b, size_t lcm_max) +{ + size_t lcm, m, n, q, r; + + /* Yield reasonable values if buffer sizes are zero. */ + if (!a) + return b ? b : 8 * 1024; + if (!b) + return a; + + /* n = gcd (a, b) */ + for (m = a, n = b; (r = m % n) != 0; m = n, n = r) + continue; + + /* Yield a if there is an overflow. */ + q = a / n; + lcm = q * b; + return lcm <= lcm_max && lcm / b == q ? lcm : a; +} diff --git a/src/apps/bin/diffutils-2.8.1/lib/cmpbuf.h b/src/apps/bin/diffutils-2.8.1/lib/cmpbuf.h new file mode 100644 index 0000000000..9b29cd0827 --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/lib/cmpbuf.h @@ -0,0 +1,21 @@ +/* Buffer primitives for comparison operations. + + Copyright (C) 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; see the file COPYING. + If not, write to the Free Software Foundation, + 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + +size_t block_read (int, char *, size_t); +size_t buffer_lcm (size_t, size_t, size_t); diff --git a/src/apps/bin/diffutils-2.8.1/lib/config.h b/src/apps/bin/diffutils-2.8.1/lib/config.h new file mode 100644 index 0000000000..19a7a1b26b --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/lib/config.h @@ -0,0 +1,1436 @@ +/* config.h. Generated by configure. */ +/* config.hin. Generated from configure.ac by autoheader. */ + +/* Define if you have the Andrew File System. */ +/* #undef AFS */ + +/* Define to the function xargmatch calls on failures. */ +#define ARGMATCH_DIE usage (1) + +/* Define to the declaration of the xargmatch failure function. */ +#define ARGMATCH_DIE_DECL extern void usage () + +/* 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 1 if using `getloadavg.c'. */ +#define C_GETLOADAVG 1 + +/* Define to 1 for DGUX with . */ +/* #undef DGUX */ + +/* the name of the file descriptor member of DIR */ +/* #undef DIR_FD_MEMBER_NAME */ + +#ifdef DIR_FD_MEMBER_NAME +# define DIR_TO_FD(Dir_p) ((Dir_p)->DIR_FD_MEMBER_NAME) +#else +# define DIR_TO_FD(Dir_p) -1 +#endif + +#define getpagesize() 4096 + +/* Define if there is a member named d_ino in the struct describing directory + headers. */ +#define D_INO_IN_DIRENT 1 + +/* Define to 1 if translation of program messages to the user's native + language is requested. */ +/* #undef ENABLE_NLS */ + +/* Define on systems for which file names may have a so-called `drive letter' + prefix, define this to compute the length of that prefix, including the + colon. */ +#define FILESYSTEM_ACCEPTS_DRIVE_LETTER_PREFIX 0 + +/* Define if the backslash character may also serve as a file name component + separator. */ +#define FILESYSTEM_BACKSLASH_IS_FILE_NAME_SEPARATOR 0 + +#if FILESYSTEM_ACCEPTS_DRIVE_LETTER_PREFIX +# define FILESYSTEM_PREFIX_LEN(Filename) \ + ((Filename)[0] && (Filename)[1] == ':' ? 2 : 0) +#else +# define FILESYSTEM_PREFIX_LEN(Filename) 0 +#endif + +/* Define to the type of elements in the array set by `getgroups'. Usually + this is either `int' or `gid_t'. */ +#define GETGROUPS_T gid_t + +/* Define to 1 if the `getloadavg' function needs to be run setuid or setgid. + */ +/* #undef GETLOADAVG_PRIVILEGED */ + +/* Define if gettimeofday clobbers localtime's static buffer. */ +/* #undef GETTIMEOFDAY_CLOBBERS_LOCALTIME_BUFFER */ + +/* The concatenation of the strings `GNU ', and PACKAGE. */ +#define GNU_PACKAGE "GNU coreutils" + +/* Define if your system defines TIOCGWINSZ in sys/ioctl.h. */ +/* #undef GWINSZ_IN_SYS_IOCTL */ + +/* Define if your system defines TIOCGWINSZ in sys/pty.h. */ +/* #undef GWINSZ_IN_SYS_PTY */ + +/* Define to 1 if you have the `acl' function. */ +/* #undef HAVE_ACL */ + +/* Define to 1 if you have the `alarm' function. */ +#define HAVE_ALARM 1 + +/* Define to 1 if you have `alloca', as a function or macro. */ +#define HAVE_ALLOCA 1 + +/* Define to 1 if you have and it should be used (not on Ultrix). + */ +#define HAVE_ALLOCA_H 1 + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_ARPA_INET_H */ + +/* Define to 1 if you have the `atexit' function. */ +#define HAVE_ATEXIT 1 + +/* Define to 1 if you have the `bcopy' function. */ +#define HAVE_BCOPY 1 + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_BP_SYM_H */ + +/* Define to 1 if you have the `btowc' function. */ +#define HAVE_BTOWC 1 + +/* Define to 1 if you have the `chroot' function. */ +/* #undef HAVE_CHROOT */ + +/* Define to 1 if you have the `chsize' function. */ +/* #undef HAVE_CHSIZE */ + +/* Define to 1 if you have the `clock_gettime' function. */ +/* #undef HAVE_CLOCK_GETTIME */ + +/* Define to 1 if you have the `clock_settime' function. */ +/* #undef HAVE_CLOCK_SETTIME */ + +/* Define if backslash-a works in C strings. */ +#define HAVE_C_BACKSLASH_A 1 + +/* FIXME */ +#define HAVE_C_LINE 1 + +/* Define if the GNU dcgettext() function is already present or preinstalled. + */ +/* #undef HAVE_DCGETTEXT */ + +/* Define to 1 if you have the declaration of `clearerr_unlocked', and to 0 if + you don't. */ +#define HAVE_DECL_CLEARERR_UNLOCKED 1 + +/* Define to 1 if you have the declaration of `dirfd', and to 0 if you don't. + */ +#define HAVE_DECL_DIRFD 0 + +/* Define to 1 if you have the declaration of `euidaccess', and to 0 if you + don't. */ +#define HAVE_DECL_EUIDACCESS 0 + +/* Define to 1 if you have the declaration of `feof_unlocked', and to 0 if you + don't. */ +#define HAVE_DECL_FEOF_UNLOCKED 1 + +/* Define to 1 if you have the declaration of `ferror_unlocked', and to 0 if + you don't. */ +#define HAVE_DECL_FERROR_UNLOCKED 1 + +/* Define to 1 if you have the declaration of `fflush_unlocked', and to 0 if + you don't. */ +#define HAVE_DECL_FFLUSH_UNLOCKED 1 + +/* Define to 1 if you have the declaration of `fgets_unlocked', and to 0 if + you don't. */ +#define HAVE_DECL_FGETS_UNLOCKED 0 + +/* Define to 1 if you have the declaration of `fputc_unlocked', and to 0 if + you don't. */ +#define HAVE_DECL_FPUTC_UNLOCKED 1 + +/* Define to 1 if you have the declaration of `fputs_unlocked', and to 0 if + you don't. */ +#define HAVE_DECL_FPUTS_UNLOCKED 0 + +/* Define to 1 if you have the declaration of `fread_unlocked', and to 0 if + you don't. */ +#define HAVE_DECL_FREAD_UNLOCKED 1 + +/* Define to 1 if you have the declaration of `free', and to 0 if you don't. + */ +#define HAVE_DECL_FREE 1 + +/* Define to 1 if you have the declaration of `fwrite_unlocked', and to 0 if + you don't. */ +#define HAVE_DECL_FWRITE_UNLOCKED 1 + +/* Define to 1 if you have the declaration of `getchar_unlocked', and to 0 if + you don't. */ +#define HAVE_DECL_GETCHAR_UNLOCKED 1 + +/* Define to 1 if you have the declaration of `getcwd', and to 0 if you don't. + */ +#define HAVE_DECL_GETCWD 1 + +/* Define to 1 if you have the declaration of `getc_unlocked', and to 0 if you + don't. */ +#define HAVE_DECL_GETC_UNLOCKED 1 + +/* Define to 1 if you have the declaration of `getenv', and to 0 if you don't. + */ +#define HAVE_DECL_GETENV 1 + +/* Define to 1 if you have the declaration of `geteuid', and to 0 if you + don't. */ +#define HAVE_DECL_GETEUID 1 + +/* Define to 1 if you have the declaration of `getgrgid', and to 0 if you + don't. */ +#define HAVE_DECL_GETGRGID 1 + +/* Define to 1 if you have the declaration of `getlogin', and to 0 if you + don't. */ +#define HAVE_DECL_GETLOGIN 1 + +/* Define to 1 if you have the declaration of `getpwuid', and to 0 if you + don't. */ +#define HAVE_DECL_GETPWUID 1 + +/* Define to 1 if you have the declaration of `getuid', and to 0 if you don't. + */ +#define HAVE_DECL_GETUID 1 + +/* Define to 1 if you have the declaration of `getutent', and to 0 if you + don't. */ +#define HAVE_DECL_GETUTENT 0 + +/* Define to 1 if you have the declaration of `lseek', and to 0 if you don't. + */ +#define HAVE_DECL_LSEEK 1 + +/* Define to 1 if you have the declaration of `malloc', and to 0 if you don't. + */ +#define HAVE_DECL_MALLOC 1 + +/* Define to 1 if you have the declaration of `memchr', and to 0 if you don't. + */ +#define HAVE_DECL_MEMCHR 1 + +/* Define to 1 if you have the declaration of `memrchr', and to 0 if you + don't. */ +#define HAVE_DECL_MEMRCHR 0 + +/* Define to 1 if you have the declaration of `nanosleep', and to 0 if you + don't. */ +#define HAVE_DECL_NANOSLEEP 0 + +/* Define to 1 if you have the declaration of `putchar_unlocked', and to 0 if + you don't. */ +#define HAVE_DECL_PUTCHAR_UNLOCKED 1 + +/* Define to 1 if you have the declaration of `putc_unlocked', and to 0 if you + don't. */ +#define HAVE_DECL_PUTC_UNLOCKED 1 + +/* Define to 1 if you have the declaration of `realloc', and to 0 if you + don't. */ +#define HAVE_DECL_REALLOC 1 + +/* Define to 1 if you have the declaration of `stpcpy', and to 0 if you don't. + */ +#define HAVE_DECL_STPCPY 1 + +/* Define to 1 if you have the declaration of `strerror', and to 0 if you + don't. */ +#define HAVE_DECL_STRERROR 1 + +/* Define to 1 if you have the declaration of `strerror_r', and to 0 if you + don't. */ +#define HAVE_DECL_STRERROR_R 1 + +/* Define to 1 if you have the declaration of `strndup', and to 0 if you + don't. */ +#define HAVE_DECL_STRNDUP 0 + +/* Define to 1 if you have the declaration of `strnlen', and to 0 if you + don't. */ +#define HAVE_DECL_STRNLEN 0 + +/* Define to 1 if you have the declaration of `strsignal', and to 0 if you + don't. */ +#define HAVE_DECL_STRSIGNAL 1 + +/* Define to 1 if you have the declaration of `strstr', and to 0 if you don't. + */ +#define HAVE_DECL_STRSTR 1 + +/* Define to 1 if you have the declaration of `strtoimax', and to 0 if you + don't. */ +#define HAVE_DECL_STRTOIMAX 1 + +/* Define to 1 if you have the declaration of `strtol', and to 0 if you don't. + */ +#define HAVE_DECL_STRTOL 1 + +/* Define to 1 if you have the declaration of `strtoll', and to 0 if you + don't. */ +#define HAVE_DECL_STRTOLL 1 + +/* Define to 1 if you have the declaration of `strtoul', and to 0 if you + don't. */ +#define HAVE_DECL_STRTOUL 1 + +/* Define to 1 if you have the declaration of `strtoull', and to 0 if you + don't. */ +#define HAVE_DECL_STRTOULL 1 + +/* Define to 1 if you have the declaration of `strtoumax', and to 0 if you + don't. */ +#define HAVE_DECL_STRTOUMAX 1 + +/* Define to 1 if you have the declaration of `sys_siglist', and to 0 if you + don't. */ +#define HAVE_DECL_SYS_SIGLIST 0 + +/* Define to 1 if you have the declaration of `ttyname', and to 0 if you + don't. */ +#define HAVE_DECL_TTYNAME 1 + +/* Define to 1 if you have the declaration of wcwidth(), and to 0 otherwise. + */ +#define HAVE_DECL_WCWIDTH 0 + +/* Define to 1 if you have the declaration of `_sys_siglist', and to 0 if you + don't. */ +#define HAVE_DECL__SYS_SIGLIST 0 + +/* Define to 1 if you have the declaration of `__fpending', and to 0 if you + don't. */ +#define HAVE_DECL___FPENDING 0 + +/* Define to 1 if you have the header file, and it defines `DIR'. + */ +#define HAVE_DIRENT_H 1 + +/* Define to 1 if you have the `dirfd' function. */ +#define HAVE_DIRFD 1 + +/* Define to 1 if you don't have `vprintf' but do have `_doprnt.' */ +/* #undef HAVE_DOPRNT */ + +/* Define to 1 if you have the `dup2' function. */ +#define HAVE_DUP2 1 + +/* Define to 1 if you have the `endgrent' function. */ +#define HAVE_ENDGRENT 1 + +/* Define to 1 if you have the `endpwent' function. */ +#define HAVE_ENDPWENT 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_ERRNO_H 1 + +/* Define to 1 if you have the `euidaccess' function. */ +/* #undef HAVE_EUIDACCESS */ + +/* Define to 1 if you have the `fchdir' function. */ +/* #undef HAVE_FCHDIR */ + +/* Define to 1 if you have the header file. */ +#define HAVE_FCNTL_H 1 + +/* Define to 1 if you have the `fdatasync' function. */ +/* #undef HAVE_FDATASYNC */ + +/* Define to 1 if you have the `fesetround' function. */ +#define HAVE_FESETROUND 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_FLOAT_H 1 + +/* Define to 1 if you have the `floor' function. */ +/* #undef HAVE_FLOOR */ + +/* Define to 1 if fseeko (and presumably ftello) exists and is declared. */ +/* #undef HAVE_FSEEKO */ + +/* Define to 1 if you have the header file. */ +#define HAVE_FS_INFO_H 1 + +/* Define to 1 if you have the `fs_stat_dev' function. */ +#define HAVE_FS_STAT_DEV 1 + +/* Define to 1 if you have the `ftime' function. */ +#define HAVE_FTIME 1 + +/* Define to 1 if you have the `ftruncate' function. */ +#define HAVE_FTRUNCATE 1 + +/* Define if struct statfs has the f_fstypename member. */ +/* #undef HAVE_F_FSTYPENAME_IN_STATFS */ + +/* Define to 1 if you have the `getcwd' function. */ +#define HAVE_GETCWD 1 + +/* Define if getcwd (NULL, 0) allocates memory for result. */ +#define HAVE_GETCWD_NULL 1 + +/* Define to 1 if you have the `getdelim' function. */ +/* #undef HAVE_GETDELIM */ + +/* Define to 1 if your system has a working `getgroups' function. */ +#define HAVE_GETGROUPS 1 + +/* Define to 1 if you have the `gethostbyaddr' function. */ +#define HAVE_GETHOSTBYADDR 1 + +/* Define to 1 if you have the `gethostbyname' function. */ +#define HAVE_GETHOSTBYNAME 1 + +/* Define to 1 if you have the `gethostid' function. */ +/* #undef HAVE_GETHOSTID */ + +/* Define to 1 if you have the `gethostname' function. */ +#define HAVE_GETHOSTNAME 1 + +/* Define to 1 if you have the `gethrtime' function. */ +/* #undef HAVE_GETHRTIME */ + +/* Define to 1 if you have the `getloadavg' function. */ +/* #undef HAVE_GETLOADAVG */ + +/* Define to 1 if you have the `getmntent' function. */ +/* #undef HAVE_GETMNTENT */ + +/* Define to 1 if you have the `getmntinfo' function. */ +/* #undef HAVE_GETMNTINFO */ + +/* Define to 1 if you have the `getpagesize' function. */ +/* #undef HAVE_GETPAGESIZE */ + +/* Define to 1 if you have the `getpass' function. */ +/* #undef HAVE_GETPASS */ + +/* Define to 1 if you have the `getspnam' function. */ +/* #undef HAVE_GETSPNAM */ + +/* Define to 1 if you have the `getsysinfo' function. */ +/* #undef HAVE_GETSYSINFO */ + +/* Define if the GNU gettext() function is already present or preinstalled. */ +/* #undef HAVE_GETTEXT */ + +/* Define to 1 if you have the `gettimeofday' function. */ +#define HAVE_GETTIMEOFDAY 1 + +/* Define to 1 if you have the `getusershell' function. */ +/* #undef HAVE_GETUSERSHELL */ + +/* Define to 1 if you have the header file. */ +#define HAVE_GRP_H 1 + +/* Define to 1 if you have the `hasmntopt' function. */ +/* #undef HAVE_HASMNTOPT */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_HURD_H */ + +/* Define if you have the iconv() function. */ +/* #undef HAVE_ICONV */ + +/* Define to 1 if you have the `inet_ntoa' function. */ +#define HAVE_INET_NTOA 1 + +/* Define to 1 if you have the `initgroups' function. */ +/* #undef HAVE_INITGROUPS */ + +/* Define to 1 if you have the header file. */ +#define HAVE_INTTYPES_H 1 + +/* Define to 1 if you have the `isascii' function. */ +#define HAVE_ISASCII 1 + +/* Define to 1 if you have the `iswcntrl' function. */ +#define HAVE_ISWCNTRL 1 + +/* Define to 1 if you have the `iswprint' function. */ +#define HAVE_ISWPRINT 1 + +/* Define to 1 if you have the `iswspace' function. */ +#define HAVE_ISWSPACE 1 + +/* Define if you have and nl_langinfo(CODESET). */ +/* #undef HAVE_LANGINFO_CODESET */ + +/* Define to 1 if you have the `lchown' function. */ +/* #undef HAVE_LCHOWN */ + +/* Define to 1 if you have the `dgc' library (-ldgc). */ +/* #undef HAVE_LIBDGC */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_LIBINTL_H */ + +/* Define to 1 if you have the `kstat' library (-lkstat). */ +/* #undef HAVE_LIBKSTAT */ + +/* Define to 1 if you have the `ldgc' library (-lldgc). */ +/* #undef HAVE_LIBLDGC */ + +/* Define to 1 if you have the `os' library (-los). */ +/* #undef HAVE_LIBOS */ + +/* Define to 1 if you have the `ypsec' library (-lypsec). */ +/* #undef HAVE_LIBYPSEC */ + +/* Define to 1 if you have the header file. */ +#define HAVE_LIMITS_H 1 + +/* Define to 1 if you have the `listmntent' function. */ +/* #undef HAVE_LISTMNTENT */ + +/* Define to 1 if you have the `localeconv' function. */ +#define HAVE_LOCALECONV 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_LOCALE_H 1 + +/* Define to 1 if you have the `localtime_r' function. */ +#define HAVE_LOCALTIME_R 1 + +/* Define to 1 if long double works and has more range or precision than + double. */ +/* #undef HAVE_LONG_DOUBLE */ + +/* Define to 1 if you support file names longer than 14 characters. */ +#define HAVE_LONG_FILE_NAMES 1 + +/* Define if you have the long long type. */ +#define HAVE_LONG_LONG 1 + +/* Define if lstat has the bug that it succeeds when given the zero-length + file name argument. The lstat from SunOS4.1.4 and the Hurd as of + 1998-11-01) do this. */ +/* #undef HAVE_LSTAT_EMPTY_STRING_BUG */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_MACHINE_HAL_SYSINFO_H */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_MACH_MACH_H */ + +/* Define to 1 if your system has a GNU libc compatible `malloc' function, and + to 0 otherwise. */ +#define HAVE_MALLOC 1 + +/* Define to 1 if you have the `mblen' function. */ +#define HAVE_MBLEN 1 + +/* Define to 1 if you have the `mbrlen' function. */ +#define HAVE_MBRLEN 1 + +/* Define to 1 if mbrtowc and mbstate_t are properly declared. */ +/* #undef HAVE_MBRTOWC */ + +/* Define to 1 if you have the `mbsinit' function. */ +#define HAVE_MBSINIT 1 + +/* Define to 1 if you have the `mbsrtowcs' function. */ +#define HAVE_MBSRTOWCS 1 + +/* Define to 1 if declares mbstate_t. */ +/* #undef HAVE_MBSTATE_T */ + +/* Define to 1 if you have the `memchr' function. */ +#define HAVE_MEMCHR 1 + +/* Define to 1 if you have the `memcmp' function. */ +#define HAVE_MEMCMP 1 + +/* Define to 1 if you have the `memcpy' function. */ +#define HAVE_MEMCPY 1 + +/* Define to 1 if you have the `memmove' function. */ +#define HAVE_MEMMOVE 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_MEMORY_H 1 + +/* Define to 1 if you have the `mempcpy' function. */ +/* #undef HAVE_MEMPCPY */ + +/* Define to 1 if you have the `memrchr' function. */ +/* #undef HAVE_MEMRCHR */ + +/* Define to 1 if you have the `memset' function. */ +#define HAVE_MEMSET 1 + +/* Define to 1 if you have the `mkfifo' function. */ +#define HAVE_MKFIFO 1 + +/* Define to 1 if you have the `mkstemp' function. */ +#define HAVE_MKSTEMP 1 + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_MNTENT_H */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_MNTTAB_H */ + +/* Define to 1 if you have the `modf' function. */ +/* #undef HAVE_MODF */ + +/* 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. */ +#define HAVE_NETDB_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_NETINET_IN_H 1 + +/* Define to 1 if you have the `next_dev' function. */ +#define HAVE_NEXT_DEV 1 + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_NLIST_H */ + +/* Define to 1 if libc includes obstacks. */ +#define HAVE_OBSTACK 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_OS_H 1 + +/* Define to 1 if you have the `pathconf' function. */ +#define HAVE_PATHCONF 1 + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_PATHS_H */ + +/* Define if your system has the /proc/uptime special file. */ +/* #undef HAVE_PROC_UPTIME */ + +/* Define to 1 if you have the `pstat_getdynamic' function. */ +/* #undef HAVE_PSTAT_GETDYNAMIC */ + +/* Define to 1 if you have the `pstat_getstatic' function. */ +/* #undef HAVE_PSTAT_GETSTATIC */ + +/* Define to 1 if you have the header file. */ +#define HAVE_PWD_H 1 + +/* Define to 1 if you have the `raise' function. */ +#define HAVE_RAISE 1 + +/* Define to 1 if your system has a GNU libc compatible `realloc' function, + and to 0 otherwise. */ +#define HAVE_REALLOC 1 + +/* Define to 1 if you have the `realpath' function. */ +/* #undef HAVE_REALPATH */ + +/* Define to 1 if you have the `resolvepath' function. */ +/* #undef HAVE_RESOLVEPATH */ + +/* Define to 1 if you have the `rint' function. */ +/* #undef HAVE_RINT */ + +/* Define to 1 if you have the `rmdir' function. */ +#define HAVE_RMDIR 1 + +/* Define to 1 if you have the `rpmatch' function. */ +/* #undef HAVE_RPMATCH */ + +/* Define to 1 if you have the `sethostname' function. */ +/* #undef HAVE_SETHOSTNAME */ + +/* Define to 1 if you have the `setlocale' function. */ +#define HAVE_SETLOCALE 1 + +/* Define to 1 if you have the `setregid' function. */ +/* #undef HAVE_SETREGID */ + +/* Define to 1 if you have the `setreuid' function. */ +/* #undef HAVE_SETREUID */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_SHADOW_H */ + +/* Define to 1 if you have the `sig2str' function. */ +/* #undef HAVE_SIG2STR */ + +/* Define to 1 if you have the `sqrt' function. */ +#define HAVE_SQRT 1 + +/* Define to 1 if you have the `statvfs' function. */ +#define HAVE_STATVFS 1 + +/* Define if stat has the bug that it succeeds when given the zero-length file + name argument. The stat from SunOS4.1.4 and the Hurd as of 1998-11-01) do + this. */ +/* #undef HAVE_STAT_EMPTY_STRING_BUG */ + +/* Define to 1 if stdbool.h conforms to C99. */ +// #define HAVE_STDBOOL_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STDDEF_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STDINT_H 1 + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_STDIO_EXT_H */ + +/* Define to 1 if you have the header file. */ +#define HAVE_STDLIB_H 1 + +/* Define to 1 if you have the `stpcpy' function. */ +#define HAVE_STPCPY 1 + +/* Define to 1 if you have the `strcasecmp' function. */ +#define HAVE_STRCASECMP 1 + +/* Define to 1 if you have the `strchr' function. */ +#define HAVE_STRCHR 1 + +/* Define to 1 if you have the `strcspn' function. */ +#define HAVE_STRCSPN 1 + +/* Define to 1 if you have the `strdup' function. */ +#define HAVE_STRDUP 1 + +/* Define to 1 if you have the `strerror' function. */ +#define HAVE_STRERROR 1 + +/* Define to 1 if you have the `strerror_r' function. */ +#define HAVE_STRERROR_R 1 + +/* Define to 1 if you have the `strftime' function. */ +#define HAVE_STRFTIME 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STRINGS_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STRING_H 1 + +/* Define to 1 if you have the `strncasecmp' function. */ +#define HAVE_STRNCASECMP 1 + +/* Define to 1 if you have the `strndup' function. */ +/* #undef HAVE_STRNDUP */ + +/* Define to 1 if you have the `strpbrk' function. */ +#define HAVE_STRPBRK 1 + +/* Define to 1 if you have the `strrchr' function. */ +#define HAVE_STRRCHR 1 + +/* Define to 1 if you have the `strstr' function. */ +#define HAVE_STRSTR 1 + +/* Define to 1 if you have the `strtoimax' function. */ +#define HAVE_STRTOIMAX 1 + +/* Define to 1 if you have the `strtol' function. */ +#define HAVE_STRTOL 1 + +/* Define to 1 if you have the `strtoll' function. */ +/* #undef HAVE_STRTOLL */ + +/* Define to 1 if you have the `strtoul' function. */ +#define HAVE_STRTOUL 1 + +/* Define to 1 if you have the `strtoull' function. */ +/* #undef HAVE_STRTOULL */ + +/* Define to 1 if you have the `strtoumax' function. */ +#define HAVE_STRTOUMAX 1 + +/* Define if there is a member named d_type in the struct describing directory + headers. */ +/* #undef HAVE_STRUCT_DIRENT_D_TYPE */ + +/* Define to 1 if `f_fstypename' is member of `struct fsstat'. */ +/* #undef HAVE_STRUCT_FSSTAT_F_FSTYPENAME */ + +/* Define to 1 if `n_un.n_name' is member of `struct nlist'. */ +/* #undef HAVE_STRUCT_NLIST_N_UN_N_NAME */ + +/* Define to 1 if `sp_pwdp' is member of `struct spwd'. */ +/* #undef HAVE_STRUCT_SPWD_SP_PWDP */ + +/* Define to 1 if `f_basetype' is member of `struct statfs'. */ +/* #undef HAVE_STRUCT_STATFS_F_BASETYPE */ + +/* Define to 1 if `f_fsid.__val' is member of `struct statfs'. */ +/* #undef HAVE_STRUCT_STATFS_F_FSID___VAL */ + +/* Define to 1 if `f_fstypename' is member of `struct statfs'. */ +/* #undef HAVE_STRUCT_STATFS_F_FSTYPENAME */ + +/* Define to 1 if `f_namelen' is member of `struct statfs'. */ +/* #undef HAVE_STRUCT_STATFS_F_NAMELEN */ + +/* Define to 1 if `f_namemax' is member of `struct statfs'. */ +/* #undef HAVE_STRUCT_STATFS_F_NAMEMAX */ + +/* Define to 1 if `f_type' is member of `struct statfs'. */ +/* #undef HAVE_STRUCT_STATFS_F_TYPE */ + +/* Define to 1 if `f_basetype' is member of `struct statvfs'. */ +/* #undef HAVE_STRUCT_STATVFS_F_BASETYPE */ + +/* Define to 1 if `f_fsid.__val' is member of `struct statvfs'. */ +/* #undef HAVE_STRUCT_STATVFS_F_FSID___VAL */ + +/* Define to 1 if `f_namelen' is member of `struct statvfs'. */ +/* #undef HAVE_STRUCT_STATVFS_F_NAMELEN */ + +/* Define to 1 if `f_namemax' is member of `struct statvfs'. */ +#define HAVE_STRUCT_STATVFS_F_NAMEMAX 1 + +/* Define to 1 if `f_type' is member of `struct statvfs'. */ +/* #undef HAVE_STRUCT_STATVFS_F_TYPE */ + +/* Define to 1 if `st_author' is member of `struct stat'. */ +/* #undef HAVE_STRUCT_STAT_ST_AUTHOR */ + +/* Define to 1 if `st_blksize' is member of `struct stat'. */ +#define HAVE_STRUCT_STAT_ST_BLKSIZE 1 + +/* Define to 1 if `st_blocks' is member of `struct stat'. */ +/* #undef HAVE_STRUCT_STAT_ST_BLOCKS */ + +/* Define if struct timespec is declared in . */ +#define HAVE_STRUCT_TIMESPEC 1 + +/* Define to 1 if `tm_zone' is member of `struct tm'. */ +#define HAVE_STRUCT_TM_TM_ZONE 1 + +/* Define if struct utimbuf is declared -- usually in . Some systems + have utime.h but don't declare the struct anywhere. */ +#define HAVE_STRUCT_UTIMBUF 1 + +/* Define to 1 if `ut_exit.e_exit' is member of `struct utmpx'. */ +/* #undef HAVE_STRUCT_UTMPX_UT_EXIT_E_EXIT */ + +/* Define to 1 if `ut_exit.e_termination' is member of `struct utmpx'. */ +/* #undef HAVE_STRUCT_UTMPX_UT_EXIT_E_TERMINATION */ + +/* Define to 1 if `ut_exit.ut_exit' is member of `struct utmpx'. */ +/* #undef HAVE_STRUCT_UTMPX_UT_EXIT_UT_EXIT */ + +/* Define to 1 if `ut_exit.ut_termination' is member of `struct utmpx'. */ +/* #undef HAVE_STRUCT_UTMPX_UT_EXIT_UT_TERMINATION */ + +/* Define to 1 if `ut_id' is member of `struct utmpx'. */ +/* #undef HAVE_STRUCT_UTMPX_UT_ID */ + +/* Define to 1 if `ut_name' is member of `struct utmpx'. */ +/* #undef HAVE_STRUCT_UTMPX_UT_NAME */ + +/* Define to 1 if `ut_pid' is member of `struct utmpx'. */ +/* #undef HAVE_STRUCT_UTMPX_UT_PID */ + +/* Define to 1 if `ut_type' is member of `struct utmpx'. */ +/* #undef HAVE_STRUCT_UTMPX_UT_TYPE */ + +/* Define to 1 if `ut_user' is member of `struct utmpx'. */ +/* #undef HAVE_STRUCT_UTMPX_UT_USER */ + +/* Define to 1 if `ut_exit.e_exit' is member of `struct utmp'. */ +/* #undef HAVE_STRUCT_UTMP_UT_EXIT_E_EXIT */ + +/* Define to 1 if `ut_exit.e_termination' is member of `struct utmp'. */ +/* #undef HAVE_STRUCT_UTMP_UT_EXIT_E_TERMINATION */ + +/* Define to 1 if `ut_exit.ut_exit' is member of `struct utmp'. */ +/* #undef HAVE_STRUCT_UTMP_UT_EXIT_UT_EXIT */ + +/* Define to 1 if `ut_exit.ut_termination' is member of `struct utmp'. */ +/* #undef HAVE_STRUCT_UTMP_UT_EXIT_UT_TERMINATION */ + +/* Define to 1 if `ut_id' is member of `struct utmp'. */ +/* #undef HAVE_STRUCT_UTMP_UT_ID */ + +/* Define to 1 if `ut_name' is member of `struct utmp'. */ +/* #undef HAVE_STRUCT_UTMP_UT_NAME */ + +/* Define to 1 if `ut_pid' is member of `struct utmp'. */ +/* #undef HAVE_STRUCT_UTMP_UT_PID */ + +/* Define to 1 if `ut_type' is member of `struct utmp'. */ +/* #undef HAVE_STRUCT_UTMP_UT_TYPE */ + +/* Define to 1 if `ut_user' is member of `struct utmp'. */ +/* #undef HAVE_STRUCT_UTMP_UT_USER */ + +/* Define to 1 if you have the `strverscmp' function. */ +/* #undef HAVE_STRVERSCMP */ + +/* Define to 1 if your `struct stat' has `st_blocks'. Deprecated, use + `HAVE_STRUCT_STAT_ST_BLOCKS' instead. */ +/* #undef HAVE_ST_BLOCKS */ + +/* Define if struct stat has an st_dm_mode member. */ +/* #undef HAVE_ST_DM_MODE */ + +/* Define to 1 if you have the `sysctl' function. */ +/* #undef HAVE_SYSCTL */ + +/* Define to 1 if you have the `sysinfo' function. */ +/* #undef HAVE_SYSINFO */ + +/* FIXME */ +/* #undef HAVE_SYSLOG */ + +/* Define to 1 if you have the header file. */ +#define HAVE_SYSLOG_H 1 + +/* Define to 1 if you have the `sysmp' function. */ +/* #undef HAVE_SYSMP */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_SYS_ACL_H */ + +/* 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. */ +/* #undef HAVE_SYS_FILSYS_H */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_SYS_FSTYP_H */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_SYS_FS_S5PARAM_H */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_SYS_FS_TYPES_H */ + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_IOCTL_H 1 + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_SYS_MNTENT_H */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_SYS_MOUNT_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. */ +#define HAVE_SYS_PARAM_H 1 + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_SYS_PSTAT_H */ + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_RESOURCE_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_SOCKET_H 1 + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_SYS_STATFS_H */ + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_STATVFS_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_STAT_H 1 + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_SYS_SYSCTL_H */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_SYS_SYSINFO_H */ + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_SYSMACROS_H 1 + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_SYS_SYSMP_H */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_SYS_SYSTEMCFG_H */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_SYS_SYSTEMINFO_H */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_SYS_TABLE_H */ + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_TIMEB_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_TIME_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_TYPES_H 1 + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_SYS_UCRED_H */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_SYS_VFS_H */ + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_WAIT_H 1 + +/* Define to 1 if you have the `table' function. */ +/* #undef HAVE_TABLE */ + +/* Define to 1 if you have the header file. */ +#define HAVE_TERMIOS_H 1 + +/* Define if struct tm has the tm_gmtoff member. */ +#define HAVE_TM_GMTOFF 1 + +/* Define to 1 if your `struct tm' has `tm_zone'. Deprecated, use + `HAVE_STRUCT_TM_TM_ZONE' instead. */ +#define HAVE_TM_ZONE 1 + +/* Define to 1 if you don't have `tm_zone' but do have the external array + `tzname'. */ +/* #undef HAVE_TZNAME */ + +/* Define to 1 if you have the `tzset' function. */ +#define HAVE_TZSET 1 + +/* Define to 1 if you have the `uname' function. */ +#define HAVE_UNAME 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_UNISTD_H 1 + +/* Define if you have the unsigned long long type. */ +#define HAVE_UNSIGNED_LONG_LONG 1 + +/* Define to 1 if you have the `utime' function. */ +/* #undef HAVE_UTIME */ +#define HAVE_UTIME 1 + +/* Define if utimes accepts a null argument */ +/* #undef HAVE_UTIMES_NULL */ + +/* Define to 1 if you have the header file. */ +#define HAVE_UTIME_H 1 + +/* Define to 1 if `utime(file, NULL)' sets file's timestamp to the present. */ +#define HAVE_UTIME_NULL 1 + +/* Define to 1 if you have the `utmpname' function. */ +/* #undef HAVE_UTMPNAME */ + +/* Define to 1 if you have the `utmpxname' function. */ +/* #undef HAVE_UTMPXNAME */ + +/* FIXME */ +/* #undef HAVE_UTMPX_H */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_UTMP_H */ + +/* FIXME */ +/* #undef HAVE_UT_HOST */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_VALUES_H */ + +/* Define to 1 if you have the `vprintf' function. */ +#define HAVE_VPRINTF 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_WCHAR_H 1 + +/* Define to 1 if you have the `wcrtomb' function. */ +#define HAVE_WCRTOMB 1 + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_WCTYPE_H */ + +/* Define to 1 if you have the `wcwidth' function. */ +/* #undef HAVE_WCWIDTH */ + +/* Define to 1 if you have the `wmempcpy' function. */ +/* #undef HAVE_WMEMPCPY */ + +/* Define to 1 if you have the external variable, _system_configuration with a + member named physmem. */ +/* #undef HAVE__SYSTEM_CONFIGURATION */ + +/* Define to 1 if you have the `__fpending' function. */ +/* #undef HAVE___FPENDING */ + +/* Define to 1 if you have the `__secure_getenv' function. */ +/* #undef HAVE___SECURE_GETENV */ + +/* The host operating system. */ +#define HOST_OPERATING_SYSTEM "BeOS" + +/* Define as const if the declaration of iconv() needs const. */ +/* #undef ICONV_CONST */ + +#if FILESYSTEM_BACKSLASH_IS_FILE_NAME_SEPARATOR +# define ISSLASH(C) ((C) == '/' || (C) == '\\') +#else +# define ISSLASH(C) ((C) == '/') +#endif + +/* Define if `link(2)' dereferences symbolic links. */ +/* #undef LINK_FOLLOWS_SYMLINKS */ + +/* FIXME */ +#define LOCALTIME_CACHE 1 + +/* Define to 1 if `lstat' dereferences a symlink specified with a trailing + slash. */ +#define LSTAT_FOLLOWS_SLASHED_SYMLINK 1 + +/* Define to 1 if `major', `minor', and `makedev' are declared in . + */ +/* #undef MAJOR_IN_MKDEV */ + +/* Define to 1 if `major', `minor', and `makedev' are declared in + . */ +#define MAJOR_IN_SYSMACROS 1 + +/* Define if there is no specific function for reading the list of mounted + filesystems. fread will be used to read /etc/mnttab. (SVR2) */ +/* #undef MOUNTED_FREAD */ + +/* Define if (like SVR2) there is no specific function for reading the list of + mounted filesystems, and your system has these header files: + and . (SVR3) */ +/* #undef MOUNTED_FREAD_FSTYP */ + +/* Define if there are functions named next_dev and fs_stat_dev for reading + the list of mounted filesystems. (BeOS) */ +#define MOUNTED_FS_STAT_DEV 1 + +/* Define if there is a function named getfsstat for reading the list of + mounted filesystems. (DEC Alpha running OSF/1) */ +/* #undef MOUNTED_GETFSSTAT */ + +/* Define if there is a function named getmnt for reading the list of mounted + filesystems. (Ultrix) */ +/* #undef MOUNTED_GETMNT */ + +/* Define if there is a function named getmntent for reading the list of + mounted filesystems, and that function takes a single argument. (4.3BSD, + SunOS, HP-UX, Dynix, Irix) */ +/* #undef MOUNTED_GETMNTENT1 */ + +/* Define if there is a function named getmntent for reading the list of + mounted filesystems, and that function takes two arguments. (SVR4) */ +/* #undef MOUNTED_GETMNTENT2 */ + +/* Define if there is a function named getmntinfo for reading the list of + mounted filesystems. (4.4BSD, Darwin) */ +/* #undef MOUNTED_GETMNTINFO */ + +/* Define if there is a function named listmntent that can be used to list all + mounted filesystems. (UNICOS) */ +/* #undef MOUNTED_LISTMNTENT */ + +/* Define if there is a function named mntctl that can be used to read the + list of mounted filesystems, and there is a system header file that + declares `struct vmount.' (AIX) */ +/* #undef MOUNTED_VMOUNT */ + +/* Define to 1 if assertions should be disabled. */ +/* #undef NDEBUG */ + +/* FIXME */ +/* #undef NICE_PRIORITY */ + +/* Define to 1 if your `struct nlist' has an `n_un' member. Obsolete, depend + on `HAVE_STRUCT_NLIST_N_UN_N_NAME */ +/* #undef NLIST_NAME_UNION */ + +/* Name of package */ +#define PACKAGE "coreutils" + +/* Define to the address where bug reports for this package should be sent. */ +#define PACKAGE_BUGREPORT "bug-coreutils@gnu.org" + +/* Define to the full name of this package. */ +#define PACKAGE_NAME "GNU coreutils" + +/* Define to the full name and version of this package. */ +#define PACKAGE_STRING "GNU coreutils 5.0" + +/* Define to the one symbol short name of this package. */ +#define PACKAGE_TARNAME "coreutils" + +/* Define to the version of this package. */ +#define PACKAGE_VERSION "5.0" + +/* the number of pending output bytes on stream `fp' */ +#define PENDING_OUTPUT_N_BYTES fp->_IO_write_ptr - fp->_IO_write_base + +/* Define if exists and defines unusable PRI* macros. */ +/* #undef PRI_MACROS_BROKEN */ + +/* Define to 1 if the C compiler supports function prototypes. */ +#define PROTOTYPES 1 + +/* Define if rename does not work for source paths with a trailing slash, like + the one from SunOS 4.1.1_U1. */ +#define RENAME_TRAILING_SLASH_BUG 1 + +/* Define as the return type of signal handlers (`int' or `void'). */ +#define RETSIGTYPE void + +/* the value to which errno is set when rmdir fails on a nonempty directory */ +#define RMDIR_ERRNO_NOT_EMPTY -2147459066 + +/* Define to 1 if the `setvbuf' function takes the buffering type as its + second argument and the buffer pointer as the third, as on System V before + release 3. */ +/* #undef SETVBUF_REVERSED */ + +/* If using the C implementation of alloca, define if you know the + direction of stack growth for your system; otherwise it will be + automatically deduced at run-time. + STACK_DIRECTION > 0 => grows toward higher addresses + STACK_DIRECTION < 0 => grows toward lower addresses + STACK_DIRECTION = 0 => direction of growth unknown */ +/* #undef STACK_DIRECTION */ + +/* Define if the block counts reported by statfs may be truncated to 2GB and + the correct values may be stored in the f_spare array. (SunOS 4.1.2, 4.1.3, + and 4.1.3_U1 are reported to have this problem. SunOS 4.1.1 seems not to be + affected.) */ +/* #undef STATFS_TRUNCATES_BLOCK_COUNTS */ + +/* Define to 1 if the `S_IS*' macros in do not work properly. */ +/* #undef STAT_MACROS_BROKEN */ + +/* Define if there is no specific function for reading filesystems usage + information and you have the header file. (SVR2) */ +/* #undef STAT_READ_FILSYS */ + +/* Define if statfs takes 2 args and struct statfs has a field named f_bsize. + (4.3BSD, SunOS 4, HP-UX, AIX PS/2) */ +/* #undef STAT_STATFS2_BSIZE */ + +/* Define if statfs takes 2 args and struct statfs has a field named f_fsize. + (4.4BSD, NetBSD) */ +/* #undef STAT_STATFS2_FSIZE */ + +/* Define if statfs takes 2 args and the second argument has type struct + fs_data. (Ultrix) */ +/* #undef STAT_STATFS2_FS_DATA */ + +/* Define if statfs takes 3 args. (DEC Alpha running OSF/1) */ +/* #undef STAT_STATFS3_OSF1 */ + +/* Define if statfs takes 4 args. (SVR3, Dynix, Irix, Dolphin) */ +/* #undef STAT_STATFS4 */ + +/* Define if there is a function named statvfs. (SVR4) */ +#define STAT_STATVFS 1 + +/* Define to 1 if you have the ANSI C header files. */ +#define STDC_HEADERS 1 + +/* Define to 1 if strerror_r returns char *. */ +#define STRERROR_R_CHAR_P 1 + +/* Define to be the nanoseconds member of struct stat's st_mtim, if it exists. + */ +/* #undef ST_MTIM_NSEC */ + +/* Define to 1 on System V Release 4. */ +/* #undef SVR4 */ + +/* FIXME */ +/* #undef TERMIOS_NEEDS_XOPEN_SOURCE */ + +/* Define to 1 if you can safely include both and . */ +#define TIME_WITH_SYS_TIME 1 + +/* Define to 1 if your declares `struct tm'. */ +/* #undef TM_IN_SYS_TIME */ + +/* Define to 1 for Encore UMAX. */ +/* #undef UMAX */ + +/* Define to 1 for Encore UMAX 4.3 that has instead of + . */ +/* #undef UMAX4_3 */ + +/* the maximum number of simultaneously open files per process */ +#define UTILS_OPEN_MAX 122 + +/* Version number of package */ +#define VERSION "5.0" + +/* Define if sys/ptem.h is required for struct winsize. */ +/* #undef WINSIZE_IN_PTEM */ + +/* 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 */ + +/* Enable GNU extensions on systems that have them. */ +#ifndef _GNU_SOURCE +# define _GNU_SOURCE 1 +#endif + +/* 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 like PROTOTYPES; this can be used by system headers. */ +#define __PROTOTYPES 1 + +/* Define to rpl_chown if the replacement function should be used. */ +#define chown rpl_chown + +/* Define to empty if `const' does not conform to ANSI C. */ +/* #undef const */ + +/* Define to rpl_fnmatch if the replacement function should be used. */ +#define fnmatch rpl_fnmatch + +/* Define to rpl_getcwd if the wrapper function should be used. */ +#define getcwd rpl_getcwd + +/* Define as rpl_getgroups if getgroups doesn't work right. */ +/* #undef getgroups */ + +/* Define to rpl_gettimeofday if the replacement function should be used. */ +/* #undef gettimeofday */ + +/* Define to `int' if doesn't define. */ +/* #undef gid_t */ + +/* Define as `__inline' if that's what the C compiler calls it, or to nothing + if it is not supported. */ +/* #undef inline */ + +/* Define to `unsigned long' if does not define. */ +/* #undef ino_t */ + +/* Define to widest signed type if doesn't define. */ +/* #undef intmax_t */ + +/* Define to rpl_localtime if the replacement function should be used. */ +/* #undef localtime */ + +/* Define to `unsigned int' if does not define. */ +#define major_t unsigned int + +/* Define to rpl_malloc if the replacement function should be used. */ +/* #undef malloc */ + +/* Define to a type if does not define. */ +#define mbstate_t int + +/* Define to rpl_memcmp if the replacement function should be used. */ +/* #undef memcmp */ + +/* Define to `unsigned int' if does not define. */ +#define minor_t unsigned int + +/* Define to rpl_mkdir if the replacement function should be used. */ +#define mkdir rpl_mkdir + +/* Define to rpl_mkstemp if the replacement function should be used. */ +/* #undef mkstemp */ + +/* Define to rpl_mktime if the replacement function should be used. */ +#define mktime rpl_mktime + +/* Define to `int' if does not define. */ +/* #undef mode_t */ + +/* Define to the name of the strftime replacement function. */ +#define my_strftime nstrftime + +/* Define to rpl_nanosleep if the replacement function should be used. */ +#define nanosleep rpl_nanosleep + +/* Define to `long' if does not define. */ +/* #undef off_t */ + +/* Define to `int' if does not define. */ +/* #undef pid_t */ + +/* Define to rpl_putenv if the replacement function should be used. */ +#define putenv rpl_putenv + +/* Define to rpl_realloc if the replacement function should be used. */ +/* #undef realloc */ + +/* Define to equivalent of C99 restrict keyword, or to nothing if this is not + supported. Do not define if restrict is supported directly. */ +#define restrict __restrict__ + +/* Define to `unsigned' if does not define. */ +/* #undef size_t */ + +/* Define to `int' if does not define. */ +/* #undef ssize_t */ + +/* Define to `int' if doesn't define. */ +/* #undef uid_t */ + +/* Define to widest unsigned type if doesn't define. */ +/* #undef uintmax_t */ + +/* Define to empty if the keyword `volatile' does not work. Warning: valid + code using `volatile' can become incorrect without. Disable with care. */ +/* #undef volatile */ + + + +#define HAVE_DONE_WORKING_MALLOC_CHECK 1 +#define HAVE_DONE_WORKING_REALLOC_CHECK 1 diff --git a/src/apps/bin/diffutils-2.8.1/lib/dirname.h b/src/apps/bin/diffutils-2.8.1/lib/dirname.h new file mode 100644 index 0000000000..cea14c04ff --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/lib/dirname.h @@ -0,0 +1,47 @@ +/* Copyright (C) 1998, 2001 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software Foundation, + Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + +#ifndef DIRNAME_H_ +# define DIRNAME_H_ 1 + +# ifndef PARAMS +# if defined PROTOTYPES || (defined __STDC__ && __STDC__) +# define PARAMS(Args) Args +# else +# define PARAMS(Args) () +# endif +# endif + +# ifndef DIRECTORY_SEPARATOR +# define DIRECTORY_SEPARATOR '/' +# endif + +# ifndef ISSLASH +# define ISSLASH(C) ((C) == DIRECTORY_SEPARATOR) +# endif + +# ifndef FILESYSTEM_PREFIX_LEN +# define FILESYSTEM_PREFIX_LEN(Filename) 0 +# endif + +char *base_name PARAMS ((char const *path)); +char *dir_name PARAMS ((char const *path)); +size_t base_len PARAMS ((char const *path)); +size_t dir_len PARAMS ((char const *path)); + +int strip_trailing_slashes PARAMS ((char *path)); + +#endif /* not DIRNAME_H_ */ diff --git a/src/apps/bin/diffutils-2.8.1/lib/error.c b/src/apps/bin/diffutils-2.8.1/lib/error.c new file mode 100644 index 0000000000..902519ca33 --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/lib/error.c @@ -0,0 +1,400 @@ +/* Error handler for noninteractive utilities + Copyright (C) 1990-1998, 2000, 2001 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. + + 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. */ + +/* Written by David MacKenzie . */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include +#if HAVE_LIBINTL_H +# include +#endif +#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" + +#ifndef _ +# define _(String) String +#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/src/apps/bin/diffutils-2.8.1/lib/error.h b/src/apps/bin/diffutils-2.8.1/lib/error.h new file mode 100644 index 0000000000..177b2dcbe8 --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/lib/error.h @@ -0,0 +1,78 @@ +/* Declaration for error-reporting function + Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc. + + + NOTE: The canonical source of this file is maintained with the GNU C Library. + Bugs can be reported to bug-glibc@prep.ai.mit.edu. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by the + Free Software Foundation; either version 2, or (at your option) any + later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, + USA. */ + +#ifndef _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/src/apps/bin/diffutils-2.8.1/lib/exclude.c b/src/apps/bin/diffutils-2.8.1/lib/exclude.c new file mode 100644 index 0000000000..35f9f0d194 --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/lib/exclude.c @@ -0,0 +1,268 @@ +/* exclude.c -- exclude file names + + Copyright 1992, 1993, 1994, 1997, 1999, 2000, 2001 Free Software + Foundation, Inc. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; see the file COPYING. + If not, write to the Free Software Foundation, + 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + +/* Written by Paul Eggert */ + +#if HAVE_CONFIG_H +# include +#endif + +#if HAVE_STDBOOL_H +# include +#else +typedef enum {false = 0, true = 1} bool; +#endif + +#include +#ifndef errno +extern int errno; +#endif +#include +#if HAVE_SYS_TYPES_H +# include +#endif +#if HAVE_STDLIB_H +# include +#endif +#if HAVE_STRING_H +# include +#endif +#if HAVE_STRINGS_H +# include +#endif +#if HAVE_INTTYPES_H +# include +#else +# if HAVE_STDINT_H +# include +# endif +#endif + +#include "exclude.h" +#include "fnmatch.h" +#include "unlocked-io.h" +#include "xalloc.h" + +#ifndef SIZE_MAX +# define SIZE_MAX ((size_t) -1) +#endif + +/* Verify a requirement at compile-time (unlike assert, which is runtime). */ +#define verify(name, assertion) struct name { char a[(assertion) ? 1 : -1]; } + +verify (EXCLUDE_macros_do_not_collide_with_FNM_macros, + (((EXCLUDE_ANCHORED | EXCLUDE_INCLUDE | EXCLUDE_WILDCARDS) + & (FNM_FILE_NAME | FNM_NOESCAPE | FNM_PERIOD | FNM_LEADING_DIR + | FNM_CASEFOLD)) + == 0)); + +/* An exclude pattern-options pair. The options are fnmatch options + ORed with EXCLUDE_* options. */ + +struct patopts + { + char const *pattern; + int options; + }; + +/* An exclude list, of pattern-options pairs. */ + +struct exclude + { + struct patopts *exclude; + size_t exclude_alloc; + size_t exclude_count; + }; + +/* Return a newly allocated and empty exclude list. */ + +struct exclude * +new_exclude (void) +{ + struct exclude *ex = (struct exclude *) xmalloc (sizeof *ex); + ex->exclude_count = 0; + ex->exclude_alloc = (1 << 6); /* This must be a power of 2. */ + ex->exclude = (struct patopts *) xmalloc (ex->exclude_alloc + * sizeof ex->exclude[0]); + return ex; +} + +/* Free the storage associated with an exclude list. */ + +void +free_exclude (struct exclude *ex) +{ + free (ex->exclude); + free (ex); +} + +/* Return zero if PATTERN matches F, obeying OPTIONS, except that + (unlike fnmatch) wildcards are disabled in PATTERN. */ + +static int +fnmatch_no_wildcards (char const *pattern, char const *f, int options) +{ + if (! (options & FNM_LEADING_DIR)) + return ((options & FNM_CASEFOLD) + ? strcasecmp (pattern, f) + : strcmp (pattern, f)); + else + { + size_t patlen = strlen (pattern); + int r = ((options & FNM_CASEFOLD) + ? strncasecmp (pattern, f, patlen) + : strncmp (pattern, f, patlen)); + if (! r) + { + r = f[patlen]; + if (r == '/') + r = 0; + } + return r; + } +} + +/* Return true if EX excludes F. */ + +bool +excluded_filename (struct exclude const *ex, char const *f) +{ + size_t exclude_count = ex->exclude_count; + + /* If no options are given, the default is to include. */ + if (exclude_count == 0) + return false; + else + { + struct patopts const *exclude = ex->exclude; + size_t i; + + /* Otherwise, the default is the opposite of the first option. */ + bool excluded = !! (exclude[0].options & EXCLUDE_INCLUDE); + + /* Scan through the options, seeing whether they change F from + excluded to included or vice versa. */ + for (i = 0; i < exclude_count; i++) + { + char const *pattern = exclude[i].pattern; + int options = exclude[i].options; + if (excluded == !! (options & EXCLUDE_INCLUDE)) + { + int (*matcher) PARAMS ((char const *, char const *, int)) = + (options & EXCLUDE_WILDCARDS + ? fnmatch + : fnmatch_no_wildcards); + bool matched = ((*matcher) (pattern, f, options) == 0); + char const *p; + + if (! (options & EXCLUDE_ANCHORED)) + for (p = f; *p && ! matched; p++) + if (*p == '/' && p[1] != '/') + matched = ((*matcher) (pattern, p + 1, options) == 0); + + excluded ^= matched; + } + } + + return excluded; + } +} + +/* Append to EX the exclusion PATTERN with OPTIONS. */ + +void +add_exclude (struct exclude *ex, char const *pattern, int options) +{ + struct patopts *patopts; + + if (ex->exclude_alloc <= ex->exclude_count) + { + size_t s = 2 * ex->exclude_alloc; + if (! (0 < s && s <= SIZE_MAX / sizeof ex->exclude[0])) + xalloc_die (); + ex->exclude_alloc = s; + ex->exclude = (struct patopts *) xrealloc (ex->exclude, + s * sizeof ex->exclude[0]); + } + + patopts = &ex->exclude[ex->exclude_count++]; + patopts->pattern = pattern; + patopts->options = options; +} + +/* Use ADD_FUNC to append to EX the patterns in FILENAME, each with + OPTIONS. LINE_END terminates each pattern in the file. Return -1 + on failure, 0 on success. */ + +int +add_exclude_file (void (*add_func) PARAMS ((struct exclude *, + char const *, int)), + struct exclude *ex, char const *filename, int options, + char line_end) +{ + bool use_stdin = filename[0] == '-' && !filename[1]; + FILE *in; + char *buf; + char *p; + char const *pattern; + char const *lim; + size_t buf_alloc = (1 << 10); /* This must be a power of two. */ + size_t buf_count = 0; + int c; + int e = 0; + + if (use_stdin) + in = stdin; + else if (! (in = fopen (filename, "r"))) + return -1; + + buf = xmalloc (buf_alloc); + + while ((c = getc (in)) != EOF) + { + buf[buf_count++] = c; + if (buf_count == buf_alloc) + { + buf_alloc *= 2; + if (! buf_alloc) + xalloc_die (); + buf = xrealloc (buf, buf_alloc); + } + } + + if (ferror (in)) + e = errno; + + if (!use_stdin && fclose (in) != 0) + e = errno; + + buf = xrealloc (buf, buf_count + 1); + + for (pattern = p = buf, lim = buf + buf_count; p <= lim; p++) + if (p < lim ? *p == line_end : buf < p && p[-1]) + { + *p = '\0'; + (*add_func) (ex, pattern, options); + pattern = p + 1; + } + + errno = e; + return e ? -1 : 0; +} diff --git a/src/apps/bin/diffutils-2.8.1/lib/exclude.h b/src/apps/bin/diffutils-2.8.1/lib/exclude.h new file mode 100644 index 0000000000..54c33ef60d --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/lib/exclude.h @@ -0,0 +1,49 @@ +/* exclude.h -- declarations for excluding file names + Copyright 1992, 1993, 1994, 1997, 1999, 2001 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; see the file COPYING. + If not, write to the Free Software Foundation, + 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + +/* Written by Paul Eggert */ + +#ifndef PARAMS +# if defined PROTOTYPES || (defined __STDC__ && __STDC__) +# define PARAMS(Args) Args +# else +# define PARAMS(Args) () +# endif +#endif + +/* Exclude options, which can be ORed with fnmatch options. */ + +/* Patterns must match the start of file names, instead of matching + anywhere after a '/'. */ +#define EXCLUDE_ANCHORED (1 << 5) + +/* Include instead of exclude. */ +#define EXCLUDE_INCLUDE (1 << 6) + +/* '?', '*', '[', and '\\' are special in patterns. Without this + option, these characters are ordinary and fnmatch is not used. */ +#define EXCLUDE_WILDCARDS (1 << 7) + +struct exclude; + +struct exclude *new_exclude PARAMS ((void)); +void free_exclude PARAMS ((struct exclude *)); +void add_exclude PARAMS ((struct exclude *, char const *, int)); +int add_exclude_file PARAMS ((void (*) (struct exclude *, char const *, int), + struct exclude *, char const *, int, char)); +bool excluded_filename PARAMS ((struct exclude const *, char const *)); diff --git a/src/apps/bin/diffutils-2.8.1/lib/exitfail.c b/src/apps/bin/diffutils-2.8.1/lib/exitfail.c new file mode 100644 index 0000000000..eec8234ff1 --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/lib/exitfail.c @@ -0,0 +1,31 @@ +/* Failure exit status + + Copyright (C) 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; see the file COPYING. + If not, write to the Free Software Foundation, + 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + +#if HAVE_CONFIG_H +# include +#endif + +#if HAVE_STDLIB_H +# include +#endif +#ifndef EXIT_FAILURE +# define EXIT_FAILURE 1 +#endif + +int volatile exit_failure = EXIT_FAILURE; diff --git a/src/apps/bin/diffutils-2.8.1/lib/exitfail.h b/src/apps/bin/diffutils-2.8.1/lib/exitfail.h new file mode 100644 index 0000000000..cf5ab71958 --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/lib/exitfail.h @@ -0,0 +1,20 @@ +/* Failure exit status + + Copyright (C) 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; see the file COPYING. + If not, write to the Free Software Foundation, + 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + +extern int volatile exit_failure; diff --git a/src/apps/bin/diffutils-2.8.1/lib/fnmatch.c b/src/apps/bin/diffutils-2.8.1/lib/fnmatch.c new file mode 100644 index 0000000000..9bff8c220a --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/lib/fnmatch.c @@ -0,0 +1,230 @@ +/* Copyright 1991, 1992, 1993, 1996, 1997, 2000 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software Foundation, + Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + +#if HAVE_CONFIG_H +# include +#endif + +/* Enable GNU extensions in fnmatch.h. */ +#ifndef _GNU_SOURCE +# define _GNU_SOURCE 1 +#endif + +#include +#include +#include + +#if defined STDC_HEADERS || !defined isascii +# define IN_CTYPE_DOMAIN(c) 1 +#else +# define IN_CTYPE_DOMAIN(c) isascii (c) +#endif + +#define ISUPPER(c) (IN_CTYPE_DOMAIN (c) && isupper (c)) + + +#ifndef errno +extern int errno; +#endif + +/* Match STRING against the filename pattern PATTERN, returning zero if + it matches, nonzero if not. */ +int +fnmatch (const char *pattern, const char *string, int flags) +{ + register const char *p = pattern, *n = string; + register char c; + +/* Note that this evaluates C many times. */ +#define FOLD(c) ((flags & FNM_CASEFOLD) && ISUPPER ((unsigned char) (c)) \ + ? tolower ((unsigned char) (c)) \ + : (c)) + + while ((c = *p++) != '\0') + { + c = FOLD (c); + + switch (c) + { + case '?': + if (*n == '\0') + return FNM_NOMATCH; + else if ((flags & FNM_FILE_NAME) && *n == '/') + return FNM_NOMATCH; + else if ((flags & FNM_PERIOD) && *n == '.' && + (n == string || ((flags & FNM_FILE_NAME) && n[-1] == '/'))) + return FNM_NOMATCH; + break; + + case '\\': + if (!(flags & FNM_NOESCAPE)) + { + c = *p++; + if (c == '\0') + /* Trailing \ loses. */ + return FNM_NOMATCH; + c = FOLD (c); + } + if (FOLD (*n) != c) + return FNM_NOMATCH; + break; + + case '*': + if ((flags & FNM_PERIOD) && *n == '.' && + (n == string || ((flags & FNM_FILE_NAME) && n[-1] == '/'))) + return FNM_NOMATCH; + + for (c = *p++; c == '?' || c == '*'; c = *p++) + { + if (c == '?') + { + /* A ? needs to match one character. */ + if (*n == '\0' || (*n == '/' && (flags & FNM_FILE_NAME))) + /* There isn't another character; no match. */ + return FNM_NOMATCH; + else + /* One character of the string is consumed in matching + this ? wildcard, so *??? won't match if there are + less than three characters. */ + ++n; + } + } + + if (c == '\0') + { + if ((flags & (FNM_FILE_NAME | FNM_LEADING_DIR)) == FNM_FILE_NAME) + for (; *n != '\0'; n++) + if (*n == '/') + return FNM_NOMATCH; + return 0; + } + + { + char c1 = (!(flags & FNM_NOESCAPE) && c == '\\') ? *p : c; + c1 = FOLD (c1); + for (--p; *n != '\0'; ++n) + if ((c == '[' || FOLD (*n) == c1) && + fnmatch (p, n, flags & ~FNM_PERIOD) == 0) + return 0; + else if (*n == '/' && (flags & FNM_FILE_NAME)) + break; + return FNM_NOMATCH; + } + + case '[': + { + /* Nonzero if the sense of the character class is inverted. */ + register int not; + + if (*n == '\0') + return FNM_NOMATCH; + + if ((flags & FNM_PERIOD) && *n == '.' && + (n == string || ((flags & FNM_FILE_NAME) && n[-1] == '/'))) + return FNM_NOMATCH; + + not = (*p == '!' || *p == '^'); + if (not) + ++p; + + c = *p++; + for (;;) + { + register char cstart = c, cend = c; + + if (!(flags & FNM_NOESCAPE) && c == '\\') + { + if (*p == '\0') + return FNM_NOMATCH; + cstart = cend = *p++; + } + + cstart = cend = FOLD (cstart); + + if (c == '\0') + /* [ (unterminated) loses. */ + return FNM_NOMATCH; + + c = *p++; + c = FOLD (c); + + if ((flags & FNM_FILE_NAME) && c == '/') + /* [/] can never match. */ + return FNM_NOMATCH; + + if (c == '-' && *p != ']') + { + cend = *p++; + if (!(flags & FNM_NOESCAPE) && cend == '\\') + cend = *p++; + if (cend == '\0') + return FNM_NOMATCH; + cend = FOLD (cend); + + c = *p++; + } + + if (FOLD (*n) >= cstart && FOLD (*n) <= cend) + goto matched; + + if (c == ']') + break; + } + if (!not) + return FNM_NOMATCH; + break; + + matched:; + /* Skip the rest of the [...] that already matched. */ + while (c != ']') + { + if (c == '\0') + /* [... (unterminated) loses. */ + return FNM_NOMATCH; + + c = *p++; + if (!(flags & FNM_NOESCAPE) && c == '\\') + { + if (*p == '\0') + return FNM_NOMATCH; + /* XXX 1003.2d11 is unclear if this is right. */ + ++p; + } + } + if (not) + return FNM_NOMATCH; + } + break; + + default: + if (c != FOLD (*n)) + return FNM_NOMATCH; + } + + ++n; + } + + if (*n == '\0') + return 0; + + if ((flags & FNM_LEADING_DIR) && *n == '/') + /* The FNM_LEADING_DIR flag says that "foo*" matches "foobar/frobozz". */ + return 0; + + return FNM_NOMATCH; + +#undef FOLD +} diff --git a/src/apps/bin/diffutils-2.8.1/lib/fnmatch.h b/src/apps/bin/diffutils-2.8.1/lib/fnmatch.h new file mode 100644 index 0000000000..af1dcf523b --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/lib/fnmatch.h @@ -0,0 +1,69 @@ +/* Copyright (C) 1991, 1992, 1993 Free Software Foundation, Inc. + +NOTE: The canonical source of this file is maintained with the GNU C Library. +Bugs can be reported to bug-glibc@prep.ai.mit.edu. + +This program is free software; you can redistribute it and/or modify it +under the terms of the GNU General Public License as published by the +Free Software Foundation; either version 2, or (at your option) any +later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software Foundation, +Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + +#ifndef _FNMATCH_H + +#define _FNMATCH_H 1 + +#ifdef __cplusplus +extern "C" { +#endif + +#if defined (__cplusplus) || (defined (__STDC__) && __STDC__) +#undef __P +#define __P(protos) protos +#else /* Not C++ or ANSI C. */ +#undef __P +#define __P(protos) () +/* We can get away without defining `const' here only because in this file + it is used only inside the prototype for `fnmatch', which is elided in + non-ANSI C where `const' is problematical. */ +#endif /* C++ or ANSI C. */ + + +/* We #undef these before defining them because some losing systems + (HP-UX A.08.07 for example) define these in . */ +#undef FNM_PATHNAME +#undef FNM_NOESCAPE +#undef FNM_PERIOD + +/* Bits set in the FLAGS argument to `fnmatch'. */ +#define FNM_PATHNAME (1 << 0) /* No wildcard can ever match `/'. */ +#define FNM_NOESCAPE (1 << 1) /* Backslashes don't quote special chars. */ +#define FNM_PERIOD (1 << 2) /* Leading `.' is matched only explicitly. */ + +#if !defined (_POSIX_C_SOURCE) || _POSIX_C_SOURCE < 2 || defined (_GNU_SOURCE) +#define FNM_FILE_NAME FNM_PATHNAME /* Preferred GNU name. */ +#define FNM_LEADING_DIR (1 << 3) /* Ignore `/...' after a match. */ +#define FNM_CASEFOLD (1 << 4) /* Compare without regard to case. */ +#endif + +/* Value returned by `fnmatch' if STRING does not match PATTERN. */ +#define FNM_NOMATCH 1 + +/* Match STRING against the filename pattern PATTERN, + returning zero if it matches, FNM_NOMATCH if not. */ +extern int fnmatch __P ((const char *__pattern, const char *__string, + int __flags)); + +#ifdef __cplusplus +} +#endif + +#endif /* fnmatch.h */ diff --git a/src/apps/bin/diffutils-2.8.1/lib/fnmatch.hin b/src/apps/bin/diffutils-2.8.1/lib/fnmatch.hin new file mode 100644 index 0000000000..af1dcf523b --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/lib/fnmatch.hin @@ -0,0 +1,69 @@ +/* Copyright (C) 1991, 1992, 1993 Free Software Foundation, Inc. + +NOTE: The canonical source of this file is maintained with the GNU C Library. +Bugs can be reported to bug-glibc@prep.ai.mit.edu. + +This program is free software; you can redistribute it and/or modify it +under the terms of the GNU General Public License as published by the +Free Software Foundation; either version 2, or (at your option) any +later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software Foundation, +Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + +#ifndef _FNMATCH_H + +#define _FNMATCH_H 1 + +#ifdef __cplusplus +extern "C" { +#endif + +#if defined (__cplusplus) || (defined (__STDC__) && __STDC__) +#undef __P +#define __P(protos) protos +#else /* Not C++ or ANSI C. */ +#undef __P +#define __P(protos) () +/* We can get away without defining `const' here only because in this file + it is used only inside the prototype for `fnmatch', which is elided in + non-ANSI C where `const' is problematical. */ +#endif /* C++ or ANSI C. */ + + +/* We #undef these before defining them because some losing systems + (HP-UX A.08.07 for example) define these in . */ +#undef FNM_PATHNAME +#undef FNM_NOESCAPE +#undef FNM_PERIOD + +/* Bits set in the FLAGS argument to `fnmatch'. */ +#define FNM_PATHNAME (1 << 0) /* No wildcard can ever match `/'. */ +#define FNM_NOESCAPE (1 << 1) /* Backslashes don't quote special chars. */ +#define FNM_PERIOD (1 << 2) /* Leading `.' is matched only explicitly. */ + +#if !defined (_POSIX_C_SOURCE) || _POSIX_C_SOURCE < 2 || defined (_GNU_SOURCE) +#define FNM_FILE_NAME FNM_PATHNAME /* Preferred GNU name. */ +#define FNM_LEADING_DIR (1 << 3) /* Ignore `/...' after a match. */ +#define FNM_CASEFOLD (1 << 4) /* Compare without regard to case. */ +#endif + +/* Value returned by `fnmatch' if STRING does not match PATTERN. */ +#define FNM_NOMATCH 1 + +/* Match STRING against the filename pattern PATTERN, + returning zero if it matches, FNM_NOMATCH if not. */ +extern int fnmatch __P ((const char *__pattern, const char *__string, + int __flags)); + +#ifdef __cplusplus +} +#endif + +#endif /* fnmatch.h */ diff --git a/src/apps/bin/diffutils-2.8.1/lib/freesoft.c b/src/apps/bin/diffutils-2.8.1/lib/freesoft.c new file mode 100644 index 0000000000..af2458fbaa --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/lib/freesoft.c @@ -0,0 +1,31 @@ +/* Free software message ID. + + Copyright (C) 2001 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software Foundation, + Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + +#if HAVE_CONFIG_H +# include +#endif + +#include "freesoft.h" + +#define N_(Text) Text + +char const free_software_msgid[] = N_("\ +This program comes with NO WARRANTY, to the extent permitted by law.\n\ +You may redistribute copies of this program\n\ +under the terms of the GNU General Public License.\n\ +For more information about these matters, see the file named COPYING."); diff --git a/src/apps/bin/diffutils-2.8.1/lib/freesoft.h b/src/apps/bin/diffutils-2.8.1/lib/freesoft.h new file mode 100644 index 0000000000..941eb920b2 --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/lib/freesoft.h @@ -0,0 +1 @@ +extern char const free_software_msgid[]; diff --git a/src/apps/bin/diffutils-2.8.1/lib/getopt.c b/src/apps/bin/diffutils-2.8.1/lib/getopt.c new file mode 100644 index 0000000000..ed32692933 --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/lib/getopt.c @@ -0,0 +1,1067 @@ +/* Getopt for GNU. + NOTE: getopt is now part of the C library, so if you don't know what + "Keep this file name-space clean" means, talk to drepper@gnu.org + before changing it! + Copyright (C) 1987,88,89,90,91,92,93,94,95,96,98,99,2000,2001 + 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 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software Foundation, + Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + +/* This tells Alpha OSF/1 not to define a getopt prototype in . + Ditto for AIX 3.2 and . */ +#ifndef _NO_PROTO +# define _NO_PROTO +#endif + +#ifdef HAVE_CONFIG_H +# include +#endif + +#if !defined __STDC__ || !__STDC__ +/* This is a separate conditional since some stdc systems + reject `defined (const)'. */ +# ifndef const +# define const +# endif +#endif + +#include + +/* Comment out all this code if we are using the GNU C Library, and are not + actually compiling the library itself. This code is part of the GNU C + Library, but also included in many other GNU distributions. Compiling + and linking in this code is a waste when using the GNU C library + (especially if it is a shared library). Rather than having every GNU + program understand `configure --with-gnu-libc' and omit the object files, + it is simpler to just do this in the source for each such file. */ + +#define GETOPT_INTERFACE_VERSION 2 +#if !defined _LIBC && defined __GLIBC__ && __GLIBC__ >= 2 +# include +# if _GNU_GETOPT_INTERFACE_VERSION == GETOPT_INTERFACE_VERSION +# define ELIDE_CODE +# endif +#endif + +#ifndef ELIDE_CODE + + +/* This needs to come after some library #include + to get __GNU_LIBRARY__ defined. */ +#ifdef __GNU_LIBRARY__ +/* Don't include stdlib.h for non-GNU C libraries because some of them + contain conflicting prototypes for getopt. */ +# include +# include +#endif /* GNU C library. */ + +#ifdef VMS +# include +# if HAVE_STRING_H - 0 +# include +# endif +#endif + +#ifndef _ +/* This is for other GNU distributions with internationalized messages. */ +# 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/src/apps/bin/diffutils-2.8.1/lib/getopt.h b/src/apps/bin/diffutils-2.8.1/lib/getopt.h new file mode 100644 index 0000000000..18e102696c --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/lib/getopt.h @@ -0,0 +1,179 @@ +/* Declarations for getopt. + Copyright (C) 1989-1994, 1996-1999, 2001 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 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software Foundation, + Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + +#ifndef _GETOPT_H + +#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/src/apps/bin/diffutils-2.8.1/lib/getopt1.c b/src/apps/bin/diffutils-2.8.1/lib/getopt1.c new file mode 100644 index 0000000000..62c55cfd62 --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/lib/getopt1.c @@ -0,0 +1,187 @@ +/* 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. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software Foundation, + Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + +#ifdef HAVE_CONFIG_H +#include +#endif + +#include "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/src/apps/bin/diffutils-2.8.1/lib/gettext.h b/src/apps/bin/diffutils-2.8.1/lib/gettext.h new file mode 100644 index 0000000000..ea67f30815 --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/lib/gettext.h @@ -0,0 +1,59 @@ +/* Convenience header for conditional use of GNU . + Copyright (C) 1995-1998, 2000-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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, + USA. */ + +#ifndef _LIBGETTEXT_H +#define _LIBGETTEXT_H 1 + +/* NLS can be disabled through the configure --disable-nls option. */ +#if ENABLE_NLS + +/* Get declarations of GNU message catalog functions. */ +# include + +#else + +/* 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/src/apps/bin/diffutils-2.8.1/lib/hard-locale.c b/src/apps/bin/diffutils-2.8.1/lib/hard-locale.c new file mode 100644 index 0000000000..0070542e09 --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/lib/hard-locale.c @@ -0,0 +1,79 @@ +/* hard-locale.c -- Determine whether a locale is hard. + + Copyright (C) 1997, 1998, 1999, 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. */ + +#if HAVE_CONFIG_H +# include +#endif + +#if HAVE_LOCALE_H +# include +#endif + +#if HAVE_STDLIB_H +# include +#endif + +#if HAVE_STRING_H +# include +#endif + +#include "hard-locale.h" + +/* Return nonzero if the current CATEGORY locale is hard, i.e. if you + can't get away with assuming traditional C or POSIX behavior. */ +int +hard_locale (int category) +{ +#if ! HAVE_SETLOCALE + return 0; +#else + + int hard = 1; + char const *p = setlocale (category, 0); + + if (p) + { +# if defined __GLIBC__ && 2 <= __GLIBC__ + if (strcmp (p, "C") == 0 || strcmp (p, "POSIX") == 0) + hard = 0; +# else + char *locale = malloc (strlen (p) + 1); + if (locale) + { + strcpy (locale, p); + + /* Temporarily set the locale to the "C" and "POSIX" locales + to find their names, so that we can determine whether one + or the other is the caller's locale. */ + if (((p = setlocale (category, "C")) + && strcmp (p, locale) == 0) + || ((p = setlocale (category, "POSIX")) + && strcmp (p, locale) == 0)) + hard = 0; + + /* Restore the caller's locale. */ + setlocale (category, locale); + free (locale); + } +# endif + } + + return hard; + +#endif +} diff --git a/src/apps/bin/diffutils-2.8.1/lib/hard-locale.h b/src/apps/bin/diffutils-2.8.1/lib/hard-locale.h new file mode 100644 index 0000000000..5b054d9a5c --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/lib/hard-locale.h @@ -0,0 +1,18 @@ +#ifndef HARD_LOCALE_H_ +# define HARD_LOCALE_H_ 1 + +# if HAVE_CONFIG_H +# include +# endif + +# ifndef PARAMS +# if defined PROTOTYPES || (defined __STDC__ && __STDC__) +# define PARAMS(Args) Args +# else +# define PARAMS(Args) () +# endif +# endif + +int hard_locale PARAMS ((int)); + +#endif /* HARD_LOCALE_H_ */ diff --git a/src/apps/bin/diffutils-2.8.1/lib/imaxtostr.c b/src/apps/bin/diffutils-2.8.1/lib/imaxtostr.c new file mode 100644 index 0000000000..5e87ad526f --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/lib/imaxtostr.c @@ -0,0 +1,3 @@ +#define inttostr imaxtostr +#define inttype intmax_t +#include "inttostr.c" diff --git a/src/apps/bin/diffutils-2.8.1/lib/inttostr.c b/src/apps/bin/diffutils-2.8.1/lib/inttostr.c new file mode 100644 index 0000000000..78a48af84c --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/lib/inttostr.c @@ -0,0 +1,49 @@ +/* inttostr.c -- convert integers to printable strings + + Copyright (C) 2001 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software Foundation, + Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + +/* 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/src/apps/bin/diffutils-2.8.1/lib/inttostr.h b/src/apps/bin/diffutils-2.8.1/lib/inttostr.h new file mode 100644 index 0000000000..3d7ece2876 --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/lib/inttostr.h @@ -0,0 +1,60 @@ +/* inttostr.h -- convert integers to printable strings + + Copyright (C) 2001 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software Foundation, + Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + +/* 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 + +#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/src/apps/bin/diffutils-2.8.1/lib/malloc.c b/src/apps/bin/diffutils-2.8.1/lib/malloc.c new file mode 100644 index 0000000000..5e7674bd47 --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/lib/malloc.c @@ -0,0 +1,38 @@ +/* Work around bug on some systems where malloc (0) fails. + Copyright (C) 1997, 1998 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. */ + +/* 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/src/apps/bin/diffutils-2.8.1/lib/memchr.c b/src/apps/bin/diffutils-2.8.1/lib/memchr.c new file mode 100644 index 0000000000..4b28e481f8 --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/lib/memchr.c @@ -0,0 +1,216 @@ +/* Copyright (C) 1991,93,96,97,99,2000 Free Software Foundation, Inc. + Based on strlen implementation by Torbjorn Granlund (tege@sics.se), + with help from Dan Sahlin (dan@sics.se) and + commentary by Jim Blandy (jimb@ai.mit.edu); + adaptation to memchr suggested by Dick Karpinski (dick@cca.ucsf.edu), + and implemented by Roland McGrath (roland@ai.mit.edu). + +NOTE: The canonical source of this file is maintained with the GNU C Library. +Bugs can be reported to bug-glibc@prep.ai.mit.edu. + +This program is free software; you can redistribute it and/or modify it +under the terms of the GNU General Public License as published by the +Free Software Foundation; either version 2, or (at your option) any +later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, +USA. */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#undef __ptr_t +#if defined (__cplusplus) || (defined (__STDC__) && __STDC__) +# define __ptr_t void * +#else /* Not C++ or ANSI C. */ +# define __ptr_t char * +#endif /* C++ or ANSI C. */ + +#if defined _LIBC +# include +# include +#else +# define reg_char char +#endif + +#if HAVE_STDLIB_H || defined _LIBC +# include +#endif + +#if HAVE_LIMITS_H || defined _LIBC +# include +#endif + +#define LONG_MAX_32_BITS 2147483647 + +#ifndef LONG_MAX +# define LONG_MAX LONG_MAX_32_BITS +#endif + +#include +#if HAVE_BP_SYM_H || defined _LIBC +# include +#else +# define BP_SYM(sym) sym +#endif + +#undef memchr +#undef __memchr + +/* Search no more than N bytes of S for C. */ +__ptr_t +__memchr (s, c_in, n) + const __ptr_t s; + int c_in; + size_t n; +{ + const unsigned char *char_ptr; + const unsigned long int *longword_ptr; + unsigned long int longword, magic_bits, charmask; + unsigned reg_char c; + + c = (unsigned char) c_in; + + /* Handle the first few characters by reading one character at a time. + Do this until CHAR_PTR is aligned on a longword boundary. */ + for (char_ptr = (const unsigned char *) s; + n > 0 && ((unsigned long int) char_ptr + & (sizeof (longword) - 1)) != 0; + --n, ++char_ptr) + if (*char_ptr == c) + return (__ptr_t) char_ptr; + + /* All these elucidatory comments refer to 4-byte longwords, + but the theory applies equally well to 8-byte longwords. */ + + longword_ptr = (unsigned long int *) char_ptr; + + /* Bits 31, 24, 16, and 8 of this number are zero. Call these bits + the "holes." Note that there is a hole just to the left of + each byte, with an extra at the end: + + bits: 01111110 11111110 11111110 11111111 + bytes: AAAAAAAA BBBBBBBB CCCCCCCC DDDDDDDD + + The 1-bits make sure that carries propagate to the next 0-bit. + The 0-bits provide holes for carries to fall into. */ + + if (sizeof (longword) != 4 && sizeof (longword) != 8) + abort (); + +#if LONG_MAX <= LONG_MAX_32_BITS + magic_bits = 0x7efefeff; +#else + magic_bits = ((unsigned long int) 0x7efefefe << 32) | 0xfefefeff; +#endif + + /* Set up a longword, each of whose bytes is C. */ + charmask = c | (c << 8); + charmask |= charmask << 16; +#if LONG_MAX > LONG_MAX_32_BITS + charmask |= charmask << 32; +#endif + + /* Instead of the traditional loop which tests each character, + we will test a longword at a time. The tricky part is testing + if *any of the four* bytes in the longword in question are zero. */ + while (n >= sizeof (longword)) + { + /* We tentatively exit the loop if adding MAGIC_BITS to + LONGWORD fails to change any of the hole bits of LONGWORD. + + 1) Is this safe? Will it catch all the zero bytes? + Suppose there is a byte with all zeros. Any carry bits + propagating from its left will fall into the hole at its + least significant bit and stop. Since there will be no + carry from its most significant bit, the LSB of the + byte to the left will be unchanged, and the zero will be + detected. + + 2) Is this worthwhile? Will it ignore everything except + zero bytes? Suppose every byte of LONGWORD has a bit set + somewhere. There will be a carry into bit 8. If bit 8 + is set, this will carry into bit 16. If bit 8 is clear, + one of bits 9-15 must be set, so there will be a carry + into bit 16. Similarly, there will be a carry into bit + 24. If one of bits 24-30 is set, there will be a carry + into bit 31, so all of the hole bits will be changed. + + The one misfire occurs when bits 24-30 are clear and bit + 31 is set; in this case, the hole at bit 31 is not + changed. If we had access to the processor carry flag, + we could close this loophole by putting the fourth hole + at bit 32! + + So it ignores everything except 128's, when they're aligned + properly. + + 3) But wait! Aren't we looking for C, not zero? + Good point. So what we do is XOR LONGWORD with a longword, + each of whose bytes is C. This turns each byte that is C + into a zero. */ + + longword = *longword_ptr++ ^ charmask; + + /* Add MAGIC_BITS to LONGWORD. */ + if ((((longword + magic_bits) + + /* Set those bits that were unchanged by the addition. */ + ^ ~longword) + + /* Look at only the hole bits. If any of the hole bits + are unchanged, most likely one of the bytes was a + zero. */ + & ~magic_bits) != 0) + { + /* Which of the bytes was C? If none of them were, it was + a misfire; continue the search. */ + + const unsigned char *cp = (const unsigned char *) (longword_ptr - 1); + + if (cp[0] == c) + return (__ptr_t) cp; + if (cp[1] == c) + return (__ptr_t) &cp[1]; + if (cp[2] == c) + return (__ptr_t) &cp[2]; + if (cp[3] == c) + return (__ptr_t) &cp[3]; +#if LONG_MAX > 2147483647 + if (cp[4] == c) + return (__ptr_t) &cp[4]; + if (cp[5] == c) + return (__ptr_t) &cp[5]; + if (cp[6] == c) + return (__ptr_t) &cp[6]; + if (cp[7] == c) + return (__ptr_t) &cp[7]; +#endif + } + + n -= sizeof (longword); + } + + char_ptr = (const unsigned char *) longword_ptr; + + while (n-- > 0) + { + if (*char_ptr == c) + return (__ptr_t) char_ptr; + else + ++char_ptr; + } + + return 0; +} +#ifdef weak_alias +weak_alias (__memchr, BP_SYM (memchr)) +#endif diff --git a/src/apps/bin/diffutils-2.8.1/lib/mkstemp.c b/src/apps/bin/diffutils-2.8.1/lib/mkstemp.c new file mode 100644 index 0000000000..b82ae617f6 --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/lib/mkstemp.c @@ -0,0 +1,42 @@ +/* Copyright (C) 1998, 1999, 2001 Free Software Foundation, Inc. + This file is derived from the one in 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 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. */ + +#include + +/* Disable the definition of mkstemp to rpl_mkstemp (from config.h) in this + file. Otherwise, we'd get conflicting prototypes for rpl_mkstemp on + most systems. */ +#undef mkstemp + +#include +#include + +#ifndef __GT_FILE +# define __GT_FILE 0 +#endif + +int __gen_tempname (); + +/* Generate a unique temporary file name from TEMPLATE. + The last six characters of TEMPLATE must be "XXXXXX"; + they are replaced with a string that makes the filename unique. + Then open the file and return a fd. */ +int +rpl_mkstemp (char *template) +{ + return __gen_tempname (template, __GT_FILE); +} diff --git a/src/apps/bin/diffutils-2.8.1/lib/offtostr.c b/src/apps/bin/diffutils-2.8.1/lib/offtostr.c new file mode 100644 index 0000000000..45196e28a4 --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/lib/offtostr.c @@ -0,0 +1,3 @@ +#define inttostr offtostr +#define inttype off_t +#include "inttostr.c" diff --git a/src/apps/bin/diffutils-2.8.1/lib/posixver.c b/src/apps/bin/diffutils-2.8.1/lib/posixver.c new file mode 100644 index 0000000000..c45ac315bc --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/lib/posixver.c @@ -0,0 +1,58 @@ +/* Which POSIX version to conform to, for utilities. + + Copyright (C) 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, + USA. */ + +/* Written by Paul Eggert. */ + +#if HAVE_CONFIG_H +# include +#endif + +#include + +#include +#if !HAVE_DECL_GETENV && !defined getenv +char *getenv (); +#endif + +#if HAVE_UNISTD_H +# include +#endif +#ifndef _POSIX2_VERSION +# define _POSIX2_VERSION 0 +#endif + +/* The POSIX version that utilities should conform to. The default is + specified by the system. */ + +int +posix2_version (void) +{ + long int v = _POSIX2_VERSION; + char const *s = getenv ("_POSIX2_VERSION"); + + if (s && *s) + { + char *e; + long int i = strtol (s, &e, 10); + if (! *e) + v = i; + } + + return v < INT_MIN ? INT_MIN : v < INT_MAX ? v : INT_MAX; +} diff --git a/src/apps/bin/diffutils-2.8.1/lib/posixver.h b/src/apps/bin/diffutils-2.8.1/lib/posixver.h new file mode 100644 index 0000000000..b64f6a2ea1 --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/lib/posixver.h @@ -0,0 +1 @@ +int posix2_version (void); diff --git a/src/apps/bin/diffutils-2.8.1/lib/prepargs.c b/src/apps/bin/diffutils-2.8.1/lib/prepargs.c new file mode 100644 index 0000000000..f5735acdad --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/lib/prepargs.c @@ -0,0 +1,93 @@ +/* Parse arguments from a string and prepend them to an argv. + + Copyright (C) 1999, 2000, 2001, 2002 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + 02111-1307, USA. */ + +/* Written by Paul Eggert . */ + +#ifdef HAVE_CONFIG_H +# include +#endif +#include "prepargs.h" +#include +#include +#include + +#include + +/* IN_CTYPE_DOMAIN (C) is nonzero if the unsigned char C can safely be given + as an argument to macros like "isspace". */ +#ifdef STDC_HEADERS +# define IN_CTYPE_DOMAIN(c) 1 +#else +# define IN_CTYPE_DOMAIN(c) ((c) <= 0177) +#endif + +#define ISSPACE(c) (IN_CTYPE_DOMAIN (c) && isspace (c)) + +/* Find the white-space-separated options specified by OPTIONS, and + using BUF to store copies of these options, set ARGV[0], ARGV[1], + etc. to the option copies. Return the number N of options found. + Do not set ARGV[N]. If ARGV is zero, do not store ARGV[0] etc. + Backslash can be used to escape whitespace (and backslashes). */ +static int +prepend_args (char const *options, char *buf, char **argv) +{ + char const *o = options; + char *b = buf; + int n = 0; + + for (;;) + { + while (ISSPACE ((unsigned char) *o)) + o++; + if (!*o) + return n; + if (argv) + argv[n] = b; + n++; + + do + if ((*b++ = *o++) == '\\' && *o) + b[-1] = *o++; + while (*o && ! ISSPACE ((unsigned char) *o)); + + *b++ = '\0'; + } +} + +/* Prepend the whitespace-separated options in OPTIONS to the argument + vector of a main program with argument count *PARGC and argument + vector *PARGV. */ +void +prepend_default_options (char const *options, int *pargc, char ***pargv) +{ + if (options) + { + char *buf = xmalloc (strlen (options) + 1); + int prepended = prepend_args (options, buf, (char **) 0); + int argc = *pargc; + char * const *argv = *pargv; + char **pp = (char **) xmalloc ((prepended + argc + 1) * sizeof *pp); + *pargc = prepended + argc; + *pargv = pp; + *pp++ = *argv++; + pp += prepend_args (options, buf, pp); + while ((*pp++ = *argv++)) + continue; + } +} diff --git a/src/apps/bin/diffutils-2.8.1/lib/prepargs.h b/src/apps/bin/diffutils-2.8.1/lib/prepargs.h new file mode 100644 index 0000000000..ce93ea870c --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/lib/prepargs.h @@ -0,0 +1,3 @@ +/* Parse arguments from a string and prepend them to an argv. */ + +void prepend_default_options (char const *, int *, char ***); diff --git a/src/apps/bin/diffutils-2.8.1/lib/quotesys.c b/src/apps/bin/diffutils-2.8.1/lib/quotesys.c new file mode 100644 index 0000000000..528f382272 --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/lib/quotesys.c @@ -0,0 +1,125 @@ +/* Shell command argument quoting. + Copyright (C) 1994, 1995, 1997 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2, 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; see the file COPYING. + If not, write to the Free Software Foundation, + 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + +/* Written by Paul Eggert */ + +#if HAVE_CONFIG_H +# include +#endif + +#include +#include + +/* Place into QUOTED a quoted version of ARG suitable for `system'. + Return the length of the resulting string (which is not null-terminated). + If QUOTED is null, return the length without any side effects. */ + +size_t +quote_system_arg (quoted, arg) + char *quoted; + char const *arg; +{ + char const *a; + size_t len = 0; + + /* Scan ARG, copying it to QUOTED if QUOTED is not null, + looking for shell metacharacters. */ + + for (a = arg; ; a++) + { + char c = *a; + switch (c) + { + case 0: + /* ARG has no shell metacharacters. */ + return len; + + case '=': + if (*arg == '-') + break; + /* Fall through. */ + case '\t': case '\n': case ' ': + case '!': case '"': case '#': case '$': case '%': case '&': case '\'': + case '(': case ')': case '*': case ';': + case '<': case '>': case '?': case '[': case '\\': + case '^': case '`': case '|': case '~': + { + /* ARG has a shell metacharacter. + Start over, quoting it this time. */ + + len = 0; + c = *arg++; + + /* If ARG is an option, quote just its argument. + This is not necessary, but it looks nicer. */ + if (c == '-' && arg < a) + { + c = *arg++; + + if (quoted) + { + quoted[len] = '-'; + quoted[len + 1] = c; + } + len += 2; + + if (c == '-') + while (arg < a) + { + c = *arg++; + if (quoted) + quoted[len] = c; + len++; + if (c == '=') + break; + } + c = *arg++; + } + + if (quoted) + quoted[len] = '\''; + len++; + + for (; c; c = *arg++) + { + if (c == '\'') + { + if (quoted) + { + quoted[len] = '\''; + quoted[len + 1] = '\\'; + quoted[len + 2] = '\''; + } + len += 3; + } + if (quoted) + quoted[len] = c; + len++; + } + + if (quoted) + quoted[len] = '\''; + return len + 1; + } + } + + if (quoted) + quoted[len] = c; + len++; + } +} diff --git a/src/apps/bin/diffutils-2.8.1/lib/quotesys.h b/src/apps/bin/diffutils-2.8.1/lib/quotesys.h new file mode 100644 index 0000000000..0d0d825709 --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/lib/quotesys.h @@ -0,0 +1,9 @@ +/* quotesys.h -- declarations for quoting system arguments */ + +#if defined __STDC__ || __GNUC__ +# define __QUOTESYS_P(args) args +#else +# define __QUOTESYS_P(args) () +#endif + +size_t quote_system_arg __QUOTESYS_P ((char *, char const *)); diff --git a/src/apps/bin/diffutils-2.8.1/lib/realloc.c b/src/apps/bin/diffutils-2.8.1/lib/realloc.c new file mode 100644 index 0000000000..d0d3e4ab07 --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/lib/realloc.c @@ -0,0 +1,44 @@ +/* Work around bug on some systems where realloc (NULL, 0) fails. + Copyright (C) 1997 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2, 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. */ + +/* 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/src/apps/bin/diffutils-2.8.1/lib/regex.c b/src/apps/bin/diffutils-2.8.1/lib/regex.c new file mode 100644 index 0000000000..6daec76fbd --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/lib/regex.c @@ -0,0 +1,8431 @@ +/* Extended regular expression matching and search library, + version 0.12. + (Implements POSIX draft P1003.2/D11.2, except for some of the + internationalization features.) + Copyright (C) 1993-1999, 2000, 2001 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software Foundation, + Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + +/* AIX requires this to be the first thing in the file. */ +#if defined _AIX && !defined REGEX_MALLOC + #pragma alloca +#endif + +#undef _GNU_SOURCE +#define _GNU_SOURCE + +#ifdef HAVE_CONFIG_H +# include +#endif + +#ifndef PARAMS +# if defined __GNUC__ || (defined __STDC__ && __STDC__) +# define PARAMS(args) args +# else +# define PARAMS(args) () +# endif /* GCC. */ +#endif /* Not PARAMS. */ + +#ifndef INSIDE_RECURSION + +# if defined STDC_HEADERS && !defined emacs +# include +# else +/* We need this for `regex.h', and perhaps for the Emacs include files. */ +# include +# endif + +# define WIDE_CHAR_SUPPORT (HAVE_WCTYPE_H && HAVE_WCHAR_H && HAVE_BTOWC) + +/* For platform which support the ISO C amendement 1 functionality we + support user defined character classes. */ +# if defined _LIBC || WIDE_CHAR_SUPPORT +/* Solaris 2.5 has a bug: must be included before . */ +# include +# include +# endif + +# ifdef _LIBC +/* We have to keep the namespace clean. */ +# define regfree(preg) __regfree (preg) +# define regexec(pr, st, nm, pm, ef) __regexec (pr, st, nm, pm, ef) +# define regcomp(preg, pattern, cflags) __regcomp (preg, pattern, cflags) +# define regerror(errcode, preg, errbuf, errbuf_size) \ + __regerror(errcode, preg, errbuf, errbuf_size) +# define re_set_registers(bu, re, nu, st, en) \ + __re_set_registers (bu, re, nu, st, en) +# define re_match_2(bufp, string1, size1, string2, size2, pos, regs, stop) \ + __re_match_2 (bufp, string1, size1, string2, size2, pos, regs, stop) +# define re_match(bufp, string, size, pos, regs) \ + __re_match (bufp, string, size, pos, regs) +# define re_search(bufp, string, size, startpos, range, regs) \ + __re_search (bufp, string, size, startpos, range, regs) +# define re_compile_pattern(pattern, length, bufp) \ + __re_compile_pattern (pattern, length, bufp) +# define re_set_syntax(syntax) __re_set_syntax (syntax) +# define re_search_2(bufp, st1, s1, st2, s2, startpos, range, regs, stop) \ + __re_search_2 (bufp, st1, s1, st2, s2, startpos, range, regs, stop) +# define re_compile_fastmap(bufp) __re_compile_fastmap (bufp) + +# define btowc __btowc +# define iswctype __iswctype +# define mbrtowc __mbrtowc +# define wcslen __wcslen +# define wcscoll __wcscoll +# define wcrtomb __wcrtomb + +/* We are also using some library internals. */ +# include +# include +# include +# include +# endif + +/* This is for other GNU distributions with internationalized messages. */ +# if (HAVE_LIBINTL_H && ENABLE_NLS) || defined _LIBC +# include +# ifdef _LIBC +# undef gettext +# define gettext(msgid) __dcgettext ("libc", msgid, LC_MESSAGES) +# endif +# else +# define gettext(msgid) (msgid) +# endif + +# ifndef gettext_noop +/* This define is so xgettext can find the internationalizable + strings. */ +# define gettext_noop(String) String +# endif + +/* Support for bounded pointers. */ +# if !defined _LIBC && !defined __BOUNDED_POINTERS__ +# define __bounded /* nothing */ +# define __unbounded /* nothing */ +# define __ptrvalue /* nothing */ +# endif + +/* The `emacs' switch turns on certain matching commands + that make sense only in Emacs. */ +# ifdef emacs + +# include "lisp.h" +# include "buffer.h" +# include "syntax.h" + +# else /* not emacs */ + +/* If we are not linking with Emacs proper, + we can't use the relocating allocator + even if config.h says that we can. */ +# undef REL_ALLOC + +# if defined STDC_HEADERS || defined _LIBC +# include +# else +char *malloc (); +char *realloc (); +# endif + +/* When used in Emacs's lib-src, we need to get bzero and bcopy somehow. + If nothing else has been done, use the method below. */ +# ifdef INHIBIT_STRING_HEADER +# if !(defined HAVE_BZERO && defined HAVE_BCOPY) +# if !defined bzero && !defined bcopy +# undef INHIBIT_STRING_HEADER +# endif +# endif +# endif + +/* This is the normal way of making sure we have a bcopy and a bzero. + This is used in most programs--a few other programs avoid this + by defining INHIBIT_STRING_HEADER. */ +# ifndef INHIBIT_STRING_HEADER +# if defined HAVE_STRING_H || defined STDC_HEADERS || defined _LIBC +# include +# ifndef bzero +# ifndef _LIBC +# define bzero(s, n) (memset (s, '\0', n), (s)) +# else +# define bzero(s, n) __bzero (s, n) +# endif +# endif +# else +# include +# ifndef memcmp +# define memcmp(s1, s2, n) bcmp (s1, s2, n) +# endif +# ifndef memcpy +# define memcpy(d, s, n) (bcopy (s, d, n), (d)) +# endif +# endif +# endif + +/* Define the syntax stuff for \<, \>, etc. */ + +/* This must be nonzero for the wordchar and notwordchar pattern + commands in re_match_2. */ +# ifndef Sword +# define Sword 1 +# endif + +# ifdef SWITCH_ENUM_BUG +# define SWITCH_ENUM_CAST(x) ((int)(x)) +# else +# define SWITCH_ENUM_CAST(x) (x) +# endif + +# endif /* not emacs */ + +# if defined _LIBC || HAVE_LIMITS_H +# include +# endif + +# ifndef MB_LEN_MAX +# define MB_LEN_MAX 1 +# endif + +/* Get the interface, including the syntax bits. */ +# include + +/* isalpha etc. are used for the character classes. */ +# include + +/* Jim Meyering writes: + + "... Some ctype macros are valid only for character codes that + isascii says are ASCII (SGI's IRIX-4.0.5 is one such system --when + using /bin/cc or gcc but without giving an ansi option). So, all + ctype uses should be through macros like ISPRINT... If + STDC_HEADERS is defined, then autoconf has verified that the ctype + macros don't need to be guarded with references to isascii. ... + Defining isascii to 1 should let any compiler worth its salt + eliminate the && through constant folding." + Solaris defines some of these symbols so we must undefine them first. */ + +# if defined STDC_HEADERS || (!defined isascii && !defined HAVE_ISASCII) +# define IN_CTYPE_DOMAIN(c) 1 +# else +# define IN_CTYPE_DOMAIN(c) isascii(c) +# endif + +# ifdef isblank +# define ISBLANK(c) (IN_CTYPE_DOMAIN (c) && isblank (c)) +# else +# define ISBLANK(c) ((c) == ' ' || (c) == '\t') +# endif +# ifdef isgraph +# define ISGRAPH(c) (IN_CTYPE_DOMAIN (c) && isgraph (c)) +# else +# define ISGRAPH(c) (IN_CTYPE_DOMAIN (c) && isprint (c) && !isspace (c)) +# endif + +# undef ISPRINT +# define ISPRINT(c) (IN_CTYPE_DOMAIN (c) && isprint (c)) +# define ISDIGIT(c) (IN_CTYPE_DOMAIN (c) && isdigit (c)) +# define ISALNUM(c) (IN_CTYPE_DOMAIN (c) && isalnum (c)) +# define ISALPHA(c) (IN_CTYPE_DOMAIN (c) && isalpha (c)) +# define ISCNTRL(c) (IN_CTYPE_DOMAIN (c) && iscntrl (c)) +# define ISLOWER(c) (IN_CTYPE_DOMAIN (c) && islower (c)) +# define ISPUNCT(c) (IN_CTYPE_DOMAIN (c) && ispunct (c)) +# define ISSPACE(c) (IN_CTYPE_DOMAIN (c) && isspace (c)) +# define ISUPPER(c) (IN_CTYPE_DOMAIN (c) && isupper (c)) +# define ISXDIGIT(c) (IN_CTYPE_DOMAIN (c) && isxdigit (c)) + +# ifdef _tolower +# define TOLOWER(c) _tolower(c) +# else +# define TOLOWER(c) tolower(c) +# endif + +# ifndef NULL +# define NULL (void *)0 +# endif + +/* We remove any previous definition of `SIGN_EXTEND_CHAR', + since ours (we hope) works properly with all combinations of + machines, compilers, `char' and `unsigned char' argument types. + (Per Bothner suggested the basic approach.) */ +# undef SIGN_EXTEND_CHAR +# if __STDC__ +# define SIGN_EXTEND_CHAR(c) ((signed char) (c)) +# else /* not __STDC__ */ +/* As in Harbison and Steele. */ +# define SIGN_EXTEND_CHAR(c) ((((unsigned char) (c)) ^ 128) - 128) +# endif + +# ifndef emacs +/* How many characters in the character set. */ +# define CHAR_SET_SIZE 256 + +# ifdef SYNTAX_TABLE + +extern char *re_syntax_table; + +# else /* not SYNTAX_TABLE */ + +static char re_syntax_table[CHAR_SET_SIZE]; + +static void init_syntax_once PARAMS ((void)); + +static void +init_syntax_once () +{ + register int c; + static int done = 0; + + if (done) + return; + bzero (re_syntax_table, sizeof re_syntax_table); + + for (c = 0; c < CHAR_SET_SIZE; ++c) + if (ISALNUM (c)) + re_syntax_table[c] = Sword; + + re_syntax_table['_'] = Sword; + + done = 1; +} + +# endif /* not SYNTAX_TABLE */ + +# define SYNTAX(c) re_syntax_table[(unsigned char) (c)] + +# endif /* emacs */ + +/* Should we use malloc or alloca? If REGEX_MALLOC is not defined, we + use `alloca' instead of `malloc'. This is because using malloc in + re_search* or re_match* could cause memory leaks when C-g is used in + Emacs; also, malloc is slower and causes storage fragmentation. On + the other hand, malloc is more portable, and easier to debug. + + Because we sometimes use alloca, some routines have to be macros, + not functions -- `alloca'-allocated space disappears at the end of the + function it is called in. */ + +# ifdef REGEX_MALLOC + +# define REGEX_ALLOCATE malloc +# define REGEX_REALLOCATE(source, osize, nsize) realloc (source, nsize) +# define REGEX_FREE free + +# else /* not REGEX_MALLOC */ + +/* Emacs already defines alloca, sometimes. */ +# ifndef alloca + +/* Make alloca work the best possible way. */ +# ifdef __GNUC__ +# define alloca __builtin_alloca +# else /* not __GNUC__ */ +# if HAVE_ALLOCA_H +# include +# endif /* HAVE_ALLOCA_H */ +# endif /* not __GNUC__ */ + +# endif /* not alloca */ + +# define REGEX_ALLOCATE alloca + +/* Assumes a `char *destination' variable. */ +# define REGEX_REALLOCATE(source, osize, nsize) \ + (destination = (char *) alloca (nsize), \ + memcpy (destination, source, osize)) + +/* No need to do anything to free, after alloca. */ +# define REGEX_FREE(arg) ((void)0) /* Do nothing! But inhibit gcc warning. */ + +# endif /* not REGEX_MALLOC */ + +/* Define how to allocate the failure stack. */ + +# if defined REL_ALLOC && defined REGEX_MALLOC + +# define REGEX_ALLOCATE_STACK(size) \ + r_alloc (&failure_stack_ptr, (size)) +# define REGEX_REALLOCATE_STACK(source, osize, nsize) \ + r_re_alloc (&failure_stack_ptr, (nsize)) +# define REGEX_FREE_STACK(ptr) \ + r_alloc_free (&failure_stack_ptr) + +# else /* not using relocating allocator */ + +# ifdef REGEX_MALLOC + +# define REGEX_ALLOCATE_STACK malloc +# define REGEX_REALLOCATE_STACK(source, osize, nsize) realloc (source, nsize) +# define REGEX_FREE_STACK free + +# else /* not REGEX_MALLOC */ + +# define REGEX_ALLOCATE_STACK alloca + +# define REGEX_REALLOCATE_STACK(source, osize, nsize) \ + REGEX_REALLOCATE (source, osize, nsize) +/* No need to explicitly free anything. */ +# define REGEX_FREE_STACK(arg) + +# endif /* not REGEX_MALLOC */ +# endif /* not using relocating allocator */ + + +/* True if `size1' is non-NULL and PTR is pointing anywhere inside + `string1' or just past its end. This works if PTR is NULL, which is + a good thing. */ +# define FIRST_STRING_P(ptr) \ + (size1 && string1 <= (ptr) && (ptr) <= string1 + size1) + +/* (Re)Allocate N items of type T using malloc, or fail. */ +# define TALLOC(n, t) ((t *) malloc ((n) * sizeof (t))) +# define RETALLOC(addr, n, t) ((addr) = (t *) realloc (addr, (n) * sizeof (t))) +# define RETALLOC_IF(addr, n, t) \ + if (addr) RETALLOC((addr), (n), t); else (addr) = TALLOC ((n), t) +# define REGEX_TALLOC(n, t) ((t *) REGEX_ALLOCATE ((n) * sizeof (t))) + +# define BYTEWIDTH 8 /* In bits. */ + +# define STREQ(s1, s2) ((strcmp (s1, s2) == 0)) + +# undef MAX +# undef MIN +# define MAX(a, b) ((a) > (b) ? (a) : (b)) +# define MIN(a, b) ((a) < (b) ? (a) : (b)) + +typedef char boolean; +# define false 0 +# define true 1 + +static reg_errcode_t byte_regex_compile _RE_ARGS ((const char *pattern, size_t size, + reg_syntax_t syntax, + struct re_pattern_buffer *bufp)); + +static int byte_re_match_2_internal PARAMS ((struct re_pattern_buffer *bufp, + const char *string1, int size1, + const char *string2, int size2, + int pos, + struct re_registers *regs, + int stop)); +static int byte_re_search_2 PARAMS ((struct re_pattern_buffer *bufp, + const char *string1, int size1, + const char *string2, int size2, + int startpos, int range, + struct re_registers *regs, int stop)); +static int byte_re_compile_fastmap PARAMS ((struct re_pattern_buffer *bufp)); + +#ifdef MBS_SUPPORT +static reg_errcode_t wcs_regex_compile _RE_ARGS ((const char *pattern, size_t size, + reg_syntax_t syntax, + struct re_pattern_buffer *bufp)); + + +static int wcs_re_match_2_internal PARAMS ((struct re_pattern_buffer *bufp, + const char *cstring1, int csize1, + const char *cstring2, int csize2, + int pos, + struct re_registers *regs, + int stop, + wchar_t *string1, int size1, + wchar_t *string2, int size2, + int *mbs_offset1, int *mbs_offset2)); +static int wcs_re_search_2 PARAMS ((struct re_pattern_buffer *bufp, + const char *string1, int size1, + const char *string2, int size2, + int startpos, int range, + struct re_registers *regs, int stop)); +static int wcs_re_compile_fastmap PARAMS ((struct re_pattern_buffer *bufp)); +#endif + +/* These are the command codes that appear in compiled regular + expressions. Some opcodes are followed by argument bytes. A + command code can specify any interpretation whatsoever for its + arguments. Zero bytes may appear in the compiled regular expression. */ + +typedef enum +{ + no_op = 0, + + /* Succeed right away--no more backtracking. */ + succeed, + + /* Followed by one byte giving n, then by n literal bytes. */ + exactn, + +# ifdef MBS_SUPPORT + /* Same as exactn, but contains binary data. */ + exactn_bin, +# endif + + /* Matches any (more or less) character. */ + anychar, + + /* Matches any one char belonging to specified set. First + following byte is number of bitmap bytes. Then come bytes + for a bitmap saying which chars are in. Bits in each byte + are ordered low-bit-first. A character is in the set if its + bit is 1. A character too large to have a bit in the map is + automatically not in the set. */ + /* ifdef MBS_SUPPORT, following element is length of character + classes, length of collating symbols, length of equivalence + classes, length of character ranges, and length of characters. + Next, character class element, collating symbols elements, + equivalence class elements, range elements, and character + elements follow. + See regex_compile function. */ + charset, + + /* Same parameters as charset, but match any character that is + not one of those specified. */ + charset_not, + + /* Start remembering the text that is matched, for storing in a + register. Followed by one byte with the register number, in + the range 0 to one less than the pattern buffer's re_nsub + field. Then followed by one byte with the number of groups + inner to this one. (This last has to be part of the + start_memory only because we need it in the on_failure_jump + of re_match_2.) */ + start_memory, + + /* Stop remembering the text that is matched and store it in a + memory register. Followed by one byte with the register + number, in the range 0 to one less than `re_nsub' in the + pattern buffer, and one byte with the number of inner groups, + just like `start_memory'. (We need the number of inner + groups here because we don't have any easy way of finding the + corresponding start_memory when we're at a stop_memory.) */ + stop_memory, + + /* Match a duplicate of something remembered. Followed by one + byte containing the register number. */ + duplicate, + + /* Fail unless at beginning of line. */ + begline, + + /* Fail unless at end of line. */ + endline, + + /* Succeeds if at beginning of buffer (if emacs) or at beginning + of string to be matched (if not). */ + begbuf, + + /* Analogously, for end of buffer/string. */ + endbuf, + + /* Followed by two byte relative address to which to jump. */ + jump, + + /* Same as jump, but marks the end of an alternative. */ + jump_past_alt, + + /* Followed by two-byte relative address of place to resume at + in case of failure. */ + /* ifdef MBS_SUPPORT, the size of address is 1. */ + on_failure_jump, + + /* Like on_failure_jump, but pushes a placeholder instead of the + current string position when executed. */ + on_failure_keep_string_jump, + + /* Throw away latest failure point and then jump to following + two-byte relative address. */ + /* ifdef MBS_SUPPORT, the size of address is 1. */ + pop_failure_jump, + + /* Change to pop_failure_jump if know won't have to backtrack to + match; otherwise change to jump. This is used to jump + back to the beginning of a repeat. If what follows this jump + clearly won't match what the repeat does, such that we can be + sure that there is no use backtracking out of repetitions + already matched, then we change it to a pop_failure_jump. + Followed by two-byte address. */ + /* ifdef MBS_SUPPORT, the size of address is 1. */ + maybe_pop_jump, + + /* Jump to following two-byte address, and push a dummy failure + point. This failure point will be thrown away if an attempt + is made to use it for a failure. A `+' construct makes this + before the first repeat. Also used as an intermediary kind + of jump when compiling an alternative. */ + /* ifdef MBS_SUPPORT, the size of address is 1. */ + dummy_failure_jump, + + /* Push a dummy failure point and continue. Used at the end of + alternatives. */ + push_dummy_failure, + + /* Followed by two-byte relative address and two-byte number n. + After matching N times, jump to the address upon failure. */ + /* ifdef MBS_SUPPORT, the size of address is 1. */ + succeed_n, + + /* Followed by two-byte relative address, and two-byte number n. + Jump to the address N times, then fail. */ + /* ifdef MBS_SUPPORT, the size of address is 1. */ + jump_n, + + /* Set the following two-byte relative address to the + subsequent two-byte number. The address *includes* the two + bytes of number. */ + /* ifdef MBS_SUPPORT, the size of address is 1. */ + set_number_at, + + wordchar, /* Matches any word-constituent character. */ + notwordchar, /* Matches any char that is not a word-constituent. */ + + wordbeg, /* Succeeds if at word beginning. */ + wordend, /* Succeeds if at word end. */ + + wordbound, /* Succeeds if at a word boundary. */ + notwordbound /* Succeeds if not at a word boundary. */ + +# ifdef emacs + ,before_dot, /* Succeeds if before point. */ + at_dot, /* Succeeds if at point. */ + after_dot, /* Succeeds if after point. */ + + /* Matches any character whose syntax is specified. Followed by + a byte which contains a syntax code, e.g., Sword. */ + syntaxspec, + + /* Matches any character whose syntax is not that specified. */ + notsyntaxspec +# endif /* emacs */ +} re_opcode_t; +#endif /* not INSIDE_RECURSION */ + + +#ifdef BYTE +# define CHAR_T char +# define UCHAR_T unsigned char +# define COMPILED_BUFFER_VAR bufp->buffer +# define OFFSET_ADDRESS_SIZE 2 +# define PREFIX(name) byte_##name +# define ARG_PREFIX(name) name +# define PUT_CHAR(c) putchar (c) +#else +# ifdef WCHAR +# define CHAR_T wchar_t +# define UCHAR_T wchar_t +# define COMPILED_BUFFER_VAR wc_buffer +# define OFFSET_ADDRESS_SIZE 1 /* the size which STORE_NUMBER macro use */ +# define CHAR_CLASS_SIZE ((__alignof__(wctype_t)+sizeof(wctype_t))/sizeof(CHAR_T)+1) +# define PREFIX(name) wcs_##name +# define ARG_PREFIX(name) c##name +/* Should we use wide stream?? */ +# define PUT_CHAR(c) printf ("%C", c); +# define TRUE 1 +# define FALSE 0 +# else +# ifdef MBS_SUPPORT +# define WCHAR +# define INSIDE_RECURSION +# include "regex.c" +# undef INSIDE_RECURSION +# endif +# define BYTE +# define INSIDE_RECURSION +# include "regex.c" +# undef INSIDE_RECURSION +# endif +#endif +#include "unlocked-io.h" + +#ifdef INSIDE_RECURSION +/* Common operations on the compiled pattern. */ + +/* Store NUMBER in two contiguous bytes starting at DESTINATION. */ +/* ifdef MBS_SUPPORT, we store NUMBER in 1 element. */ + +# ifdef WCHAR +# define STORE_NUMBER(destination, number) \ + do { \ + *(destination) = (UCHAR_T)(number); \ + } while (0) +# else /* BYTE */ +# define STORE_NUMBER(destination, number) \ + do { \ + (destination)[0] = (number) & 0377; \ + (destination)[1] = (number) >> 8; \ + } while (0) +# endif /* WCHAR */ + +/* Same as STORE_NUMBER, except increment DESTINATION to + the byte after where the number is stored. Therefore, DESTINATION + must be an lvalue. */ +/* ifdef MBS_SUPPORT, we store NUMBER in 1 element. */ + +# define STORE_NUMBER_AND_INCR(destination, number) \ + do { \ + STORE_NUMBER (destination, number); \ + (destination) += OFFSET_ADDRESS_SIZE; \ + } while (0) + +/* Put into DESTINATION a number stored in two contiguous bytes starting + at SOURCE. */ +/* ifdef MBS_SUPPORT, we store NUMBER in 1 element. */ + +# ifdef WCHAR +# define EXTRACT_NUMBER(destination, source) \ + do { \ + (destination) = *(source); \ + } while (0) +# else /* BYTE */ +# define EXTRACT_NUMBER(destination, source) \ + do { \ + (destination) = *(source) & 0377; \ + (destination) += SIGN_EXTEND_CHAR (*((source) + 1)) << 8; \ + } while (0) +# endif + +# ifdef DEBUG +static void PREFIX(extract_number) _RE_ARGS ((int *dest, UCHAR_T *source)); +static void +PREFIX(extract_number) (dest, source) + int *dest; + UCHAR_T *source; +{ +# ifdef WCHAR + *dest = *source; +# else /* BYTE */ + int temp = SIGN_EXTEND_CHAR (*(source + 1)); + *dest = *source & 0377; + *dest += temp << 8; +# endif +} + +# ifndef EXTRACT_MACROS /* To debug the macros. */ +# undef EXTRACT_NUMBER +# define EXTRACT_NUMBER(dest, src) PREFIX(extract_number) (&dest, src) +# endif /* not EXTRACT_MACROS */ + +# endif /* DEBUG */ + +/* Same as EXTRACT_NUMBER, except increment SOURCE to after the number. + SOURCE must be an lvalue. */ + +# define EXTRACT_NUMBER_AND_INCR(destination, source) \ + do { \ + EXTRACT_NUMBER (destination, source); \ + (source) += OFFSET_ADDRESS_SIZE; \ + } while (0) + +# ifdef DEBUG +static void PREFIX(extract_number_and_incr) _RE_ARGS ((int *destination, + UCHAR_T **source)); +static void +PREFIX(extract_number_and_incr) (destination, source) + int *destination; + UCHAR_T **source; +{ + PREFIX(extract_number) (destination, *source); + *source += OFFSET_ADDRESS_SIZE; +} + +# ifndef EXTRACT_MACROS +# undef EXTRACT_NUMBER_AND_INCR +# define EXTRACT_NUMBER_AND_INCR(dest, src) \ + PREFIX(extract_number_and_incr) (&dest, &src) +# endif /* not EXTRACT_MACROS */ + +# endif /* DEBUG */ + + + +/* If DEBUG is defined, Regex prints many voluminous messages about what + it is doing (if the variable `debug' is nonzero). If linked with the + main program in `iregex.c', you can enter patterns and strings + interactively. And if linked with the main program in `main.c' and + the other test files, you can run the already-written tests. */ + +# ifdef DEBUG + +# ifndef DEFINED_ONCE + +/* We use standard I/O for debugging. */ +# include + +/* It is useful to test things that ``must'' be true when debugging. */ +# include + +static int debug; + +# define DEBUG_STATEMENT(e) e +# define DEBUG_PRINT1(x) if (debug) printf (x) +# define DEBUG_PRINT2(x1, x2) if (debug) printf (x1, x2) +# define DEBUG_PRINT3(x1, x2, x3) if (debug) printf (x1, x2, x3) +# define DEBUG_PRINT4(x1, x2, x3, x4) if (debug) printf (x1, x2, x3, x4) +# endif /* not DEFINED_ONCE */ + +# define DEBUG_PRINT_COMPILED_PATTERN(p, s, e) \ + if (debug) PREFIX(print_partial_compiled_pattern) (s, e) +# define DEBUG_PRINT_DOUBLE_STRING(w, s1, sz1, s2, sz2) \ + if (debug) PREFIX(print_double_string) (w, s1, sz1, s2, sz2) + + +/* Print the fastmap in human-readable form. */ + +# ifndef DEFINED_ONCE +void +print_fastmap (fastmap) + char *fastmap; +{ + unsigned was_a_range = 0; + unsigned i = 0; + + while (i < (1 << BYTEWIDTH)) + { + if (fastmap[i++]) + { + was_a_range = 0; + putchar (i - 1); + while (i < (1 << BYTEWIDTH) && fastmap[i]) + { + was_a_range = 1; + i++; + } + if (was_a_range) + { + printf ("-"); + putchar (i - 1); + } + } + } + putchar ('\n'); +} +# endif /* not DEFINED_ONCE */ + + +/* Print a compiled pattern string in human-readable form, starting at + the START pointer into it and ending just before the pointer END. */ + +void +PREFIX(print_partial_compiled_pattern) (start, end) + UCHAR_T *start; + UCHAR_T *end; +{ + int mcnt, mcnt2; + UCHAR_T *p1; + UCHAR_T *p = start; + UCHAR_T *pend = end; + + if (start == NULL) + { + printf ("(null)\n"); + return; + } + + /* Loop over pattern commands. */ + while (p < pend) + { +# ifdef _LIBC + printf ("%td:\t", p - start); +# else + printf ("%ld:\t", (long int) (p - start)); +# endif + + switch ((re_opcode_t) *p++) + { + case no_op: + printf ("/no_op"); + break; + + case exactn: + mcnt = *p++; + printf ("/exactn/%d", mcnt); + do + { + putchar ('/'); + PUT_CHAR (*p++); + } + while (--mcnt); + break; + +# ifdef MBS_SUPPORT + case exactn_bin: + mcnt = *p++; + printf ("/exactn_bin/%d", mcnt); + do + { + printf("/%lx", (long int) *p++); + } + while (--mcnt); + break; +# endif /* MBS_SUPPORT */ + + case start_memory: + mcnt = *p++; + printf ("/start_memory/%d/%ld", mcnt, (long int) *p++); + break; + + case stop_memory: + mcnt = *p++; + printf ("/stop_memory/%d/%ld", mcnt, (long int) *p++); + break; + + case duplicate: + printf ("/duplicate/%ld", (long int) *p++); + break; + + case anychar: + printf ("/anychar"); + break; + + case charset: + case charset_not: + { +# ifdef WCHAR + int i, length; + wchar_t *workp = p; + printf ("/charset [%s", + (re_opcode_t) *(workp - 1) == charset_not ? "^" : ""); + p += 5; + length = *workp++; /* the length of char_classes */ + for (i=0 ; ibuffer; + + PREFIX(print_partial_compiled_pattern) (buffer, buffer + + bufp->used / sizeof(UCHAR_T)); + printf ("%ld bytes used/%ld bytes allocated.\n", + bufp->used, bufp->allocated); + + if (bufp->fastmap_accurate && bufp->fastmap) + { + printf ("fastmap: "); + print_fastmap (bufp->fastmap); + } + +# ifdef _LIBC + printf ("re_nsub: %Zd\t", bufp->re_nsub); +# else + printf ("re_nsub: %ld\t", (long int) bufp->re_nsub); +# endif + printf ("regs_alloc: %d\t", bufp->regs_allocated); + printf ("can_be_null: %d\t", bufp->can_be_null); + printf ("newline_anchor: %d\n", bufp->newline_anchor); + printf ("no_sub: %d\t", bufp->no_sub); + printf ("not_bol: %d\t", bufp->not_bol); + printf ("not_eol: %d\t", bufp->not_eol); + printf ("syntax: %lx\n", bufp->syntax); + /* Perhaps we should print the translate table? */ +} + + +void +PREFIX(print_double_string) (where, string1, size1, string2, size2) + const CHAR_T *where; + const CHAR_T *string1; + const CHAR_T *string2; + int size1; + int size2; +{ + int this_char; + + if (where == NULL) + printf ("(null)"); + else + { + int cnt; + + if (FIRST_STRING_P (where)) + { + for (this_char = where - string1; this_char < size1; this_char++) + PUT_CHAR (string1[this_char]); + + where = string2; + } + + cnt = 0; + for (this_char = where - string2; this_char < size2; this_char++) + { + PUT_CHAR (string2[this_char]); + if (++cnt > 100) + { + fputs ("...", stdout); + break; + } + } + } +} + +# ifndef DEFINED_ONCE +void +printchar (c) + int c; +{ + putc (c, stderr); +} +# endif + +# else /* not DEBUG */ + +# ifndef DEFINED_ONCE +# undef assert +# define assert(e) + +# define DEBUG_STATEMENT(e) +# define DEBUG_PRINT1(x) +# define DEBUG_PRINT2(x1, x2) +# define DEBUG_PRINT3(x1, x2, x3) +# define DEBUG_PRINT4(x1, x2, x3, x4) +# endif /* not DEFINED_ONCE */ +# define DEBUG_PRINT_COMPILED_PATTERN(p, s, e) +# define DEBUG_PRINT_DOUBLE_STRING(w, s1, sz1, s2, sz2) + +# endif /* not DEBUG */ + + + +# ifdef WCHAR +/* This convert a multibyte string to a wide character string. + And write their correspondances to offset_buffer(see below) + and write whether each wchar_t is binary data to is_binary. + This assume invalid multibyte sequences as binary data. + We assume offset_buffer and is_binary is already allocated + enough space. */ + +static size_t convert_mbs_to_wcs (CHAR_T *dest, const unsigned char* src, + size_t len, int *offset_buffer, + char *is_binary); +static size_t +convert_mbs_to_wcs (dest, src, len, offset_buffer, is_binary) + CHAR_T *dest; + const unsigned char* src; + size_t len; /* the length of multibyte string. */ + + /* It hold correspondances between src(char string) and + dest(wchar_t string) for optimization. + e.g. src = "xxxyzz" + dest = {'X', 'Y', 'Z'} + (each "xxx", "y" and "zz" represent one multibyte character + corresponding to 'X', 'Y' and 'Z'.) + offset_buffer = {0, 0+3("xxx"), 0+3+1("y"), 0+3+1+2("zz")} + = {0, 3, 4, 6} + */ + int *offset_buffer; + char *is_binary; +{ + wchar_t *pdest = dest; + const unsigned char *psrc = src; + size_t wc_count = 0; + + mbstate_t mbs; + int i, consumed; + size_t mb_remain = len; + size_t mb_count = 0; + + /* Initialize the conversion state. */ + memset (&mbs, 0, sizeof (mbstate_t)); + + offset_buffer[0] = 0; + for( ; mb_remain > 0 ; ++wc_count, ++pdest, mb_remain -= consumed, + psrc += consumed) + { + consumed = mbrtowc (pdest, psrc, mb_remain, &mbs); + + if (consumed <= 0) + /* failed to convert. maybe src contains binary data. + So we consume 1 byte manualy. */ + { + *pdest = *psrc; + consumed = 1; + is_binary[wc_count] = TRUE; + } + else + is_binary[wc_count] = FALSE; + /* In sjis encoding, we use yen sign as escape character in + place of reverse solidus. So we convert 0x5c(yen sign in + sjis) to not 0xa5(yen sign in UCS2) but 0x5c(reverse + solidus in UCS2). */ + if (consumed == 1 && (int) *psrc == 0x5c && (int) *pdest == 0xa5) + *pdest = (wchar_t) *psrc; + + offset_buffer[wc_count + 1] = mb_count += consumed; + } + + /* Fill remain of the buffer with sentinel. */ + for (i = wc_count + 1 ; i <= len ; i++) + offset_buffer[i] = mb_count + 1; + + return wc_count; +} + +# endif /* WCHAR */ + +#else /* not INSIDE_RECURSION */ + +/* Set by `re_set_syntax' to the current regexp syntax to recognize. Can + also be assigned to arbitrarily: each pattern buffer stores its own + syntax, so it can be changed between regex compilations. */ +/* This has no initializer because initialized variables in Emacs + become read-only after dumping. */ +reg_syntax_t re_syntax_options; + + +/* Specify the precise syntax of regexps for compilation. This provides + for compatibility for various utilities which historically have + different, incompatible syntaxes. + + The argument SYNTAX is a bit mask comprised of the various bits + defined in regex.h. We return the old syntax. */ + +reg_syntax_t +re_set_syntax (syntax) + reg_syntax_t syntax; +{ + reg_syntax_t ret = re_syntax_options; + + re_syntax_options = syntax; +# ifdef DEBUG + if (syntax & RE_DEBUG) + debug = 1; + else if (debug) /* was on but now is not */ + debug = 0; +# endif /* DEBUG */ + return ret; +} +# ifdef _LIBC +weak_alias (__re_set_syntax, re_set_syntax) +# endif + +/* This table gives an error message for each of the error codes listed + in regex.h. Obviously the order here has to be same as there. + POSIX doesn't require that we do anything for REG_NOERROR, + but why not be nice? */ + +static const char re_error_msgid[] = + { +# define REG_NOERROR_IDX 0 + gettext_noop ("Success") /* REG_NOERROR */ + "\0" +# define REG_NOMATCH_IDX (REG_NOERROR_IDX + sizeof "Success") + gettext_noop ("No match") /* REG_NOMATCH */ + "\0" +# define REG_BADPAT_IDX (REG_NOMATCH_IDX + sizeof "No match") + gettext_noop ("Invalid regular expression") /* REG_BADPAT */ + "\0" +# define REG_ECOLLATE_IDX (REG_BADPAT_IDX + sizeof "Invalid regular expression") + gettext_noop ("Invalid collation character") /* REG_ECOLLATE */ + "\0" +# define REG_ECTYPE_IDX (REG_ECOLLATE_IDX + sizeof "Invalid collation character") + gettext_noop ("Invalid character class name") /* REG_ECTYPE */ + "\0" +# define REG_EESCAPE_IDX (REG_ECTYPE_IDX + sizeof "Invalid character class name") + gettext_noop ("Trailing backslash") /* REG_EESCAPE */ + "\0" +# define REG_ESUBREG_IDX (REG_EESCAPE_IDX + sizeof "Trailing backslash") + gettext_noop ("Invalid back reference") /* REG_ESUBREG */ + "\0" +# define REG_EBRACK_IDX (REG_ESUBREG_IDX + sizeof "Invalid back reference") + gettext_noop ("Unmatched [ or [^") /* REG_EBRACK */ + "\0" +# define REG_EPAREN_IDX (REG_EBRACK_IDX + sizeof "Unmatched [ or [^") + gettext_noop ("Unmatched ( or \\(") /* REG_EPAREN */ + "\0" +# define REG_EBRACE_IDX (REG_EPAREN_IDX + sizeof "Unmatched ( or \\(") + gettext_noop ("Unmatched \\{") /* REG_EBRACE */ + "\0" +# define REG_BADBR_IDX (REG_EBRACE_IDX + sizeof "Unmatched \\{") + gettext_noop ("Invalid content of \\{\\}") /* REG_BADBR */ + "\0" +# define REG_ERANGE_IDX (REG_BADBR_IDX + sizeof "Invalid content of \\{\\}") + gettext_noop ("Invalid range end") /* REG_ERANGE */ + "\0" +# define REG_ESPACE_IDX (REG_ERANGE_IDX + sizeof "Invalid range end") + gettext_noop ("Memory exhausted") /* REG_ESPACE */ + "\0" +# define REG_BADRPT_IDX (REG_ESPACE_IDX + sizeof "Memory exhausted") + gettext_noop ("Invalid preceding regular expression") /* REG_BADRPT */ + "\0" +# define REG_EEND_IDX (REG_BADRPT_IDX + sizeof "Invalid preceding regular expression") + gettext_noop ("Premature end of regular expression") /* REG_EEND */ + "\0" +# define REG_ESIZE_IDX (REG_EEND_IDX + sizeof "Premature end of regular expression") + gettext_noop ("Regular expression too big") /* REG_ESIZE */ + "\0" +# define REG_ERPAREN_IDX (REG_ESIZE_IDX + sizeof "Regular expression too big") + gettext_noop ("Unmatched ) or \\)") /* REG_ERPAREN */ + }; + +static const size_t re_error_msgid_idx[] = + { + REG_NOERROR_IDX, + REG_NOMATCH_IDX, + REG_BADPAT_IDX, + REG_ECOLLATE_IDX, + REG_ECTYPE_IDX, + REG_EESCAPE_IDX, + REG_ESUBREG_IDX, + REG_EBRACK_IDX, + REG_EPAREN_IDX, + REG_EBRACE_IDX, + REG_BADBR_IDX, + REG_ERANGE_IDX, + REG_ESPACE_IDX, + REG_BADRPT_IDX, + REG_EEND_IDX, + REG_ESIZE_IDX, + REG_ERPAREN_IDX + }; + +#endif /* INSIDE_RECURSION */ + +#ifndef DEFINED_ONCE +/* Avoiding alloca during matching, to placate r_alloc. */ + +/* Define MATCH_MAY_ALLOCATE unless we need to make sure that the + searching and matching functions should not call alloca. On some + systems, alloca is implemented in terms of malloc, and if we're + using the relocating allocator routines, then malloc could cause a + relocation, which might (if the strings being searched are in the + ralloc heap) shift the data out from underneath the regexp + routines. + + Here's another reason to avoid allocation: Emacs + processes input from X in a signal handler; processing X input may + call malloc; if input arrives while a matching routine is calling + malloc, then we're scrod. But Emacs can't just block input while + calling matching routines; then we don't notice interrupts when + they come in. So, Emacs blocks input around all regexp calls + except the matching calls, which it leaves unprotected, in the + faith that they will not malloc. */ + +/* Normally, this is fine. */ +# define MATCH_MAY_ALLOCATE + +/* When using GNU C, we are not REALLY using the C alloca, no matter + what config.h may say. So don't take precautions for it. */ +# ifdef __GNUC__ +# undef C_ALLOCA +# endif + +/* The match routines may not allocate if (1) they would do it with malloc + and (2) it's not safe for them to use malloc. + Note that if REL_ALLOC is defined, matching would not use malloc for the + failure stack, but we would still use it for the register vectors; + so REL_ALLOC should not affect this. */ +# if (defined C_ALLOCA || defined REGEX_MALLOC) && defined emacs +# undef MATCH_MAY_ALLOCATE +# endif +#endif /* not DEFINED_ONCE */ + +#ifdef INSIDE_RECURSION +/* Failure stack declarations and macros; both re_compile_fastmap and + re_match_2 use a failure stack. These have to be macros because of + REGEX_ALLOCATE_STACK. */ + + +/* Number of failure points for which to initially allocate space + when matching. If this number is exceeded, we allocate more + space, so it is not a hard limit. */ +# ifndef INIT_FAILURE_ALLOC +# define INIT_FAILURE_ALLOC 5 +# endif + +/* Roughly the maximum number of failure points on the stack. Would be + exactly that if always used MAX_FAILURE_ITEMS items each time we failed. + This is a variable only so users of regex can assign to it; we never + change it ourselves. */ + +# ifdef INT_IS_16BIT + +# ifndef DEFINED_ONCE +# if defined MATCH_MAY_ALLOCATE +/* 4400 was enough to cause a crash on Alpha OSF/1, + whose default stack limit is 2mb. */ +long int re_max_failures = 4000; +# else +long int re_max_failures = 2000; +# endif +# endif + +union PREFIX(fail_stack_elt) +{ + UCHAR_T *pointer; + long int integer; +}; + +typedef union PREFIX(fail_stack_elt) PREFIX(fail_stack_elt_t); + +typedef struct +{ + PREFIX(fail_stack_elt_t) *stack; + unsigned long int size; + unsigned long int avail; /* Offset of next open position. */ +} PREFIX(fail_stack_type); + +# else /* not INT_IS_16BIT */ + +# ifndef DEFINED_ONCE +# if defined MATCH_MAY_ALLOCATE +/* 4400 was enough to cause a crash on Alpha OSF/1, + whose default stack limit is 2mb. */ +int re_max_failures = 4000; +# else +int re_max_failures = 2000; +# endif +# endif + +union PREFIX(fail_stack_elt) +{ + UCHAR_T *pointer; + int integer; +}; + +typedef union PREFIX(fail_stack_elt) PREFIX(fail_stack_elt_t); + +typedef struct +{ + PREFIX(fail_stack_elt_t) *stack; + unsigned size; + unsigned avail; /* Offset of next open position. */ +} PREFIX(fail_stack_type); + +# endif /* INT_IS_16BIT */ + +# ifndef DEFINED_ONCE +# define FAIL_STACK_EMPTY() (fail_stack.avail == 0) +# define FAIL_STACK_PTR_EMPTY() (fail_stack_ptr->avail == 0) +# define FAIL_STACK_FULL() (fail_stack.avail == fail_stack.size) +# endif + + +/* Define macros to initialize and free the failure stack. + Do `return -2' if the alloc fails. */ + +# ifdef MATCH_MAY_ALLOCATE +# define INIT_FAIL_STACK() \ + do { \ + fail_stack.stack = (PREFIX(fail_stack_elt_t) *) \ + REGEX_ALLOCATE_STACK (INIT_FAILURE_ALLOC * sizeof (PREFIX(fail_stack_elt_t))); \ + \ + if (fail_stack.stack == NULL) \ + return -2; \ + \ + fail_stack.size = INIT_FAILURE_ALLOC; \ + fail_stack.avail = 0; \ + } while (0) + +# define RESET_FAIL_STACK() REGEX_FREE_STACK (fail_stack.stack) +# else +# define INIT_FAIL_STACK() \ + do { \ + fail_stack.avail = 0; \ + } while (0) + +# define RESET_FAIL_STACK() +# endif + + +/* Double the size of FAIL_STACK, up to approximately `re_max_failures' items. + + Return 1 if succeeds, and 0 if either ran out of memory + allocating space for it or it was already too large. + + REGEX_REALLOCATE_STACK requires `destination' be declared. */ + +# define DOUBLE_FAIL_STACK(fail_stack) \ + ((fail_stack).size > (unsigned) (re_max_failures * MAX_FAILURE_ITEMS) \ + ? 0 \ + : ((fail_stack).stack = (PREFIX(fail_stack_elt_t) *) \ + REGEX_REALLOCATE_STACK ((fail_stack).stack, \ + (fail_stack).size * sizeof (PREFIX(fail_stack_elt_t)), \ + ((fail_stack).size << 1) * sizeof (PREFIX(fail_stack_elt_t))),\ + \ + (fail_stack).stack == NULL \ + ? 0 \ + : ((fail_stack).size <<= 1, \ + 1))) + + +/* Push pointer POINTER on FAIL_STACK. + Return 1 if was able to do so and 0 if ran out of memory allocating + space to do so. */ +# define PUSH_PATTERN_OP(POINTER, FAIL_STACK) \ + ((FAIL_STACK_FULL () \ + && !DOUBLE_FAIL_STACK (FAIL_STACK)) \ + ? 0 \ + : ((FAIL_STACK).stack[(FAIL_STACK).avail++].pointer = POINTER, \ + 1)) + +/* Push a pointer value onto the failure stack. + Assumes the variable `fail_stack'. Probably should only + be called from within `PUSH_FAILURE_POINT'. */ +# define PUSH_FAILURE_POINTER(item) \ + fail_stack.stack[fail_stack.avail++].pointer = (UCHAR_T *) (item) + +/* This pushes an integer-valued item onto the failure stack. + Assumes the variable `fail_stack'. Probably should only + be called from within `PUSH_FAILURE_POINT'. */ +# define PUSH_FAILURE_INT(item) \ + fail_stack.stack[fail_stack.avail++].integer = (item) + +/* Push a fail_stack_elt_t value onto the failure stack. + Assumes the variable `fail_stack'. Probably should only + be called from within `PUSH_FAILURE_POINT'. */ +# define PUSH_FAILURE_ELT(item) \ + fail_stack.stack[fail_stack.avail++] = (item) + +/* These three POP... operations complement the three PUSH... operations. + All assume that `fail_stack' is nonempty. */ +# define POP_FAILURE_POINTER() fail_stack.stack[--fail_stack.avail].pointer +# define POP_FAILURE_INT() fail_stack.stack[--fail_stack.avail].integer +# define POP_FAILURE_ELT() fail_stack.stack[--fail_stack.avail] + +/* Used to omit pushing failure point id's when we're not debugging. */ +# ifdef DEBUG +# define DEBUG_PUSH PUSH_FAILURE_INT +# define DEBUG_POP(item_addr) *(item_addr) = POP_FAILURE_INT () +# else +# define DEBUG_PUSH(item) +# define DEBUG_POP(item_addr) +# endif + + +/* Push the information about the state we will need + if we ever fail back to it. + + Requires variables fail_stack, regstart, regend, reg_info, and + num_regs_pushed be declared. DOUBLE_FAIL_STACK requires `destination' + be declared. + + Does `return FAILURE_CODE' if runs out of memory. */ + +# define PUSH_FAILURE_POINT(pattern_place, string_place, failure_code) \ + do { \ + char *destination; \ + /* Must be int, so when we don't save any registers, the arithmetic \ + of 0 + -1 isn't done as unsigned. */ \ + /* Can't be int, since there is not a shred of a guarantee that int \ + is wide enough to hold a value of something to which pointer can \ + be assigned */ \ + active_reg_t this_reg; \ + \ + DEBUG_STATEMENT (failure_id++); \ + DEBUG_STATEMENT (nfailure_points_pushed++); \ + DEBUG_PRINT2 ("\nPUSH_FAILURE_POINT #%u:\n", failure_id); \ + DEBUG_PRINT2 (" Before push, next avail: %d\n", (fail_stack).avail);\ + DEBUG_PRINT2 (" size: %d\n", (fail_stack).size);\ + \ + DEBUG_PRINT2 (" slots needed: %ld\n", NUM_FAILURE_ITEMS); \ + DEBUG_PRINT2 (" available: %d\n", REMAINING_AVAIL_SLOTS); \ + \ + /* Ensure we have enough space allocated for what we will push. */ \ + while (REMAINING_AVAIL_SLOTS < NUM_FAILURE_ITEMS) \ + { \ + if (!DOUBLE_FAIL_STACK (fail_stack)) \ + return failure_code; \ + \ + DEBUG_PRINT2 ("\n Doubled stack; size now: %d\n", \ + (fail_stack).size); \ + DEBUG_PRINT2 (" slots available: %d\n", REMAINING_AVAIL_SLOTS);\ + } \ + \ + /* Push the info, starting with the registers. */ \ + DEBUG_PRINT1 ("\n"); \ + \ + if (1) \ + for (this_reg = lowest_active_reg; this_reg <= highest_active_reg; \ + this_reg++) \ + { \ + DEBUG_PRINT2 (" Pushing reg: %lu\n", this_reg); \ + DEBUG_STATEMENT (num_regs_pushed++); \ + \ + DEBUG_PRINT2 (" start: %p\n", regstart[this_reg]); \ + PUSH_FAILURE_POINTER (regstart[this_reg]); \ + \ + DEBUG_PRINT2 (" end: %p\n", regend[this_reg]); \ + PUSH_FAILURE_POINTER (regend[this_reg]); \ + \ + DEBUG_PRINT2 (" info: %p\n ", \ + reg_info[this_reg].word.pointer); \ + DEBUG_PRINT2 (" match_null=%d", \ + REG_MATCH_NULL_STRING_P (reg_info[this_reg])); \ + DEBUG_PRINT2 (" active=%d", IS_ACTIVE (reg_info[this_reg])); \ + DEBUG_PRINT2 (" matched_something=%d", \ + MATCHED_SOMETHING (reg_info[this_reg])); \ + DEBUG_PRINT2 (" ever_matched=%d", \ + EVER_MATCHED_SOMETHING (reg_info[this_reg])); \ + DEBUG_PRINT1 ("\n"); \ + PUSH_FAILURE_ELT (reg_info[this_reg].word); \ + } \ + \ + DEBUG_PRINT2 (" Pushing low active reg: %ld\n", lowest_active_reg);\ + PUSH_FAILURE_INT (lowest_active_reg); \ + \ + DEBUG_PRINT2 (" Pushing high active reg: %ld\n", highest_active_reg);\ + PUSH_FAILURE_INT (highest_active_reg); \ + \ + DEBUG_PRINT2 (" Pushing pattern %p:\n", pattern_place); \ + DEBUG_PRINT_COMPILED_PATTERN (bufp, pattern_place, pend); \ + PUSH_FAILURE_POINTER (pattern_place); \ + \ + DEBUG_PRINT2 (" Pushing string %p: `", string_place); \ + DEBUG_PRINT_DOUBLE_STRING (string_place, string1, size1, string2, \ + size2); \ + DEBUG_PRINT1 ("'\n"); \ + PUSH_FAILURE_POINTER (string_place); \ + \ + DEBUG_PRINT2 (" Pushing failure id: %u\n", failure_id); \ + DEBUG_PUSH (failure_id); \ + } while (0) + +# ifndef DEFINED_ONCE +/* This is the number of items that are pushed and popped on the stack + for each register. */ +# define NUM_REG_ITEMS 3 + +/* Individual items aside from the registers. */ +# ifdef DEBUG +# define NUM_NONREG_ITEMS 5 /* Includes failure point id. */ +# else +# define NUM_NONREG_ITEMS 4 +# endif + +/* We push at most this many items on the stack. */ +/* We used to use (num_regs - 1), which is the number of registers + this regexp will save; but that was changed to 5 + to avoid stack overflow for a regexp with lots of parens. */ +# define MAX_FAILURE_ITEMS (5 * NUM_REG_ITEMS + NUM_NONREG_ITEMS) + +/* We actually push this many items. */ +# define NUM_FAILURE_ITEMS \ + (((0 \ + ? 0 : highest_active_reg - lowest_active_reg + 1) \ + * NUM_REG_ITEMS) \ + + NUM_NONREG_ITEMS) + +/* How many items can still be added to the stack without overflowing it. */ +# define REMAINING_AVAIL_SLOTS ((fail_stack).size - (fail_stack).avail) +# endif /* not DEFINED_ONCE */ + + +/* Pops what PUSH_FAIL_STACK pushes. + + We restore into the parameters, all of which should be lvalues: + STR -- the saved data position. + PAT -- the saved pattern position. + LOW_REG, HIGH_REG -- the highest and lowest active registers. + REGSTART, REGEND -- arrays of string positions. + REG_INFO -- array of information about each subexpression. + + Also assumes the variables `fail_stack' and (if debugging), `bufp', + `pend', `string1', `size1', `string2', and `size2'. */ +# define POP_FAILURE_POINT(str, pat, low_reg, high_reg, regstart, regend, reg_info)\ +{ \ + DEBUG_STATEMENT (unsigned failure_id;) \ + active_reg_t this_reg; \ + const UCHAR_T *string_temp; \ + \ + assert (!FAIL_STACK_EMPTY ()); \ + \ + /* Remove failure points and point to how many regs pushed. */ \ + DEBUG_PRINT1 ("POP_FAILURE_POINT:\n"); \ + DEBUG_PRINT2 (" Before pop, next avail: %d\n", fail_stack.avail); \ + DEBUG_PRINT2 (" size: %d\n", fail_stack.size); \ + \ + assert (fail_stack.avail >= NUM_NONREG_ITEMS); \ + \ + DEBUG_POP (&failure_id); \ + DEBUG_PRINT2 (" Popping failure id: %u\n", failure_id); \ + \ + /* If the saved string location is NULL, it came from an \ + on_failure_keep_string_jump opcode, and we want to throw away the \ + saved NULL, thus retaining our current position in the string. */ \ + string_temp = POP_FAILURE_POINTER (); \ + if (string_temp != NULL) \ + str = (const CHAR_T *) string_temp; \ + \ + DEBUG_PRINT2 (" Popping string %p: `", str); \ + DEBUG_PRINT_DOUBLE_STRING (str, string1, size1, string2, size2); \ + DEBUG_PRINT1 ("'\n"); \ + \ + pat = (UCHAR_T *) POP_FAILURE_POINTER (); \ + DEBUG_PRINT2 (" Popping pattern %p:\n", pat); \ + DEBUG_PRINT_COMPILED_PATTERN (bufp, pat, pend); \ + \ + /* Restore register info. */ \ + high_reg = (active_reg_t) POP_FAILURE_INT (); \ + DEBUG_PRINT2 (" Popping high active reg: %ld\n", high_reg); \ + \ + low_reg = (active_reg_t) POP_FAILURE_INT (); \ + DEBUG_PRINT2 (" Popping low active reg: %ld\n", low_reg); \ + \ + if (1) \ + for (this_reg = high_reg; this_reg >= low_reg; this_reg--) \ + { \ + DEBUG_PRINT2 (" Popping reg: %ld\n", this_reg); \ + \ + reg_info[this_reg].word = POP_FAILURE_ELT (); \ + DEBUG_PRINT2 (" info: %p\n", \ + reg_info[this_reg].word.pointer); \ + \ + regend[this_reg] = (const CHAR_T *) POP_FAILURE_POINTER (); \ + DEBUG_PRINT2 (" end: %p\n", regend[this_reg]); \ + \ + regstart[this_reg] = (const CHAR_T *) POP_FAILURE_POINTER (); \ + DEBUG_PRINT2 (" start: %p\n", regstart[this_reg]); \ + } \ + else \ + { \ + for (this_reg = highest_active_reg; this_reg > high_reg; this_reg--) \ + { \ + reg_info[this_reg].word.integer = 0; \ + regend[this_reg] = 0; \ + regstart[this_reg] = 0; \ + } \ + highest_active_reg = high_reg; \ + } \ + \ + set_regs_matched_done = 0; \ + DEBUG_STATEMENT (nfailure_points_popped++); \ +} /* POP_FAILURE_POINT */ + +/* Structure for per-register (a.k.a. per-group) information. + Other register information, such as the + starting and ending positions (which are addresses), and the list of + inner groups (which is a bits list) are maintained in separate + variables. + + We are making a (strictly speaking) nonportable assumption here: that + the compiler will pack our bit fields into something that fits into + the type of `word', i.e., is something that fits into one item on the + failure stack. */ + + +/* Declarations and macros for re_match_2. */ + +typedef union +{ + PREFIX(fail_stack_elt_t) word; + struct + { + /* This field is one if this group can match the empty string, + zero if not. If not yet determined, `MATCH_NULL_UNSET_VALUE'. */ +# define MATCH_NULL_UNSET_VALUE 3 + unsigned match_null_string_p : 2; + unsigned is_active : 1; + unsigned matched_something : 1; + unsigned ever_matched_something : 1; + } bits; +} PREFIX(register_info_type); + +# ifndef DEFINED_ONCE +# define REG_MATCH_NULL_STRING_P(R) ((R).bits.match_null_string_p) +# define IS_ACTIVE(R) ((R).bits.is_active) +# define MATCHED_SOMETHING(R) ((R).bits.matched_something) +# define EVER_MATCHED_SOMETHING(R) ((R).bits.ever_matched_something) + + +/* Call this when have matched a real character; it sets `matched' flags + for the subexpressions which we are currently inside. Also records + that those subexprs have matched. */ +# define SET_REGS_MATCHED() \ + do \ + { \ + if (!set_regs_matched_done) \ + { \ + active_reg_t r; \ + set_regs_matched_done = 1; \ + for (r = lowest_active_reg; r <= highest_active_reg; r++) \ + { \ + MATCHED_SOMETHING (reg_info[r]) \ + = EVER_MATCHED_SOMETHING (reg_info[r]) \ + = 1; \ + } \ + } \ + } \ + while (0) +# endif /* not DEFINED_ONCE */ + +/* Registers are set to a sentinel when they haven't yet matched. */ +static CHAR_T PREFIX(reg_unset_dummy); +# define REG_UNSET_VALUE (&PREFIX(reg_unset_dummy)) +# define REG_UNSET(e) ((e) == REG_UNSET_VALUE) + +/* Subroutine declarations and macros for regex_compile. */ +static void PREFIX(store_op1) _RE_ARGS ((re_opcode_t op, UCHAR_T *loc, int arg)); +static void PREFIX(store_op2) _RE_ARGS ((re_opcode_t op, UCHAR_T *loc, + int arg1, int arg2)); +static void PREFIX(insert_op1) _RE_ARGS ((re_opcode_t op, UCHAR_T *loc, + int arg, UCHAR_T *end)); +static void PREFIX(insert_op2) _RE_ARGS ((re_opcode_t op, UCHAR_T *loc, + int arg1, int arg2, UCHAR_T *end)); +static boolean PREFIX(at_begline_loc_p) _RE_ARGS ((const CHAR_T *pattern, + const CHAR_T *p, + reg_syntax_t syntax)); +static boolean PREFIX(at_endline_loc_p) _RE_ARGS ((const CHAR_T *p, + const CHAR_T *pend, + reg_syntax_t syntax)); +# ifdef WCHAR +static reg_errcode_t wcs_compile_range _RE_ARGS ((CHAR_T range_start, + const CHAR_T **p_ptr, + const CHAR_T *pend, + char *translate, + reg_syntax_t syntax, + UCHAR_T *b, + CHAR_T *char_set)); +static void insert_space _RE_ARGS ((int num, CHAR_T *loc, CHAR_T *end)); +# else /* BYTE */ +static reg_errcode_t byte_compile_range _RE_ARGS ((unsigned int range_start, + const char **p_ptr, + const char *pend, + char *translate, + reg_syntax_t syntax, + unsigned char *b)); +# endif /* WCHAR */ + +/* Fetch the next character in the uncompiled pattern---translating it + if necessary. Also cast from a signed character in the constant + string passed to us by the user to an unsigned char that we can use + as an array index (in, e.g., `translate'). */ +/* ifdef MBS_SUPPORT, we translate only if character <= 0xff, + because it is impossible to allocate 4GB array for some encodings + which have 4 byte character_set like UCS4. */ +# ifndef PATFETCH +# ifdef WCHAR +# define PATFETCH(c) \ + do {if (p == pend) return REG_EEND; \ + c = (UCHAR_T) *p++; \ + if (translate && (c <= 0xff)) c = (UCHAR_T) translate[c]; \ + } while (0) +# else /* BYTE */ +# define PATFETCH(c) \ + do {if (p == pend) return REG_EEND; \ + c = (unsigned char) *p++; \ + if (translate) c = (unsigned char) translate[c]; \ + } while (0) +# endif /* WCHAR */ +# endif + +/* Fetch the next character in the uncompiled pattern, with no + translation. */ +# define PATFETCH_RAW(c) \ + do {if (p == pend) return REG_EEND; \ + c = (UCHAR_T) *p++; \ + } while (0) + +/* Go backwards one character in the pattern. */ +# define PATUNFETCH p-- + + +/* If `translate' is non-null, return translate[D], else just D. We + cast the subscript to translate because some data is declared as + `char *', to avoid warnings when a string constant is passed. But + when we use a character as a subscript we must make it unsigned. */ +/* ifdef MBS_SUPPORT, we translate only if character <= 0xff, + because it is impossible to allocate 4GB array for some encodings + which have 4 byte character_set like UCS4. */ + +# ifndef TRANSLATE +# ifdef WCHAR +# define TRANSLATE(d) \ + ((translate && ((UCHAR_T) (d)) <= 0xff) \ + ? (char) translate[(unsigned char) (d)] : (d)) +# else /* BYTE */ +# define TRANSLATE(d) \ + (translate ? (char) translate[(unsigned char) (d)] : (d)) +# endif /* WCHAR */ +# endif + + +/* Macros for outputting the compiled pattern into `buffer'. */ + +/* If the buffer isn't allocated when it comes in, use this. */ +# define INIT_BUF_SIZE (32 * sizeof(UCHAR_T)) + +/* Make sure we have at least N more bytes of space in buffer. */ +# ifdef WCHAR +# define GET_BUFFER_SPACE(n) \ + while (((unsigned long)b - (unsigned long)COMPILED_BUFFER_VAR \ + + (n)*sizeof(CHAR_T)) > bufp->allocated) \ + EXTEND_BUFFER () +# else /* BYTE */ +# define GET_BUFFER_SPACE(n) \ + while ((unsigned long) (b - bufp->buffer + (n)) > bufp->allocated) \ + EXTEND_BUFFER () +# endif /* WCHAR */ + +/* Make sure we have one more byte of buffer space and then add C to it. */ +# define BUF_PUSH(c) \ + do { \ + GET_BUFFER_SPACE (1); \ + *b++ = (UCHAR_T) (c); \ + } while (0) + + +/* Ensure we have two more bytes of buffer space and then append C1 and C2. */ +# define BUF_PUSH_2(c1, c2) \ + do { \ + GET_BUFFER_SPACE (2); \ + *b++ = (UCHAR_T) (c1); \ + *b++ = (UCHAR_T) (c2); \ + } while (0) + + +/* As with BUF_PUSH_2, except for three bytes. */ +# define BUF_PUSH_3(c1, c2, c3) \ + do { \ + GET_BUFFER_SPACE (3); \ + *b++ = (UCHAR_T) (c1); \ + *b++ = (UCHAR_T) (c2); \ + *b++ = (UCHAR_T) (c3); \ + } while (0) + +/* Store a jump with opcode OP at LOC to location TO. We store a + relative address offset by the three bytes the jump itself occupies. */ +# define STORE_JUMP(op, loc, to) \ + PREFIX(store_op1) (op, loc, (int) ((to) - (loc) - (1 + OFFSET_ADDRESS_SIZE))) + +/* Likewise, for a two-argument jump. */ +# define STORE_JUMP2(op, loc, to, arg) \ + PREFIX(store_op2) (op, loc, (int) ((to) - (loc) - (1 + OFFSET_ADDRESS_SIZE)), arg) + +/* Like `STORE_JUMP', but for inserting. Assume `b' is the buffer end. */ +# define INSERT_JUMP(op, loc, to) \ + PREFIX(insert_op1) (op, loc, (int) ((to) - (loc) - (1 + OFFSET_ADDRESS_SIZE)), b) + +/* Like `STORE_JUMP2', but for inserting. Assume `b' is the buffer end. */ +# define INSERT_JUMP2(op, loc, to, arg) \ + PREFIX(insert_op2) (op, loc, (int) ((to) - (loc) - (1 + OFFSET_ADDRESS_SIZE)),\ + arg, b) + +/* This is not an arbitrary limit: the arguments which represent offsets + into the pattern are two bytes long. So if 2^16 bytes turns out to + be too small, many things would have to change. */ +/* Any other compiler which, like MSC, has allocation limit below 2^16 + bytes will have to use approach similar to what was done below for + MSC and drop MAX_BUF_SIZE a bit. Otherwise you may end up + reallocating to 0 bytes. Such thing is not going to work too well. + You have been warned!! */ +# ifndef DEFINED_ONCE +# if defined _MSC_VER && !defined WIN32 +/* Microsoft C 16-bit versions limit malloc to approx 65512 bytes. + The REALLOC define eliminates a flurry of conversion warnings, + but is not required. */ +# define MAX_BUF_SIZE 65500L +# define REALLOC(p,s) realloc ((p), (size_t) (s)) +# else +# define MAX_BUF_SIZE (1L << 16) +# define REALLOC(p,s) realloc ((p), (s)) +# endif + +/* Extend the buffer by twice its current size via realloc and + reset the pointers that pointed into the old block to point to the + correct places in the new one. If extending the buffer results in it + being larger than MAX_BUF_SIZE, then flag memory exhausted. */ +# if __BOUNDED_POINTERS__ +# define SET_HIGH_BOUND(P) (__ptrhigh (P) = __ptrlow (P) + bufp->allocated) +# define MOVE_BUFFER_POINTER(P) \ + (__ptrlow (P) += incr, SET_HIGH_BOUND (P), __ptrvalue (P) += incr) +# define ELSE_EXTEND_BUFFER_HIGH_BOUND \ + else \ + { \ + SET_HIGH_BOUND (b); \ + SET_HIGH_BOUND (begalt); \ + if (fixup_alt_jump) \ + SET_HIGH_BOUND (fixup_alt_jump); \ + if (laststart) \ + SET_HIGH_BOUND (laststart); \ + if (pending_exact) \ + SET_HIGH_BOUND (pending_exact); \ + } +# else +# define MOVE_BUFFER_POINTER(P) (P) += incr +# define ELSE_EXTEND_BUFFER_HIGH_BOUND +# endif +# endif /* not DEFINED_ONCE */ + +# ifdef WCHAR +# define EXTEND_BUFFER() \ + do { \ + UCHAR_T *old_buffer = COMPILED_BUFFER_VAR; \ + int wchar_count; \ + if (bufp->allocated + sizeof(UCHAR_T) > MAX_BUF_SIZE) \ + return REG_ESIZE; \ + bufp->allocated <<= 1; \ + if (bufp->allocated > MAX_BUF_SIZE) \ + bufp->allocated = MAX_BUF_SIZE; \ + /* How many characters the new buffer can have? */ \ + wchar_count = bufp->allocated / sizeof(UCHAR_T); \ + if (wchar_count == 0) wchar_count = 1; \ + /* Truncate the buffer to CHAR_T align. */ \ + bufp->allocated = wchar_count * sizeof(UCHAR_T); \ + RETALLOC (COMPILED_BUFFER_VAR, wchar_count, UCHAR_T); \ + bufp->buffer = (char*)COMPILED_BUFFER_VAR; \ + if (COMPILED_BUFFER_VAR == NULL) \ + return REG_ESPACE; \ + /* If the buffer moved, move all the pointers into it. */ \ + if (old_buffer != COMPILED_BUFFER_VAR) \ + { \ + int incr = COMPILED_BUFFER_VAR - old_buffer; \ + MOVE_BUFFER_POINTER (b); \ + MOVE_BUFFER_POINTER (begalt); \ + if (fixup_alt_jump) \ + MOVE_BUFFER_POINTER (fixup_alt_jump); \ + if (laststart) \ + MOVE_BUFFER_POINTER (laststart); \ + if (pending_exact) \ + MOVE_BUFFER_POINTER (pending_exact); \ + } \ + ELSE_EXTEND_BUFFER_HIGH_BOUND \ + } while (0) +# else /* BYTE */ +# define EXTEND_BUFFER() \ + do { \ + UCHAR_T *old_buffer = COMPILED_BUFFER_VAR; \ + if (bufp->allocated == MAX_BUF_SIZE) \ + return REG_ESIZE; \ + bufp->allocated <<= 1; \ + if (bufp->allocated > MAX_BUF_SIZE) \ + bufp->allocated = MAX_BUF_SIZE; \ + bufp->buffer = (UCHAR_T *) REALLOC (COMPILED_BUFFER_VAR, \ + bufp->allocated); \ + if (COMPILED_BUFFER_VAR == NULL) \ + return REG_ESPACE; \ + /* If the buffer moved, move all the pointers into it. */ \ + if (old_buffer != COMPILED_BUFFER_VAR) \ + { \ + int incr = COMPILED_BUFFER_VAR - old_buffer; \ + MOVE_BUFFER_POINTER (b); \ + MOVE_BUFFER_POINTER (begalt); \ + if (fixup_alt_jump) \ + MOVE_BUFFER_POINTER (fixup_alt_jump); \ + if (laststart) \ + MOVE_BUFFER_POINTER (laststart); \ + if (pending_exact) \ + MOVE_BUFFER_POINTER (pending_exact); \ + } \ + ELSE_EXTEND_BUFFER_HIGH_BOUND \ + } while (0) +# endif /* WCHAR */ + +# ifndef DEFINED_ONCE +/* Since we have one byte reserved for the register number argument to + {start,stop}_memory, the maximum number of groups we can report + things about is what fits in that byte. */ +# define MAX_REGNUM 255 + +/* But patterns can have more than `MAX_REGNUM' registers. We just + ignore the excess. */ +typedef unsigned regnum_t; + + +/* Macros for the compile stack. */ + +/* Since offsets can go either forwards or backwards, this type needs to + be able to hold values from -(MAX_BUF_SIZE - 1) to MAX_BUF_SIZE - 1. */ +/* int may be not enough when sizeof(int) == 2. */ +typedef long pattern_offset_t; + +typedef struct +{ + pattern_offset_t begalt_offset; + pattern_offset_t fixup_alt_jump; + pattern_offset_t inner_group_offset; + pattern_offset_t laststart_offset; + regnum_t regnum; +} compile_stack_elt_t; + + +typedef struct +{ + compile_stack_elt_t *stack; + unsigned size; + unsigned avail; /* Offset of next open position. */ +} compile_stack_type; + + +# define INIT_COMPILE_STACK_SIZE 32 + +# define COMPILE_STACK_EMPTY (compile_stack.avail == 0) +# define COMPILE_STACK_FULL (compile_stack.avail == compile_stack.size) + +/* The next available element. */ +# define COMPILE_STACK_TOP (compile_stack.stack[compile_stack.avail]) + +# endif /* not DEFINED_ONCE */ + +/* Set the bit for character C in a list. */ +# ifndef DEFINED_ONCE +# define SET_LIST_BIT(c) \ + (b[((unsigned char) (c)) / BYTEWIDTH] \ + |= 1 << (((unsigned char) c) % BYTEWIDTH)) +# endif /* DEFINED_ONCE */ + +/* Get the next unsigned number in the uncompiled pattern. */ +# define GET_UNSIGNED_NUMBER(num) \ + { \ + while (p != pend) \ + { \ + PATFETCH (c); \ + if (c < '0' || c > '9') \ + break; \ + if (num <= RE_DUP_MAX) \ + { \ + if (num < 0) \ + num = 0; \ + num = num * 10 + c - '0'; \ + } \ + } \ + } + +# ifndef DEFINED_ONCE +# if defined _LIBC || WIDE_CHAR_SUPPORT +/* The GNU C library provides support for user-defined character classes + and the functions from ISO C amendement 1. */ +# ifdef CHARCLASS_NAME_MAX +# define CHAR_CLASS_MAX_LENGTH CHARCLASS_NAME_MAX +# else +/* This shouldn't happen but some implementation might still have this + problem. Use a reasonable default value. */ +# define CHAR_CLASS_MAX_LENGTH 256 +# endif + +# ifdef _LIBC +# define IS_CHAR_CLASS(string) __wctype (string) +# else +# define IS_CHAR_CLASS(string) wctype (string) +# endif +# else +# define CHAR_CLASS_MAX_LENGTH 6 /* Namely, `xdigit'. */ + +# define IS_CHAR_CLASS(string) \ + (STREQ (string, "alpha") || STREQ (string, "upper") \ + || STREQ (string, "lower") || STREQ (string, "digit") \ + || STREQ (string, "alnum") || STREQ (string, "xdigit") \ + || STREQ (string, "space") || STREQ (string, "print") \ + || STREQ (string, "punct") || STREQ (string, "graph") \ + || STREQ (string, "cntrl") || STREQ (string, "blank")) +# endif +# endif /* DEFINED_ONCE */ + +# ifndef MATCH_MAY_ALLOCATE + +/* If we cannot allocate large objects within re_match_2_internal, + we make the fail stack and register vectors global. + The fail stack, we grow to the maximum size when a regexp + is compiled. + The register vectors, we adjust in size each time we + compile a regexp, according to the number of registers it needs. */ + +static PREFIX(fail_stack_type) fail_stack; + +/* Size with which the following vectors are currently allocated. + That is so we can make them bigger as needed, + but never make them smaller. */ +# ifdef DEFINED_ONCE +static int regs_allocated_size; + +static const char ** regstart, ** regend; +static const char ** old_regstart, ** old_regend; +static const char **best_regstart, **best_regend; +static const char **reg_dummy; +# endif /* DEFINED_ONCE */ + +static PREFIX(register_info_type) *PREFIX(reg_info); +static PREFIX(register_info_type) *PREFIX(reg_info_dummy); + +/* Make the register vectors big enough for NUM_REGS registers, + but don't make them smaller. */ + +static void +PREFIX(regex_grow_registers) (num_regs) + int num_regs; +{ + if (num_regs > regs_allocated_size) + { + RETALLOC_IF (regstart, num_regs, const char *); + RETALLOC_IF (regend, num_regs, const char *); + RETALLOC_IF (old_regstart, num_regs, const char *); + RETALLOC_IF (old_regend, num_regs, const char *); + RETALLOC_IF (best_regstart, num_regs, const char *); + RETALLOC_IF (best_regend, num_regs, const char *); + RETALLOC_IF (PREFIX(reg_info), num_regs, PREFIX(register_info_type)); + RETALLOC_IF (reg_dummy, num_regs, const char *); + RETALLOC_IF (PREFIX(reg_info_dummy), num_regs, PREFIX(register_info_type)); + + regs_allocated_size = num_regs; + } +} + +# endif /* not MATCH_MAY_ALLOCATE */ + +# ifndef DEFINED_ONCE +static boolean group_in_compile_stack _RE_ARGS ((compile_stack_type + compile_stack, + regnum_t regnum)); +# endif /* not DEFINED_ONCE */ + +/* `regex_compile' compiles PATTERN (of length SIZE) according to SYNTAX. + Returns one of error codes defined in `regex.h', or zero for success. + + Assumes the `allocated' (and perhaps `buffer') and `translate' + fields are set in BUFP on entry. + + If it succeeds, results are put in BUFP (if it returns an error, the + contents of BUFP are undefined): + `buffer' is the compiled pattern; + `syntax' is set to SYNTAX; + `used' is set to the length of the compiled pattern; + `fastmap_accurate' is zero; + `re_nsub' is the number of subexpressions in PATTERN; + `not_bol' and `not_eol' are zero; + + The `fastmap' and `newline_anchor' fields are neither + examined nor set. */ + +/* Return, freeing storage we allocated. */ +# ifdef WCHAR +# define FREE_STACK_RETURN(value) \ + return (free(pattern), free(mbs_offset), free(is_binary), free (compile_stack.stack), value) +# else +# define FREE_STACK_RETURN(value) \ + return (free (compile_stack.stack), value) +# endif /* WCHAR */ + +static reg_errcode_t +PREFIX(regex_compile) (ARG_PREFIX(pattern), ARG_PREFIX(size), syntax, bufp) + const char *ARG_PREFIX(pattern); + size_t ARG_PREFIX(size); + reg_syntax_t syntax; + struct re_pattern_buffer *bufp; +{ + /* We fetch characters from PATTERN here. Even though PATTERN is + `char *' (i.e., signed), we declare these variables as unsigned, so + they can be reliably used as array indices. */ + register UCHAR_T c, c1; + +#ifdef WCHAR + /* A temporary space to keep wchar_t pattern and compiled pattern. */ + CHAR_T *pattern, *COMPILED_BUFFER_VAR; + size_t size; + /* offset buffer for optimization. See convert_mbs_to_wc. */ + int *mbs_offset = NULL; + /* It hold whether each wchar_t is binary data or not. */ + char *is_binary = NULL; + /* A flag whether exactn is handling binary data or not. */ + char is_exactn_bin = FALSE; +#endif /* WCHAR */ + + /* A random temporary spot in PATTERN. */ + const CHAR_T *p1; + + /* Points to the end of the buffer, where we should append. */ + register UCHAR_T *b; + + /* Keeps track of unclosed groups. */ + compile_stack_type compile_stack; + + /* Points to the current (ending) position in the pattern. */ +#ifdef WCHAR + const CHAR_T *p; + const CHAR_T *pend; +#else /* BYTE */ + const CHAR_T *p = pattern; + const CHAR_T *pend = pattern + size; +#endif /* WCHAR */ + + /* How to translate the characters in the pattern. */ + RE_TRANSLATE_TYPE translate = bufp->translate; + + /* Address of the count-byte of the most recently inserted `exactn' + command. This makes it possible to tell if a new exact-match + character can be added to that command or if the character requires + a new `exactn' command. */ + UCHAR_T *pending_exact = 0; + + /* Address of start of the most recently finished expression. + This tells, e.g., postfix * where to find the start of its + operand. Reset at the beginning of groups and alternatives. */ + UCHAR_T *laststart = 0; + + /* Address of beginning of regexp, or inside of last group. */ + UCHAR_T *begalt; + + /* Address of the place where a forward jump should go to the end of + the containing expression. Each alternative of an `or' -- except the + last -- ends with a forward jump of this sort. */ + UCHAR_T *fixup_alt_jump = 0; + + /* Counts open-groups as they are encountered. Remembered for the + matching close-group on the compile stack, so the same register + number is put in the stop_memory as the start_memory. */ + regnum_t regnum = 0; + +#ifdef WCHAR + /* Initialize the wchar_t PATTERN and offset_buffer. */ + p = pend = pattern = TALLOC(csize + 1, CHAR_T); + mbs_offset = TALLOC(csize + 1, int); + is_binary = TALLOC(csize + 1, char); + if (pattern == NULL || mbs_offset == NULL || is_binary == NULL) + { + free(pattern); + free(mbs_offset); + free(is_binary); + return REG_ESPACE; + } + pattern[csize] = L'\0'; /* sentinel */ + size = convert_mbs_to_wcs(pattern, cpattern, csize, mbs_offset, is_binary); + pend = p + size; + if (size < 0) + { + free(pattern); + free(mbs_offset); + free(is_binary); + return REG_BADPAT; + } +#endif + +#ifdef DEBUG + DEBUG_PRINT1 ("\nCompiling pattern: "); + if (debug) + { + unsigned debug_count; + + for (debug_count = 0; debug_count < size; debug_count++) + PUT_CHAR (pattern[debug_count]); + putchar ('\n'); + } +#endif /* DEBUG */ + + /* Initialize the compile stack. */ + compile_stack.stack = TALLOC (INIT_COMPILE_STACK_SIZE, compile_stack_elt_t); + if (compile_stack.stack == NULL) + { +#ifdef WCHAR + free(pattern); + free(mbs_offset); + free(is_binary); +#endif + return REG_ESPACE; + } + + compile_stack.size = INIT_COMPILE_STACK_SIZE; + compile_stack.avail = 0; + + /* Initialize the pattern buffer. */ + bufp->syntax = syntax; + bufp->fastmap_accurate = 0; + bufp->not_bol = bufp->not_eol = 0; + + /* Set `used' to zero, so that if we return an error, the pattern + printer (for debugging) will think there's no pattern. We reset it + at the end. */ + bufp->used = 0; + + /* Always count groups, whether or not bufp->no_sub is set. */ + bufp->re_nsub = 0; + +#if !defined emacs && !defined SYNTAX_TABLE + /* Initialize the syntax table. */ + init_syntax_once (); +#endif + + if (bufp->allocated == 0) + { + if (bufp->buffer) + { /* If zero allocated, but buffer is non-null, try to realloc + enough space. This loses if buffer's address is bogus, but + that is the user's responsibility. */ +#ifdef WCHAR + /* Free bufp->buffer and allocate an array for wchar_t pattern + buffer. */ + free(bufp->buffer); + COMPILED_BUFFER_VAR = TALLOC (INIT_BUF_SIZE/sizeof(UCHAR_T), + UCHAR_T); +#else + RETALLOC (COMPILED_BUFFER_VAR, INIT_BUF_SIZE, UCHAR_T); +#endif /* WCHAR */ + } + else + { /* Caller did not allocate a buffer. Do it for them. */ + COMPILED_BUFFER_VAR = TALLOC (INIT_BUF_SIZE / sizeof(UCHAR_T), + UCHAR_T); + } + + if (!COMPILED_BUFFER_VAR) FREE_STACK_RETURN (REG_ESPACE); +#ifdef WCHAR + bufp->buffer = (char*)COMPILED_BUFFER_VAR; +#endif /* WCHAR */ + bufp->allocated = INIT_BUF_SIZE; + } +#ifdef WCHAR + else + COMPILED_BUFFER_VAR = (UCHAR_T*) bufp->buffer; +#endif + + begalt = b = COMPILED_BUFFER_VAR; + + /* Loop through the uncompiled pattern until we're at the end. */ + while (p != pend) + { + PATFETCH (c); + + switch (c) + { + case '^': + { + if ( /* If at start of pattern, it's an operator. */ + p == pattern + 1 + /* If context independent, it's an operator. */ + || syntax & RE_CONTEXT_INDEP_ANCHORS + /* Otherwise, depends on what's come before. */ + || PREFIX(at_begline_loc_p) (pattern, p, syntax)) + BUF_PUSH (begline); + else + goto normal_char; + } + break; + + + case '$': + { + if ( /* If at end of pattern, it's an operator. */ + p == pend + /* If context independent, it's an operator. */ + || syntax & RE_CONTEXT_INDEP_ANCHORS + /* Otherwise, depends on what's next. */ + || PREFIX(at_endline_loc_p) (p, pend, syntax)) + BUF_PUSH (endline); + else + goto normal_char; + } + break; + + + case '+': + case '?': + if ((syntax & RE_BK_PLUS_QM) + || (syntax & RE_LIMITED_OPS)) + goto normal_char; + handle_plus: + case '*': + /* If there is no previous pattern... */ + if (!laststart) + { + if (syntax & RE_CONTEXT_INVALID_OPS) + FREE_STACK_RETURN (REG_BADRPT); + else if (!(syntax & RE_CONTEXT_INDEP_OPS)) + goto normal_char; + } + + { + /* Are we optimizing this jump? */ + boolean keep_string_p = false; + + /* 1 means zero (many) matches is allowed. */ + char zero_times_ok = 0, many_times_ok = 0; + + /* If there is a sequence of repetition chars, collapse it + down to just one (the right one). We can't combine + interval operators with these because of, e.g., `a{2}*', + which should only match an even number of `a's. */ + + for (;;) + { + zero_times_ok |= c != '+'; + many_times_ok |= c != '?'; + + if (p == pend) + break; + + PATFETCH (c); + + if (c == '*' + || (!(syntax & RE_BK_PLUS_QM) && (c == '+' || c == '?'))) + ; + + else if (syntax & RE_BK_PLUS_QM && c == '\\') + { + if (p == pend) FREE_STACK_RETURN (REG_EESCAPE); + + PATFETCH (c1); + if (!(c1 == '+' || c1 == '?')) + { + PATUNFETCH; + PATUNFETCH; + break; + } + + c = c1; + } + else + { + PATUNFETCH; + break; + } + + /* If we get here, we found another repeat character. */ + } + + /* Star, etc. applied to an empty pattern is equivalent + to an empty pattern. */ + if (!laststart) + break; + + /* Now we know whether or not zero matches is allowed + and also whether or not two or more matches is allowed. */ + if (many_times_ok) + { /* More than one repetition is allowed, so put in at the + end a backward relative jump from `b' to before the next + jump we're going to put in below (which jumps from + laststart to after this jump). + + But if we are at the `*' in the exact sequence `.*\n', + insert an unconditional jump backwards to the ., + instead of the beginning of the loop. This way we only + push a failure point once, instead of every time + through the loop. */ + assert (p - 1 > pattern); + + /* Allocate the space for the jump. */ + GET_BUFFER_SPACE (1 + OFFSET_ADDRESS_SIZE); + + /* We know we are not at the first character of the pattern, + because laststart was nonzero. And we've already + incremented `p', by the way, to be the character after + the `*'. Do we have to do something analogous here + for null bytes, because of RE_DOT_NOT_NULL? */ + if (TRANSLATE (*(p - 2)) == TRANSLATE ('.') + && zero_times_ok + && p < pend && TRANSLATE (*p) == TRANSLATE ('\n') + && !(syntax & RE_DOT_NEWLINE)) + { /* We have .*\n. */ + STORE_JUMP (jump, b, laststart); + keep_string_p = true; + } + else + /* Anything else. */ + STORE_JUMP (maybe_pop_jump, b, laststart - + (1 + OFFSET_ADDRESS_SIZE)); + + /* We've added more stuff to the buffer. */ + b += 1 + OFFSET_ADDRESS_SIZE; + } + + /* On failure, jump from laststart to b + 3, which will be the + end of the buffer after this jump is inserted. */ + /* ifdef WCHAR, 'b + 1 + OFFSET_ADDRESS_SIZE' instead of + 'b + 3'. */ + GET_BUFFER_SPACE (1 + OFFSET_ADDRESS_SIZE); + INSERT_JUMP (keep_string_p ? on_failure_keep_string_jump + : on_failure_jump, + laststart, b + 1 + OFFSET_ADDRESS_SIZE); + pending_exact = 0; + b += 1 + OFFSET_ADDRESS_SIZE; + + if (!zero_times_ok) + { + /* At least one repetition is required, so insert a + `dummy_failure_jump' before the initial + `on_failure_jump' instruction of the loop. This + effects a skip over that instruction the first time + we hit that loop. */ + GET_BUFFER_SPACE (1 + OFFSET_ADDRESS_SIZE); + INSERT_JUMP (dummy_failure_jump, laststart, laststart + + 2 + 2 * OFFSET_ADDRESS_SIZE); + b += 1 + OFFSET_ADDRESS_SIZE; + } + } + break; + + + case '.': + laststart = b; + BUF_PUSH (anychar); + break; + + + case '[': + { + boolean had_char_class = false; +#ifdef WCHAR + CHAR_T range_start = 0xffffffff; +#else + unsigned int range_start = 0xffffffff; +#endif + if (p == pend) FREE_STACK_RETURN (REG_EBRACK); + +#ifdef WCHAR + /* We assume a charset(_not) structure as a wchar_t array. + charset[0] = (re_opcode_t) charset(_not) + charset[1] = l (= length of char_classes) + charset[2] = m (= length of collating_symbols) + charset[3] = n (= length of equivalence_classes) + charset[4] = o (= length of char_ranges) + charset[5] = p (= length of chars) + + charset[6] = char_class (wctype_t) + charset[6+CHAR_CLASS_SIZE] = char_class (wctype_t) + ... + charset[l+5] = char_class (wctype_t) + + charset[l+6] = collating_symbol (wchar_t) + ... + charset[l+m+5] = collating_symbol (wchar_t) + ifdef _LIBC we use the index if + _NL_COLLATE_SYMB_EXTRAMB instead of + wchar_t string. + + charset[l+m+6] = equivalence_classes (wchar_t) + ... + charset[l+m+n+5] = equivalence_classes (wchar_t) + ifdef _LIBC we use the index in + _NL_COLLATE_WEIGHT instead of + wchar_t string. + + charset[l+m+n+6] = range_start + charset[l+m+n+7] = range_end + ... + charset[l+m+n+2o+4] = range_start + charset[l+m+n+2o+5] = range_end + ifdef _LIBC we use the value looked up + in _NL_COLLATE_COLLSEQ instead of + wchar_t character. + + charset[l+m+n+2o+6] = char + ... + charset[l+m+n+2o+p+5] = char + + */ + + /* We need at least 6 spaces: the opcode, the length of + char_classes, the length of collating_symbols, the length of + equivalence_classes, the length of char_ranges, the length of + chars. */ + GET_BUFFER_SPACE (6); + + /* Save b as laststart. And We use laststart as the pointer + to the first element of the charset here. + In other words, laststart[i] indicates charset[i]. */ + laststart = b; + + /* We test `*p == '^' twice, instead of using an if + statement, so we only need one BUF_PUSH. */ + BUF_PUSH (*p == '^' ? charset_not : charset); + if (*p == '^') + p++; + + /* Push the length of char_classes, the length of + collating_symbols, the length of equivalence_classes, the + length of char_ranges and the length of chars. */ + BUF_PUSH_3 (0, 0, 0); + BUF_PUSH_2 (0, 0); + + /* Remember the first position in the bracket expression. */ + p1 = p; + + /* charset_not matches newline according to a syntax bit. */ + if ((re_opcode_t) b[-6] == charset_not + && (syntax & RE_HAT_LISTS_NOT_NEWLINE)) + { + BUF_PUSH('\n'); + laststart[5]++; /* Update the length of characters */ + } + + /* Read in characters and ranges, setting map bits. */ + for (;;) + { + if (p == pend) FREE_STACK_RETURN (REG_EBRACK); + + PATFETCH (c); + + /* \ might escape characters inside [...] and [^...]. */ + if ((syntax & RE_BACKSLASH_ESCAPE_IN_LISTS) && c == '\\') + { + if (p == pend) FREE_STACK_RETURN (REG_EESCAPE); + + PATFETCH (c1); + BUF_PUSH(c1); + laststart[5]++; /* Update the length of chars */ + range_start = c1; + continue; + } + + /* Could be the end of the bracket expression. If it's + not (i.e., when the bracket expression is `[]' so + far), the ']' character bit gets set way below. */ + if (c == ']' && p != p1 + 1) + break; + + /* Look ahead to see if it's a range when the last thing + was a character class. */ + if (had_char_class && c == '-' && *p != ']') + FREE_STACK_RETURN (REG_ERANGE); + + /* Look ahead to see if it's a range when the last thing + was a character: if this is a hyphen not at the + beginning or the end of a list, then it's the range + operator. */ + if (c == '-' + && !(p - 2 >= pattern && p[-2] == '[') + && !(p - 3 >= pattern && p[-3] == '[' && p[-2] == '^') + && *p != ']') + { + reg_errcode_t ret; + /* Allocate the space for range_start and range_end. */ + GET_BUFFER_SPACE (2); + /* Update the pointer to indicate end of buffer. */ + b += 2; + ret = wcs_compile_range (range_start, &p, pend, translate, + syntax, b, laststart); + if (ret != REG_NOERROR) FREE_STACK_RETURN (ret); + range_start = 0xffffffff; + } + else if (p[0] == '-' && p[1] != ']') + { /* This handles ranges made up of characters only. */ + reg_errcode_t ret; + + /* Move past the `-'. */ + PATFETCH (c1); + /* Allocate the space for range_start and range_end. */ + GET_BUFFER_SPACE (2); + /* Update the pointer to indicate end of buffer. */ + b += 2; + ret = wcs_compile_range (c, &p, pend, translate, syntax, b, + laststart); + if (ret != REG_NOERROR) FREE_STACK_RETURN (ret); + range_start = 0xffffffff; + } + + /* See if we're at the beginning of a possible character + class. */ + else if (syntax & RE_CHAR_CLASSES && c == '[' && *p == ':') + { /* Leave room for the null. */ + char str[CHAR_CLASS_MAX_LENGTH + 1]; + + PATFETCH (c); + c1 = 0; + + /* If pattern is `[[:'. */ + if (p == pend) FREE_STACK_RETURN (REG_EBRACK); + + for (;;) + { + PATFETCH (c); + if ((c == ':' && *p == ']') || p == pend) + break; + if (c1 < CHAR_CLASS_MAX_LENGTH) + str[c1++] = c; + else + /* This is in any case an invalid class name. */ + str[0] = '\0'; + } + str[c1] = '\0'; + + /* If isn't a word bracketed by `[:' and `:]': + undo the ending character, the letters, and leave + the leading `:' and `[' (but store them as character). */ + if (c == ':' && *p == ']') + { + wctype_t wt; + uintptr_t alignedp; + + /* Query the character class as wctype_t. */ + wt = IS_CHAR_CLASS (str); + if (wt == 0) + FREE_STACK_RETURN (REG_ECTYPE); + + /* Throw away the ] at the end of the character + class. */ + PATFETCH (c); + + if (p == pend) FREE_STACK_RETURN (REG_EBRACK); + + /* Allocate the space for character class. */ + GET_BUFFER_SPACE(CHAR_CLASS_SIZE); + /* Update the pointer to indicate end of buffer. */ + b += CHAR_CLASS_SIZE; + /* Move data which follow character classes + not to violate the data. */ + insert_space(CHAR_CLASS_SIZE, + laststart + 6 + laststart[1], + b - 1); + alignedp = ((uintptr_t)(laststart + 6 + laststart[1]) + + __alignof__(wctype_t) - 1) + & ~(uintptr_t)(__alignof__(wctype_t) - 1); + /* Store the character class. */ + *((wctype_t*)alignedp) = wt; + /* Update length of char_classes */ + laststart[1] += CHAR_CLASS_SIZE; + + had_char_class = true; + } + else + { + c1++; + while (c1--) + PATUNFETCH; + BUF_PUSH ('['); + BUF_PUSH (':'); + laststart[5] += 2; /* Update the length of characters */ + range_start = ':'; + had_char_class = false; + } + } + else if (syntax & RE_CHAR_CLASSES && c == '[' && (*p == '=' + || *p == '.')) + { + CHAR_T str[128]; /* Should be large enough. */ + CHAR_T delim = *p; /* '=' or '.' */ +# ifdef _LIBC + uint32_t nrules = + _NL_CURRENT_WORD (LC_COLLATE, _NL_COLLATE_NRULES); +# endif + PATFETCH (c); + c1 = 0; + + /* If pattern is `[[=' or '[[.'. */ + if (p == pend) FREE_STACK_RETURN (REG_EBRACK); + + for (;;) + { + PATFETCH (c); + if ((c == delim && *p == ']') || p == pend) + break; + if (c1 < sizeof (str) - 1) + str[c1++] = c; + else + /* This is in any case an invalid class name. */ + str[0] = '\0'; + } + str[c1] = '\0'; + + if (c == delim && *p == ']' && str[0] != '\0') + { + unsigned int i, offset; + /* If we have no collation data we use the default + collation in which each character is in a class + by itself. It also means that ASCII is the + character set and therefore we cannot have character + with more than one byte in the multibyte + representation. */ + + /* If not defined _LIBC, we push the name and + `\0' for the sake of matching performance. */ + int datasize = c1 + 1; + +# ifdef _LIBC + int32_t idx = 0; + if (nrules == 0) +# endif + { + if (c1 != 1) + FREE_STACK_RETURN (REG_ECOLLATE); + } +# ifdef _LIBC + else + { + const int32_t *table; + const int32_t *weights; + const int32_t *extra; + const int32_t *indirect; + wint_t *cp; + + /* This #include defines a local function! */ +# include + + if(delim == '=') + { + /* We push the index for equivalence class. */ + cp = (wint_t*)str; + + table = (const int32_t *) + _NL_CURRENT (LC_COLLATE, + _NL_COLLATE_TABLEWC); + weights = (const int32_t *) + _NL_CURRENT (LC_COLLATE, + _NL_COLLATE_WEIGHTWC); + extra = (const int32_t *) + _NL_CURRENT (LC_COLLATE, + _NL_COLLATE_EXTRAWC); + indirect = (const int32_t *) + _NL_CURRENT (LC_COLLATE, + _NL_COLLATE_INDIRECTWC); + + idx = findidx ((const wint_t**)&cp); + if (idx == 0 || cp < (wint_t*) str + c1) + /* This is no valid character. */ + FREE_STACK_RETURN (REG_ECOLLATE); + + str[0] = (wchar_t)idx; + } + else /* delim == '.' */ + { + /* We push collation sequence value + for collating symbol. */ + int32_t table_size; + const int32_t *symb_table; + const unsigned char *extra; + int32_t idx; + int32_t elem; + int32_t second; + int32_t hash; + char char_str[c1]; + + /* We have to convert the name to a single-byte + string. This is possible since the names + consist of ASCII characters and the internal + representation is UCS4. */ + for (i = 0; i < c1; ++i) + char_str[i] = str[i]; + + table_size = + _NL_CURRENT_WORD (LC_COLLATE, + _NL_COLLATE_SYMB_HASH_SIZEMB); + symb_table = (const int32_t *) + _NL_CURRENT (LC_COLLATE, + _NL_COLLATE_SYMB_TABLEMB); + extra = (const unsigned char *) + _NL_CURRENT (LC_COLLATE, + _NL_COLLATE_SYMB_EXTRAMB); + + /* Locate the character in the hashing table. */ + hash = elem_hash (char_str, c1); + + idx = 0; + elem = hash % table_size; + second = hash % (table_size - 2); + while (symb_table[2 * elem] != 0) + { + /* First compare the hashing value. */ + if (symb_table[2 * elem] == hash + && c1 == extra[symb_table[2 * elem + 1]] + && memcmp (char_str, + &extra[symb_table[2 * elem + 1] + + 1], c1) == 0) + { + /* Yep, this is the entry. */ + idx = symb_table[2 * elem + 1]; + idx += 1 + extra[idx]; + break; + } + + /* Next entry. */ + elem += second; + } + + if (symb_table[2 * elem] != 0) + { + /* Compute the index of the byte sequence + in the table. */ + idx += 1 + extra[idx]; + /* Adjust for the alignment. */ + idx = (idx + 3) & ~3; + + str[0] = (wchar_t) idx + 4; + } + else if (symb_table[2 * elem] == 0 && c1 == 1) + { + /* No valid character. Match it as a + single byte character. */ + had_char_class = false; + BUF_PUSH(str[0]); + /* Update the length of characters */ + laststart[5]++; + range_start = str[0]; + + /* Throw away the ] at the end of the + collating symbol. */ + PATFETCH (c); + /* exit from the switch block. */ + continue; + } + else + FREE_STACK_RETURN (REG_ECOLLATE); + } + datasize = 1; + } +# endif + /* Throw away the ] at the end of the equivalence + class (or collating symbol). */ + PATFETCH (c); + + /* Allocate the space for the equivalence class + (or collating symbol) (and '\0' if needed). */ + GET_BUFFER_SPACE(datasize); + /* Update the pointer to indicate end of buffer. */ + b += datasize; + + if (delim == '=') + { /* equivalence class */ + /* Calculate the offset of char_ranges, + which is next to equivalence_classes. */ + offset = laststart[1] + laststart[2] + + laststart[3] +6; + /* Insert space. */ + insert_space(datasize, laststart + offset, b - 1); + + /* Write the equivalence_class and \0. */ + for (i = 0 ; i < datasize ; i++) + laststart[offset + i] = str[i]; + + /* Update the length of equivalence_classes. */ + laststart[3] += datasize; + had_char_class = true; + } + else /* delim == '.' */ + { /* collating symbol */ + /* Calculate the offset of the equivalence_classes, + which is next to collating_symbols. */ + offset = laststart[1] + laststart[2] + 6; + /* Insert space and write the collationg_symbol + and \0. */ + insert_space(datasize, laststart + offset, b-1); + for (i = 0 ; i < datasize ; i++) + laststart[offset + i] = str[i]; + + /* In re_match_2_internal if range_start < -1, we + assume -range_start is the offset of the + collating symbol which is specified as + the character of the range start. So we assign + -(laststart[1] + laststart[2] + 6) to + range_start. */ + range_start = -(laststart[1] + laststart[2] + 6); + /* Update the length of collating_symbol. */ + laststart[2] += datasize; + had_char_class = false; + } + } + else + { + c1++; + while (c1--) + PATUNFETCH; + BUF_PUSH ('['); + BUF_PUSH (delim); + laststart[5] += 2; /* Update the length of characters */ + range_start = delim; + had_char_class = false; + } + } + else + { + had_char_class = false; + BUF_PUSH(c); + laststart[5]++; /* Update the length of characters */ + range_start = c; + } + } + +#else /* BYTE */ + /* Ensure that we have enough space to push a charset: the + opcode, the length count, and the bitset; 34 bytes in all. */ + GET_BUFFER_SPACE (34); + + laststart = b; + + /* We test `*p == '^' twice, instead of using an if + statement, so we only need one BUF_PUSH. */ + BUF_PUSH (*p == '^' ? charset_not : charset); + if (*p == '^') + p++; + + /* Remember the first position in the bracket expression. */ + p1 = p; + + /* Push the number of bytes in the bitmap. */ + BUF_PUSH ((1 << BYTEWIDTH) / BYTEWIDTH); + + /* Clear the whole map. */ + bzero (b, (1 << BYTEWIDTH) / BYTEWIDTH); + + /* charset_not matches newline according to a syntax bit. */ + if ((re_opcode_t) b[-2] == charset_not + && (syntax & RE_HAT_LISTS_NOT_NEWLINE)) + SET_LIST_BIT ('\n'); + + /* Read in characters and ranges, setting map bits. */ + for (;;) + { + if (p == pend) FREE_STACK_RETURN (REG_EBRACK); + + PATFETCH (c); + + /* \ might escape characters inside [...] and [^...]. */ + if ((syntax & RE_BACKSLASH_ESCAPE_IN_LISTS) && c == '\\') + { + if (p == pend) FREE_STACK_RETURN (REG_EESCAPE); + + PATFETCH (c1); + SET_LIST_BIT (c1); + range_start = c1; + continue; + } + + /* Could be the end of the bracket expression. If it's + not (i.e., when the bracket expression is `[]' so + far), the ']' character bit gets set way below. */ + if (c == ']' && p != p1 + 1) + break; + + /* Look ahead to see if it's a range when the last thing + was a character class. */ + if (had_char_class && c == '-' && *p != ']') + FREE_STACK_RETURN (REG_ERANGE); + + /* Look ahead to see if it's a range when the last thing + was a character: if this is a hyphen not at the + beginning or the end of a list, then it's the range + operator. */ + if (c == '-' + && !(p - 2 >= pattern && p[-2] == '[') + && !(p - 3 >= pattern && p[-3] == '[' && p[-2] == '^') + && *p != ']') + { + reg_errcode_t ret + = byte_compile_range (range_start, &p, pend, translate, + syntax, b); + if (ret != REG_NOERROR) FREE_STACK_RETURN (ret); + range_start = 0xffffffff; + } + + else if (p[0] == '-' && p[1] != ']') + { /* This handles ranges made up of characters only. */ + reg_errcode_t ret; + + /* Move past the `-'. */ + PATFETCH (c1); + + ret = byte_compile_range (c, &p, pend, translate, syntax, b); + if (ret != REG_NOERROR) FREE_STACK_RETURN (ret); + range_start = 0xffffffff; + } + + /* See if we're at the beginning of a possible character + class. */ + + else if (syntax & RE_CHAR_CLASSES && c == '[' && *p == ':') + { /* Leave room for the null. */ + char str[CHAR_CLASS_MAX_LENGTH + 1]; + + PATFETCH (c); + c1 = 0; + + /* If pattern is `[[:'. */ + if (p == pend) FREE_STACK_RETURN (REG_EBRACK); + + for (;;) + { + PATFETCH (c); + if ((c == ':' && *p == ']') || p == pend) + break; + if (c1 < CHAR_CLASS_MAX_LENGTH) + str[c1++] = c; + else + /* This is in any case an invalid class name. */ + str[0] = '\0'; + } + str[c1] = '\0'; + + /* If isn't a word bracketed by `[:' and `:]': + undo the ending character, the letters, and leave + the leading `:' and `[' (but set bits for them). */ + if (c == ':' && *p == ']') + { +# if defined _LIBC || WIDE_CHAR_SUPPORT + boolean is_lower = STREQ (str, "lower"); + boolean is_upper = STREQ (str, "upper"); + wctype_t wt; + int ch; + + wt = IS_CHAR_CLASS (str); + if (wt == 0) + FREE_STACK_RETURN (REG_ECTYPE); + + /* Throw away the ] at the end of the character + class. */ + PATFETCH (c); + + if (p == pend) FREE_STACK_RETURN (REG_EBRACK); + + for (ch = 0; ch < 1 << BYTEWIDTH; ++ch) + { + if (iswctype (btowc (ch), wt)) + SET_LIST_BIT (ch); + + if (translate && (is_upper || is_lower) + && (ISUPPER (ch) || ISLOWER (ch))) + SET_LIST_BIT (ch); + } + + had_char_class = true; +# else + int ch; + boolean is_alnum = STREQ (str, "alnum"); + boolean is_alpha = STREQ (str, "alpha"); + boolean is_blank = STREQ (str, "blank"); + boolean is_cntrl = STREQ (str, "cntrl"); + boolean is_digit = STREQ (str, "digit"); + boolean is_graph = STREQ (str, "graph"); + boolean is_lower = STREQ (str, "lower"); + boolean is_print = STREQ (str, "print"); + boolean is_punct = STREQ (str, "punct"); + boolean is_space = STREQ (str, "space"); + boolean is_upper = STREQ (str, "upper"); + boolean is_xdigit = STREQ (str, "xdigit"); + + if (!IS_CHAR_CLASS (str)) + FREE_STACK_RETURN (REG_ECTYPE); + + /* Throw away the ] at the end of the character + class. */ + PATFETCH (c); + + if (p == pend) FREE_STACK_RETURN (REG_EBRACK); + + for (ch = 0; ch < 1 << BYTEWIDTH; ch++) + { + /* This was split into 3 if's to + avoid an arbitrary limit in some compiler. */ + if ( (is_alnum && ISALNUM (ch)) + || (is_alpha && ISALPHA (ch)) + || (is_blank && ISBLANK (ch)) + || (is_cntrl && ISCNTRL (ch))) + SET_LIST_BIT (ch); + if ( (is_digit && ISDIGIT (ch)) + || (is_graph && ISGRAPH (ch)) + || (is_lower && ISLOWER (ch)) + || (is_print && ISPRINT (ch))) + SET_LIST_BIT (ch); + if ( (is_punct && ISPUNCT (ch)) + || (is_space && ISSPACE (ch)) + || (is_upper && ISUPPER (ch)) + || (is_xdigit && ISXDIGIT (ch))) + SET_LIST_BIT (ch); + if ( translate && (is_upper || is_lower) + && (ISUPPER (ch) || ISLOWER (ch))) + SET_LIST_BIT (ch); + } + had_char_class = true; +# endif /* libc || wctype.h */ + } + else + { + c1++; + while (c1--) + PATUNFETCH; + SET_LIST_BIT ('['); + SET_LIST_BIT (':'); + range_start = ':'; + had_char_class = false; + } + } + else if (syntax & RE_CHAR_CLASSES && c == '[' && *p == '=') + { + unsigned char str[MB_LEN_MAX + 1]; +# ifdef _LIBC + uint32_t nrules = + _NL_CURRENT_WORD (LC_COLLATE, _NL_COLLATE_NRULES); +# endif + + PATFETCH (c); + c1 = 0; + + /* If pattern is `[[='. */ + if (p == pend) FREE_STACK_RETURN (REG_EBRACK); + + for (;;) + { + PATFETCH (c); + if ((c == '=' && *p == ']') || p == pend) + break; + if (c1 < MB_LEN_MAX) + str[c1++] = c; + else + /* This is in any case an invalid class name. */ + str[0] = '\0'; + } + str[c1] = '\0'; + + if (c == '=' && *p == ']' && str[0] != '\0') + { + /* If we have no collation data we use the default + collation in which each character is in a class + by itself. It also means that ASCII is the + character set and therefore we cannot have character + with more than one byte in the multibyte + representation. */ +# ifdef _LIBC + if (nrules == 0) +# endif + { + if (c1 != 1) + FREE_STACK_RETURN (REG_ECOLLATE); + + /* Throw away the ] at the end of the equivalence + class. */ + PATFETCH (c); + + /* Set the bit for the character. */ + SET_LIST_BIT (str[0]); + } +# ifdef _LIBC + else + { + /* Try to match the byte sequence in `str' against + those known to the collate implementation. + First find out whether the bytes in `str' are + actually from exactly one character. */ + const int32_t *table; + const unsigned char *weights; + const unsigned char *extra; + const int32_t *indirect; + int32_t idx; + const unsigned char *cp = str; + int ch; + + /* This #include defines a local function! */ +# include + + table = (const int32_t *) + _NL_CURRENT (LC_COLLATE, _NL_COLLATE_TABLEMB); + weights = (const unsigned char *) + _NL_CURRENT (LC_COLLATE, _NL_COLLATE_WEIGHTMB); + extra = (const unsigned char *) + _NL_CURRENT (LC_COLLATE, _NL_COLLATE_EXTRAMB); + indirect = (const int32_t *) + _NL_CURRENT (LC_COLLATE, _NL_COLLATE_INDIRECTMB); + + idx = findidx (&cp); + if (idx == 0 || cp < str + c1) + /* This is no valid character. */ + FREE_STACK_RETURN (REG_ECOLLATE); + + /* Throw away the ] at the end of the equivalence + class. */ + PATFETCH (c); + + /* Now we have to go throught the whole table + and find all characters which have the same + first level weight. + + XXX Note that this is not entirely correct. + we would have to match multibyte sequences + but this is not possible with the current + implementation. */ + for (ch = 1; ch < 256; ++ch) + /* XXX This test would have to be changed if we + would allow matching multibyte sequences. */ + if (table[ch] > 0) + { + int32_t idx2 = table[ch]; + size_t len = weights[idx2]; + + /* Test whether the lenghts match. */ + if (weights[idx] == len) + { + /* They do. New compare the bytes of + the weight. */ + size_t cnt = 0; + + while (cnt < len + && (weights[idx + 1 + cnt] + == weights[idx2 + 1 + cnt])) + ++cnt; + + if (cnt == len) + /* They match. Mark the character as + acceptable. */ + SET_LIST_BIT (ch); + } + } + } +# endif + had_char_class = true; + } + else + { + c1++; + while (c1--) + PATUNFETCH; + SET_LIST_BIT ('['); + SET_LIST_BIT ('='); + range_start = '='; + had_char_class = false; + } + } + else if (syntax & RE_CHAR_CLASSES && c == '[' && *p == '.') + { + unsigned char str[128]; /* Should be large enough. */ +# ifdef _LIBC + uint32_t nrules = + _NL_CURRENT_WORD (LC_COLLATE, _NL_COLLATE_NRULES); +# endif + + PATFETCH (c); + c1 = 0; + + /* If pattern is `[[.'. */ + if (p == pend) FREE_STACK_RETURN (REG_EBRACK); + + for (;;) + { + PATFETCH (c); + if ((c == '.' && *p == ']') || p == pend) + break; + if (c1 < sizeof (str)) + str[c1++] = c; + else + /* This is in any case an invalid class name. */ + str[0] = '\0'; + } + str[c1] = '\0'; + + if (c == '.' && *p == ']' && str[0] != '\0') + { + /* If we have no collation data we use the default + collation in which each character is the name + for its own class which contains only the one + character. It also means that ASCII is the + character set and therefore we cannot have character + with more than one byte in the multibyte + representation. */ +# ifdef _LIBC + if (nrules == 0) +# endif + { + if (c1 != 1) + FREE_STACK_RETURN (REG_ECOLLATE); + + /* Throw away the ] at the end of the equivalence + class. */ + PATFETCH (c); + + /* Set the bit for the character. */ + SET_LIST_BIT (str[0]); + range_start = ((const unsigned char *) str)[0]; + } +# ifdef _LIBC + else + { + /* Try to match the byte sequence in `str' against + those known to the collate implementation. + First find out whether the bytes in `str' are + actually from exactly one character. */ + int32_t table_size; + const int32_t *symb_table; + const unsigned char *extra; + int32_t idx; + int32_t elem; + int32_t second; + int32_t hash; + + table_size = + _NL_CURRENT_WORD (LC_COLLATE, + _NL_COLLATE_SYMB_HASH_SIZEMB); + symb_table = (const int32_t *) + _NL_CURRENT (LC_COLLATE, + _NL_COLLATE_SYMB_TABLEMB); + extra = (const unsigned char *) + _NL_CURRENT (LC_COLLATE, + _NL_COLLATE_SYMB_EXTRAMB); + + /* Locate the character in the hashing table. */ + hash = elem_hash (str, c1); + + idx = 0; + elem = hash % table_size; + second = hash % (table_size - 2); + while (symb_table[2 * elem] != 0) + { + /* First compare the hashing value. */ + if (symb_table[2 * elem] == hash + && c1 == extra[symb_table[2 * elem + 1]] + && memcmp (str, + &extra[symb_table[2 * elem + 1] + + 1], + c1) == 0) + { + /* Yep, this is the entry. */ + idx = symb_table[2 * elem + 1]; + idx += 1 + extra[idx]; + break; + } + + /* Next entry. */ + elem += second; + } + + if (symb_table[2 * elem] == 0) + /* This is no valid character. */ + FREE_STACK_RETURN (REG_ECOLLATE); + + /* Throw away the ] at the end of the equivalence + class. */ + PATFETCH (c); + + /* Now add the multibyte character(s) we found + to the accept list. + + XXX Note that this is not entirely correct. + we would have to match multibyte sequences + but this is not possible with the current + implementation. Also, we have to match + collating symbols, which expand to more than + one file, as a whole and not allow the + individual bytes. */ + c1 = extra[idx++]; + if (c1 == 1) + range_start = extra[idx]; + while (c1-- > 0) + { + SET_LIST_BIT (extra[idx]); + ++idx; + } + } +# endif + had_char_class = false; + } + else + { + c1++; + while (c1--) + PATUNFETCH; + SET_LIST_BIT ('['); + SET_LIST_BIT ('.'); + range_start = '.'; + had_char_class = false; + } + } + else + { + had_char_class = false; + SET_LIST_BIT (c); + range_start = c; + } + } + + /* Discard any (non)matching list bytes that are all 0 at the + end of the map. Decrease the map-length byte too. */ + while ((int) b[-1] > 0 && b[b[-1] - 1] == 0) + b[-1]--; + b += b[-1]; +#endif /* WCHAR */ + } + break; + + + case '(': + if (syntax & RE_NO_BK_PARENS) + goto handle_open; + else + goto normal_char; + + + case ')': + if (syntax & RE_NO_BK_PARENS) + goto handle_close; + else + goto normal_char; + + + case '\n': + if (syntax & RE_NEWLINE_ALT) + goto handle_alt; + else + goto normal_char; + + + case '|': + if (syntax & RE_NO_BK_VBAR) + goto handle_alt; + else + goto normal_char; + + + case '{': + if (syntax & RE_INTERVALS && syntax & RE_NO_BK_BRACES) + goto handle_interval; + else + goto normal_char; + + + case '\\': + if (p == pend) FREE_STACK_RETURN (REG_EESCAPE); + + /* Do not translate the character after the \, so that we can + distinguish, e.g., \B from \b, even if we normally would + translate, e.g., B to b. */ + PATFETCH_RAW (c); + + switch (c) + { + case '(': + if (syntax & RE_NO_BK_PARENS) + goto normal_backslash; + + handle_open: + bufp->re_nsub++; + regnum++; + + if (COMPILE_STACK_FULL) + { + RETALLOC (compile_stack.stack, compile_stack.size << 1, + compile_stack_elt_t); + if (compile_stack.stack == NULL) return REG_ESPACE; + + compile_stack.size <<= 1; + } + + /* These are the values to restore when we hit end of this + group. They are all relative offsets, so that if the + whole pattern moves because of realloc, they will still + be valid. */ + COMPILE_STACK_TOP.begalt_offset = begalt - COMPILED_BUFFER_VAR; + COMPILE_STACK_TOP.fixup_alt_jump + = fixup_alt_jump ? fixup_alt_jump - COMPILED_BUFFER_VAR + 1 : 0; + COMPILE_STACK_TOP.laststart_offset = b - COMPILED_BUFFER_VAR; + COMPILE_STACK_TOP.regnum = regnum; + + /* We will eventually replace the 0 with the number of + groups inner to this one. But do not push a + start_memory for groups beyond the last one we can + represent in the compiled pattern. */ + if (regnum <= MAX_REGNUM) + { + COMPILE_STACK_TOP.inner_group_offset = b + - COMPILED_BUFFER_VAR + 2; + BUF_PUSH_3 (start_memory, regnum, 0); + } + + compile_stack.avail++; + + fixup_alt_jump = 0; + laststart = 0; + begalt = b; + /* If we've reached MAX_REGNUM groups, then this open + won't actually generate any code, so we'll have to + clear pending_exact explicitly. */ + pending_exact = 0; + break; + + + case ')': + if (syntax & RE_NO_BK_PARENS) goto normal_backslash; + + if (COMPILE_STACK_EMPTY) + { + if (syntax & RE_UNMATCHED_RIGHT_PAREN_ORD) + goto normal_backslash; + else + FREE_STACK_RETURN (REG_ERPAREN); + } + + handle_close: + if (fixup_alt_jump) + { /* Push a dummy failure point at the end of the + alternative for a possible future + `pop_failure_jump' to pop. See comments at + `push_dummy_failure' in `re_match_2'. */ + BUF_PUSH (push_dummy_failure); + + /* We allocated space for this jump when we assigned + to `fixup_alt_jump', in the `handle_alt' case below. */ + STORE_JUMP (jump_past_alt, fixup_alt_jump, b - 1); + } + + /* See similar code for backslashed left paren above. */ + if (COMPILE_STACK_EMPTY) + { + if (syntax & RE_UNMATCHED_RIGHT_PAREN_ORD) + goto normal_char; + else + FREE_STACK_RETURN (REG_ERPAREN); + } + + /* Since we just checked for an empty stack above, this + ``can't happen''. */ + assert (compile_stack.avail != 0); + { + /* We don't just want to restore into `regnum', because + later groups should continue to be numbered higher, + as in `(ab)c(de)' -- the second group is #2. */ + regnum_t this_group_regnum; + + compile_stack.avail--; + begalt = COMPILED_BUFFER_VAR + COMPILE_STACK_TOP.begalt_offset; + fixup_alt_jump + = COMPILE_STACK_TOP.fixup_alt_jump + ? COMPILED_BUFFER_VAR + COMPILE_STACK_TOP.fixup_alt_jump - 1 + : 0; + laststart = COMPILED_BUFFER_VAR + COMPILE_STACK_TOP.laststart_offset; + this_group_regnum = COMPILE_STACK_TOP.regnum; + /* If we've reached MAX_REGNUM groups, then this open + won't actually generate any code, so we'll have to + clear pending_exact explicitly. */ + pending_exact = 0; + + /* We're at the end of the group, so now we know how many + groups were inside this one. */ + if (this_group_regnum <= MAX_REGNUM) + { + UCHAR_T *inner_group_loc + = COMPILED_BUFFER_VAR + COMPILE_STACK_TOP.inner_group_offset; + + *inner_group_loc = regnum - this_group_regnum; + BUF_PUSH_3 (stop_memory, this_group_regnum, + regnum - this_group_regnum); + } + } + break; + + + case '|': /* `\|'. */ + if (syntax & RE_LIMITED_OPS || syntax & RE_NO_BK_VBAR) + goto normal_backslash; + handle_alt: + if (syntax & RE_LIMITED_OPS) + goto normal_char; + + /* Insert before the previous alternative a jump which + jumps to this alternative if the former fails. */ + GET_BUFFER_SPACE (1 + OFFSET_ADDRESS_SIZE); + INSERT_JUMP (on_failure_jump, begalt, + b + 2 + 2 * OFFSET_ADDRESS_SIZE); + pending_exact = 0; + b += 1 + OFFSET_ADDRESS_SIZE; + + /* The alternative before this one has a jump after it + which gets executed if it gets matched. Adjust that + jump so it will jump to this alternative's analogous + jump (put in below, which in turn will jump to the next + (if any) alternative's such jump, etc.). The last such + jump jumps to the correct final destination. A picture: + _____ _____ + | | | | + | v | v + a | b | c + + If we are at `b', then fixup_alt_jump right now points to a + three-byte space after `a'. We'll put in the jump, set + fixup_alt_jump to right after `b', and leave behind three + bytes which we'll fill in when we get to after `c'. */ + + if (fixup_alt_jump) + STORE_JUMP (jump_past_alt, fixup_alt_jump, b); + + /* Mark and leave space for a jump after this alternative, + to be filled in later either by next alternative or + when know we're at the end of a series of alternatives. */ + fixup_alt_jump = b; + GET_BUFFER_SPACE (1 + OFFSET_ADDRESS_SIZE); + b += 1 + OFFSET_ADDRESS_SIZE; + + laststart = 0; + begalt = b; + break; + + + case '{': + /* If \{ is a literal. */ + if (!(syntax & RE_INTERVALS) + /* If we're at `\{' and it's not the open-interval + operator. */ + || (syntax & RE_NO_BK_BRACES)) + goto normal_backslash; + + handle_interval: + { + /* If got here, then the syntax allows intervals. */ + + /* At least (most) this many matches must be made. */ + int lower_bound = -1, upper_bound = -1; + + /* Place in the uncompiled pattern (i.e., just after + the '{') to go back to if the interval is invalid. */ + const CHAR_T *beg_interval = p; + + if (p == pend) + goto invalid_interval; + + GET_UNSIGNED_NUMBER (lower_bound); + + if (c == ',') + { + GET_UNSIGNED_NUMBER (upper_bound); + if (upper_bound < 0) + upper_bound = RE_DUP_MAX; + } + else + /* Interval such as `{1}' => match exactly once. */ + upper_bound = lower_bound; + + if (! (0 <= lower_bound && lower_bound <= upper_bound)) + goto invalid_interval; + + if (!(syntax & RE_NO_BK_BRACES)) + { + if (c != '\\' || p == pend) + goto invalid_interval; + PATFETCH (c); + } + + if (c != '}') + goto invalid_interval; + + /* If it's invalid to have no preceding re. */ + if (!laststart) + { + if (syntax & RE_CONTEXT_INVALID_OPS + && !(syntax & RE_INVALID_INTERVAL_ORD)) + FREE_STACK_RETURN (REG_BADRPT); + else if (syntax & RE_CONTEXT_INDEP_OPS) + laststart = b; + else + goto unfetch_interval; + } + + /* We just parsed a valid interval. */ + + if (RE_DUP_MAX < upper_bound) + FREE_STACK_RETURN (REG_BADBR); + + /* If the upper bound is zero, don't want to succeed at + all; jump from `laststart' to `b + 3', which will be + the end of the buffer after we insert the jump. */ + /* ifdef WCHAR, 'b + 1 + OFFSET_ADDRESS_SIZE' + instead of 'b + 3'. */ + if (upper_bound == 0) + { + GET_BUFFER_SPACE (1 + OFFSET_ADDRESS_SIZE); + INSERT_JUMP (jump, laststart, b + 1 + + OFFSET_ADDRESS_SIZE); + b += 1 + OFFSET_ADDRESS_SIZE; + } + + /* Otherwise, we have a nontrivial interval. When + we're all done, the pattern will look like: + set_number_at + set_number_at + succeed_n + + jump_n + (The upper bound and `jump_n' are omitted if + `upper_bound' is 1, though.) */ + else + { /* If the upper bound is > 1, we need to insert + more at the end of the loop. */ + unsigned nbytes = 2 + 4 * OFFSET_ADDRESS_SIZE + + (upper_bound > 1) * (2 + 4 * OFFSET_ADDRESS_SIZE); + + GET_BUFFER_SPACE (nbytes); + + /* Initialize lower bound of the `succeed_n', even + though it will be set during matching by its + attendant `set_number_at' (inserted next), + because `re_compile_fastmap' needs to know. + Jump to the `jump_n' we might insert below. */ + INSERT_JUMP2 (succeed_n, laststart, + b + 1 + 2 * OFFSET_ADDRESS_SIZE + + (upper_bound > 1) * (1 + 2 * OFFSET_ADDRESS_SIZE) + , lower_bound); + b += 1 + 2 * OFFSET_ADDRESS_SIZE; + + /* Code to initialize the lower bound. Insert + before the `succeed_n'. The `5' is the last two + bytes of this `set_number_at', plus 3 bytes of + the following `succeed_n'. */ + /* ifdef WCHAR, The '1+2*OFFSET_ADDRESS_SIZE' + is the 'set_number_at', plus '1+OFFSET_ADDRESS_SIZE' + of the following `succeed_n'. */ + PREFIX(insert_op2) (set_number_at, laststart, 1 + + 2 * OFFSET_ADDRESS_SIZE, lower_bound, b); + b += 1 + 2 * OFFSET_ADDRESS_SIZE; + + if (upper_bound > 1) + { /* More than one repetition is allowed, so + append a backward jump to the `succeed_n' + that starts this interval. + + When we've reached this during matching, + we'll have matched the interval once, so + jump back only `upper_bound - 1' times. */ + STORE_JUMP2 (jump_n, b, laststart + + 2 * OFFSET_ADDRESS_SIZE + 1, + upper_bound - 1); + b += 1 + 2 * OFFSET_ADDRESS_SIZE; + + /* The location we want to set is the second + parameter of the `jump_n'; that is `b-2' as + an absolute address. `laststart' will be + the `set_number_at' we're about to insert; + `laststart+3' the number to set, the source + for the relative address. But we are + inserting into the middle of the pattern -- + so everything is getting moved up by 5. + Conclusion: (b - 2) - (laststart + 3) + 5, + i.e., b - laststart. + + We insert this at the beginning of the loop + so that if we fail during matching, we'll + reinitialize the bounds. */ + PREFIX(insert_op2) (set_number_at, laststart, + b - laststart, + upper_bound - 1, b); + b += 1 + 2 * OFFSET_ADDRESS_SIZE; + } + } + pending_exact = 0; + break; + + invalid_interval: + if (!(syntax & RE_INVALID_INTERVAL_ORD)) + FREE_STACK_RETURN (p == pend ? REG_EBRACE : REG_BADBR); + unfetch_interval: + /* Match the characters as literals. */ + p = beg_interval; + c = '{'; + if (syntax & RE_NO_BK_BRACES) + goto normal_char; + else + goto normal_backslash; + } + +#ifdef emacs + /* There is no way to specify the before_dot and after_dot + operators. rms says this is ok. --karl */ + case '=': + BUF_PUSH (at_dot); + break; + + case 's': + laststart = b; + PATFETCH (c); + BUF_PUSH_2 (syntaxspec, syntax_spec_code[c]); + break; + + case 'S': + laststart = b; + PATFETCH (c); + BUF_PUSH_2 (notsyntaxspec, syntax_spec_code[c]); + break; +#endif /* emacs */ + + + case 'w': + if (syntax & RE_NO_GNU_OPS) + goto normal_char; + laststart = b; + BUF_PUSH (wordchar); + break; + + + case 'W': + if (syntax & RE_NO_GNU_OPS) + goto normal_char; + laststart = b; + BUF_PUSH (notwordchar); + break; + + + case '<': + if (syntax & RE_NO_GNU_OPS) + goto normal_char; + BUF_PUSH (wordbeg); + break; + + case '>': + if (syntax & RE_NO_GNU_OPS) + goto normal_char; + BUF_PUSH (wordend); + break; + + case 'b': + if (syntax & RE_NO_GNU_OPS) + goto normal_char; + BUF_PUSH (wordbound); + break; + + case 'B': + if (syntax & RE_NO_GNU_OPS) + goto normal_char; + BUF_PUSH (notwordbound); + break; + + case '`': + if (syntax & RE_NO_GNU_OPS) + goto normal_char; + BUF_PUSH (begbuf); + break; + + case '\'': + if (syntax & RE_NO_GNU_OPS) + goto normal_char; + BUF_PUSH (endbuf); + break; + + case '1': case '2': case '3': case '4': case '5': + case '6': case '7': case '8': case '9': + if (syntax & RE_NO_BK_REFS) + goto normal_char; + + c1 = c - '0'; + + if (c1 > regnum) + FREE_STACK_RETURN (REG_ESUBREG); + + /* Can't back reference to a subexpression if inside of it. */ + if (group_in_compile_stack (compile_stack, (regnum_t) c1)) + goto normal_char; + + laststart = b; + BUF_PUSH_2 (duplicate, c1); + break; + + + case '+': + case '?': + if (syntax & RE_BK_PLUS_QM) + goto handle_plus; + else + goto normal_backslash; + + default: + normal_backslash: + /* You might think it would be useful for \ to mean + not to translate; but if we don't translate it + it will never match anything. */ + c = TRANSLATE (c); + goto normal_char; + } + break; + + + default: + /* Expects the character in `c'. */ + normal_char: + /* If no exactn currently being built. */ + if (!pending_exact +#ifdef WCHAR + /* If last exactn handle binary(or character) and + new exactn handle character(or binary). */ + || is_exactn_bin != is_binary[p - 1 - pattern] +#endif /* WCHAR */ + + /* If last exactn not at current position. */ + || pending_exact + *pending_exact + 1 != b + + /* We have only one byte following the exactn for the count. */ + || *pending_exact == (1 << BYTEWIDTH) - 1 + + /* If followed by a repetition operator. */ + || *p == '*' || *p == '^' + || ((syntax & RE_BK_PLUS_QM) + ? *p == '\\' && (p[1] == '+' || p[1] == '?') + : (*p == '+' || *p == '?')) + || ((syntax & RE_INTERVALS) + && ((syntax & RE_NO_BK_BRACES) + ? *p == '{' + : (p[0] == '\\' && p[1] == '{')))) + { + /* Start building a new exactn. */ + + laststart = b; + +#ifdef WCHAR + /* Is this exactn binary data or character? */ + is_exactn_bin = is_binary[p - 1 - pattern]; + if (is_exactn_bin) + BUF_PUSH_2 (exactn_bin, 0); + else + BUF_PUSH_2 (exactn, 0); +#else + BUF_PUSH_2 (exactn, 0); +#endif /* WCHAR */ + pending_exact = b - 1; + } + + BUF_PUSH (c); + (*pending_exact)++; + break; + } /* switch (c) */ + } /* while p != pend */ + + + /* Through the pattern now. */ + + if (fixup_alt_jump) + STORE_JUMP (jump_past_alt, fixup_alt_jump, b); + + if (!COMPILE_STACK_EMPTY) + FREE_STACK_RETURN (REG_EPAREN); + + /* If we don't want backtracking, force success + the first time we reach the end of the compiled pattern. */ + if (syntax & RE_NO_POSIX_BACKTRACKING) + BUF_PUSH (succeed); + +#ifdef WCHAR + free (pattern); + free (mbs_offset); + free (is_binary); +#endif + free (compile_stack.stack); + + /* We have succeeded; set the length of the buffer. */ +#ifdef WCHAR + bufp->used = (uintptr_t) b - (uintptr_t) COMPILED_BUFFER_VAR; +#else + bufp->used = b - bufp->buffer; +#endif + +#ifdef DEBUG + if (debug) + { + DEBUG_PRINT1 ("\nCompiled pattern: \n"); + PREFIX(print_compiled_pattern) (bufp); + } +#endif /* DEBUG */ + +#ifndef MATCH_MAY_ALLOCATE + /* Initialize the failure stack to the largest possible stack. This + isn't necessary unless we're trying to avoid calling alloca in + the search and match routines. */ + { + int num_regs = bufp->re_nsub + 1; + + /* Since DOUBLE_FAIL_STACK refuses to double only if the current size + is strictly greater than re_max_failures, the largest possible stack + is 2 * re_max_failures failure points. */ + if (fail_stack.size < (2 * re_max_failures * MAX_FAILURE_ITEMS)) + { + fail_stack.size = (2 * re_max_failures * MAX_FAILURE_ITEMS); + +# ifdef emacs + if (! fail_stack.stack) + fail_stack.stack + = (PREFIX(fail_stack_elt_t) *) xmalloc (fail_stack.size + * sizeof (PREFIX(fail_stack_elt_t))); + else + fail_stack.stack + = (PREFIX(fail_stack_elt_t) *) xrealloc (fail_stack.stack, + (fail_stack.size + * sizeof (PREFIX(fail_stack_elt_t)))); +# else /* not emacs */ + if (! fail_stack.stack) + fail_stack.stack + = (PREFIX(fail_stack_elt_t) *) malloc (fail_stack.size + * sizeof (PREFIX(fail_stack_elt_t))); + else + fail_stack.stack + = (PREFIX(fail_stack_elt_t) *) realloc (fail_stack.stack, + (fail_stack.size + * sizeof (PREFIX(fail_stack_elt_t)))); +# endif /* not emacs */ + } + + PREFIX(regex_grow_registers) (num_regs); + } +#endif /* not MATCH_MAY_ALLOCATE */ + + return REG_NOERROR; +} /* regex_compile */ + +/* Subroutines for `regex_compile'. */ + +/* Store OP at LOC followed by two-byte integer parameter ARG. */ +/* ifdef WCHAR, integer parameter is 1 wchar_t. */ + +static void +PREFIX(store_op1) (op, loc, arg) + re_opcode_t op; + UCHAR_T *loc; + int arg; +{ + *loc = (UCHAR_T) op; + STORE_NUMBER (loc + 1, arg); +} + + +/* Like `store_op1', but for two two-byte parameters ARG1 and ARG2. */ +/* ifdef WCHAR, integer parameter is 1 wchar_t. */ + +static void +PREFIX(store_op2) (op, loc, arg1, arg2) + re_opcode_t op; + UCHAR_T *loc; + int arg1, arg2; +{ + *loc = (UCHAR_T) op; + STORE_NUMBER (loc + 1, arg1); + STORE_NUMBER (loc + 1 + OFFSET_ADDRESS_SIZE, arg2); +} + + +/* Copy the bytes from LOC to END to open up three bytes of space at LOC + for OP followed by two-byte integer parameter ARG. */ +/* ifdef WCHAR, integer parameter is 1 wchar_t. */ + +static void +PREFIX(insert_op1) (op, loc, arg, end) + re_opcode_t op; + UCHAR_T *loc; + int arg; + UCHAR_T *end; +{ + register UCHAR_T *pfrom = end; + register UCHAR_T *pto = end + 1 + OFFSET_ADDRESS_SIZE; + + while (pfrom != loc) + *--pto = *--pfrom; + + PREFIX(store_op1) (op, loc, arg); +} + + +/* Like `insert_op1', but for two two-byte parameters ARG1 and ARG2. */ +/* ifdef WCHAR, integer parameter is 1 wchar_t. */ + +static void +PREFIX(insert_op2) (op, loc, arg1, arg2, end) + re_opcode_t op; + UCHAR_T *loc; + int arg1, arg2; + UCHAR_T *end; +{ + register UCHAR_T *pfrom = end; + register UCHAR_T *pto = end + 1 + 2 * OFFSET_ADDRESS_SIZE; + + while (pfrom != loc) + *--pto = *--pfrom; + + PREFIX(store_op2) (op, loc, arg1, arg2); +} + + +/* P points to just after a ^ in PATTERN. Return true if that ^ comes + after an alternative or a begin-subexpression. We assume there is at + least one character before the ^. */ + +static boolean +PREFIX(at_begline_loc_p) (pattern, p, syntax) + const CHAR_T *pattern, *p; + reg_syntax_t syntax; +{ + const CHAR_T *prev = p - 2; + boolean prev_prev_backslash = prev > pattern && prev[-1] == '\\'; + + return + /* After a subexpression? */ + (*prev == '(' && (syntax & RE_NO_BK_PARENS || prev_prev_backslash)) + /* After an alternative? */ + || (*prev == '|' && (syntax & RE_NO_BK_VBAR || prev_prev_backslash)); +} + + +/* The dual of at_begline_loc_p. This one is for $. We assume there is + at least one character after the $, i.e., `P < PEND'. */ + +static boolean +PREFIX(at_endline_loc_p) (p, pend, syntax) + const CHAR_T *p, *pend; + reg_syntax_t syntax; +{ + const CHAR_T *next = p; + boolean next_backslash = *next == '\\'; + const CHAR_T *next_next = p + 1 < pend ? p + 1 : 0; + + return + /* Before a subexpression? */ + (syntax & RE_NO_BK_PARENS ? *next == ')' + : next_backslash && next_next && *next_next == ')') + /* Before an alternative? */ + || (syntax & RE_NO_BK_VBAR ? *next == '|' + : next_backslash && next_next && *next_next == '|'); +} + +#else /* not INSIDE_RECURSION */ + +/* Returns true if REGNUM is in one of COMPILE_STACK's elements and + false if it's not. */ + +static boolean +group_in_compile_stack (compile_stack, regnum) + compile_stack_type compile_stack; + regnum_t regnum; +{ + int this_element; + + for (this_element = compile_stack.avail - 1; + this_element >= 0; + this_element--) + if (compile_stack.stack[this_element].regnum == regnum) + return true; + + return false; +} +#endif /* not INSIDE_RECURSION */ + +#ifdef INSIDE_RECURSION + +#ifdef WCHAR +/* This insert space, which size is "num", into the pattern at "loc". + "end" must point the end of the allocated buffer. */ +static void +insert_space (num, loc, end) + int num; + CHAR_T *loc; + CHAR_T *end; +{ + register CHAR_T *pto = end; + register CHAR_T *pfrom = end - num; + + while (pfrom >= loc) + *pto-- = *pfrom--; +} +#endif /* WCHAR */ + +#ifdef WCHAR +static reg_errcode_t +wcs_compile_range (range_start_char, p_ptr, pend, translate, syntax, b, + char_set) + CHAR_T range_start_char; + const CHAR_T **p_ptr, *pend; + CHAR_T *char_set, *b; + RE_TRANSLATE_TYPE translate; + reg_syntax_t syntax; +{ + const CHAR_T *p = *p_ptr; + CHAR_T range_start, range_end; + reg_errcode_t ret; +# ifdef _LIBC + uint32_t nrules; + uint32_t start_val, end_val; +# endif + if (p == pend) + return REG_ERANGE; + +# ifdef _LIBC + nrules = _NL_CURRENT_WORD (LC_COLLATE, _NL_COLLATE_NRULES); + if (nrules != 0) + { + const char *collseq = (const char *) _NL_CURRENT(LC_COLLATE, + _NL_COLLATE_COLLSEQWC); + const unsigned char *extra = (const unsigned char *) + _NL_CURRENT (LC_COLLATE, _NL_COLLATE_SYMB_EXTRAMB); + + if (range_start_char < -1) + { + /* range_start is a collating symbol. */ + int32_t *wextra; + /* Retreive the index and get collation sequence value. */ + wextra = (int32_t*)(extra + char_set[-range_start_char]); + start_val = wextra[1 + *wextra]; + } + else + start_val = collseq_table_lookup(collseq, TRANSLATE(range_start_char)); + + end_val = collseq_table_lookup (collseq, TRANSLATE (p[0])); + + /* Report an error if the range is empty and the syntax prohibits + this. */ + ret = ((syntax & RE_NO_EMPTY_RANGES) + && (start_val > end_val))? REG_ERANGE : REG_NOERROR; + + /* Insert space to the end of the char_ranges. */ + insert_space(2, b - char_set[5] - 2, b - 1); + *(b - char_set[5] - 2) = (wchar_t)start_val; + *(b - char_set[5] - 1) = (wchar_t)end_val; + char_set[4]++; /* ranges_index */ + } + else +# endif + { + range_start = (range_start_char >= 0)? TRANSLATE (range_start_char): + range_start_char; + range_end = TRANSLATE (p[0]); + /* Report an error if the range is empty and the syntax prohibits + this. */ + ret = ((syntax & RE_NO_EMPTY_RANGES) + && (range_start > range_end))? REG_ERANGE : REG_NOERROR; + + /* Insert space to the end of the char_ranges. */ + insert_space(2, b - char_set[5] - 2, b - 1); + *(b - char_set[5] - 2) = range_start; + *(b - char_set[5] - 1) = range_end; + char_set[4]++; /* ranges_index */ + } + /* Have to increment the pointer into the pattern string, so the + caller isn't still at the ending character. */ + (*p_ptr)++; + + return ret; +} +#else /* BYTE */ +/* Read the ending character of a range (in a bracket expression) from the + uncompiled pattern *P_PTR (which ends at PEND). We assume the + starting character is in `P[-2]'. (`P[-1]' is the character `-'.) + Then we set the translation of all bits between the starting and + ending characters (inclusive) in the compiled pattern B. + + Return an error code. + + We use these short variable names so we can use the same macros as + `regex_compile' itself. */ + +static reg_errcode_t +byte_compile_range (range_start_char, p_ptr, pend, translate, syntax, b) + unsigned int range_start_char; + const char **p_ptr, *pend; + RE_TRANSLATE_TYPE translate; + reg_syntax_t syntax; + unsigned char *b; +{ + unsigned this_char; + const char *p = *p_ptr; + reg_errcode_t ret; +# if _LIBC + const unsigned char *collseq; + unsigned int start_colseq; + unsigned int end_colseq; +# else + unsigned end_char; +# endif + + if (p == pend) + return REG_ERANGE; + + /* Have to increment the pointer into the pattern string, so the + caller isn't still at the ending character. */ + (*p_ptr)++; + + /* Report an error if the range is empty and the syntax prohibits this. */ + ret = syntax & RE_NO_EMPTY_RANGES ? REG_ERANGE : REG_NOERROR; + +# if _LIBC + collseq = (const unsigned char *) _NL_CURRENT (LC_COLLATE, + _NL_COLLATE_COLLSEQMB); + + start_colseq = collseq[(unsigned char) TRANSLATE (range_start_char)]; + end_colseq = collseq[(unsigned char) TRANSLATE (p[0])]; + for (this_char = 0; this_char <= (unsigned char) -1; ++this_char) + { + unsigned int this_colseq = collseq[(unsigned char) TRANSLATE (this_char)]; + + if (start_colseq <= this_colseq && this_colseq <= end_colseq) + { + SET_LIST_BIT (TRANSLATE (this_char)); + ret = REG_NOERROR; + } + } +# else + /* Here we see why `this_char' has to be larger than an `unsigned + char' -- we would otherwise go into an infinite loop, since all + characters <= 0xff. */ + range_start_char = TRANSLATE (range_start_char); + /* TRANSLATE(p[0]) is casted to char (not unsigned char) in TRANSLATE, + and some compilers cast it to int implicitly, so following for_loop + may fall to (almost) infinite loop. + e.g. If translate[p[0]] = 0xff, end_char may equals to 0xffffffff. + To avoid this, we cast p[0] to unsigned int and truncate it. */ + end_char = ((unsigned)TRANSLATE(p[0]) & ((1 << BYTEWIDTH) - 1)); + + for (this_char = range_start_char; this_char <= end_char; ++this_char) + { + SET_LIST_BIT (TRANSLATE (this_char)); + ret = REG_NOERROR; + } +# endif + + return ret; +} +#endif /* WCHAR */ + +/* re_compile_fastmap computes a ``fastmap'' for the compiled pattern in + BUFP. A fastmap records which of the (1 << BYTEWIDTH) possible + characters can start a string that matches the pattern. This fastmap + is used by re_search to skip quickly over impossible starting points. + + The caller must supply the address of a (1 << BYTEWIDTH)-byte data + area as BUFP->fastmap. + + We set the `fastmap', `fastmap_accurate', and `can_be_null' fields in + the pattern buffer. + + Returns 0 if we succeed, -2 if an internal error. */ + +#ifdef WCHAR +/* local function for re_compile_fastmap. + truncate wchar_t character to char. */ +static unsigned char truncate_wchar (CHAR_T c); + +static unsigned char +truncate_wchar (c) + CHAR_T c; +{ + unsigned char buf[MB_CUR_MAX]; + mbstate_t state; + int retval; + memset (&state, '\0', sizeof (state)); + retval = wcrtomb (buf, c, &state); + return retval > 0 ? buf[0] : (unsigned char) c; +} +#endif /* WCHAR */ + +static int +PREFIX(re_compile_fastmap) (bufp) + struct re_pattern_buffer *bufp; +{ + int j, k; +#ifdef MATCH_MAY_ALLOCATE + PREFIX(fail_stack_type) fail_stack; +#endif +#ifndef REGEX_MALLOC + char *destination; +#endif + + register char *fastmap = bufp->fastmap; + +#ifdef WCHAR + /* We need to cast pattern to (wchar_t*), because we casted this compiled + pattern to (char*) in regex_compile. */ + UCHAR_T *pattern = (UCHAR_T*)bufp->buffer; + register UCHAR_T *pend = (UCHAR_T*) (bufp->buffer + bufp->used); +#else /* BYTE */ + UCHAR_T *pattern = bufp->buffer; + register UCHAR_T *pend = pattern + bufp->used; +#endif /* WCHAR */ + UCHAR_T *p = pattern; + +#ifdef REL_ALLOC + /* This holds the pointer to the failure stack, when + it is allocated relocatably. */ + fail_stack_elt_t *failure_stack_ptr; +#endif + + /* Assume that each path through the pattern can be null until + proven otherwise. We set this false at the bottom of switch + statement, to which we get only if a particular path doesn't + match the empty string. */ + boolean path_can_be_null = true; + + /* We aren't doing a `succeed_n' to begin with. */ + boolean succeed_n_p = false; + + assert (fastmap != NULL && p != NULL); + + INIT_FAIL_STACK (); + bzero (fastmap, 1 << BYTEWIDTH); /* Assume nothing's valid. */ + bufp->fastmap_accurate = 1; /* It will be when we're done. */ + bufp->can_be_null = 0; + + while (1) + { + if (p == pend || *p == succeed) + { + /* We have reached the (effective) end of pattern. */ + if (!FAIL_STACK_EMPTY ()) + { + bufp->can_be_null |= path_can_be_null; + + /* Reset for next path. */ + path_can_be_null = true; + + p = fail_stack.stack[--fail_stack.avail].pointer; + + continue; + } + else + break; + } + + /* We should never be about to go beyond the end of the pattern. */ + assert (p < pend); + + switch (SWITCH_ENUM_CAST ((re_opcode_t) *p++)) + { + + /* I guess the idea here is to simply not bother with a fastmap + if a backreference is used, since it's too hard to figure out + the fastmap for the corresponding group. Setting + `can_be_null' stops `re_search_2' from using the fastmap, so + that is all we do. */ + case duplicate: + bufp->can_be_null = 1; + goto done; + + + /* Following are the cases which match a character. These end + with `break'. */ + +#ifdef WCHAR + case exactn: + fastmap[truncate_wchar(p[1])] = 1; + break; +#else /* BYTE */ + case exactn: + fastmap[p[1]] = 1; + break; +#endif /* WCHAR */ +#ifdef MBS_SUPPORT + case exactn_bin: + fastmap[p[1]] = 1; + break; +#endif + +#ifdef WCHAR + /* It is hard to distinguish fastmap from (multi byte) characters + which depends on current locale. */ + case charset: + case charset_not: + case wordchar: + case notwordchar: + bufp->can_be_null = 1; + goto done; +#else /* BYTE */ + case charset: + for (j = *p++ * BYTEWIDTH - 1; j >= 0; j--) + if (p[j / BYTEWIDTH] & (1 << (j % BYTEWIDTH))) + fastmap[j] = 1; + break; + + + case charset_not: + /* Chars beyond end of map must be allowed. */ + for (j = *p * BYTEWIDTH; j < (1 << BYTEWIDTH); j++) + fastmap[j] = 1; + + for (j = *p++ * BYTEWIDTH - 1; j >= 0; j--) + if (!(p[j / BYTEWIDTH] & (1 << (j % BYTEWIDTH)))) + fastmap[j] = 1; + break; + + + case wordchar: + for (j = 0; j < (1 << BYTEWIDTH); j++) + if (SYNTAX (j) == Sword) + fastmap[j] = 1; + break; + + + case notwordchar: + for (j = 0; j < (1 << BYTEWIDTH); j++) + if (SYNTAX (j) != Sword) + fastmap[j] = 1; + break; +#endif /* WCHAR */ + + case anychar: + { + int fastmap_newline = fastmap['\n']; + + /* `.' matches anything ... */ + for (j = 0; j < (1 << BYTEWIDTH); j++) + fastmap[j] = 1; + + /* ... except perhaps newline. */ + if (!(bufp->syntax & RE_DOT_NEWLINE)) + fastmap['\n'] = fastmap_newline; + + /* Return if we have already set `can_be_null'; if we have, + then the fastmap is irrelevant. Something's wrong here. */ + else if (bufp->can_be_null) + goto done; + + /* Otherwise, have to check alternative paths. */ + break; + } + +#ifdef emacs + case syntaxspec: + k = *p++; + for (j = 0; j < (1 << BYTEWIDTH); j++) + if (SYNTAX (j) == (enum syntaxcode) k) + fastmap[j] = 1; + break; + + + case notsyntaxspec: + k = *p++; + for (j = 0; j < (1 << BYTEWIDTH); j++) + if (SYNTAX (j) != (enum syntaxcode) k) + fastmap[j] = 1; + break; + + + /* All cases after this match the empty string. These end with + `continue'. */ + + + case before_dot: + case at_dot: + case after_dot: + continue; +#endif /* emacs */ + + + case no_op: + case begline: + case endline: + case begbuf: + case endbuf: + case wordbound: + case notwordbound: + case wordbeg: + case wordend: + case push_dummy_failure: + continue; + + + case jump_n: + case pop_failure_jump: + case maybe_pop_jump: + case jump: + case jump_past_alt: + case dummy_failure_jump: + EXTRACT_NUMBER_AND_INCR (j, p); + p += j; + if (j > 0) + continue; + + /* Jump backward implies we just went through the body of a + loop and matched nothing. Opcode jumped to should be + `on_failure_jump' or `succeed_n'. Just treat it like an + ordinary jump. For a * loop, it has pushed its failure + point already; if so, discard that as redundant. */ + if ((re_opcode_t) *p != on_failure_jump + && (re_opcode_t) *p != succeed_n) + continue; + + p++; + EXTRACT_NUMBER_AND_INCR (j, p); + p += j; + + /* If what's on the stack is where we are now, pop it. */ + if (!FAIL_STACK_EMPTY () + && fail_stack.stack[fail_stack.avail - 1].pointer == p) + fail_stack.avail--; + + continue; + + + case on_failure_jump: + case on_failure_keep_string_jump: + handle_on_failure_jump: + EXTRACT_NUMBER_AND_INCR (j, p); + + /* For some patterns, e.g., `(a?)?', `p+j' here points to the + end of the pattern. We don't want to push such a point, + since when we restore it above, entering the switch will + increment `p' past the end of the pattern. We don't need + to push such a point since we obviously won't find any more + fastmap entries beyond `pend'. Such a pattern can match + the null string, though. */ + if (p + j < pend) + { + if (!PUSH_PATTERN_OP (p + j, fail_stack)) + { + RESET_FAIL_STACK (); + return -2; + } + } + else + bufp->can_be_null = 1; + + if (succeed_n_p) + { + EXTRACT_NUMBER_AND_INCR (k, p); /* Skip the n. */ + succeed_n_p = false; + } + + continue; + + + case succeed_n: + /* Get to the number of times to succeed. */ + p += OFFSET_ADDRESS_SIZE; + + /* Increment p past the n for when k != 0. */ + EXTRACT_NUMBER_AND_INCR (k, p); + if (k == 0) + { + p -= 2 * OFFSET_ADDRESS_SIZE; + succeed_n_p = true; /* Spaghetti code alert. */ + goto handle_on_failure_jump; + } + continue; + + + case set_number_at: + p += 2 * OFFSET_ADDRESS_SIZE; + continue; + + + case start_memory: + case stop_memory: + p += 2; + continue; + + + default: + abort (); /* We have listed all the cases. */ + } /* switch *p++ */ + + /* Getting here means we have found the possible starting + characters for one path of the pattern -- and that the empty + string does not match. We need not follow this path further. + Instead, look at the next alternative (remembered on the + stack), or quit if no more. The test at the top of the loop + does these things. */ + path_can_be_null = false; + p = pend; + } /* while p */ + + /* Set `can_be_null' for the last path (also the first path, if the + pattern is empty). */ + bufp->can_be_null |= path_can_be_null; + + done: + RESET_FAIL_STACK (); + return 0; +} + +#else /* not INSIDE_RECURSION */ + +int +re_compile_fastmap (bufp) + struct re_pattern_buffer *bufp; +{ +# ifdef MBS_SUPPORT + if (MB_CUR_MAX != 1) + return wcs_re_compile_fastmap(bufp); + else +# endif + return byte_re_compile_fastmap(bufp); +} /* re_compile_fastmap */ +#ifdef _LIBC +weak_alias (__re_compile_fastmap, re_compile_fastmap) +#endif + + +/* Set REGS to hold NUM_REGS registers, storing them in STARTS and + ENDS. Subsequent matches using PATTERN_BUFFER and REGS will use + this memory for recording register information. STARTS and ENDS + must be allocated using the malloc library routine, and must each + be at least NUM_REGS * sizeof (regoff_t) bytes long. + + If NUM_REGS == 0, then subsequent matches should allocate their own + register data. + + Unless this function is called, the first search or match using + PATTERN_BUFFER will allocate its own register data, without + freeing the old data. */ + +void +re_set_registers (bufp, regs, num_regs, starts, ends) + struct re_pattern_buffer *bufp; + struct re_registers *regs; + unsigned num_regs; + regoff_t *starts, *ends; +{ + if (num_regs) + { + bufp->regs_allocated = REGS_REALLOCATE; + regs->num_regs = num_regs; + regs->start = starts; + regs->end = ends; + } + else + { + bufp->regs_allocated = REGS_UNALLOCATED; + regs->num_regs = 0; + regs->start = regs->end = (regoff_t *) 0; + } +} +#ifdef _LIBC +weak_alias (__re_set_registers, re_set_registers) +#endif + +/* Searching routines. */ + +/* Like re_search_2, below, but only one string is specified, and + doesn't let you say where to stop matching. */ + +int +re_search (bufp, string, size, startpos, range, regs) + struct re_pattern_buffer *bufp; + const char *string; + int size, startpos, range; + struct re_registers *regs; +{ + return re_search_2 (bufp, NULL, 0, string, size, startpos, range, + regs, size); +} +#ifdef _LIBC +weak_alias (__re_search, re_search) +#endif + + +/* Using the compiled pattern in BUFP->buffer, first tries to match the + virtual concatenation of STRING1 and STRING2, starting first at index + STARTPOS, then at STARTPOS + 1, and so on. + + STRING1 and STRING2 have length SIZE1 and SIZE2, respectively. + + RANGE is how far to scan while trying to match. RANGE = 0 means try + only at STARTPOS; in general, the last start tried is STARTPOS + + RANGE. + + In REGS, return the indices of the virtual concatenation of STRING1 + and STRING2 that matched the entire BUFP->buffer and its contained + subexpressions. + + Do not consider matching one past the index STOP in the virtual + concatenation of STRING1 and STRING2. + + We return either the position in the strings at which the match was + found, -1 if no match, or -2 if error (such as failure + stack overflow). */ + +int +re_search_2 (bufp, string1, size1, string2, size2, startpos, range, regs, stop) + struct re_pattern_buffer *bufp; + const char *string1, *string2; + int size1, size2; + int startpos; + int range; + struct re_registers *regs; + int stop; +{ +# ifdef MBS_SUPPORT + if (MB_CUR_MAX != 1) + return wcs_re_search_2 (bufp, string1, size1, string2, size2, startpos, + range, regs, stop); + else +# endif + return byte_re_search_2 (bufp, string1, size1, string2, size2, startpos, + range, regs, stop); +} /* re_search_2 */ +#ifdef _LIBC +weak_alias (__re_search_2, re_search_2) +#endif + +#endif /* not INSIDE_RECURSION */ + +#ifdef INSIDE_RECURSION + +#ifdef MATCH_MAY_ALLOCATE +# define FREE_VAR(var) if (var) REGEX_FREE (var); var = NULL +#else +# define FREE_VAR(var) if (var) free (var); var = NULL +#endif + +#ifdef WCHAR +# define MAX_ALLOCA_SIZE 2000 + +# define FREE_WCS_BUFFERS() \ + do { \ + if (size1 > MAX_ALLOCA_SIZE) \ + { \ + free (wcs_string1); \ + free (mbs_offset1); \ + } \ + else \ + { \ + FREE_VAR (wcs_string1); \ + FREE_VAR (mbs_offset1); \ + } \ + if (size2 > MAX_ALLOCA_SIZE) \ + { \ + free (wcs_string2); \ + free (mbs_offset2); \ + } \ + else \ + { \ + FREE_VAR (wcs_string2); \ + FREE_VAR (mbs_offset2); \ + } \ + } while (0) + +#endif + + +static int +PREFIX(re_search_2) (bufp, string1, size1, string2, size2, startpos, range, + regs, stop) + struct re_pattern_buffer *bufp; + const char *string1, *string2; + int size1, size2; + int startpos; + int range; + struct re_registers *regs; + int stop; +{ + int val; + register char *fastmap = bufp->fastmap; + register RE_TRANSLATE_TYPE translate = bufp->translate; + int total_size = size1 + size2; + int endpos = startpos + range; +#ifdef WCHAR + /* We need wchar_t* buffers correspond to cstring1, cstring2. */ + wchar_t *wcs_string1 = NULL, *wcs_string2 = NULL; + /* We need the size of wchar_t buffers correspond to csize1, csize2. */ + int wcs_size1 = 0, wcs_size2 = 0; + /* offset buffer for optimizatoin. See convert_mbs_to_wc. */ + int *mbs_offset1 = NULL, *mbs_offset2 = NULL; + /* They hold whether each wchar_t is binary data or not. */ + char *is_binary = NULL; +#endif /* WCHAR */ + + /* Check for out-of-range STARTPOS. */ + if (startpos < 0 || startpos > total_size) + return -1; + + /* Fix up RANGE if it might eventually take us outside + the virtual concatenation of STRING1 and STRING2. + Make sure we won't move STARTPOS below 0 or above TOTAL_SIZE. */ + if (endpos < 0) + range = 0 - startpos; + else if (endpos > total_size) + range = total_size - startpos; + + /* If the search isn't to be a backwards one, don't waste time in a + search for a pattern that must be anchored. */ + if (bufp->used > 0 && range > 0 + && ((re_opcode_t) bufp->buffer[0] == begbuf + /* `begline' is like `begbuf' if it cannot match at newlines. */ + || ((re_opcode_t) bufp->buffer[0] == begline + && !bufp->newline_anchor))) + { + if (startpos > 0) + return -1; + else + range = 1; + } + +#ifdef emacs + /* In a forward search for something that starts with \=. + don't keep searching past point. */ + if (bufp->used > 0 && (re_opcode_t) bufp->buffer[0] == at_dot && range > 0) + { + range = PT - startpos; + if (range <= 0) + return -1; + } +#endif /* emacs */ + + /* Update the fastmap now if not correct already. */ + if (fastmap && !bufp->fastmap_accurate) + if (re_compile_fastmap (bufp) == -2) + return -2; + +#ifdef WCHAR + /* Allocate wchar_t array for wcs_string1 and wcs_string2 and + fill them with converted string. */ + if (size1 != 0) + { + if (size1 > MAX_ALLOCA_SIZE) + { + wcs_string1 = TALLOC (size1 + 1, CHAR_T); + mbs_offset1 = TALLOC (size1 + 1, int); + is_binary = TALLOC (size1 + 1, char); + } + else + { + wcs_string1 = REGEX_TALLOC (size1 + 1, CHAR_T); + mbs_offset1 = REGEX_TALLOC (size1 + 1, int); + is_binary = REGEX_TALLOC (size1 + 1, char); + } + if (!wcs_string1 || !mbs_offset1 || !is_binary) + { + if (size1 > MAX_ALLOCA_SIZE) + { + free (wcs_string1); + free (mbs_offset1); + free (is_binary); + } + else + { + FREE_VAR (wcs_string1); + FREE_VAR (mbs_offset1); + FREE_VAR (is_binary); + } + return -2; + } + wcs_size1 = convert_mbs_to_wcs(wcs_string1, string1, size1, + mbs_offset1, is_binary); + wcs_string1[wcs_size1] = L'\0'; /* for a sentinel */ + if (size1 > MAX_ALLOCA_SIZE) + free (is_binary); + else + FREE_VAR (is_binary); + } + if (size2 != 0) + { + if (size2 > MAX_ALLOCA_SIZE) + { + wcs_string2 = TALLOC (size2 + 1, CHAR_T); + mbs_offset2 = TALLOC (size2 + 1, int); + is_binary = TALLOC (size2 + 1, char); + } + else + { + wcs_string2 = REGEX_TALLOC (size2 + 1, CHAR_T); + mbs_offset2 = REGEX_TALLOC (size2 + 1, int); + is_binary = REGEX_TALLOC (size2 + 1, char); + } + if (!wcs_string2 || !mbs_offset2 || !is_binary) + { + FREE_WCS_BUFFERS (); + if (size2 > MAX_ALLOCA_SIZE) + free (is_binary); + else + FREE_VAR (is_binary); + return -2; + } + wcs_size2 = convert_mbs_to_wcs(wcs_string2, string2, size2, + mbs_offset2, is_binary); + wcs_string2[wcs_size2] = L'\0'; /* for a sentinel */ + if (size2 > MAX_ALLOCA_SIZE) + free (is_binary); + else + FREE_VAR (is_binary); + } +#endif /* WCHAR */ + + + /* Loop through the string, looking for a place to start matching. */ + for (;;) + { + /* If a fastmap is supplied, skip quickly over characters that + cannot be the start of a match. If the pattern can match the + null string, however, we don't need to skip characters; we want + the first null string. */ + if (fastmap && startpos < total_size && !bufp->can_be_null) + { + if (range > 0) /* Searching forwards. */ + { + register const char *d; + register int lim = 0; + int irange = range; + + if (startpos < size1 && startpos + range >= size1) + lim = range - (size1 - startpos); + + d = (startpos >= size1 ? string2 - size1 : string1) + startpos; + + /* Written out as an if-else to avoid testing `translate' + inside the loop. */ + if (translate) + while (range > lim + && !fastmap[(unsigned char) + translate[(unsigned char) *d++]]) + range--; + else + while (range > lim && !fastmap[(unsigned char) *d++]) + range--; + + startpos += irange - range; + } + else /* Searching backwards. */ + { + register CHAR_T c = (size1 == 0 || startpos >= size1 + ? string2[startpos - size1] + : string1[startpos]); + + if (!fastmap[(unsigned char) TRANSLATE (c)]) + goto advance; + } + } + + /* If can't match the null string, and that's all we have left, fail. */ + if (range >= 0 && startpos == total_size && fastmap + && !bufp->can_be_null) + { +#ifdef WCHAR + FREE_WCS_BUFFERS (); +#endif + return -1; + } + +#ifdef WCHAR + val = wcs_re_match_2_internal (bufp, string1, size1, string2, + size2, startpos, regs, stop, + wcs_string1, wcs_size1, + wcs_string2, wcs_size2, + mbs_offset1, mbs_offset2); +#else /* BYTE */ + val = byte_re_match_2_internal (bufp, string1, size1, string2, + size2, startpos, regs, stop); +#endif /* BYTE */ + +#ifndef REGEX_MALLOC +# ifdef C_ALLOCA + alloca (0); +# endif +#endif + + if (val >= 0) + { +#ifdef WCHAR + FREE_WCS_BUFFERS (); +#endif + return startpos; + } + + if (val == -2) + { +#ifdef WCHAR + FREE_WCS_BUFFERS (); +#endif + return -2; + } + + advance: + if (!range) + break; + else if (range > 0) + { + range--; + startpos++; + } + else + { + range++; + startpos--; + } + } +#ifdef WCHAR + FREE_WCS_BUFFERS (); +#endif + return -1; +} + +#ifdef WCHAR +/* This converts PTR, a pointer into one of the search wchar_t strings + `string1' and `string2' into an multibyte string offset from the + beginning of that string. We use mbs_offset to optimize. + See convert_mbs_to_wcs. */ +# define POINTER_TO_OFFSET(ptr) \ + (FIRST_STRING_P (ptr) \ + ? ((regoff_t)(mbs_offset1 != NULL? mbs_offset1[(ptr)-string1] : 0)) \ + : ((regoff_t)((mbs_offset2 != NULL? mbs_offset2[(ptr)-string2] : 0) \ + + csize1))) +#else /* BYTE */ +/* This converts PTR, a pointer into one of the search strings `string1' + and `string2' into an offset from the beginning of that string. */ +# define POINTER_TO_OFFSET(ptr) \ + (FIRST_STRING_P (ptr) \ + ? ((regoff_t) ((ptr) - string1)) \ + : ((regoff_t) ((ptr) - string2 + size1))) +#endif /* WCHAR */ + +/* Macros for dealing with the split strings in re_match_2. */ + +#define MATCHING_IN_FIRST_STRING (dend == end_match_1) + +/* Call before fetching a character with *d. This switches over to + string2 if necessary. */ +#define PREFETCH() \ + while (d == dend) \ + { \ + /* End of string2 => fail. */ \ + if (dend == end_match_2) \ + goto fail; \ + /* End of string1 => advance to string2. */ \ + d = string2; \ + dend = end_match_2; \ + } + +/* Test if at very beginning or at very end of the virtual concatenation + of `string1' and `string2'. If only one string, it's `string2'. */ +#define AT_STRINGS_BEG(d) ((d) == (size1 ? string1 : string2) || !size2) +#define AT_STRINGS_END(d) ((d) == end2) + + +/* Test if D points to a character which is word-constituent. We have + two special cases to check for: if past the end of string1, look at + the first character in string2; and if before the beginning of + string2, look at the last character in string1. */ +#ifdef WCHAR +/* Use internationalized API instead of SYNTAX. */ +# define WORDCHAR_P(d) \ + (iswalnum ((wint_t)((d) == end1 ? *string2 \ + : (d) == string2 - 1 ? *(end1 - 1) : *(d))) != 0 \ + || ((d) == end1 ? *string2 \ + : (d) == string2 - 1 ? *(end1 - 1) : *(d)) == L'_') +#else /* BYTE */ +# define WORDCHAR_P(d) \ + (SYNTAX ((d) == end1 ? *string2 \ + : (d) == string2 - 1 ? *(end1 - 1) : *(d)) \ + == Sword) +#endif /* WCHAR */ + +/* Disabled due to a compiler bug -- see comment at case wordbound */ +#if 0 +/* Test if the character before D and the one at D differ with respect + to being word-constituent. */ +#define AT_WORD_BOUNDARY(d) \ + (AT_STRINGS_BEG (d) || AT_STRINGS_END (d) \ + || WORDCHAR_P (d - 1) != WORDCHAR_P (d)) +#endif + +/* Free everything we malloc. */ +#ifdef MATCH_MAY_ALLOCATE +# ifdef WCHAR +# define FREE_VARIABLES() \ + do { \ + REGEX_FREE_STACK (fail_stack.stack); \ + FREE_VAR (regstart); \ + FREE_VAR (regend); \ + FREE_VAR (old_regstart); \ + FREE_VAR (old_regend); \ + FREE_VAR (best_regstart); \ + FREE_VAR (best_regend); \ + FREE_VAR (reg_info); \ + FREE_VAR (reg_dummy); \ + FREE_VAR (reg_info_dummy); \ + if (!cant_free_wcs_buf) \ + { \ + FREE_VAR (string1); \ + FREE_VAR (string2); \ + FREE_VAR (mbs_offset1); \ + FREE_VAR (mbs_offset2); \ + } \ + } while (0) +# else /* BYTE */ +# define FREE_VARIABLES() \ + do { \ + REGEX_FREE_STACK (fail_stack.stack); \ + FREE_VAR (regstart); \ + FREE_VAR (regend); \ + FREE_VAR (old_regstart); \ + FREE_VAR (old_regend); \ + FREE_VAR (best_regstart); \ + FREE_VAR (best_regend); \ + FREE_VAR (reg_info); \ + FREE_VAR (reg_dummy); \ + FREE_VAR (reg_info_dummy); \ + } while (0) +# endif /* WCHAR */ +#else +# ifdef WCHAR +# define FREE_VARIABLES() \ + do { \ + if (!cant_free_wcs_buf) \ + { \ + FREE_VAR (string1); \ + FREE_VAR (string2); \ + FREE_VAR (mbs_offset1); \ + FREE_VAR (mbs_offset2); \ + } \ + } while (0) +# else /* BYTE */ +# define FREE_VARIABLES() ((void)0) /* Do nothing! But inhibit gcc warning. */ +# endif /* WCHAR */ +#endif /* not MATCH_MAY_ALLOCATE */ + +/* These values must meet several constraints. They must not be valid + register values; since we have a limit of 255 registers (because + we use only one byte in the pattern for the register number), we can + use numbers larger than 255. They must differ by 1, because of + NUM_FAILURE_ITEMS above. And the value for the lowest register must + be larger than the value for the highest register, so we do not try + to actually save any registers when none are active. */ +#define NO_HIGHEST_ACTIVE_REG (1 << BYTEWIDTH) +#define NO_LOWEST_ACTIVE_REG (NO_HIGHEST_ACTIVE_REG + 1) + +#else /* not INSIDE_RECURSION */ +/* Matching routines. */ + +#ifndef emacs /* Emacs never uses this. */ +/* re_match is like re_match_2 except it takes only a single string. */ + +int +re_match (bufp, string, size, pos, regs) + struct re_pattern_buffer *bufp; + const char *string; + int size, pos; + struct re_registers *regs; +{ + int result; +# ifdef MBS_SUPPORT + if (MB_CUR_MAX != 1) + result = wcs_re_match_2_internal (bufp, NULL, 0, string, size, + pos, regs, size, + NULL, 0, NULL, 0, NULL, NULL); + else +# endif + result = byte_re_match_2_internal (bufp, NULL, 0, string, size, + pos, regs, size); +# ifndef REGEX_MALLOC +# ifdef C_ALLOCA + alloca (0); +# endif +# endif + return result; +} +# ifdef _LIBC +weak_alias (__re_match, re_match) +# endif +#endif /* not emacs */ + +#endif /* not INSIDE_RECURSION */ + +#ifdef INSIDE_RECURSION +static boolean PREFIX(group_match_null_string_p) _RE_ARGS ((UCHAR_T **p, + UCHAR_T *end, + PREFIX(register_info_type) *reg_info)); +static boolean PREFIX(alt_match_null_string_p) _RE_ARGS ((UCHAR_T *p, + UCHAR_T *end, + PREFIX(register_info_type) *reg_info)); +static boolean PREFIX(common_op_match_null_string_p) _RE_ARGS ((UCHAR_T **p, + UCHAR_T *end, + PREFIX(register_info_type) *reg_info)); +static int PREFIX(bcmp_translate) _RE_ARGS ((const CHAR_T *s1, const CHAR_T *s2, + int len, char *translate)); +#else /* not INSIDE_RECURSION */ + +/* re_match_2 matches the compiled pattern in BUFP against the + the (virtual) concatenation of STRING1 and STRING2 (of length SIZE1 + and SIZE2, respectively). We start matching at POS, and stop + matching at STOP. + + If REGS is non-null and the `no_sub' field of BUFP is nonzero, we + store offsets for the substring each group matched in REGS. See the + documentation for exactly how many groups we fill. + + We return -1 if no match, -2 if an internal error (such as the + failure stack overflowing). Otherwise, we return the length of the + matched substring. */ + +int +re_match_2 (bufp, string1, size1, string2, size2, pos, regs, stop) + struct re_pattern_buffer *bufp; + const char *string1, *string2; + int size1, size2; + int pos; + struct re_registers *regs; + int stop; +{ + int result; +# ifdef MBS_SUPPORT + if (MB_CUR_MAX != 1) + result = wcs_re_match_2_internal (bufp, string1, size1, string2, size2, + pos, regs, stop, + NULL, 0, NULL, 0, NULL, NULL); + else +# endif + result = byte_re_match_2_internal (bufp, string1, size1, string2, size2, + pos, regs, stop); + +#ifndef REGEX_MALLOC +# ifdef C_ALLOCA + alloca (0); +# endif +#endif + return result; +} +#ifdef _LIBC +weak_alias (__re_match_2, re_match_2) +#endif + +#endif /* not INSIDE_RECURSION */ + +#ifdef INSIDE_RECURSION + +#ifdef WCHAR +static int count_mbs_length PARAMS ((int *, int)); + +/* This check the substring (from 0, to length) of the multibyte string, + to which offset_buffer correspond. And count how many wchar_t_characters + the substring occupy. We use offset_buffer to optimization. + See convert_mbs_to_wcs. */ + +static int +count_mbs_length(offset_buffer, length) + int *offset_buffer; + int length; +{ + int upper, lower; + + /* Check whether the size is valid. */ + if (length < 0) + return -1; + + if (offset_buffer == NULL) + return 0; + + /* If there are no multibyte character, offset_buffer[i] == i. + Optmize for this case. */ + if (offset_buffer[length] == length) + return length; + + /* Set up upper with length. (because for all i, offset_buffer[i] >= i) */ + upper = length; + lower = 0; + + while (true) + { + int middle = (lower + upper) / 2; + if (middle == lower || middle == upper) + break; + if (offset_buffer[middle] > length) + upper = middle; + else if (offset_buffer[middle] < length) + lower = middle; + else + return middle; + } + + return -1; +} +#endif /* WCHAR */ + +/* This is a separate function so that we can force an alloca cleanup + afterwards. */ +#ifdef WCHAR +static int +wcs_re_match_2_internal (bufp, cstring1, csize1, cstring2, csize2, pos, + regs, stop, string1, size1, string2, size2, + mbs_offset1, mbs_offset2) + struct re_pattern_buffer *bufp; + const char *cstring1, *cstring2; + int csize1, csize2; + int pos; + struct re_registers *regs; + int stop; + /* string1 == string2 == NULL means string1/2, size1/2 and + mbs_offset1/2 need seting up in this function. */ + /* We need wchar_t* buffers correspond to cstring1, cstring2. */ + wchar_t *string1, *string2; + /* We need the size of wchar_t buffers correspond to csize1, csize2. */ + int size1, size2; + /* offset buffer for optimizatoin. See convert_mbs_to_wc. */ + int *mbs_offset1, *mbs_offset2; +#else /* BYTE */ +static int +byte_re_match_2_internal (bufp, string1, size1,string2, size2, pos, + regs, stop) + struct re_pattern_buffer *bufp; + const char *string1, *string2; + int size1, size2; + int pos; + struct re_registers *regs; + int stop; +#endif /* BYTE */ +{ + /* General temporaries. */ + int mcnt; + UCHAR_T *p1; +#ifdef WCHAR + /* They hold whether each wchar_t is binary data or not. */ + char *is_binary = NULL; + /* If true, we can't free string1/2, mbs_offset1/2. */ + int cant_free_wcs_buf = 1; +#endif /* WCHAR */ + + /* Just past the end of the corresponding string. */ + const CHAR_T *end1, *end2; + + /* Pointers into string1 and string2, just past the last characters in + each to consider matching. */ + const CHAR_T *end_match_1, *end_match_2; + + /* Where we are in the data, and the end of the current string. */ + const CHAR_T *d, *dend; + + /* Where we are in the pattern, and the end of the pattern. */ +#ifdef WCHAR + UCHAR_T *pattern, *p; + register UCHAR_T *pend; +#else /* BYTE */ + UCHAR_T *p = bufp->buffer; + register UCHAR_T *pend = p + bufp->used; +#endif /* WCHAR */ + + /* Mark the opcode just after a start_memory, so we can test for an + empty subpattern when we get to the stop_memory. */ + UCHAR_T *just_past_start_mem = 0; + + /* We use this to map every character in the string. */ + RE_TRANSLATE_TYPE translate = bufp->translate; + + /* Failure point stack. Each place that can handle a failure further + down the line pushes a failure point on this stack. It consists of + restart, regend, and reg_info for all registers corresponding to + the subexpressions we're currently inside, plus the number of such + registers, and, finally, two char *'s. The first char * is where + to resume scanning the pattern; the second one is where to resume + scanning the strings. If the latter is zero, the failure point is + a ``dummy''; if a failure happens and the failure point is a dummy, + it gets discarded and the next next one is tried. */ +#ifdef MATCH_MAY_ALLOCATE /* otherwise, this is global. */ + PREFIX(fail_stack_type) fail_stack; +#endif +#ifdef DEBUG + static unsigned failure_id; + unsigned nfailure_points_pushed = 0, nfailure_points_popped = 0; +#endif + +#ifdef REL_ALLOC + /* This holds the pointer to the failure stack, when + it is allocated relocatably. */ + fail_stack_elt_t *failure_stack_ptr; +#endif + + /* We fill all the registers internally, independent of what we + return, for use in backreferences. The number here includes + an element for register zero. */ + size_t num_regs = bufp->re_nsub + 1; + + /* The currently active registers. */ + active_reg_t lowest_active_reg = NO_LOWEST_ACTIVE_REG; + active_reg_t highest_active_reg = NO_HIGHEST_ACTIVE_REG; + + /* Information on the contents of registers. These are pointers into + the input strings; they record just what was matched (on this + attempt) by a subexpression part of the pattern, that is, the + regnum-th regstart pointer points to where in the pattern we began + matching and the regnum-th regend points to right after where we + stopped matching the regnum-th subexpression. (The zeroth register + keeps track of what the whole pattern matches.) */ +#ifdef MATCH_MAY_ALLOCATE /* otherwise, these are global. */ + const CHAR_T **regstart, **regend; +#endif + + /* If a group that's operated upon by a repetition operator fails to + match anything, then the register for its start will need to be + restored because it will have been set to wherever in the string we + are when we last see its open-group operator. Similarly for a + register's end. */ +#ifdef MATCH_MAY_ALLOCATE /* otherwise, these are global. */ + const CHAR_T **old_regstart, **old_regend; +#endif + + /* The is_active field of reg_info helps us keep track of which (possibly + nested) subexpressions we are currently in. The matched_something + field of reg_info[reg_num] helps us tell whether or not we have + matched any of the pattern so far this time through the reg_num-th + subexpression. These two fields get reset each time through any + loop their register is in. */ +#ifdef MATCH_MAY_ALLOCATE /* otherwise, this is global. */ + PREFIX(register_info_type) *reg_info; +#endif + + /* The following record the register info as found in the above + variables when we find a match better than any we've seen before. + This happens as we backtrack through the failure points, which in + turn happens only if we have not yet matched the entire string. */ + unsigned best_regs_set = false; +#ifdef MATCH_MAY_ALLOCATE /* otherwise, these are global. */ + const CHAR_T **best_regstart, **best_regend; +#endif + + /* Logically, this is `best_regend[0]'. But we don't want to have to + allocate space for that if we're not allocating space for anything + else (see below). Also, we never need info about register 0 for + any of the other register vectors, and it seems rather a kludge to + treat `best_regend' differently than the rest. So we keep track of + the end of the best match so far in a separate variable. We + initialize this to NULL so that when we backtrack the first time + and need to test it, it's not garbage. */ + const CHAR_T *match_end = NULL; + + /* This helps SET_REGS_MATCHED avoid doing redundant work. */ + int set_regs_matched_done = 0; + + /* Used when we pop values we don't care about. */ +#ifdef MATCH_MAY_ALLOCATE /* otherwise, these are global. */ + const CHAR_T **reg_dummy; + PREFIX(register_info_type) *reg_info_dummy; +#endif + +#ifdef DEBUG + /* Counts the total number of registers pushed. */ + unsigned num_regs_pushed = 0; +#endif + + /* Definitions for state transitions. More efficiently for gcc. */ +#ifdef __GNUC__ +# if defined HAVE_SUBTRACT_LOCAL_LABELS && defined SHARED +# define NEXT \ + do \ + { \ + int offset; \ + const void *__unbounded ptr; \ + offset = (p == pend \ + ? 0 : jmptable[SWITCH_ENUM_CAST ((re_opcode_t) *p++)]); \ + ptr = &&end_of_pattern + offset; \ + goto *ptr; \ + } \ + while (0) +# define REF(x) \ + &&label_##x - &&end_of_pattern +# define JUMP_TABLE_TYPE const int +# else +# define NEXT \ + do \ + { \ + const void *__unbounded ptr; \ + ptr = (p == pend ? &&end_of_pattern \ + : jmptable[SWITCH_ENUM_CAST ((re_opcode_t) *p++)]); \ + goto *ptr; \ + } \ + while (0) +# define REF(x) \ + &&label_##x +# define JUMP_TABLE_TYPE const void *const +# endif +# define CASE(x) label_##x + static JUMP_TABLE_TYPE jmptable[] = + { + REF (no_op), + REF (succeed), + REF (exactn), +# ifdef MBS_SUPPORT + REF (exactn_bin), +# endif + REF (anychar), + REF (charset), + REF (charset_not), + REF (start_memory), + REF (stop_memory), + REF (duplicate), + REF (begline), + REF (endline), + REF (begbuf), + REF (endbuf), + REF (jump), + REF (jump_past_alt), + REF (on_failure_jump), + REF (on_failure_keep_string_jump), + REF (pop_failure_jump), + REF (maybe_pop_jump), + REF (dummy_failure_jump), + REF (push_dummy_failure), + REF (succeed_n), + REF (jump_n), + REF (set_number_at), + REF (wordchar), + REF (notwordchar), + REF (wordbeg), + REF (wordend), + REF (wordbound), + REF (notwordbound) +# ifdef emacs + ,REF (before_dot), + REF (at_dot), + REF (after_dot), + REF (syntaxspec), + REF (notsyntaxspec) +# endif + }; +#else +# define NEXT \ + break +# define CASE(x) \ + case x +#endif + + DEBUG_PRINT1 ("\n\nEntering re_match_2.\n"); + + INIT_FAIL_STACK (); + +#ifdef MATCH_MAY_ALLOCATE + /* Do not bother to initialize all the register variables if there are + no groups in the pattern, as it takes a fair amount of time. If + there are groups, we include space for register 0 (the whole + pattern), even though we never use it, since it simplifies the + array indexing. We should fix this. */ + if (bufp->re_nsub) + { + regstart = REGEX_TALLOC (num_regs, const CHAR_T *); + regend = REGEX_TALLOC (num_regs, const CHAR_T *); + old_regstart = REGEX_TALLOC (num_regs, const CHAR_T *); + old_regend = REGEX_TALLOC (num_regs, const CHAR_T *); + best_regstart = REGEX_TALLOC (num_regs, const CHAR_T *); + best_regend = REGEX_TALLOC (num_regs, const CHAR_T *); + reg_info = REGEX_TALLOC (num_regs, PREFIX(register_info_type)); + reg_dummy = REGEX_TALLOC (num_regs, const CHAR_T *); + reg_info_dummy = REGEX_TALLOC (num_regs, PREFIX(register_info_type)); + + if (!(regstart && regend && old_regstart && old_regend && reg_info + && best_regstart && best_regend && reg_dummy && reg_info_dummy)) + { + FREE_VARIABLES (); + return -2; + } + } + else + { + /* We must initialize all our variables to NULL, so that + `FREE_VARIABLES' doesn't try to free them. */ + regstart = regend = old_regstart = old_regend = best_regstart + = best_regend = reg_dummy = NULL; + reg_info = reg_info_dummy = (PREFIX(register_info_type) *) NULL; + } +#endif /* MATCH_MAY_ALLOCATE */ + + /* The starting position is bogus. */ +#ifdef WCHAR + if (pos < 0 || pos > csize1 + csize2) +#else /* BYTE */ + if (pos < 0 || pos > size1 + size2) +#endif + { + FREE_VARIABLES (); + return -1; + } + +#ifdef WCHAR + /* Allocate wchar_t array for string1 and string2 and + fill them with converted string. */ + if (string1 == NULL && string2 == NULL) + { + /* We need seting up buffers here. */ + + /* We must free wcs buffers in this function. */ + cant_free_wcs_buf = 0; + + if (csize1 != 0) + { + string1 = REGEX_TALLOC (csize1 + 1, CHAR_T); + mbs_offset1 = REGEX_TALLOC (csize1 + 1, int); + is_binary = REGEX_TALLOC (csize1 + 1, char); + if (!string1 || !mbs_offset1 || !is_binary) + { + FREE_VAR (string1); + FREE_VAR (mbs_offset1); + FREE_VAR (is_binary); + return -2; + } + } + if (csize2 != 0) + { + string2 = REGEX_TALLOC (csize2 + 1, CHAR_T); + mbs_offset2 = REGEX_TALLOC (csize2 + 1, int); + is_binary = REGEX_TALLOC (csize2 + 1, char); + if (!string2 || !mbs_offset2 || !is_binary) + { + FREE_VAR (string1); + FREE_VAR (mbs_offset1); + FREE_VAR (string2); + FREE_VAR (mbs_offset2); + FREE_VAR (is_binary); + return -2; + } + size2 = convert_mbs_to_wcs(string2, cstring2, csize2, + mbs_offset2, is_binary); + string2[size2] = L'\0'; /* for a sentinel */ + FREE_VAR (is_binary); + } + } + + /* We need to cast pattern to (wchar_t*), because we casted this compiled + pattern to (char*) in regex_compile. */ + p = pattern = (CHAR_T*)bufp->buffer; + pend = (CHAR_T*)(bufp->buffer + bufp->used); + +#endif /* WCHAR */ + + /* Initialize subexpression text positions to -1 to mark ones that no + start_memory/stop_memory has been seen for. Also initialize the + register information struct. */ + for (mcnt = 1; (unsigned) mcnt < num_regs; mcnt++) + { + regstart[mcnt] = regend[mcnt] + = old_regstart[mcnt] = old_regend[mcnt] = REG_UNSET_VALUE; + + REG_MATCH_NULL_STRING_P (reg_info[mcnt]) = MATCH_NULL_UNSET_VALUE; + IS_ACTIVE (reg_info[mcnt]) = 0; + MATCHED_SOMETHING (reg_info[mcnt]) = 0; + EVER_MATCHED_SOMETHING (reg_info[mcnt]) = 0; + } + + /* We move `string1' into `string2' if the latter's empty -- but not if + `string1' is null. */ + if (size2 == 0 && string1 != NULL) + { + string2 = string1; + size2 = size1; + string1 = 0; + size1 = 0; +#ifdef WCHAR + mbs_offset2 = mbs_offset1; + csize2 = csize1; + mbs_offset1 = NULL; + csize1 = 0; +#endif + } + end1 = string1 + size1; + end2 = string2 + size2; + + /* Compute where to stop matching, within the two strings. */ +#ifdef WCHAR + if (stop <= csize1) + { + mcnt = count_mbs_length(mbs_offset1, stop); + end_match_1 = string1 + mcnt; + end_match_2 = string2; + } + else + { + if (stop > csize1 + csize2) + stop = csize1 + csize2; + end_match_1 = end1; + mcnt = count_mbs_length(mbs_offset2, stop-csize1); + end_match_2 = string2 + mcnt; + } + if (mcnt < 0) + { /* count_mbs_length return error. */ + FREE_VARIABLES (); + return -1; + } +#else + if (stop <= size1) + { + end_match_1 = string1 + stop; + end_match_2 = string2; + } + else + { + end_match_1 = end1; + end_match_2 = string2 + stop - size1; + } +#endif /* WCHAR */ + + /* `p' scans through the pattern as `d' scans through the data. + `dend' is the end of the input string that `d' points within. `d' + is advanced into the following input string whenever necessary, but + this happens before fetching; therefore, at the beginning of the + loop, `d' can be pointing at the end of a string, but it cannot + equal `string2'. */ +#ifdef WCHAR + if (size1 > 0 && pos <= csize1) + { + mcnt = count_mbs_length(mbs_offset1, pos); + d = string1 + mcnt; + dend = end_match_1; + } + else + { + mcnt = count_mbs_length(mbs_offset2, pos-csize1); + d = string2 + mcnt; + dend = end_match_2; + } + + if (mcnt < 0) + { /* count_mbs_length return error. */ + FREE_VARIABLES (); + return -1; + } +#else + if (size1 > 0 && pos <= size1) + { + d = string1 + pos; + dend = end_match_1; + } + else + { + d = string2 + pos - size1; + dend = end_match_2; + } +#endif /* WCHAR */ + + DEBUG_PRINT1 ("The compiled pattern is:\n"); + DEBUG_PRINT_COMPILED_PATTERN (bufp, p, pend); + DEBUG_PRINT1 ("The string to match is: `"); + DEBUG_PRINT_DOUBLE_STRING (d, string1, size1, string2, size2); + DEBUG_PRINT1 ("'\n"); + + /* This loops over pattern commands. It exits by returning from the + function if the match is complete, or it drops through if the match + fails at this starting point in the input data. */ + for (;;) + { +#ifdef _LIBC + DEBUG_PRINT2 ("\n%p: ", p); +#else + DEBUG_PRINT2 ("\n0x%x: ", p); +#endif + +#ifdef __GNUC__ + NEXT; +#else + if (p == pend) +#endif + { +#ifdef __GNUC__ + end_of_pattern: +#endif + /* End of pattern means we might have succeeded. */ + DEBUG_PRINT1 ("end of pattern ... "); + + /* If we haven't matched the entire string, and we want the + longest match, try backtracking. */ + if (d != end_match_2) + { + /* 1 if this match ends in the same string (string1 or string2) + as the best previous match. */ + boolean same_str_p = (FIRST_STRING_P (match_end) + == MATCHING_IN_FIRST_STRING); + /* 1 if this match is the best seen so far. */ + boolean best_match_p; + + /* AIX compiler got confused when this was combined + with the previous declaration. */ + if (same_str_p) + best_match_p = d > match_end; + else + best_match_p = !MATCHING_IN_FIRST_STRING; + + DEBUG_PRINT1 ("backtracking.\n"); + + if (!FAIL_STACK_EMPTY ()) + { /* More failure points to try. */ + + /* If exceeds best match so far, save it. */ + if (!best_regs_set || best_match_p) + { + best_regs_set = true; + match_end = d; + + DEBUG_PRINT1 ("\nSAVING match as best so far.\n"); + + for (mcnt = 1; (unsigned) mcnt < num_regs; mcnt++) + { + best_regstart[mcnt] = regstart[mcnt]; + best_regend[mcnt] = regend[mcnt]; + } + } + goto fail; + } + + /* If no failure points, don't restore garbage. And if + last match is real best match, don't restore second + best one. */ + else if (best_regs_set && !best_match_p) + { + restore_best_regs: + /* Restore best match. It may happen that `dend == + end_match_1' while the restored d is in string2. + For example, the pattern `x.*y.*z' against the + strings `x-' and `y-z-', if the two strings are + not consecutive in memory. */ + DEBUG_PRINT1 ("Restoring best registers.\n"); + + d = match_end; + dend = ((d >= string1 && d <= end1) + ? end_match_1 : end_match_2); + + for (mcnt = 1; (unsigned) mcnt < num_regs; mcnt++) + { + regstart[mcnt] = best_regstart[mcnt]; + regend[mcnt] = best_regend[mcnt]; + } + } + } /* d != end_match_2 */ + + succeed_label: + DEBUG_PRINT1 ("Accepting match.\n"); + /* If caller wants register contents data back, do it. */ + if (regs && !bufp->no_sub) + { + /* Have the register data arrays been allocated? */ + if (bufp->regs_allocated == REGS_UNALLOCATED) + { /* No. So allocate them with malloc. We need one + extra element beyond `num_regs' for the `-1' marker + GNU code uses. */ + regs->num_regs = MAX (RE_NREGS, num_regs + 1); + regs->start = TALLOC (regs->num_regs, regoff_t); + regs->end = TALLOC (regs->num_regs, regoff_t); + if (regs->start == NULL || regs->end == NULL) + { + FREE_VARIABLES (); + return -2; + } + bufp->regs_allocated = REGS_REALLOCATE; + } + else if (bufp->regs_allocated == REGS_REALLOCATE) + { /* Yes. If we need more elements than were already + allocated, reallocate them. If we need fewer, just + leave it alone. */ + if (regs->num_regs < num_regs + 1) + { + regs->num_regs = num_regs + 1; + RETALLOC (regs->start, regs->num_regs, regoff_t); + RETALLOC (regs->end, regs->num_regs, regoff_t); + if (regs->start == NULL || regs->end == NULL) + { + FREE_VARIABLES (); + return -2; + } + } + } + else + { + /* These braces fend off a "empty body in an else-statement" + warning under GCC when assert expands to nothing. */ + assert (bufp->regs_allocated == REGS_FIXED); + } + + /* Convert the pointer data in `regstart' and `regend' to + indices. Register zero has to be set differently, + since we haven't kept track of any info for it. */ + if (regs->num_regs > 0) + { + regs->start[0] = pos; +#ifdef WCHAR + if (MATCHING_IN_FIRST_STRING) + regs->end[0] = (mbs_offset1 != NULL ? + mbs_offset1[d-string1] : 0); + else + regs->end[0] = csize1 + (mbs_offset2 != NULL + ? mbs_offset2[d-string2] : 0); +#else + regs->end[0] = (MATCHING_IN_FIRST_STRING + ? ((regoff_t) (d - string1)) + : ((regoff_t) (d - string2 + size1))); +#endif /* WCHAR */ + } + + /* Go through the first `min (num_regs, regs->num_regs)' + registers, since that is all we initialized. */ + for (mcnt = 1; (unsigned) mcnt < MIN (num_regs, regs->num_regs); + mcnt++) + { + if (REG_UNSET (regstart[mcnt]) || REG_UNSET (regend[mcnt])) + regs->start[mcnt] = regs->end[mcnt] = -1; + else + { + regs->start[mcnt] + = (regoff_t) POINTER_TO_OFFSET (regstart[mcnt]); + regs->end[mcnt] + = (regoff_t) POINTER_TO_OFFSET (regend[mcnt]); + } + } + + /* If the regs structure we return has more elements than + were in the pattern, set the extra elements to -1. If + we (re)allocated the registers, this is the case, + because we always allocate enough to have at least one + -1 at the end. */ + for (mcnt = num_regs; (unsigned) mcnt < regs->num_regs; mcnt++) + regs->start[mcnt] = regs->end[mcnt] = -1; + } /* regs && !bufp->no_sub */ + + DEBUG_PRINT4 ("%u failure points pushed, %u popped (%u remain).\n", + nfailure_points_pushed, nfailure_points_popped, + nfailure_points_pushed - nfailure_points_popped); + DEBUG_PRINT2 ("%u registers pushed.\n", num_regs_pushed); + +#ifdef WCHAR + if (MATCHING_IN_FIRST_STRING) + mcnt = mbs_offset1 != NULL ? mbs_offset1[d-string1] : 0; + else + mcnt = (mbs_offset2 != NULL ? mbs_offset2[d-string2] : 0) + + csize1; + mcnt -= pos; +#else + mcnt = d - pos - (MATCHING_IN_FIRST_STRING + ? string1 : string2 - size1); +#endif /* WCHAR */ + + DEBUG_PRINT2 ("Returning %d from re_match_2.\n", mcnt); + + FREE_VARIABLES (); + return mcnt; + } + +#ifndef __GNUC__ + /* Otherwise match next pattern command. */ + switch (SWITCH_ENUM_CAST ((re_opcode_t) *p++)) + { +#endif + /* Ignore these. Used to ignore the n of succeed_n's which + currently have n == 0. */ + CASE (no_op): + DEBUG_PRINT1 ("EXECUTING no_op.\n"); + NEXT; + + CASE (succeed): + DEBUG_PRINT1 ("EXECUTING succeed.\n"); + goto succeed_label; + + /* Match the next n pattern characters exactly. The following + byte in the pattern defines n, and the n bytes after that + are the characters to match. */ + CASE (exactn): +#ifdef MBS_SUPPORT + CASE (exactn_bin): +#endif + mcnt = *p++; + DEBUG_PRINT2 ("EXECUTING exactn %d.\n", mcnt); + + /* This is written out as an if-else so we don't waste time + testing `translate' inside the loop. */ + if (translate) + { + do + { + PREFETCH (); +#ifdef WCHAR + if (*d <= 0xff) + { + if ((UCHAR_T) translate[(unsigned char) *d++] + != (UCHAR_T) *p++) + goto fail; + } + else + { + if (*d++ != (CHAR_T) *p++) + goto fail; + } +#else + if ((UCHAR_T) translate[(unsigned char) *d++] + != (UCHAR_T) *p++) + goto fail; +#endif /* WCHAR */ + } + while (--mcnt); + } + else + { + do + { + PREFETCH (); + if (*d++ != (CHAR_T) *p++) goto fail; + } + while (--mcnt); + } + SET_REGS_MATCHED (); + NEXT; + + + /* Match any character except possibly a newline or a null. */ + CASE (anychar): + DEBUG_PRINT1 ("EXECUTING anychar.\n"); + + PREFETCH (); + + if ((!(bufp->syntax & RE_DOT_NEWLINE) && TRANSLATE (*d) == '\n') + || (bufp->syntax & RE_DOT_NOT_NULL && TRANSLATE (*d) == '\000')) + goto fail; + + SET_REGS_MATCHED (); + DEBUG_PRINT2 (" Matched `%ld'.\n", (long int) *d); + d++; + NEXT; + + + CASE (charset): + CASE (charset_not): + { + register UCHAR_T c; +#ifdef WCHAR + unsigned int i, char_class_length, coll_symbol_length, + equiv_class_length, ranges_length, chars_length, length; + CHAR_T *workp, *workp2, *charset_top; +#define WORK_BUFFER_SIZE 128 + CHAR_T str_buf[WORK_BUFFER_SIZE]; +# ifdef _LIBC + uint32_t nrules; +# endif /* _LIBC */ +#endif /* WCHAR */ + boolean not = (re_opcode_t) *(p - 1) == charset_not; + + DEBUG_PRINT2 ("EXECUTING charset%s.\n", not ? "_not" : ""); + PREFETCH (); + c = TRANSLATE (*d); /* The character to match. */ +#ifdef WCHAR +# ifdef _LIBC + nrules = _NL_CURRENT_WORD (LC_COLLATE, _NL_COLLATE_NRULES); +# endif /* _LIBC */ + charset_top = p - 1; + char_class_length = *p++; + coll_symbol_length = *p++; + equiv_class_length = *p++; + ranges_length = *p++; + chars_length = *p++; + /* p points charset[6], so the address of the next instruction + (charset[l+m+n+2o+k+p']) equals p[l+m+n+2*o+p'], + where l=length of char_classes, m=length of collating_symbol, + n=equivalence_class, o=length of char_range, + p'=length of character. */ + workp = p; + /* Update p to indicate the next instruction. */ + p += char_class_length + coll_symbol_length+ equiv_class_length + + 2*ranges_length + chars_length; + + /* match with char_class? */ + for (i = 0; i < char_class_length ; i += CHAR_CLASS_SIZE) + { + wctype_t wctype; + uintptr_t alignedp = ((uintptr_t)workp + + __alignof__(wctype_t) - 1) + & ~(uintptr_t)(__alignof__(wctype_t) - 1); + wctype = *((wctype_t*)alignedp); + workp += CHAR_CLASS_SIZE; + if (iswctype((wint_t)c, wctype)) + goto char_set_matched; + } + + /* match with collating_symbol? */ +# ifdef _LIBC + if (nrules != 0) + { + const unsigned char *extra = (const unsigned char *) + _NL_CURRENT (LC_COLLATE, _NL_COLLATE_SYMB_EXTRAMB); + + for (workp2 = workp + coll_symbol_length ; workp < workp2 ; + workp++) + { + int32_t *wextra; + wextra = (int32_t*)(extra + *workp++); + for (i = 0; i < *wextra; ++i) + if (TRANSLATE(d[i]) != wextra[1 + i]) + break; + + if (i == *wextra) + { + /* Update d, however d will be incremented at + char_set_matched:, we decrement d here. */ + d += i - 1; + goto char_set_matched; + } + } + } + else /* (nrules == 0) */ +# endif + /* If we can't look up collation data, we use wcscoll + instead. */ + { + for (workp2 = workp + coll_symbol_length ; workp < workp2 ;) + { + const CHAR_T *backup_d = d, *backup_dend = dend; + length = wcslen (workp); + + /* If wcscoll(the collating symbol, whole string) > 0, + any substring of the string never match with the + collating symbol. */ + if (wcscoll (workp, d) > 0) + { + workp += length + 1; + continue; + } + + /* First, we compare the collating symbol with + the first character of the string. + If it don't match, we add the next character to + the compare buffer in turn. */ + for (i = 0 ; i < WORK_BUFFER_SIZE-1 ; i++, d++) + { + int match; + if (d == dend) + { + if (dend == end_match_2) + break; + d = string2; + dend = end_match_2; + } + + /* add next character to the compare buffer. */ + str_buf[i] = TRANSLATE(*d); + str_buf[i+1] = '\0'; + + match = wcscoll (workp, str_buf); + if (match == 0) + goto char_set_matched; + + if (match < 0) + /* (str_buf > workp) indicate (str_buf + X > workp), + because for all X (str_buf + X > str_buf). + So we don't need continue this loop. */ + break; + + /* Otherwise(str_buf < workp), + (str_buf+next_character) may equals (workp). + So we continue this loop. */ + } + /* not matched */ + d = backup_d; + dend = backup_dend; + workp += length + 1; + } + } + /* match with equivalence_class? */ +# ifdef _LIBC + if (nrules != 0) + { + const CHAR_T *backup_d = d, *backup_dend = dend; + /* Try to match the equivalence class against + those known to the collate implementation. */ + const int32_t *table; + const int32_t *weights; + const int32_t *extra; + const int32_t *indirect; + int32_t idx, idx2; + wint_t *cp; + size_t len; + + /* This #include defines a local function! */ +# include + + table = (const int32_t *) + _NL_CURRENT (LC_COLLATE, _NL_COLLATE_TABLEWC); + weights = (const wint_t *) + _NL_CURRENT (LC_COLLATE, _NL_COLLATE_WEIGHTWC); + extra = (const wint_t *) + _NL_CURRENT (LC_COLLATE, _NL_COLLATE_EXTRAWC); + indirect = (const int32_t *) + _NL_CURRENT (LC_COLLATE, _NL_COLLATE_INDIRECTWC); + + /* Write 1 collating element to str_buf, and + get its index. */ + idx2 = 0; + + for (i = 0 ; idx2 == 0 && i < WORK_BUFFER_SIZE - 1; i++) + { + cp = (wint_t*)str_buf; + if (d == dend) + { + if (dend == end_match_2) + break; + d = string2; + dend = end_match_2; + } + str_buf[i] = TRANSLATE(*(d+i)); + str_buf[i+1] = '\0'; /* sentinel */ + idx2 = findidx ((const wint_t**)&cp); + } + + /* Update d, however d will be incremented at + char_set_matched:, we decrement d here. */ + d = backup_d + ((wchar_t*)cp - (wchar_t*)str_buf - 1); + if (d >= dend) + { + if (dend == end_match_2) + d = dend; + else + { + d = string2; + dend = end_match_2; + } + } + + len = weights[idx2]; + + for (workp2 = workp + equiv_class_length ; workp < workp2 ; + workp++) + { + idx = (int32_t)*workp; + /* We already checked idx != 0 in regex_compile. */ + + if (idx2 != 0 && len == weights[idx]) + { + int cnt = 0; + while (cnt < len && (weights[idx + 1 + cnt] + == weights[idx2 + 1 + cnt])) + ++cnt; + + if (cnt == len) + goto char_set_matched; + } + } + /* not matched */ + d = backup_d; + dend = backup_dend; + } + else /* (nrules == 0) */ +# endif + /* If we can't look up collation data, we use wcscoll + instead. */ + { + for (workp2 = workp + equiv_class_length ; workp < workp2 ;) + { + const CHAR_T *backup_d = d, *backup_dend = dend; + length = wcslen (workp); + + /* If wcscoll(the collating symbol, whole string) > 0, + any substring of the string never match with the + collating symbol. */ + if (wcscoll (workp, d) > 0) + { + workp += length + 1; + break; + } + + /* First, we compare the equivalence class with + the first character of the string. + If it don't match, we add the next character to + the compare buffer in turn. */ + for (i = 0 ; i < WORK_BUFFER_SIZE - 1 ; i++, d++) + { + int match; + if (d == dend) + { + if (dend == end_match_2) + break; + d = string2; + dend = end_match_2; + } + + /* add next character to the compare buffer. */ + str_buf[i] = TRANSLATE(*d); + str_buf[i+1] = '\0'; + + match = wcscoll (workp, str_buf); + + if (match == 0) + goto char_set_matched; + + if (match < 0) + /* (str_buf > workp) indicate (str_buf + X > workp), + because for all X (str_buf + X > str_buf). + So we don't need continue this loop. */ + break; + + /* Otherwise(str_buf < workp), + (str_buf+next_character) may equals (workp). + So we continue this loop. */ + } + /* not matched */ + d = backup_d; + dend = backup_dend; + workp += length + 1; + } + } + + /* match with char_range? */ +# ifdef _LIBC + if (nrules != 0) + { + uint32_t collseqval; + const char *collseq = (const char *) + _NL_CURRENT(LC_COLLATE, _NL_COLLATE_COLLSEQWC); + + collseqval = collseq_table_lookup (collseq, c); + + for (; workp < p - chars_length ;) + { + uint32_t start_val, end_val; + + /* We already compute the collation sequence value + of the characters (or collating symbols). */ + start_val = (uint32_t) *workp++; /* range_start */ + end_val = (uint32_t) *workp++; /* range_end */ + + if (start_val <= collseqval && collseqval <= end_val) + goto char_set_matched; + } + } + else +# endif + { + /* We set range_start_char at str_buf[0], range_end_char + at str_buf[4], and compared char at str_buf[2]. */ + str_buf[1] = 0; + str_buf[2] = c; + str_buf[3] = 0; + str_buf[5] = 0; + for (; workp < p - chars_length ;) + { + wchar_t *range_start_char, *range_end_char; + + /* match if (range_start_char <= c <= range_end_char). */ + + /* If range_start(or end) < 0, we assume -range_start(end) + is the offset of the collating symbol which is specified + as the character of the range start(end). */ + + /* range_start */ + if (*workp < 0) + range_start_char = charset_top - (*workp++); + else + { + str_buf[0] = *workp++; + range_start_char = str_buf; + } + + /* range_end */ + if (*workp < 0) + range_end_char = charset_top - (*workp++); + else + { + str_buf[4] = *workp++; + range_end_char = str_buf + 4; + } + + if (wcscoll (range_start_char, str_buf+2) <= 0 + && wcscoll (str_buf+2, range_end_char) <= 0) + goto char_set_matched; + } + } + + /* match with char? */ + for (; workp < p ; workp++) + if (c == *workp) + goto char_set_matched; + + not = !not; + + char_set_matched: + if (not) goto fail; +#else + /* Cast to `unsigned' instead of `unsigned char' in case the + bit list is a full 32 bytes long. */ + if (c < (unsigned) (*p * BYTEWIDTH) + && p[1 + c / BYTEWIDTH] & (1 << (c % BYTEWIDTH))) + not = !not; + + p += 1 + *p; + + if (!not) goto fail; +#undef WORK_BUFFER_SIZE +#endif /* WCHAR */ + SET_REGS_MATCHED (); + d++; + NEXT; + } + + + /* The beginning of a group is represented by start_memory. + The arguments are the register number in the next byte, and the + number of groups inner to this one in the next. The text + matched within the group is recorded (in the internal + registers data structure) under the register number. */ + CASE (start_memory): + DEBUG_PRINT3 ("EXECUTING start_memory %ld (%ld):\n", + (long int) *p, (long int) p[1]); + + /* Find out if this group can match the empty string. */ + p1 = p; /* To send to group_match_null_string_p. */ + + if (REG_MATCH_NULL_STRING_P (reg_info[*p]) == MATCH_NULL_UNSET_VALUE) + REG_MATCH_NULL_STRING_P (reg_info[*p]) + = PREFIX(group_match_null_string_p) (&p1, pend, reg_info); + + /* Save the position in the string where we were the last time + we were at this open-group operator in case the group is + operated upon by a repetition operator, e.g., with `(a*)*b' + against `ab'; then we want to ignore where we are now in + the string in case this attempt to match fails. */ + old_regstart[*p] = REG_MATCH_NULL_STRING_P (reg_info[*p]) + ? REG_UNSET (regstart[*p]) ? d : regstart[*p] + : regstart[*p]; + DEBUG_PRINT2 (" old_regstart: %d\n", + POINTER_TO_OFFSET (old_regstart[*p])); + + regstart[*p] = d; + DEBUG_PRINT2 (" regstart: %d\n", POINTER_TO_OFFSET (regstart[*p])); + + IS_ACTIVE (reg_info[*p]) = 1; + MATCHED_SOMETHING (reg_info[*p]) = 0; + + /* Clear this whenever we change the register activity status. */ + set_regs_matched_done = 0; + + /* This is the new highest active register. */ + highest_active_reg = *p; + + /* If nothing was active before, this is the new lowest active + register. */ + if (lowest_active_reg == NO_LOWEST_ACTIVE_REG) + lowest_active_reg = *p; + + /* Move past the register number and inner group count. */ + p += 2; + just_past_start_mem = p; + + NEXT; + + + /* The stop_memory opcode represents the end of a group. Its + arguments are the same as start_memory's: the register + number, and the number of inner groups. */ + CASE (stop_memory): + DEBUG_PRINT3 ("EXECUTING stop_memory %ld (%ld):\n", + (long int) *p, (long int) p[1]); + + /* We need to save the string position the last time we were at + this close-group operator in case the group is operated + upon by a repetition operator, e.g., with `((a*)*(b*)*)*' + against `aba'; then we want to ignore where we are now in + the string in case this attempt to match fails. */ + old_regend[*p] = REG_MATCH_NULL_STRING_P (reg_info[*p]) + ? REG_UNSET (regend[*p]) ? d : regend[*p] + : regend[*p]; + DEBUG_PRINT2 (" old_regend: %d\n", + POINTER_TO_OFFSET (old_regend[*p])); + + regend[*p] = d; + DEBUG_PRINT2 (" regend: %d\n", POINTER_TO_OFFSET (regend[*p])); + + /* This register isn't active anymore. */ + IS_ACTIVE (reg_info[*p]) = 0; + + /* Clear this whenever we change the register activity status. */ + set_regs_matched_done = 0; + + /* If this was the only register active, nothing is active + anymore. */ + if (lowest_active_reg == highest_active_reg) + { + lowest_active_reg = NO_LOWEST_ACTIVE_REG; + highest_active_reg = NO_HIGHEST_ACTIVE_REG; + } + else + { /* We must scan for the new highest active register, since + it isn't necessarily one less than now: consider + (a(b)c(d(e)f)g). When group 3 ends, after the f), the + new highest active register is 1. */ + UCHAR_T r = *p - 1; + while (r > 0 && !IS_ACTIVE (reg_info[r])) + r--; + + /* If we end up at register zero, that means that we saved + the registers as the result of an `on_failure_jump', not + a `start_memory', and we jumped to past the innermost + `stop_memory'. For example, in ((.)*) we save + registers 1 and 2 as a result of the *, but when we pop + back to the second ), we are at the stop_memory 1. + Thus, nothing is active. */ + if (r == 0) + { + lowest_active_reg = NO_LOWEST_ACTIVE_REG; + highest_active_reg = NO_HIGHEST_ACTIVE_REG; + } + else + highest_active_reg = r; + } + + /* If just failed to match something this time around with a + group that's operated on by a repetition operator, try to + force exit from the ``loop'', and restore the register + information for this group that we had before trying this + last match. */ + if ((!MATCHED_SOMETHING (reg_info[*p]) + || just_past_start_mem == p - 1) + && (p + 2) < pend) + { + boolean is_a_jump_n = false; + + p1 = p + 2; + mcnt = 0; + switch ((re_opcode_t) *p1++) + { + case jump_n: + is_a_jump_n = true; + case pop_failure_jump: + case maybe_pop_jump: + case jump: + case dummy_failure_jump: + EXTRACT_NUMBER_AND_INCR (mcnt, p1); + if (is_a_jump_n) + p1 += OFFSET_ADDRESS_SIZE; + break; + + default: + /* do nothing */ ; + } + p1 += mcnt; + + /* If the next operation is a jump backwards in the pattern + to an on_failure_jump right before the start_memory + corresponding to this stop_memory, exit from the loop + by forcing a failure after pushing on the stack the + on_failure_jump's jump in the pattern, and d. */ + if (mcnt < 0 && (re_opcode_t) *p1 == on_failure_jump + && (re_opcode_t) p1[1+OFFSET_ADDRESS_SIZE] == start_memory + && p1[2+OFFSET_ADDRESS_SIZE] == *p) + { + /* If this group ever matched anything, then restore + what its registers were before trying this last + failed match, e.g., with `(a*)*b' against `ab' for + regstart[1], and, e.g., with `((a*)*(b*)*)*' + against `aba' for regend[3]. + + Also restore the registers for inner groups for, + e.g., `((a*)(b*))*' against `aba' (register 3 would + otherwise get trashed). */ + + if (EVER_MATCHED_SOMETHING (reg_info[*p])) + { + unsigned r; + + EVER_MATCHED_SOMETHING (reg_info[*p]) = 0; + + /* Restore this and inner groups' (if any) registers. */ + for (r = *p; r < (unsigned) *p + (unsigned) *(p + 1); + r++) + { + regstart[r] = old_regstart[r]; + + /* xx why this test? */ + if (old_regend[r] >= regstart[r]) + regend[r] = old_regend[r]; + } + } + p1++; + EXTRACT_NUMBER_AND_INCR (mcnt, p1); + PUSH_FAILURE_POINT (p1 + mcnt, d, -2); + + goto fail; + } + } + + /* Move past the register number and the inner group count. */ + p += 2; + NEXT; + + + /* \ has been turned into a `duplicate' command which is + followed by the numeric value of as the register number. */ + CASE (duplicate): + { + register const CHAR_T *d2, *dend2; + int regno = *p++; /* Get which register to match against. */ + DEBUG_PRINT2 ("EXECUTING duplicate %d.\n", regno); + + /* Can't back reference a group which we've never matched. */ + if (REG_UNSET (regstart[regno]) || REG_UNSET (regend[regno])) + goto fail; + + /* Where in input to try to start matching. */ + d2 = regstart[regno]; + + /* Where to stop matching; if both the place to start and + the place to stop matching are in the same string, then + set to the place to stop, otherwise, for now have to use + the end of the first string. */ + + dend2 = ((FIRST_STRING_P (regstart[regno]) + == FIRST_STRING_P (regend[regno])) + ? regend[regno] : end_match_1); + for (;;) + { + /* If necessary, advance to next segment in register + contents. */ + while (d2 == dend2) + { + if (dend2 == end_match_2) break; + if (dend2 == regend[regno]) break; + + /* End of string1 => advance to string2. */ + d2 = string2; + dend2 = regend[regno]; + } + /* At end of register contents => success */ + if (d2 == dend2) break; + + /* If necessary, advance to next segment in data. */ + PREFETCH (); + + /* How many characters left in this segment to match. */ + mcnt = dend - d; + + /* Want how many consecutive characters we can match in + one shot, so, if necessary, adjust the count. */ + if (mcnt > dend2 - d2) + mcnt = dend2 - d2; + + /* Compare that many; failure if mismatch, else move + past them. */ + if (translate + ? PREFIX(bcmp_translate) (d, d2, mcnt, translate) + : memcmp (d, d2, mcnt*sizeof(UCHAR_T))) + goto fail; + d += mcnt, d2 += mcnt; + + /* Do this because we've match some characters. */ + SET_REGS_MATCHED (); + } + } + NEXT; + + + /* begline matches the empty string at the beginning of the string + (unless `not_bol' is set in `bufp'), and, if + `newline_anchor' is set, after newlines. */ + CASE (begline): + DEBUG_PRINT1 ("EXECUTING begline.\n"); + + if (AT_STRINGS_BEG (d)) + { + if (!bufp->not_bol) + { + NEXT; + } + } + else if (d[-1] == '\n' && bufp->newline_anchor) + { + NEXT; + } + /* In all other cases, we fail. */ + goto fail; + + + /* endline is the dual of begline. */ + CASE (endline): + DEBUG_PRINT1 ("EXECUTING endline.\n"); + + if (AT_STRINGS_END (d)) + { + if (!bufp->not_eol) + { + NEXT; + } + } + + /* We have to ``prefetch'' the next character. */ + else if ((d == end1 ? *string2 : *d) == '\n' + && bufp->newline_anchor) + { + NEXT; + } + goto fail; + + + /* Match at the very beginning of the data. */ + CASE (begbuf): + DEBUG_PRINT1 ("EXECUTING begbuf.\n"); + if (AT_STRINGS_BEG (d)) + { + NEXT; + } + goto fail; + + + /* Match at the very end of the data. */ + CASE (endbuf): + DEBUG_PRINT1 ("EXECUTING endbuf.\n"); + if (AT_STRINGS_END (d)) + { + NEXT; + } + goto fail; + + + /* on_failure_keep_string_jump is used to optimize `.*\n'. It + pushes NULL as the value for the string on the stack. Then + `pop_failure_point' will keep the current value for the + string, instead of restoring it. To see why, consider + matching `foo\nbar' against `.*\n'. The .* matches the foo; + then the . fails against the \n. But the next thing we want + to do is match the \n against the \n; if we restored the + string value, we would be back at the foo. + + Because this is used only in specific cases, we don't need to + check all the things that `on_failure_jump' does, to make + sure the right things get saved on the stack. Hence we don't + share its code. The only reason to push anything on the + stack at all is that otherwise we would have to change + `anychar's code to do something besides goto fail in this + case; that seems worse than this. */ + CASE (on_failure_keep_string_jump): + DEBUG_PRINT1 ("EXECUTING on_failure_keep_string_jump"); + + EXTRACT_NUMBER_AND_INCR (mcnt, p); +#ifdef _LIBC + DEBUG_PRINT3 (" %d (to %p):\n", mcnt, p + mcnt); +#else + DEBUG_PRINT3 (" %d (to 0x%x):\n", mcnt, p + mcnt); +#endif + + PUSH_FAILURE_POINT (p + mcnt, NULL, -2); + NEXT; + + + /* Uses of on_failure_jump: + + Each alternative starts with an on_failure_jump that points + to the beginning of the next alternative. Each alternative + except the last ends with a jump that in effect jumps past + the rest of the alternatives. (They really jump to the + ending jump of the following alternative, because tensioning + these jumps is a hassle.) + + Repeats start with an on_failure_jump that points past both + the repetition text and either the following jump or + pop_failure_jump back to this on_failure_jump. */ + CASE (on_failure_jump): + on_failure: + DEBUG_PRINT1 ("EXECUTING on_failure_jump"); + + EXTRACT_NUMBER_AND_INCR (mcnt, p); +#ifdef _LIBC + DEBUG_PRINT3 (" %d (to %p)", mcnt, p + mcnt); +#else + DEBUG_PRINT3 (" %d (to 0x%x)", mcnt, p + mcnt); +#endif + + /* If this on_failure_jump comes right before a group (i.e., + the original * applied to a group), save the information + for that group and all inner ones, so that if we fail back + to this point, the group's information will be correct. + For example, in \(a*\)*\1, we need the preceding group, + and in \(zz\(a*\)b*\)\2, we need the inner group. */ + + /* We can't use `p' to check ahead because we push + a failure point to `p + mcnt' after we do this. */ + p1 = p; + + /* We need to skip no_op's before we look for the + start_memory in case this on_failure_jump is happening as + the result of a completed succeed_n, as in \(a\)\{1,3\}b\1 + against aba. */ + while (p1 < pend && (re_opcode_t) *p1 == no_op) + p1++; + + if (p1 < pend && (re_opcode_t) *p1 == start_memory) + { + /* We have a new highest active register now. This will + get reset at the start_memory we are about to get to, + but we will have saved all the registers relevant to + this repetition op, as described above. */ + highest_active_reg = *(p1 + 1) + *(p1 + 2); + if (lowest_active_reg == NO_LOWEST_ACTIVE_REG) + lowest_active_reg = *(p1 + 1); + } + + DEBUG_PRINT1 (":\n"); + PUSH_FAILURE_POINT (p + mcnt, d, -2); + NEXT; + + + /* A smart repeat ends with `maybe_pop_jump'. + We change it to either `pop_failure_jump' or `jump'. */ + CASE (maybe_pop_jump): + EXTRACT_NUMBER_AND_INCR (mcnt, p); + DEBUG_PRINT2 ("EXECUTING maybe_pop_jump %d.\n", mcnt); + { + register UCHAR_T *p2 = p; + + /* Compare the beginning of the repeat with what in the + pattern follows its end. If we can establish that there + is nothing that they would both match, i.e., that we + would have to backtrack because of (as in, e.g., `a*a') + then we can change to pop_failure_jump, because we'll + never have to backtrack. + + This is not true in the case of alternatives: in + `(a|ab)*' we do need to backtrack to the `ab' alternative + (e.g., if the string was `ab'). But instead of trying to + detect that here, the alternative has put on a dummy + failure point which is what we will end up popping. */ + + /* Skip over open/close-group commands. + If what follows this loop is a ...+ construct, + look at what begins its body, since we will have to + match at least one of that. */ + while (1) + { + if (p2 + 2 < pend + && ((re_opcode_t) *p2 == stop_memory + || (re_opcode_t) *p2 == start_memory)) + p2 += 3; + else if (p2 + 2 + 2 * OFFSET_ADDRESS_SIZE < pend + && (re_opcode_t) *p2 == dummy_failure_jump) + p2 += 2 + 2 * OFFSET_ADDRESS_SIZE; + else + break; + } + + p1 = p + mcnt; + /* p1[0] ... p1[2] are the `on_failure_jump' corresponding + to the `maybe_finalize_jump' of this case. Examine what + follows. */ + + /* If we're at the end of the pattern, we can change. */ + if (p2 == pend) + { + /* Consider what happens when matching ":\(.*\)" + against ":/". I don't really understand this code + yet. */ + p[-(1+OFFSET_ADDRESS_SIZE)] = (UCHAR_T) + pop_failure_jump; + DEBUG_PRINT1 + (" End of pattern: change to `pop_failure_jump'.\n"); + } + + else if ((re_opcode_t) *p2 == exactn +#ifdef MBS_SUPPORT + || (re_opcode_t) *p2 == exactn_bin +#endif + || (bufp->newline_anchor && (re_opcode_t) *p2 == endline)) + { + register UCHAR_T c + = *p2 == (UCHAR_T) endline ? '\n' : p2[2]; + + if (((re_opcode_t) p1[1+OFFSET_ADDRESS_SIZE] == exactn +#ifdef MBS_SUPPORT + || (re_opcode_t) p1[1+OFFSET_ADDRESS_SIZE] == exactn_bin +#endif + ) && p1[3+OFFSET_ADDRESS_SIZE] != c) + { + p[-(1+OFFSET_ADDRESS_SIZE)] = (UCHAR_T) + pop_failure_jump; +#ifdef WCHAR + DEBUG_PRINT3 (" %C != %C => pop_failure_jump.\n", + (wint_t) c, + (wint_t) p1[3+OFFSET_ADDRESS_SIZE]); +#else + DEBUG_PRINT3 (" %c != %c => pop_failure_jump.\n", + (char) c, + (char) p1[3+OFFSET_ADDRESS_SIZE]); +#endif + } + +#ifndef WCHAR + else if ((re_opcode_t) p1[3] == charset + || (re_opcode_t) p1[3] == charset_not) + { + int not = (re_opcode_t) p1[3] == charset_not; + + if (c < (unsigned) (p1[4] * BYTEWIDTH) + && p1[5 + c / BYTEWIDTH] & (1 << (c % BYTEWIDTH))) + not = !not; + + /* `not' is equal to 1 if c would match, which means + that we can't change to pop_failure_jump. */ + if (!not) + { + p[-3] = (unsigned char) pop_failure_jump; + DEBUG_PRINT1 (" No match => pop_failure_jump.\n"); + } + } +#endif /* not WCHAR */ + } +#ifndef WCHAR + else if ((re_opcode_t) *p2 == charset) + { + /* We win if the first character of the loop is not part + of the charset. */ + if ((re_opcode_t) p1[3] == exactn + && ! ((int) p2[1] * BYTEWIDTH > (int) p1[5] + && (p2[2 + p1[5] / BYTEWIDTH] + & (1 << (p1[5] % BYTEWIDTH))))) + { + p[-3] = (unsigned char) pop_failure_jump; + DEBUG_PRINT1 (" No match => pop_failure_jump.\n"); + } + + else if ((re_opcode_t) p1[3] == charset_not) + { + int idx; + /* We win if the charset_not inside the loop + lists every character listed in the charset after. */ + for (idx = 0; idx < (int) p2[1]; idx++) + if (! (p2[2 + idx] == 0 + || (idx < (int) p1[4] + && ((p2[2 + idx] & ~ p1[5 + idx]) == 0)))) + break; + + if (idx == p2[1]) + { + p[-3] = (unsigned char) pop_failure_jump; + DEBUG_PRINT1 (" No match => pop_failure_jump.\n"); + } + } + else if ((re_opcode_t) p1[3] == charset) + { + int idx; + /* We win if the charset inside the loop + has no overlap with the one after the loop. */ + for (idx = 0; + idx < (int) p2[1] && idx < (int) p1[4]; + idx++) + if ((p2[2 + idx] & p1[5 + idx]) != 0) + break; + + if (idx == p2[1] || idx == p1[4]) + { + p[-3] = (unsigned char) pop_failure_jump; + DEBUG_PRINT1 (" No match => pop_failure_jump.\n"); + } + } + } +#endif /* not WCHAR */ + } + p -= OFFSET_ADDRESS_SIZE; /* Point at relative address again. */ + if ((re_opcode_t) p[-1] != pop_failure_jump) + { + p[-1] = (UCHAR_T) jump; + DEBUG_PRINT1 (" Match => jump.\n"); + goto unconditional_jump; + } + /* Note fall through. */ + + + /* The end of a simple repeat has a pop_failure_jump back to + its matching on_failure_jump, where the latter will push a + failure point. The pop_failure_jump takes off failure + points put on by this pop_failure_jump's matching + on_failure_jump; we got through the pattern to here from the + matching on_failure_jump, so didn't fail. */ + CASE (pop_failure_jump): + { + /* We need to pass separate storage for the lowest and + highest registers, even though we don't care about the + actual values. Otherwise, we will restore only one + register from the stack, since lowest will == highest in + `pop_failure_point'. */ + active_reg_t dummy_low_reg, dummy_high_reg; + UCHAR_T *pdummy = NULL; + const CHAR_T *sdummy = NULL; + + DEBUG_PRINT1 ("EXECUTING pop_failure_jump.\n"); + POP_FAILURE_POINT (sdummy, pdummy, + dummy_low_reg, dummy_high_reg, + reg_dummy, reg_dummy, reg_info_dummy); + } + /* Note fall through. */ + + unconditional_jump: +#ifdef _LIBC + DEBUG_PRINT2 ("\n%p: ", p); +#else + DEBUG_PRINT2 ("\n0x%x: ", p); +#endif + /* Note fall through. */ + + /* Unconditionally jump (without popping any failure points). */ + CASE (jump): + EXTRACT_NUMBER_AND_INCR (mcnt, p); /* Get the amount to jump. */ + DEBUG_PRINT2 ("EXECUTING jump %d ", mcnt); + p += mcnt; /* Do the jump. */ +#ifdef _LIBC + DEBUG_PRINT2 ("(to %p).\n", p); +#else + DEBUG_PRINT2 ("(to 0x%x).\n", p); +#endif + NEXT; + + + /* We need this opcode so we can detect where alternatives end + in `group_match_null_string_p' et al. */ + CASE (jump_past_alt): + DEBUG_PRINT1 ("EXECUTING jump_past_alt.\n"); + goto unconditional_jump; + + + /* Normally, the on_failure_jump pushes a failure point, which + then gets popped at pop_failure_jump. We will end up at + pop_failure_jump, also, and with a pattern of, say, `a+', we + are skipping over the on_failure_jump, so we have to push + something meaningless for pop_failure_jump to pop. */ + CASE (dummy_failure_jump): + DEBUG_PRINT1 ("EXECUTING dummy_failure_jump.\n"); + /* It doesn't matter what we push for the string here. What + the code at `fail' tests is the value for the pattern. */ + PUSH_FAILURE_POINT (NULL, NULL, -2); + goto unconditional_jump; + + + /* At the end of an alternative, we need to push a dummy failure + point in case we are followed by a `pop_failure_jump', because + we don't want the failure point for the alternative to be + popped. For example, matching `(a|ab)*' against `aab' + requires that we match the `ab' alternative. */ + CASE (push_dummy_failure): + DEBUG_PRINT1 ("EXECUTING push_dummy_failure.\n"); + /* See comments just above at `dummy_failure_jump' about the + two zeroes. */ + PUSH_FAILURE_POINT (NULL, NULL, -2); + NEXT; + + /* Have to succeed matching what follows at least n times. + After that, handle like `on_failure_jump'. */ + CASE (succeed_n): + EXTRACT_NUMBER (mcnt, p + OFFSET_ADDRESS_SIZE); + DEBUG_PRINT2 ("EXECUTING succeed_n %d.\n", mcnt); + + assert (mcnt >= 0); + /* Originally, this is how many times we HAVE to succeed. */ + if (mcnt > 0) + { + mcnt--; + p += OFFSET_ADDRESS_SIZE; + STORE_NUMBER_AND_INCR (p, mcnt); +#ifdef _LIBC + DEBUG_PRINT3 (" Setting %p to %d.\n", p - OFFSET_ADDRESS_SIZE + , mcnt); +#else + DEBUG_PRINT3 (" Setting 0x%x to %d.\n", p - OFFSET_ADDRESS_SIZE + , mcnt); +#endif + } + else if (mcnt == 0) + { +#ifdef _LIBC + DEBUG_PRINT2 (" Setting two bytes from %p to no_op.\n", + p + OFFSET_ADDRESS_SIZE); +#else + DEBUG_PRINT2 (" Setting two bytes from 0x%x to no_op.\n", + p + OFFSET_ADDRESS_SIZE); +#endif /* _LIBC */ + +#ifdef WCHAR + p[1] = (UCHAR_T) no_op; +#else + p[2] = (UCHAR_T) no_op; + p[3] = (UCHAR_T) no_op; +#endif /* WCHAR */ + goto on_failure; + } + NEXT; + + CASE (jump_n): + EXTRACT_NUMBER (mcnt, p + OFFSET_ADDRESS_SIZE); + DEBUG_PRINT2 ("EXECUTING jump_n %d.\n", mcnt); + + /* Originally, this is how many times we CAN jump. */ + if (mcnt) + { + mcnt--; + STORE_NUMBER (p + OFFSET_ADDRESS_SIZE, mcnt); + +#ifdef _LIBC + DEBUG_PRINT3 (" Setting %p to %d.\n", p + OFFSET_ADDRESS_SIZE, + mcnt); +#else + DEBUG_PRINT3 (" Setting 0x%x to %d.\n", p + OFFSET_ADDRESS_SIZE, + mcnt); +#endif /* _LIBC */ + goto unconditional_jump; + } + /* If don't have to jump any more, skip over the rest of command. */ + else + p += 2 * OFFSET_ADDRESS_SIZE; + NEXT; + + CASE (set_number_at): + { + DEBUG_PRINT1 ("EXECUTING set_number_at.\n"); + + EXTRACT_NUMBER_AND_INCR (mcnt, p); + p1 = p + mcnt; + EXTRACT_NUMBER_AND_INCR (mcnt, p); +#ifdef _LIBC + DEBUG_PRINT3 (" Setting %p to %d.\n", p1, mcnt); +#else + DEBUG_PRINT3 (" Setting 0x%x to %d.\n", p1, mcnt); +#endif + STORE_NUMBER (p1, mcnt); + NEXT; + } + +#if 0 + /* The DEC Alpha C compiler 3.x generates incorrect code for the + test WORDCHAR_P (d - 1) != WORDCHAR_P (d) in the expansion of + AT_WORD_BOUNDARY, so this code is disabled. Expanding the + macro and introducing temporary variables works around the bug. */ + + CASE (wordbound): + DEBUG_PRINT1 ("EXECUTING wordbound.\n"); + if (AT_WORD_BOUNDARY (d)) + { + NEXT; + } + goto fail; + + CASE (notwordbound): + DEBUG_PRINT1 ("EXECUTING notwordbound.\n"); + if (AT_WORD_BOUNDARY (d)) + goto fail; + NEXT; +#else + CASE (wordbound): + { + boolean prevchar, thischar; + + DEBUG_PRINT1 ("EXECUTING wordbound.\n"); + if (AT_STRINGS_BEG (d) || AT_STRINGS_END (d)) + { + NEXT; + } + + prevchar = WORDCHAR_P (d - 1); + thischar = WORDCHAR_P (d); + if (prevchar != thischar) + { + NEXT; + } + goto fail; + } + + CASE (notwordbound): + { + boolean prevchar, thischar; + + DEBUG_PRINT1 ("EXECUTING notwordbound.\n"); + if (AT_STRINGS_BEG (d) || AT_STRINGS_END (d)) + goto fail; + + prevchar = WORDCHAR_P (d - 1); + thischar = WORDCHAR_P (d); + if (prevchar != thischar) + goto fail; + NEXT; + } +#endif + + CASE (wordbeg): + DEBUG_PRINT1 ("EXECUTING wordbeg.\n"); + if (!AT_STRINGS_END (d) && WORDCHAR_P (d) + && (AT_STRINGS_BEG (d) || !WORDCHAR_P (d - 1))) + { + NEXT; + } + goto fail; + + CASE (wordend): + DEBUG_PRINT1 ("EXECUTING wordend.\n"); + if (!AT_STRINGS_BEG (d) && WORDCHAR_P (d - 1) + && (AT_STRINGS_END (d) || !WORDCHAR_P (d))) + { + NEXT; + } + goto fail; + +#ifdef emacs + CASE (before_dot): + DEBUG_PRINT1 ("EXECUTING before_dot.\n"); + if (PTR_CHAR_POS ((unsigned char *) d) >= point) + goto fail; + NEXT; + + CASE (at_dot): + DEBUG_PRINT1 ("EXECUTING at_dot.\n"); + if (PTR_CHAR_POS ((unsigned char *) d) != point) + goto fail; + NEXT; + + CASE (after_dot): + DEBUG_PRINT1 ("EXECUTING after_dot.\n"); + if (PTR_CHAR_POS ((unsigned char *) d) <= point) + goto fail; + NEXT; + + CASE (syntaxspec): + DEBUG_PRINT2 ("EXECUTING syntaxspec %d.\n", mcnt); + mcnt = *p++; + goto matchsyntax; + + CASE (wordchar): + DEBUG_PRINT1 ("EXECUTING Emacs wordchar.\n"); + mcnt = (int) Sword; + matchsyntax: + PREFETCH (); + /* Can't use *d++ here; SYNTAX may be an unsafe macro. */ + d++; + if (SYNTAX (d[-1]) != (enum syntaxcode) mcnt) + goto fail; + SET_REGS_MATCHED (); + NEXT; + + CASE (notsyntaxspec): + DEBUG_PRINT2 ("EXECUTING notsyntaxspec %d.\n", mcnt); + mcnt = *p++; + goto matchnotsyntax; + + CASE (notwordchar): + DEBUG_PRINT1 ("EXECUTING Emacs notwordchar.\n"); + mcnt = (int) Sword; + matchnotsyntax: + PREFETCH (); + /* Can't use *d++ here; SYNTAX may be an unsafe macro. */ + d++; + if (SYNTAX (d[-1]) == (enum syntaxcode) mcnt) + goto fail; + SET_REGS_MATCHED (); + NEXT; + +#else /* not emacs */ + CASE (wordchar): + DEBUG_PRINT1 ("EXECUTING non-Emacs wordchar.\n"); + PREFETCH (); + if (!WORDCHAR_P (d)) + goto fail; + SET_REGS_MATCHED (); + d++; + NEXT; + + CASE (notwordchar): + DEBUG_PRINT1 ("EXECUTING non-Emacs notwordchar.\n"); + PREFETCH (); + if (WORDCHAR_P (d)) + goto fail; + SET_REGS_MATCHED (); + d++; + NEXT; +#endif /* not emacs */ + +#ifndef __GNUC__ + default: + abort (); + } + continue; /* Successfully executed one pattern command; keep going. */ +#endif + + + /* We goto here if a matching operation fails. */ + fail: + if (!FAIL_STACK_EMPTY ()) + { /* A restart point is known. Restore to that state. */ + DEBUG_PRINT1 ("\nFAIL:\n"); + POP_FAILURE_POINT (d, p, + lowest_active_reg, highest_active_reg, + regstart, regend, reg_info); + + /* If this failure point is a dummy, try the next one. */ + if (!p) + goto fail; + + /* If we failed to the end of the pattern, don't examine *p. */ + assert (p <= pend); + if (p < pend) + { + boolean is_a_jump_n = false; + + /* If failed to a backwards jump that's part of a repetition + loop, need to pop this failure point and use the next one. */ + switch ((re_opcode_t) *p) + { + case jump_n: + is_a_jump_n = true; + case maybe_pop_jump: + case pop_failure_jump: + case jump: + p1 = p + 1; + EXTRACT_NUMBER_AND_INCR (mcnt, p1); + p1 += mcnt; + + if ((is_a_jump_n && (re_opcode_t) *p1 == succeed_n) + || (!is_a_jump_n + && (re_opcode_t) *p1 == on_failure_jump)) + goto fail; + break; + default: + /* do nothing */ ; + } + } + + if (d >= string1 && d <= end1) + dend = end_match_1; + } + else + break; /* Matching at this starting point really fails. */ + } /* for (;;) */ + + if (best_regs_set) + goto restore_best_regs; + + FREE_VARIABLES (); + + return -1; /* Failure to match. */ +} /* re_match_2 */ + +/* Subroutine definitions for re_match_2. */ + + +/* We are passed P pointing to a register number after a start_memory. + + Return true if the pattern up to the corresponding stop_memory can + match the empty string, and false otherwise. + + If we find the matching stop_memory, sets P to point to one past its number. + Otherwise, sets P to an undefined byte less than or equal to END. + + We don't handle duplicates properly (yet). */ + +static boolean +PREFIX(group_match_null_string_p) (p, end, reg_info) + UCHAR_T **p, *end; + PREFIX(register_info_type) *reg_info; +{ + int mcnt; + /* Point to after the args to the start_memory. */ + UCHAR_T *p1 = *p + 2; + + while (p1 < end) + { + /* Skip over opcodes that can match nothing, and return true or + false, as appropriate, when we get to one that can't, or to the + matching stop_memory. */ + + switch ((re_opcode_t) *p1) + { + /* Could be either a loop or a series of alternatives. */ + case on_failure_jump: + p1++; + EXTRACT_NUMBER_AND_INCR (mcnt, p1); + + /* If the next operation is not a jump backwards in the + pattern. */ + + if (mcnt >= 0) + { + /* Go through the on_failure_jumps of the alternatives, + seeing if any of the alternatives cannot match nothing. + The last alternative starts with only a jump, + whereas the rest start with on_failure_jump and end + with a jump, e.g., here is the pattern for `a|b|c': + + /on_failure_jump/0/6/exactn/1/a/jump_past_alt/0/6 + /on_failure_jump/0/6/exactn/1/b/jump_past_alt/0/3 + /exactn/1/c + + So, we have to first go through the first (n-1) + alternatives and then deal with the last one separately. */ + + + /* Deal with the first (n-1) alternatives, which start + with an on_failure_jump (see above) that jumps to right + past a jump_past_alt. */ + + while ((re_opcode_t) p1[mcnt-(1+OFFSET_ADDRESS_SIZE)] == + jump_past_alt) + { + /* `mcnt' holds how many bytes long the alternative + is, including the ending `jump_past_alt' and + its number. */ + + if (!PREFIX(alt_match_null_string_p) (p1, p1 + mcnt - + (1 + OFFSET_ADDRESS_SIZE), + reg_info)) + return false; + + /* Move to right after this alternative, including the + jump_past_alt. */ + p1 += mcnt; + + /* Break if it's the beginning of an n-th alternative + that doesn't begin with an on_failure_jump. */ + if ((re_opcode_t) *p1 != on_failure_jump) + break; + + /* Still have to check that it's not an n-th + alternative that starts with an on_failure_jump. */ + p1++; + EXTRACT_NUMBER_AND_INCR (mcnt, p1); + if ((re_opcode_t) p1[mcnt-(1+OFFSET_ADDRESS_SIZE)] != + jump_past_alt) + { + /* Get to the beginning of the n-th alternative. */ + p1 -= 1 + OFFSET_ADDRESS_SIZE; + break; + } + } + + /* Deal with the last alternative: go back and get number + of the `jump_past_alt' just before it. `mcnt' contains + the length of the alternative. */ + EXTRACT_NUMBER (mcnt, p1 - OFFSET_ADDRESS_SIZE); + + if (!PREFIX(alt_match_null_string_p) (p1, p1 + mcnt, reg_info)) + return false; + + p1 += mcnt; /* Get past the n-th alternative. */ + } /* if mcnt > 0 */ + break; + + + case stop_memory: + assert (p1[1] == **p); + *p = p1 + 2; + return true; + + + default: + if (!PREFIX(common_op_match_null_string_p) (&p1, end, reg_info)) + return false; + } + } /* while p1 < end */ + + return false; +} /* group_match_null_string_p */ + + +/* Similar to group_match_null_string_p, but doesn't deal with alternatives: + It expects P to be the first byte of a single alternative and END one + byte past the last. The alternative can contain groups. */ + +static boolean +PREFIX(alt_match_null_string_p) (p, end, reg_info) + UCHAR_T *p, *end; + PREFIX(register_info_type) *reg_info; +{ + int mcnt; + UCHAR_T *p1 = p; + + while (p1 < end) + { + /* Skip over opcodes that can match nothing, and break when we get + to one that can't. */ + + switch ((re_opcode_t) *p1) + { + /* It's a loop. */ + case on_failure_jump: + p1++; + EXTRACT_NUMBER_AND_INCR (mcnt, p1); + p1 += mcnt; + break; + + default: + if (!PREFIX(common_op_match_null_string_p) (&p1, end, reg_info)) + return false; + } + } /* while p1 < end */ + + return true; +} /* alt_match_null_string_p */ + + +/* Deals with the ops common to group_match_null_string_p and + alt_match_null_string_p. + + Sets P to one after the op and its arguments, if any. */ + +static boolean +PREFIX(common_op_match_null_string_p) (p, end, reg_info) + UCHAR_T **p, *end; + PREFIX(register_info_type) *reg_info; +{ + int mcnt; + boolean ret; + int reg_no; + UCHAR_T *p1 = *p; + + switch ((re_opcode_t) *p1++) + { + case no_op: + case begline: + case endline: + case begbuf: + case endbuf: + case wordbeg: + case wordend: + case wordbound: + case notwordbound: +#ifdef emacs + case before_dot: + case at_dot: + case after_dot: +#endif + break; + + case start_memory: + reg_no = *p1; + assert (reg_no > 0 && reg_no <= MAX_REGNUM); + ret = PREFIX(group_match_null_string_p) (&p1, end, reg_info); + + /* Have to set this here in case we're checking a group which + contains a group and a back reference to it. */ + + if (REG_MATCH_NULL_STRING_P (reg_info[reg_no]) == MATCH_NULL_UNSET_VALUE) + REG_MATCH_NULL_STRING_P (reg_info[reg_no]) = ret; + + if (!ret) + return false; + break; + + /* If this is an optimized succeed_n for zero times, make the jump. */ + case jump: + EXTRACT_NUMBER_AND_INCR (mcnt, p1); + if (mcnt >= 0) + p1 += mcnt; + else + return false; + break; + + case succeed_n: + /* Get to the number of times to succeed. */ + p1 += OFFSET_ADDRESS_SIZE; + EXTRACT_NUMBER_AND_INCR (mcnt, p1); + + if (mcnt == 0) + { + p1 -= 2 * OFFSET_ADDRESS_SIZE; + EXTRACT_NUMBER_AND_INCR (mcnt, p1); + p1 += mcnt; + } + else + return false; + break; + + case duplicate: + if (!REG_MATCH_NULL_STRING_P (reg_info[*p1])) + return false; + break; + + case set_number_at: + p1 += 2 * OFFSET_ADDRESS_SIZE; + + default: + /* All other opcodes mean we cannot match the empty string. */ + return false; + } + + *p = p1; + return true; +} /* common_op_match_null_string_p */ + + +/* Return zero if TRANSLATE[S1] and TRANSLATE[S2] are identical for LEN + bytes; nonzero otherwise. */ + +static int +PREFIX(bcmp_translate) (s1, s2, len, translate) + const CHAR_T *s1, *s2; + register int len; + RE_TRANSLATE_TYPE translate; +{ + register const UCHAR_T *p1 = (const UCHAR_T *) s1; + register const UCHAR_T *p2 = (const UCHAR_T *) s2; + while (len) + { +#ifdef WCHAR + if (((*p1<=0xff)?translate[*p1++]:*p1++) + != ((*p2<=0xff)?translate[*p2++]:*p2++)) + return 1; +#else /* BYTE */ + if (translate[*p1++] != translate[*p2++]) return 1; +#endif /* WCHAR */ + len--; + } + return 0; +} + + +#else /* not INSIDE_RECURSION */ + +/* Entry points for GNU code. */ + +/* re_compile_pattern is the GNU regular expression compiler: it + compiles PATTERN (of length SIZE) and puts the result in BUFP. + Returns 0 if the pattern was valid, otherwise an error string. + + Assumes the `allocated' (and perhaps `buffer') and `translate' fields + are set in BUFP on entry. + + We call regex_compile to do the actual compilation. */ + +const char * +re_compile_pattern (pattern, length, bufp) + const char *pattern; + size_t length; + struct re_pattern_buffer *bufp; +{ + reg_errcode_t ret; + + /* GNU code is written to assume at least RE_NREGS registers will be set + (and at least one extra will be -1). */ + bufp->regs_allocated = REGS_UNALLOCATED; + + /* And GNU code determines whether or not to get register information + by passing null for the REGS argument to re_match, etc., not by + setting no_sub. */ + bufp->no_sub = 0; + + /* Match anchors at newline. */ + bufp->newline_anchor = 1; + +# ifdef MBS_SUPPORT + if (MB_CUR_MAX != 1) + ret = wcs_regex_compile (pattern, length, re_syntax_options, bufp); + else +# endif + ret = byte_regex_compile (pattern, length, re_syntax_options, bufp); + + if (!ret) + return NULL; + return gettext (re_error_msgid + re_error_msgid_idx[(int) ret]); +} +#ifdef _LIBC +weak_alias (__re_compile_pattern, re_compile_pattern) +#endif + +/* Entry points compatible with 4.2 BSD regex library. We don't define + them unless specifically requested. */ + +#if defined _REGEX_RE_COMP || defined _LIBC + +/* BSD has one and only one pattern buffer. */ +static struct re_pattern_buffer re_comp_buf; + +char * +#ifdef _LIBC +/* Make these definitions weak in libc, so POSIX programs can redefine + these names if they don't use our functions, and still use + regcomp/regexec below without link errors. */ +weak_function +#endif +re_comp (s) + const char *s; +{ + reg_errcode_t ret; + + if (!s) + { + if (!re_comp_buf.buffer) + return gettext ("No previous regular expression"); + return 0; + } + + if (!re_comp_buf.buffer) + { + re_comp_buf.buffer = (unsigned char *) malloc (200); + if (re_comp_buf.buffer == NULL) + return (char *) gettext (re_error_msgid + + re_error_msgid_idx[(int) REG_ESPACE]); + re_comp_buf.allocated = 200; + + re_comp_buf.fastmap = (char *) malloc (1 << BYTEWIDTH); + if (re_comp_buf.fastmap == NULL) + return (char *) gettext (re_error_msgid + + re_error_msgid_idx[(int) REG_ESPACE]); + } + + /* Since `re_exec' always passes NULL for the `regs' argument, we + don't need to initialize the pattern buffer fields which affect it. */ + + /* Match anchors at newlines. */ + re_comp_buf.newline_anchor = 1; + +# ifdef MBS_SUPPORT + if (MB_CUR_MAX != 1) + ret = wcs_regex_compile (s, strlen (s), re_syntax_options, &re_comp_buf); + else +# endif + ret = byte_regex_compile (s, strlen (s), re_syntax_options, &re_comp_buf); + + if (!ret) + return NULL; + + /* Yes, we're discarding `const' here if !HAVE_LIBINTL. */ + return (char *) gettext (re_error_msgid + re_error_msgid_idx[(int) ret]); +} + + +int +#ifdef _LIBC +weak_function +#endif +re_exec (s) + const char *s; +{ + const int len = strlen (s); + return + 0 <= re_search (&re_comp_buf, s, len, 0, len, (struct re_registers *) 0); +} + +#endif /* _REGEX_RE_COMP */ + +/* POSIX.2 functions. Don't define these for Emacs. */ + +#ifndef emacs + +/* regcomp takes a regular expression as a string and compiles it. + + PREG is a regex_t *. We do not expect any fields to be initialized, + since POSIX says we shouldn't. Thus, we set + + `buffer' to the compiled pattern; + `used' to the length of the compiled pattern; + `syntax' to RE_SYNTAX_POSIX_EXTENDED if the + REG_EXTENDED bit in CFLAGS is set; otherwise, to + RE_SYNTAX_POSIX_BASIC; + `newline_anchor' to REG_NEWLINE being set in CFLAGS; + `fastmap' to an allocated space for the fastmap; + `fastmap_accurate' to zero; + `re_nsub' to the number of subexpressions in PATTERN. + + PATTERN is the address of the pattern string. + + CFLAGS is a series of bits which affect compilation. + + If REG_EXTENDED is set, we use POSIX extended syntax; otherwise, we + use POSIX basic syntax. + + If REG_NEWLINE is set, then . and [^...] don't match newline. + Also, regexec will try a match beginning after every newline. + + If REG_ICASE is set, then we considers upper- and lowercase + versions of letters to be equivalent when matching. + + If REG_NOSUB is set, then when PREG is passed to regexec, that + routine will report only success or failure, and nothing about the + registers. + + It returns 0 if it succeeds, nonzero if it doesn't. (See regex.h for + the return codes and their meanings.) */ + +int +regcomp (preg, pattern, cflags) + regex_t *preg; + const char *pattern; + int cflags; +{ + reg_errcode_t ret; + reg_syntax_t syntax + = (cflags & REG_EXTENDED) ? + RE_SYNTAX_POSIX_EXTENDED : RE_SYNTAX_POSIX_BASIC; + + /* regex_compile will allocate the space for the compiled pattern. */ + preg->buffer = 0; + preg->allocated = 0; + preg->used = 0; + + /* Try to allocate space for the fastmap. */ + preg->fastmap = (char *) malloc (1 << BYTEWIDTH); + + if (cflags & REG_ICASE) + { + unsigned i; + + preg->translate + = (RE_TRANSLATE_TYPE) malloc (CHAR_SET_SIZE + * sizeof (*(RE_TRANSLATE_TYPE)0)); + if (preg->translate == NULL) + return (int) REG_ESPACE; + + /* Map uppercase characters to corresponding lowercase ones. */ + for (i = 0; i < CHAR_SET_SIZE; i++) + preg->translate[i] = ISUPPER (i) ? TOLOWER (i) : i; + } + else + preg->translate = NULL; + + /* If REG_NEWLINE is set, newlines are treated differently. */ + if (cflags & REG_NEWLINE) + { /* REG_NEWLINE implies neither . nor [^...] match newline. */ + syntax &= ~RE_DOT_NEWLINE; + syntax |= RE_HAT_LISTS_NOT_NEWLINE; + /* It also changes the matching behavior. */ + preg->newline_anchor = 1; + } + else + preg->newline_anchor = 0; + + preg->no_sub = !!(cflags & REG_NOSUB); + + /* POSIX says a null character in the pattern terminates it, so we + can use strlen here in compiling the pattern. */ +# ifdef MBS_SUPPORT + if (MB_CUR_MAX != 1) + ret = wcs_regex_compile (pattern, strlen (pattern), syntax, preg); + else +# endif + ret = byte_regex_compile (pattern, strlen (pattern), syntax, preg); + + /* POSIX doesn't distinguish between an unmatched open-group and an + unmatched close-group: both are REG_EPAREN. */ + if (ret == REG_ERPAREN) ret = REG_EPAREN; + + if (ret == REG_NOERROR && preg->fastmap) + { + /* Compute the fastmap now, since regexec cannot modify the pattern + buffer. */ + if (re_compile_fastmap (preg) == -2) + { + /* Some error occurred while computing the fastmap, just forget + about it. */ + free (preg->fastmap); + preg->fastmap = NULL; + } + } + + return (int) ret; +} +#ifdef _LIBC +weak_alias (__regcomp, regcomp) +#endif + + +/* regexec searches for a given pattern, specified by PREG, in the + string STRING. + + If NMATCH is zero or REG_NOSUB was set in the cflags argument to + `regcomp', we ignore PMATCH. Otherwise, we assume PMATCH has at + least NMATCH elements, and we set them to the offsets of the + corresponding matched substrings. + + EFLAGS specifies `execution flags' which affect matching: if + REG_NOTBOL is set, then ^ does not match at the beginning of the + string; if REG_NOTEOL is set, then $ does not match at the end. + + We return 0 if we find a match and REG_NOMATCH if not. */ + +int +regexec (preg, string, nmatch, pmatch, eflags) + const regex_t *preg; + const char *string; + size_t nmatch; + regmatch_t pmatch[]; + int eflags; +{ + int ret; + struct re_registers regs; + regex_t private_preg; + int len = strlen (string); + boolean want_reg_info = !preg->no_sub && nmatch > 0; + + private_preg = *preg; + + private_preg.not_bol = !!(eflags & REG_NOTBOL); + private_preg.not_eol = !!(eflags & REG_NOTEOL); + + /* The user has told us exactly how many registers to return + information about, via `nmatch'. We have to pass that on to the + matching routines. */ + private_preg.regs_allocated = REGS_FIXED; + + if (want_reg_info) + { + regs.num_regs = nmatch; + regs.start = TALLOC (nmatch * 2, regoff_t); + if (regs.start == NULL) + return (int) REG_NOMATCH; + regs.end = regs.start + nmatch; + } + + /* Perform the searching operation. */ + ret = re_search (&private_preg, string, len, + /* start: */ 0, /* range: */ len, + want_reg_info ? ®s : (struct re_registers *) 0); + + /* Copy the register information to the POSIX structure. */ + if (want_reg_info) + { + if (ret >= 0) + { + unsigned r; + + for (r = 0; r < nmatch; r++) + { + pmatch[r].rm_so = regs.start[r]; + pmatch[r].rm_eo = regs.end[r]; + } + } + + /* If we needed the temporary register info, free the space now. */ + free (regs.start); + } + + /* We want zero return to mean success, unlike `re_search'. */ + return ret >= 0 ? (int) REG_NOERROR : (int) REG_NOMATCH; +} +#ifdef _LIBC +weak_alias (__regexec, regexec) +#endif + + +/* Returns a message corresponding to an error code, ERRCODE, returned + from either regcomp or regexec. We don't use PREG here. */ + +size_t +regerror (errcode, preg, errbuf, errbuf_size) + int errcode; + const regex_t *preg; + char *errbuf; + size_t errbuf_size; +{ + const char *msg; + size_t msg_size; + + if (errcode < 0 + || errcode >= (int) (sizeof (re_error_msgid_idx) + / sizeof (re_error_msgid_idx[0]))) + /* Only error codes returned by the rest of the code should be passed + to this routine. If we are given anything else, or if other regex + code generates an invalid error code, then the program has a bug. + Dump core so we can fix it. */ + abort (); + + msg = gettext (re_error_msgid + re_error_msgid_idx[errcode]); + + msg_size = strlen (msg) + 1; /* Includes the null. */ + + if (errbuf_size != 0) + { + if (msg_size > errbuf_size) + { +#if defined HAVE_MEMPCPY || defined _LIBC + *((char *) __mempcpy (errbuf, msg, errbuf_size - 1)) = '\0'; +#else + memcpy (errbuf, msg, errbuf_size - 1); + errbuf[errbuf_size - 1] = 0; +#endif + } + else + memcpy (errbuf, msg, msg_size); + } + + return msg_size; +} +#ifdef _LIBC +weak_alias (__regerror, regerror) +#endif + + +/* Free dynamically allocated space used by PREG. */ + +void +regfree (preg) + regex_t *preg; +{ + if (preg->buffer != NULL) + free (preg->buffer); + preg->buffer = NULL; + + preg->allocated = 0; + preg->used = 0; + + if (preg->fastmap != NULL) + free (preg->fastmap); + preg->fastmap = NULL; + preg->fastmap_accurate = 0; + + if (preg->translate != NULL) + free (preg->translate); + preg->translate = NULL; +} +#ifdef _LIBC +weak_alias (__regfree, regfree) +#endif + +#endif /* not emacs */ + +#endif /* not INSIDE_RECURSION */ + + +#undef STORE_NUMBER +#undef STORE_NUMBER_AND_INCR +#undef EXTRACT_NUMBER +#undef EXTRACT_NUMBER_AND_INCR + +#undef DEBUG_PRINT_COMPILED_PATTERN +#undef DEBUG_PRINT_DOUBLE_STRING + +#undef INIT_FAIL_STACK +#undef RESET_FAIL_STACK +#undef DOUBLE_FAIL_STACK +#undef PUSH_PATTERN_OP +#undef PUSH_FAILURE_POINTER +#undef PUSH_FAILURE_INT +#undef PUSH_FAILURE_ELT +#undef POP_FAILURE_POINTER +#undef POP_FAILURE_INT +#undef POP_FAILURE_ELT +#undef DEBUG_PUSH +#undef DEBUG_POP +#undef PUSH_FAILURE_POINT +#undef POP_FAILURE_POINT + +#undef REG_UNSET_VALUE +#undef REG_UNSET + +#undef PATFETCH +#undef PATFETCH_RAW +#undef PATUNFETCH +#undef TRANSLATE + +#undef INIT_BUF_SIZE +#undef GET_BUFFER_SPACE +#undef BUF_PUSH +#undef BUF_PUSH_2 +#undef BUF_PUSH_3 +#undef STORE_JUMP +#undef STORE_JUMP2 +#undef INSERT_JUMP +#undef INSERT_JUMP2 +#undef EXTEND_BUFFER +#undef GET_UNSIGNED_NUMBER +#undef FREE_STACK_RETURN + +# undef POINTER_TO_OFFSET +# undef MATCHING_IN_FRST_STRING +# undef PREFETCH +# undef AT_STRINGS_BEG +# undef AT_STRINGS_END +# undef WORDCHAR_P +# undef FREE_VAR +# undef FREE_VARIABLES +# undef NO_HIGHEST_ACTIVE_REG +# undef NO_LOWEST_ACTIVE_REG + +# undef CHAR_T +# undef UCHAR_T +# undef COMPILED_BUFFER_VAR +# undef OFFSET_ADDRESS_SIZE +# undef CHAR_CLASS_SIZE +# undef PREFIX +# undef ARG_PREFIX +# undef PUT_CHAR +# undef BYTE +# undef WCHAR + +# define DEFINED_ONCE diff --git a/src/apps/bin/diffutils-2.8.1/lib/regex.h b/src/apps/bin/diffutils-2.8.1/lib/regex.h new file mode 100644 index 0000000000..81789be897 --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/lib/regex.h @@ -0,0 +1,46 @@ +#ifndef _REGEX_H +#include + +/* Document internal interfaces. */ +extern reg_syntax_t __re_set_syntax _RE_ARGS ((reg_syntax_t syntax)); + +extern const char *__re_compile_pattern + _RE_ARGS ((const char *pattern, size_t length, + struct re_pattern_buffer *buffer)); + +extern int __re_compile_fastmap _RE_ARGS ((struct re_pattern_buffer *buffer)); + +extern int __re_search + _RE_ARGS ((struct re_pattern_buffer *buffer, const char *string, + int length, int start, int range, struct re_registers *regs)); + +extern int __re_search_2 + _RE_ARGS ((struct re_pattern_buffer *buffer, const char *string1, + int length1, const char *string2, int length2, + int start, int range, struct re_registers *regs, int stop)); + +extern int __re_match + _RE_ARGS ((struct re_pattern_buffer *buffer, const char *string, + int length, int start, struct re_registers *regs)); + +extern int __re_match_2 + _RE_ARGS ((struct re_pattern_buffer *buffer, const char *string1, + int length1, const char *string2, int length2, + int start, struct re_registers *regs, int stop)); + +extern void __re_set_registers + _RE_ARGS ((struct re_pattern_buffer *buffer, struct re_registers *regs, + unsigned num_regs, regoff_t *starts, regoff_t *ends)); + +extern int __regcomp _RE_ARGS ((regex_t *__preg, const char *__pattern, + int __cflags)); + +extern int __regexec _RE_ARGS ((const regex_t *__preg, + const char *__string, size_t __nmatch, + regmatch_t __pmatch[], int __eflags)); + +extern size_t __regerror _RE_ARGS ((int __errcode, const regex_t *__preg, + char *__errbuf, size_t __errbuf_size)); + +extern void __regfree _RE_ARGS ((regex_t *__preg)); +#endif diff --git a/src/apps/bin/diffutils-2.8.1/lib/regex.hin b/src/apps/bin/diffutils-2.8.1/lib/regex.hin new file mode 100644 index 0000000000..81789be897 --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/lib/regex.hin @@ -0,0 +1,46 @@ +#ifndef _REGEX_H +#include + +/* Document internal interfaces. */ +extern reg_syntax_t __re_set_syntax _RE_ARGS ((reg_syntax_t syntax)); + +extern const char *__re_compile_pattern + _RE_ARGS ((const char *pattern, size_t length, + struct re_pattern_buffer *buffer)); + +extern int __re_compile_fastmap _RE_ARGS ((struct re_pattern_buffer *buffer)); + +extern int __re_search + _RE_ARGS ((struct re_pattern_buffer *buffer, const char *string, + int length, int start, int range, struct re_registers *regs)); + +extern int __re_search_2 + _RE_ARGS ((struct re_pattern_buffer *buffer, const char *string1, + int length1, const char *string2, int length2, + int start, int range, struct re_registers *regs, int stop)); + +extern int __re_match + _RE_ARGS ((struct re_pattern_buffer *buffer, const char *string, + int length, int start, struct re_registers *regs)); + +extern int __re_match_2 + _RE_ARGS ((struct re_pattern_buffer *buffer, const char *string1, + int length1, const char *string2, int length2, + int start, struct re_registers *regs, int stop)); + +extern void __re_set_registers + _RE_ARGS ((struct re_pattern_buffer *buffer, struct re_registers *regs, + unsigned num_regs, regoff_t *starts, regoff_t *ends)); + +extern int __regcomp _RE_ARGS ((regex_t *__preg, const char *__pattern, + int __cflags)); + +extern int __regexec _RE_ARGS ((const regex_t *__preg, + const char *__string, size_t __nmatch, + regmatch_t __pmatch[], int __eflags)); + +extern size_t __regerror _RE_ARGS ((int __errcode, const regex_t *__preg, + char *__errbuf, size_t __errbuf_size)); + +extern void __regfree _RE_ARGS ((regex_t *__preg)); +#endif diff --git a/src/apps/bin/diffutils-2.8.1/lib/setmode.c b/src/apps/bin/diffutils-2.8.1/lib/setmode.c new file mode 100644 index 0000000000..dbcf44e8f3 --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/lib/setmode.c @@ -0,0 +1,62 @@ +/* Set a file descriptor's mode to binary or to text. + + Copyright (C) 2001 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; see the file COPYING. + If not, write to the Free Software Foundation, + 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + +/* Written by Paul Eggert */ + +#if HAVE_CONFIG_H +# include +#endif + +#if HAVE_STDBOOL_H +# include +#else +typedef enum {false = 0, true = 1} bool; +#endif + +#if HAVE_SETMODE_DOS +# include +# if HAVE_FCNTL_H +# include +# endif +# if HAVE_UNISTD_H +# include +# endif +#endif + +#include "setmode.h" +#undef set_binary_mode + + +/* Set the binary mode of FD to MODE, returning its previous mode. + MODE is 1 for binary and 0 for text. If setting the mode might + cause problems, ignore the request and return MODE. Always return + 1 on POSIX platforms, which do not distinguish between text and + binary. */ + +bool +set_binary_mode (int fd, bool mode) +{ +#if HAVE_SETMODE_DOS + if (isatty (fd)) + return mode; + return setmode (fd, mode ? O_BINARY : O_TEXT) != O_TEXT; +#else + return 1; +#endif +} diff --git a/src/apps/bin/diffutils-2.8.1/lib/setmode.h b/src/apps/bin/diffutils-2.8.1/lib/setmode.h new file mode 100644 index 0000000000..a5bb959f5d --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/lib/setmode.h @@ -0,0 +1,27 @@ +/* Set a file descriptor's mode to binary or to text. + + Copyright (C) 2001 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; see the file COPYING. + If not, write to the Free Software Foundation, + 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + +/* Written by Paul Eggert */ + +#ifndef set_binary_mode +bool set_binary_mode (int, bool); +# if ! HAVE_SETMODE_DOS +# define set_binary_mode(fd, mode) 1 +# endif +#endif diff --git a/src/apps/bin/diffutils-2.8.1/lib/strcasecmp.c b/src/apps/bin/diffutils-2.8.1/lib/strcasecmp.c new file mode 100644 index 0000000000..ae7601de0f --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/lib/strcasecmp.c @@ -0,0 +1,66 @@ +/* strcasecmp.c -- case insensitive string comparator + Copyright (C) 1998, 1999 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. */ + +#if HAVE_CONFIG_H +# include +#endif + +#ifdef LENGTH_LIMIT +# define STRXCASECMP_FUNCTION strncasecmp +# define STRXCASECMP_DECLARE_N , size_t n +# define LENGTH_LIMIT_EXPR(Expr) Expr +#else +# define STRXCASECMP_FUNCTION strcasecmp +# define STRXCASECMP_DECLARE_N /* empty */ +# define LENGTH_LIMIT_EXPR(Expr) 0 +#endif + +#include +#include + +#define TOLOWER(Ch) (isupper (Ch) ? tolower (Ch) : (Ch)) + +/* Compare {{no more than N characters of }}strings S1 and S2, + ignoring case, returning less than, equal to or + greater than zero if S1 is lexicographically less + than, equal to or greater than S2. */ + +int +STRXCASECMP_FUNCTION (const char *s1, const char *s2 STRXCASECMP_DECLARE_N) +{ + register const unsigned char *p1 = (const unsigned char *) s1; + register const unsigned char *p2 = (const unsigned char *) s2; + unsigned char c1, c2; + + if (p1 == p2 || LENGTH_LIMIT_EXPR (n == 0)) + return 0; + + do + { + c1 = TOLOWER (*p1); + c2 = TOLOWER (*p2); + + if (LENGTH_LIMIT_EXPR (--n == 0) || c1 == '\0') + break; + + ++p1; + ++p2; + } + while (c1 == c2); + + return c1 - c2; +} diff --git a/src/apps/bin/diffutils-2.8.1/lib/strftime.c b/src/apps/bin/diffutils-2.8.1/lib/strftime.c new file mode 100644 index 0000000000..cc3a2d5686 --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/lib/strftime.c @@ -0,0 +1,1406 @@ +/* Copyright (C) 1991-1999, 2000, 2001 Free Software Foundation, Inc. + + NOTE: The canonical source of this file is maintained with the GNU C Library. + Bugs can be reported to bug-glibc@prep.ai.mit.edu. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by the + Free Software Foundation; either version 2, or (at your option) any + later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, + 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/src/apps/bin/diffutils-2.8.1/lib/strtoimax.c b/src/apps/bin/diffutils-2.8.1/lib/strtoimax.c new file mode 100644 index 0000000000..465abc5412 --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/lib/strtoimax.c @@ -0,0 +1,101 @@ +/* Convert string representation of a number into an intmax_t value. + + Copyright (C) 1999, 2001 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software Foundation, + Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + +/* Written by Paul Eggert. */ + +#if HAVE_CONFIG_H +# include +#endif + +#if HAVE_INTTYPES_H +# include +#endif + +#if HAVE_STDLIB_H +# include +#endif + +#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_UNSIGNED_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/src/apps/bin/diffutils-2.8.1/lib/strtol.c b/src/apps/bin/diffutils-2.8.1/lib/strtol.c new file mode 100644 index 0000000000..0c9c2767ea --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/lib/strtol.c @@ -0,0 +1,472 @@ +/* Convert string representation of a number into an integer value. + Copyright (C) 1991, 92, 94, 95, 96, 97, 98, 99 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 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. */ + +#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/src/apps/bin/diffutils-2.8.1/lib/strtoul.c b/src/apps/bin/diffutils-2.8.1/lib/strtoul.c new file mode 100644 index 0000000000..cfe239cdf2 --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/lib/strtoul.c @@ -0,0 +1,22 @@ +/* Copyright (C) 1991, 1999, 2001 Free Software Foundation, Inc. + +NOTE: The canonical source of this file is maintained with the GNU C Library. +Bugs can be reported to bug-glibc@prep.ai.mit.edu. + +This program is free software; you can redistribute it and/or modify it +under the terms of the GNU General Public License as published by the +Free Software Foundation; either version 2, or (at your option) any +later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software Foundation, +Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + +#define UNSIGNED 1 + +#include "strtol.c" diff --git a/src/apps/bin/diffutils-2.8.1/lib/strtoull.c b/src/apps/bin/diffutils-2.8.1/lib/strtoull.c new file mode 100644 index 0000000000..d6aa1f8059 --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/lib/strtoull.c @@ -0,0 +1,27 @@ +/* Function to parse an `unsigned long long int' from text. + Copyright (C) 1995, 1996, 1997, 1999 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 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. */ + +#define QUAD 1 + +#include "strtoul.c" + +#ifdef _LIBC +strong_alias (__strtoull_internal, __strtouq_internal) +weak_alias (strtoull, strtouq) +#endif diff --git a/src/apps/bin/diffutils-2.8.1/lib/strtoumax.c b/src/apps/bin/diffutils-2.8.1/lib/strtoumax.c new file mode 100644 index 0000000000..dc395d626a --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/lib/strtoumax.c @@ -0,0 +1,2 @@ +#define UNSIGNED 1 +#include "strtoimax.c" diff --git a/src/apps/bin/diffutils-2.8.1/lib/tempname.c b/src/apps/bin/diffutils-2.8.1/lib/tempname.c new file mode 100644 index 0000000000..39982054fe --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/lib/tempname.c @@ -0,0 +1,342 @@ +/* Copyright (C) 1991-1999, 2000, 2001 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 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. */ + +#if HAVE_CONFIG_H +# include +#endif + +#include +#include + +#include +#ifndef __set_errno +# define __set_errno(Val) errno = (Val) +#endif + +#include +#ifndef P_tmpdir +# define P_tmpdir "/tmp" +#endif +#ifndef TMP_MAX +# define TMP_MAX 238328 +#endif +#ifndef __GT_FILE +# define __GT_FILE 0 +# define __GT_BIGFILE 1 +# define __GT_DIR 2 +# define __GT_NOCREATE 3 +#endif + +#if STDC_HEADERS || _LIBC +# include +# include +#endif + +#include + +#if HAVE_FCNTL_H || _LIBC +# include +#endif + +#if HAVE_SYS_TIME_H || _LIBC +# include +#endif + +#if HAVE_STDINT_H || _LIBC +# include +#endif + +#if HAVE_UNISTD_H || _LIBC +# include +#endif + +#include +#if STAT_MACROS_BROKEN +# undef S_ISDIR +#endif +#if !defined S_ISDIR && defined S_IFDIR +# define S_ISDIR(mode) (((mode) & S_IFMT) == S_IFDIR) +#endif +#if !S_IRUSR && S_IREAD +# define S_IRUSR S_IREAD +#endif +#if !S_IRUSR +# define S_IRUSR 00400 +#endif +#if !S_IWUSR && S_IWRITE +# define S_IWUSR S_IWRITE +#endif +#if !S_IWUSR +# define S_IWUSR 00200 +#endif +#if !S_IXUSR && S_IEXEC +# define S_IXUSR S_IEXEC +#endif +#if !S_IXUSR +# define S_IXUSR 00100 +#endif + +#if _LIBC +# define struct_stat64 struct stat64 +#else +# define struct_stat64 struct stat +# define __getpid getpid +# define __gettimeofday gettimeofday +# define __mkdir mkdir +# define __open open +# define __open64 open +# define __lxstat64(version, path, buf) lstat (path, buf) +# define __xstat64(version, path, buf) stat (path, buf) +#endif + +#if ! (HAVE___SECURE_GETENV || _LIBC) +# define __secure_getenv getenv +#endif + +#ifdef _LIBC +# include +# if HP_TIMING_AVAIL +# define RANDOM_BITS(Var) \ + if (__builtin_expect (value == UINT64_C (0), 0)) \ + { \ + /* If this is the first time this function is used initialize \ + the variable we accumulate the value in to some somewhat \ + random value. If we'd not do this programs at startup time \ + might have a reduced set of possible names, at least on slow \ + machines. */ \ + struct timeval tv; \ + __gettimeofday (&tv, NULL); \ + value = ((uint64_t) tv.tv_usec << 16) ^ tv.tv_sec; \ + } \ + HP_TIMING_NOW (Var) +# endif +#endif + +/* Use the widest available unsigned type if uint64_t is not + available. The algorithm below extracts a number less than 62**6 + (approximately 2**35.725) from uint64_t, so ancient hosts where + uintmax_t is only 32 bits lose about 3.725 bits of randomness, + which is better than not having mkstemp at all. */ +#if !defined UINT64_MAX && !defined uint64_t +# define uint64_t uintmax_t +#endif + +/* Return nonzero if DIR is an existent directory. */ +static int +direxists (const char *dir) +{ + struct_stat64 buf; + return __xstat64 (_STAT_VER, dir, &buf) == 0 && S_ISDIR (buf.st_mode); +} + +/* Path search algorithm, for tmpnam, tmpfile, etc. If DIR is + non-null and exists, uses it; otherwise uses the first of $TMPDIR, + P_tmpdir, /tmp that exists. Copies into TMPL a template suitable + for use with mk[s]temp. Will fail (-1) if DIR is non-null and + doesn't exist, none of the searched dirs exists, or there's not + enough space in TMPL. */ +int +__path_search (char *tmpl, size_t tmpl_len, const char *dir, const char *pfx, + int try_tmpdir) +{ + const char *d; + size_t dlen, plen; + + if (!pfx || !pfx[0]) + { + pfx = "file"; + plen = 4; + } + else + { + plen = strlen (pfx); + if (plen > 5) + plen = 5; + } + + if (try_tmpdir) + { + d = __secure_getenv ("TMPDIR"); + if (d != NULL && direxists (d)) + dir = d; + else if (dir != NULL && direxists (dir)) + /* nothing */ ; + else + dir = NULL; + } + if (dir == NULL) + { + if (direxists (P_tmpdir)) + dir = P_tmpdir; + else if (strcmp (P_tmpdir, "/tmp") != 0 && direxists ("/tmp")) + dir = "/tmp"; + else + { + __set_errno (ENOENT); + return -1; + } + } + + dlen = strlen (dir); + while (dlen > 1 && dir[dlen - 1] == '/') + dlen--; /* remove trailing slashes */ + + /* check we have room for "${dir}/${pfx}XXXXXX\0" */ + if (tmpl_len < dlen + 1 + plen + 6 + 1) + { + __set_errno (EINVAL); + return -1; + } + + sprintf (tmpl, "%.*s/%.*sXXXXXX", (int) dlen, dir, (int) plen, pfx); + return 0; +} + +/* These are the characters used in temporary filenames. */ +static const char letters[] = +"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; + +/* Generate a temporary file name based on TMPL. TMPL must match the + rules for mk[s]temp (i.e. end in "XXXXXX"). The name constructed + does not exist at the time of the call to __gen_tempname. TMPL is + overwritten with the result. + + KIND may be one of: + __GT_NOCREATE: simply verify that the name does not exist + at the time of the call. + __GT_FILE: create the file using open(O_CREAT|O_EXCL) + and return a read-write fd. The file is mode 0600. + __GT_BIGFILE: same as __GT_FILE but use open64(). + __GT_DIR: create a directory, which will be mode 0700. + + We use a clever algorithm to get hard-to-predict names. */ +int +__gen_tempname (char *tmpl, int kind) +{ + int len; + char *XXXXXX; + static uint64_t value; + uint64_t random_time_bits; + unsigned int count; + int fd = -1; + int save_errno = errno; + struct_stat64 st; + + /* A lower bound on the number of temporary files to attempt to + generate. The maximum total number of temporary file names that + can exist for a given template is 62**6. It should never be + necessary to try all these combinations. Instead if a reasonable + number of names is tried (we define reasonable as 62**3) fail to + give the system administrator the chance to remove the problems. */ + unsigned int attempts_min = 62 * 62 * 62; + + /* The number of times to attempt to generate a temporary file. To + conform to POSIX, this must be no smaller than TMP_MAX. */ + unsigned int attempts = attempts_min < TMP_MAX ? TMP_MAX : attempts_min; + + len = strlen (tmpl); + if (len < 6 || strcmp (&tmpl[len - 6], "XXXXXX")) + { + __set_errno (EINVAL); + return -1; + } + + /* This is where the Xs start. */ + XXXXXX = &tmpl[len - 6]; + + /* Get some more or less random data. */ +#ifdef RANDOM_BITS + RANDOM_BITS (random_time_bits); +#else +# if HAVE_GETTIMEOFDAY || _LIBC + { + struct timeval tv; + __gettimeofday (&tv, NULL); + random_time_bits = ((uint64_t) tv.tv_usec << 16) ^ tv.tv_sec; + } +# else + random_time_bits = time (NULL); +# endif +#endif + value += random_time_bits ^ __getpid (); + + for (count = 0; count < attempts; value += 7777, ++count) + { + uint64_t v = value; + + /* Fill in the random bits. */ + XXXXXX[0] = letters[v % 62]; + v /= 62; + XXXXXX[1] = letters[v % 62]; + v /= 62; + XXXXXX[2] = letters[v % 62]; + v /= 62; + XXXXXX[3] = letters[v % 62]; + v /= 62; + XXXXXX[4] = letters[v % 62]; + v /= 62; + XXXXXX[5] = letters[v % 62]; + + switch (kind) + { + case __GT_FILE: + fd = __open (tmpl, O_RDWR | O_CREAT | O_EXCL, S_IRUSR | S_IWUSR); + break; + + case __GT_BIGFILE: + fd = __open64 (tmpl, O_RDWR | O_CREAT | O_EXCL, S_IRUSR | S_IWUSR); + break; + + case __GT_DIR: + fd = __mkdir (tmpl, S_IRUSR | S_IWUSR | S_IXUSR); + break; + + case __GT_NOCREATE: + /* This case is backward from the other three. __gen_tempname + succeeds if __xstat fails because the name does not exist. + Note the continue to bypass the common logic at the bottom + of the loop. */ + if (__lxstat64 (_STAT_VER, tmpl, &st) < 0) + { + if (errno == ENOENT) + { + __set_errno (save_errno); + return 0; + } + else + /* Give up now. */ + return -1; + } + continue; + + default: + assert (! "invalid KIND in __gen_tempname"); + } + + if (fd >= 0) + { + __set_errno (save_errno); + return fd; + } + else if (errno != EEXIST) + return -1; + } + + /* We got out of the loop because we ran out of combinations to try. */ + __set_errno (EEXIST); + return -1; +} diff --git a/src/apps/bin/diffutils-2.8.1/lib/umaxtostr.c b/src/apps/bin/diffutils-2.8.1/lib/umaxtostr.c new file mode 100644 index 0000000000..4f49a7f8dd --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/lib/umaxtostr.c @@ -0,0 +1,3 @@ +#define inttostr umaxtostr +#define inttype uintmax_t +#include "inttostr.c" diff --git a/src/apps/bin/diffutils-2.8.1/lib/unlocked-io.h b/src/apps/bin/diffutils-2.8.1/lib/unlocked-io.h new file mode 100644 index 0000000000..19fdcb3a76 --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/lib/unlocked-io.h @@ -0,0 +1,69 @@ +#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. */ + +# if HAVE_DECL_CLEARERR_UNLOCKED +# undef clearerr +# define clearerr(x) clearerr_unlocked (x) +# endif +# if HAVE_DECL_FEOF_UNLOCKED +# undef feof +# define feof(x) feof_unlocked (x) +# endif +# if HAVE_DECL_FERROR_UNLOCKED +# undef ferror +# define ferror(x) ferror_unlocked (x) +# endif +# if HAVE_DECL_FFLUSH_UNLOCKED +# undef fflush +# define fflush(x) fflush_unlocked (x) +# endif +# if HAVE_DECL_FGETS_UNLOCKED +# undef fgets +# define fgets(x,y,z) fgets_unlocked (x,y,z) +# endif +# if HAVE_DECL_FPUTC_UNLOCKED +# undef fputc +# define fputc(x,y) fputc_unlocked (x,y) +# endif +# if HAVE_DECL_FPUTS_UNLOCKED +# undef fputs +# define fputs(x,y) fputs_unlocked (x,y) +# endif +# if HAVE_DECL_FREAD_UNLOCKED +# undef fread +# define fread(w,x,y,z) fread_unlocked (w,x,y,z) +# endif +# if HAVE_DECL_FWRITE_UNLOCKED +# undef fwrite +# define fwrite(w,x,y,z) fwrite_unlocked (w,x,y,z) +# endif +# if HAVE_DECL_GETC_UNLOCKED +# undef getc +# define getc(x) getc_unlocked (x) +# endif +# if HAVE_DECL_GETCHAR_UNLOCKED +# undef getchar +# define getchar() getchar_unlocked () +# endif +# if HAVE_DECL_PUTC_UNLOCKED +# undef putc +# define putc(x,y) putc_unlocked (x,y) +# endif +# if HAVE_DECL_PUTCHAR_UNLOCKED +# undef putchar +# define putchar(x) putchar_unlocked (x) +# endif + +# endif /* USE_UNLOCKED_IO */ +#endif /* UNLOCKED_IO_H */ diff --git a/src/apps/bin/diffutils-2.8.1/lib/waitpid.c b/src/apps/bin/diffutils-2.8.1/lib/waitpid.c new file mode 100644 index 0000000000..883c0662f9 --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/lib/waitpid.c @@ -0,0 +1,73 @@ +/* Emulate waitpid on systems that just have wait. + Copyright (C) 1994, 1995, 1998, 1999 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; see the file COPYING. + If not, write to the Free Software Foundation, + 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + +#if HAVE_CONFIG_H +# include +#endif + +#include +#include +#ifndef errno +extern int errno; +#endif + +#define WAITPID_CHILDREN 8 +static pid_t waited_pid[WAITPID_CHILDREN]; +static int waited_status[WAITPID_CHILDREN]; + +pid_t +waitpid (pid_t pid, int *stat_loc, int options) +{ + int i; + pid_t p; + + if (!options && (pid == -1 || 0 < pid)) + { + /* If we have already waited for this child, return it immediately. */ + for (i = 0; i < WAITPID_CHILDREN; i++) + { + p = waited_pid[i]; + if (p && (p == pid || pid == -1)) + { + waited_pid[i] = 0; + goto success; + } + } + + /* The child has not returned yet; wait for it, accumulating status. */ + for (i = 0; i < WAITPID_CHILDREN; i++) + if (! waited_pid[i]) + { + p = wait (&waited_status[i]); + if (p < 0) + return p; + if (p == pid || pid == -1) + goto success; + waited_pid[i] = p; + } + } + + /* We cannot emulate this wait call, e.g. because of too many children. */ + errno = EINVAL; + return -1; + +success: + if (stat_loc) + *stat_loc = waited_status[i]; + return p; +} diff --git a/src/apps/bin/diffutils-2.8.1/lib/xalloc.h b/src/apps/bin/diffutils-2.8.1/lib/xalloc.h new file mode 100644 index 0000000000..aabfea4add --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/lib/xalloc.h @@ -0,0 +1,82 @@ +/* xalloc.h -- malloc with out-of-memory checking + Copyright (C) 1990-1998, 1999, 2000, 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. */ + +#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 + +/* 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/src/apps/bin/diffutils-2.8.1/lib/xmalloc.c b/src/apps/bin/diffutils-2.8.1/lib/xmalloc.c new file mode 100644 index 0000000000..49351bbefe --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/lib/xmalloc.c @@ -0,0 +1,113 @@ +/* xmalloc.c -- malloc with out of memory checking + Copyright (C) 1990-1999, 2000, 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. */ + +#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 "exitfail.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 + +/* 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 (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/src/apps/bin/diffutils-2.8.1/lib/xstrtol.c b/src/apps/bin/diffutils-2.8.1/lib/xstrtol.c new file mode 100644 index 0000000000..446d62ec1f --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/lib/xstrtol.c @@ -0,0 +1,302 @@ +/* A more useful interface to strtol. + Copyright (C) 1995, 1996, 1998-2001 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software Foundation, + Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + +/* Written by Jim Meyering. */ + +#if HAVE_CONFIG_H +# include +#endif + +#ifndef __strtol +# define __strtol strtol +# define __strtol_t long int +# define __xstrtol xstrtol +#endif + +/* Some pre-ANSI implementations (e.g. SunOS 4) + need stderr defined if assertion checking is enabled. */ +#include + +#if STDC_HEADERS +# include +#endif + +#if HAVE_STRING_H +# include +#else +# include +# ifndef strchr +# define strchr index +# endif +#endif + +#include +#include + +#include +#ifndef errno +extern int errno; +#endif + +#if HAVE_LIMITS_H +# include +#endif + +#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) 0 - TYPE_MINIMUM (t)) + +#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 ISSPACE(c) (IN_CTYPE_DOMAIN (c) && isspace (c)) + +#include "xstrtol.h" + +#if !HAVE_DECL_STRTOL && !defined strtol +long int strtol (); +#endif + +#if !HAVE_DECL_STRTOUL && !defined strtoul +unsigned long int strtoul (); +#endif + +#if !HAVE_DECL_STRTOIMAX && !defined strtoimax +intmax_t strtoimax (); +#endif + +#if !HAVE_DECL_STRTOUMAX && !defined strtoumax +uintmax_t strtoumax (); +#endif + +static int +bkm_scale (__strtol_t *x, int scale_factor) +{ + __strtol_t product = *x * scale_factor; + if (*x != product / scale_factor) + return 1; + *x = product; + return 0; +} + +static int +bkm_scale_by_power (__strtol_t *x, int base, int power) +{ + while (power--) + if (bkm_scale (x, base)) + return 1; + + return 0; +} + +/* FIXME: comment. */ + +strtol_error +__xstrtol (const char *s, char **ptr, int strtol_base, + __strtol_t *val, const char *valid_suffixes) +{ + char *t_ptr; + char **p; + __strtol_t tmp; + + assert (0 <= strtol_base && strtol_base <= 36); + + p = (ptr ? ptr : &t_ptr); + + if (! TYPE_SIGNED (__strtol_t)) + { + const char *q = s; + while (ISSPACE ((unsigned char) *q)) + ++q; + if (*q == '-') + return LONGINT_INVALID; + } + + errno = 0; + tmp = __strtol (s, p, strtol_base); + if (errno != 0) + return LONGINT_OVERFLOW; + + if (*p == s) + { + /* If there is no number but there is a valid suffix, assume the + number is 1. The string is invalid otherwise. */ + if (valid_suffixes && **p && strchr (valid_suffixes, **p)) + tmp = 1; + else + return LONGINT_INVALID; + } + + /* Let valid_suffixes == NULL mean `allow any suffix'. */ + /* FIXME: update all callers except the ones that allow suffixes + after the number, changing last parameter NULL to `""'. */ + if (!valid_suffixes) + { + *val = tmp; + return LONGINT_OK; + } + + if (**p != '\0') + { + int base = 1024; + int suffixes = 1; + int overflow; + + if (!strchr (valid_suffixes, **p)) + { + *val = tmp; + return LONGINT_INVALID_SUFFIX_CHAR; + } + + if (strchr (valid_suffixes, '0')) + { + /* The ``valid suffix'' '0' is a special flag meaning that + an optional second suffix is allowed, which can change + the base. A suffix "B" (e.g. "100MB") stands for a power + of 1000, whereas a suffix "iB" (e.g. "100MiB") stands for + a power of 1024. If no suffix (e.g. "100M"), assume + power-of-1024. */ + + switch (p[0][1]) + { + case 'i': + if (p[0][2] == 'B') + suffixes += 2; + break; + + case 'B': + case 'D': /* 'D' is obsolescent */ + base = 1000; + suffixes++; + break; + } + } + + switch (**p) + { + case 'b': + overflow = bkm_scale (&tmp, 512); + break; + + case 'B': + overflow = bkm_scale (&tmp, 1024); + break; + + case 'c': + overflow = 0; + break; + + case 'E': /* exa or exbi */ + overflow = bkm_scale_by_power (&tmp, base, 6); + break; + + case 'G': /* giga or gibi */ + case 'g': /* 'g' is undocumented; for compatibility only */ + overflow = bkm_scale_by_power (&tmp, base, 3); + break; + + case 'k': /* kilo */ + case 'K': /* kibi */ + overflow = bkm_scale_by_power (&tmp, base, 1); + break; + + case 'M': /* mega or mebi */ + case 'm': /* 'm' is undocumented; for compatibility only */ + overflow = bkm_scale_by_power (&tmp, base, 2); + break; + + case 'P': /* peta or pebi */ + overflow = bkm_scale_by_power (&tmp, base, 5); + break; + + case 'T': /* tera or tebi */ + case 't': /* 't' is undocumented; for compatibility only */ + overflow = bkm_scale_by_power (&tmp, base, 4); + break; + + case 'w': + overflow = bkm_scale (&tmp, 2); + break; + + case 'Y': /* yotta or 2**80 */ + overflow = bkm_scale_by_power (&tmp, base, 8); + break; + + case 'Z': /* zetta or 2**70 */ + overflow = bkm_scale_by_power (&tmp, base, 7); + break; + + default: + *val = tmp; + return LONGINT_INVALID_SUFFIX_CHAR; + break; + } + + if (overflow) + return LONGINT_OVERFLOW; + + (*p) += suffixes; + } + + *val = tmp; + return LONGINT_OK; +} + +#ifdef TESTING_XSTRTO + +# include +# include "error.h" + +char *program_name; + +int +main (int argc, char** argv) +{ + strtol_error s_err; + int i; + + program_name = argv[0]; + for (i=1; i%lu (%s)\n", argv[i], val, p); + } + else + { + STRTOL_FATAL_ERROR (argv[i], "arg", s_err); + } + } + exit (0); +} + +#endif /* TESTING_XSTRTO */ diff --git a/src/apps/bin/diffutils-2.8.1/lib/xstrtol.h b/src/apps/bin/diffutils-2.8.1/lib/xstrtol.h new file mode 100644 index 0000000000..513855f14e --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/lib/xstrtol.h @@ -0,0 +1,82 @@ +/* A more useful interface to strtol. + Copyright 1995, 1996, 1998, 1999, 2001 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software Foundation, + Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + +#ifndef XSTRTOL_H_ +# define XSTRTOL_H_ 1 + +# if HAVE_INTTYPES_H +# include /* for uintmax_t */ +# endif + +# ifndef PARAMS +# if defined PROTOTYPES || (defined __STDC__ && __STDC__) +# define PARAMS(Args) Args +# else +# define PARAMS(Args) () +# endif +# endif + +# ifndef _STRTOL_ERROR +enum strtol_error + { + LONGINT_OK, LONGINT_INVALID, LONGINT_INVALID_SUFFIX_CHAR, LONGINT_OVERFLOW + }; +typedef enum strtol_error strtol_error; +# endif + +# define _DECLARE_XSTRTOL(name, type) \ + strtol_error \ + name PARAMS ((const char *s, char **ptr, int base, \ + type *val, const char *valid_suffixes)); +_DECLARE_XSTRTOL (xstrtol, long int) +_DECLARE_XSTRTOL (xstrtoul, unsigned long int) +_DECLARE_XSTRTOL (xstrtoimax, intmax_t) +_DECLARE_XSTRTOL (xstrtoumax, uintmax_t) + +# define _STRTOL_ERROR(Exit_code, Str, Argument_type_string, Err) \ + do \ + { \ + switch ((Err)) \ + { \ + case LONGINT_OK: \ + abort (); \ + \ + case LONGINT_INVALID: \ + error ((Exit_code), 0, "invalid %s `%s'", \ + (Argument_type_string), (Str)); \ + break; \ + \ + case LONGINT_INVALID_SUFFIX_CHAR: \ + error ((Exit_code), 0, "invalid character following %s in `%s'", \ + (Argument_type_string), (Str)); \ + break; \ + \ + case LONGINT_OVERFLOW: \ + error ((Exit_code), 0, "%s `%s' too large", \ + (Argument_type_string), (Str)); \ + break; \ + } \ + } \ + while (0) + +# define STRTOL_FATAL_ERROR(Str, Argument_type_string, Err) \ + _STRTOL_ERROR (2, Str, Argument_type_string, Err) + +# define STRTOL_FAIL_WARN(Str, Argument_type_string, Err) \ + _STRTOL_ERROR (0, Str, Argument_type_string, Err) + +#endif /* not XSTRTOL_H_ */ diff --git a/src/apps/bin/diffutils-2.8.1/lib/xstrtoumax.c b/src/apps/bin/diffutils-2.8.1/lib/xstrtoumax.c new file mode 100644 index 0000000000..04d7cf98ae --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/lib/xstrtoumax.c @@ -0,0 +1,31 @@ +/* xstrtoumax.c -- A more useful interface to strtoumax. + Copyright 1999 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. */ + +/* Written by Paul Eggert. */ + +#if HAVE_CONFIG_H +# include +#endif + +#if HAVE_INTTYPES_H +# include +#endif + +#define __strtol strtoumax +#define __strtol_t uintmax_t +#define __xstrtol xstrtoumax +#include "xstrtol.c" diff --git a/src/apps/bin/diffutils-2.8.1/m4/Makefile b/src/apps/bin/diffutils-2.8.1/m4/Makefile new file mode 100644 index 0000000000..39f0d780b2 --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/m4/Makefile @@ -0,0 +1,272 @@ +# Makefile.in generated by automake 1.6 from Makefile.am. +# m4/Makefile. Generated from Makefile.in by configure. + +# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002 +# Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + + +SHELL = /bin/sh + +srcdir = . +top_srcdir = .. + +prefix = /usr/local +exec_prefix = ${prefix} + +bindir = ${exec_prefix}/bin +sbindir = ${exec_prefix}/sbin +libexecdir = ${exec_prefix}/libexec +datadir = ${prefix}/share +sysconfdir = ${prefix}/etc +sharedstatedir = ${prefix}/com +localstatedir = ${prefix}/var +libdir = ${exec_prefix}/lib +infodir = ${prefix}/info +mandir = ${prefix}/man +includedir = ${prefix}/include +oldincludedir = /usr/include +pkgdatadir = $(datadir)/diffutils +pkglibdir = $(libdir)/diffutils +pkgincludedir = $(includedir)/diffutils +top_builddir = .. + +ACLOCAL = ${SHELL} /boot/home/Development/current/src/apps/bin/diffutils-2.8.1/config/missing --run aclocal-1.6 +AUTOCONF = ${SHELL} /boot/home/Development/current/src/apps/bin/diffutils-2.8.1/config/missing --run autoconf +AUTOMAKE = ${SHELL} /boot/home/Development/current/src/apps/bin/diffutils-2.8.1/config/missing --run automake-1.6 +AUTOHEADER = ${SHELL} /boot/home/Development/current/src/apps/bin/diffutils-2.8.1/config/missing --run autoheader + +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = /bin/install -c +INSTALL_PROGRAM = ${INSTALL} +INSTALL_DATA = ${INSTALL} -m 644 +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +INSTALL_SCRIPT = ${INSTALL} +INSTALL_HEADER = $(INSTALL_DATA) +transform = s,x,x, +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +host_alias = +host_triplet = i586-pc-beos + +EXEEXT = +OBJEXT = o +PATH_SEPARATOR = : +AMTAR = ${SHELL} /boot/home/Development/current/src/apps/bin/diffutils-2.8.1/config/missing --run tar +AWK = gawk +BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@ +CATOBJEXT = @CATOBJEXT@ +CC = gcc +CPP = gcc -E +DATADIRNAME = @DATADIRNAME@ +DEPDIR = .deps +GENCAT = @GENCAT@ +GLIBC21 = @GLIBC21@ +GMSGFMT = : +HAVE_LIB = @HAVE_LIB@ +HELP2MAN = ${SHELL} /boot/home/Development/current/src/apps/bin/diffutils-2.8.1/config/missing --run help2man +INSTALL_STRIP_PROGRAM = ${SHELL} $(install_sh) -c -s +INSTOBJEXT = @INSTOBJEXT@ +INTLBISON = @INTLBISON@ +INTLLIBS = +INTLOBJS = @INTLOBJS@ +INTL_LIBTOOL_SUFFIX_PREFIX = @INTL_LIBTOOL_SUFFIX_PREFIX@ +LIB = @LIB@ +LIBICONV = +LIBINTL = +LIB_CLOCK_GETTIME = +LTLIB = @LTLIB@ +LTLIBICONV = +LTLIBINTL = +MKINSTALLDIRS = config/mkinstalldirs +PACKAGE = diffutils +POSUB = +PR_PROGRAM = /bin/pr +RANLIB = ranlib +STRIP = +U = +USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@ +USE_NLS = no +VERSION = 2.8.1 +am__include = include +am__quote = +install_sh = /boot/home/Development/current/src/apps/bin/diffutils-2.8.1/config/install-sh + +EXTRA_DIST = \ + README jm-glibc-io.m4 Makefile.am.in \ +c-bs-a.m4 \ +c-stack.m4 \ +check-decl.m4 \ +codeset.m4 \ +dos.m4 \ +error.m4 \ +fnmatch.m4 \ +gettext.m4 \ +glibc21.m4 \ +gnu-source.m4 \ +iconv.m4 \ +inttypes.m4 \ +jm-glibc-io.m4 \ +lcmessage.m4 \ +lib-ld.m4 \ +lib-link.m4 \ +lib-prefix.m4 \ +longlong.m4 \ +malloc.m4 \ +mbrtowc.m4 \ +mbstate_t.m4 \ +prereq.m4 \ +progtest.m4 \ +realloc.m4 \ +regex.m4 \ +setmode.m4 \ +st_mtim.m4 \ +stdbool.m4 \ +strftime.m4 \ +vararrays.m4 \ +xstrtoumax.m4 + +subdir = m4 +mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +DIST_SOURCES = +DIST_COMMON = README Makefile.am Makefile.in +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.ac $(ACLOCAL_M4) + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnits m4/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) +uninstall-info-am: +tags: TAGS +TAGS: + +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) + +top_distdir = .. +distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) + +distdir: $(DISTFILES) + @for file in $(DISTFILES); do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + dir="/$$dir"; \ + $(mkinstalldirs) "$(distdir)$$dir"; \ + else \ + dir=''; \ + fi; \ + if test -d $$d/$$file; then \ + cp -pR $$d/$$file $(distdir)$$dir \ + || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile + +installdirs: + +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -rm -f Makefile $(CONFIG_CLEAN_FILES) stamp-h stamp-h[0-9]* + +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 + +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: + +info: info-am + +info-am: + +install-data-am: + +install-exec-am: + +install-info: install-info-am + +install-man: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic + +uninstall-am: uninstall-info-am + +.PHONY: all all-am check check-am clean clean-generic distclean \ + distclean-generic distdir dvi dvi-am info info-am install \ + install-am install-data install-data-am install-exec \ + install-exec-am install-info install-info-am install-man \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-generic uninstall uninstall-am uninstall-info-am + + +Makefile.am: Makefile.am.in + rm -f $@ $@t + sed -n '1,/^##m4-files-begin/p' $< > $@t + (((echo EXTRA_DIST =; \ + echo " README jm-glibc-io.m4 Makefile.am.in" \ + ) | tr '\012' @); \ + (echo *.m4|tr ' ' @) ) \ + |sed 's/@$$/%/;s/@/ \\@/g' |tr @% '\012\012' \ + >> $@t + sed -n '/^##m4-files-end/,$$p' $< >> $@t + chmod a-w $@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/src/apps/bin/diffutils-2.8.1/m4/Makefile.am b/src/apps/bin/diffutils-2.8.1/m4/Makefile.am new file mode 100644 index 0000000000..ddf5373bbf --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/m4/Makefile.am @@ -0,0 +1,50 @@ +## Process this file with automake to produce Makefile.in -*-Makefile-*- + +##m4-files-begin +EXTRA_DIST = \ + README jm-glibc-io.m4 Makefile.am.in \ +c-bs-a.m4 \ +c-stack.m4 \ +check-decl.m4 \ +codeset.m4 \ +dos.m4 \ +error.m4 \ +fnmatch.m4 \ +gettext.m4 \ +glibc21.m4 \ +gnu-source.m4 \ +iconv.m4 \ +inttypes.m4 \ +jm-glibc-io.m4 \ +lcmessage.m4 \ +lib-ld.m4 \ +lib-link.m4 \ +lib-prefix.m4 \ +longlong.m4 \ +malloc.m4 \ +mbrtowc.m4 \ +mbstate_t.m4 \ +prereq.m4 \ +progtest.m4 \ +realloc.m4 \ +regex.m4 \ +setmode.m4 \ +st_mtim.m4 \ +stdbool.m4 \ +strftime.m4 \ +vararrays.m4 \ +xstrtoumax.m4 +##m4-files-end + +Makefile.am: Makefile.am.in + rm -f $@ $@t + sed -n '1,/^##m4-files-begin/p' $< > $@t + (((echo EXTRA_DIST =; \ + echo " README jm-glibc-io.m4 Makefile.am.in" \ + ) | tr '\012' @); \ + (echo *.m4|tr ' ' @) ) \ + |sed 's/@$$/%/;s/@/ \\@/g' |tr @% '\012\012' \ + >> $@t + sed -n '/^##m4-files-end/,$$p' $< >> $@t + chmod a-w $@t + mv $@t $@ diff --git a/src/apps/bin/diffutils-2.8.1/m4/Makefile.am.in b/src/apps/bin/diffutils-2.8.1/m4/Makefile.am.in new file mode 100644 index 0000000000..de3ffff22a --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/m4/Makefile.am.in @@ -0,0 +1,17 @@ +## Process this file with automake to produce Makefile.in -*-Makefile-*- + +##m4-files-begin +##m4-files-end + +Makefile.am: Makefile.am.in + rm -f $@ $@t + sed -n '1,/^##m4-files-begin/p' $< > $@t + (((echo EXTRA_DIST =; \ + echo " README jm-glibc-io.m4 Makefile.am.in" \ + ) | tr '\012' @); \ + (echo *.m4|tr ' ' @) ) \ + |sed 's/@$$/%/;s/@/ \\@/g' |tr @% '\012\012' \ + >> $@t + sed -n '/^##m4-files-end/,$$p' $< >> $@t + chmod a-w $@t + mv $@t $@ diff --git a/src/apps/bin/diffutils-2.8.1/m4/Makefile.in b/src/apps/bin/diffutils-2.8.1/m4/Makefile.in new file mode 100644 index 0000000000..d481ae7292 --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/m4/Makefile.in @@ -0,0 +1,272 @@ +# Makefile.in generated by automake 1.6 from Makefile.am. +# @configure_input@ + +# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002 +# Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ +SHELL = @SHELL@ + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +prefix = @prefix@ +exec_prefix = @exec_prefix@ + +bindir = @bindir@ +sbindir = @sbindir@ +libexecdir = @libexecdir@ +datadir = @datadir@ +sysconfdir = @sysconfdir@ +sharedstatedir = @sharedstatedir@ +localstatedir = @localstatedir@ +libdir = @libdir@ +infodir = @infodir@ +mandir = @mandir@ +includedir = @includedir@ +oldincludedir = /usr/include +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +top_builddir = .. + +ACLOCAL = @ACLOCAL@ +AUTOCONF = @AUTOCONF@ +AUTOMAKE = @AUTOMAKE@ +AUTOHEADER = @AUTOHEADER@ + +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = @INSTALL@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_DATA = @INSTALL_DATA@ +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_HEADER = $(INSTALL_DATA) +transform = @program_transform_name@ +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +host_alias = @host_alias@ +host_triplet = @host@ + +EXEEXT = @EXEEXT@ +OBJEXT = @OBJEXT@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +AMTAR = @AMTAR@ +AWK = @AWK@ +BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@ +CATOBJEXT = @CATOBJEXT@ +CC = @CC@ +CPP = @CPP@ +DATADIRNAME = @DATADIRNAME@ +DEPDIR = @DEPDIR@ +GENCAT = @GENCAT@ +GLIBC21 = @GLIBC21@ +GMSGFMT = @GMSGFMT@ +HAVE_LIB = @HAVE_LIB@ +HELP2MAN = @HELP2MAN@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INSTOBJEXT = @INSTOBJEXT@ +INTLBISON = @INTLBISON@ +INTLLIBS = @INTLLIBS@ +INTLOBJS = @INTLOBJS@ +INTL_LIBTOOL_SUFFIX_PREFIX = @INTL_LIBTOOL_SUFFIX_PREFIX@ +LIB = @LIB@ +LIBICONV = @LIBICONV@ +LIBINTL = @LIBINTL@ +LIB_CLOCK_GETTIME = @LIB_CLOCK_GETTIME@ +LTLIB = @LTLIB@ +LTLIBICONV = @LTLIBICONV@ +LTLIBINTL = @LTLIBINTL@ +MKINSTALLDIRS = @MKINSTALLDIRS@ +PACKAGE = @PACKAGE@ +POSUB = @POSUB@ +PR_PROGRAM = @PR_PROGRAM@ +RANLIB = @RANLIB@ +STRIP = @STRIP@ +U = @U@ +USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@ +USE_NLS = @USE_NLS@ +VERSION = @VERSION@ +am__include = @am__include@ +am__quote = @am__quote@ +install_sh = @install_sh@ + +EXTRA_DIST = \ + README jm-glibc-io.m4 Makefile.am.in \ +c-bs-a.m4 \ +c-stack.m4 \ +check-decl.m4 \ +codeset.m4 \ +dos.m4 \ +error.m4 \ +fnmatch.m4 \ +gettext.m4 \ +glibc21.m4 \ +gnu-source.m4 \ +iconv.m4 \ +inttypes.m4 \ +jm-glibc-io.m4 \ +lcmessage.m4 \ +lib-ld.m4 \ +lib-link.m4 \ +lib-prefix.m4 \ +longlong.m4 \ +malloc.m4 \ +mbrtowc.m4 \ +mbstate_t.m4 \ +prereq.m4 \ +progtest.m4 \ +realloc.m4 \ +regex.m4 \ +setmode.m4 \ +st_mtim.m4 \ +stdbool.m4 \ +strftime.m4 \ +vararrays.m4 \ +xstrtoumax.m4 + +subdir = m4 +mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +DIST_SOURCES = +DIST_COMMON = README Makefile.am Makefile.in +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.ac $(ACLOCAL_M4) + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnits m4/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) +uninstall-info-am: +tags: TAGS +TAGS: + +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) + +top_distdir = .. +distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) + +distdir: $(DISTFILES) + @for file in $(DISTFILES); do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + dir="/$$dir"; \ + $(mkinstalldirs) "$(distdir)$$dir"; \ + else \ + dir=''; \ + fi; \ + if test -d $$d/$$file; then \ + cp -pR $$d/$$file $(distdir)$$dir \ + || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile + +installdirs: + +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -rm -f Makefile $(CONFIG_CLEAN_FILES) stamp-h stamp-h[0-9]* + +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 + +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: + +info: info-am + +info-am: + +install-data-am: + +install-exec-am: + +install-info: install-info-am + +install-man: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic + +uninstall-am: uninstall-info-am + +.PHONY: all all-am check check-am clean clean-generic distclean \ + distclean-generic distdir dvi dvi-am info info-am install \ + install-am install-data install-data-am install-exec \ + install-exec-am install-info install-info-am install-man \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-generic uninstall uninstall-am uninstall-info-am + + +Makefile.am: Makefile.am.in + rm -f $@ $@t + sed -n '1,/^##m4-files-begin/p' $< > $@t + (((echo EXTRA_DIST =; \ + echo " README jm-glibc-io.m4 Makefile.am.in" \ + ) | tr '\012' @); \ + (echo *.m4|tr ' ' @) ) \ + |sed 's/@$$/%/;s/@/ \\@/g' |tr @% '\012\012' \ + >> $@t + sed -n '/^##m4-files-end/,$$p' $< >> $@t + chmod a-w $@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/src/apps/bin/diffutils-2.8.1/m4/README b/src/apps/bin/diffutils-2.8.1/m4/README new file mode 100644 index 0000000000..d2c7724eba --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/m4/README @@ -0,0 +1,10 @@ +Many of the files in this directory are taken from the fileutils, +shellutils, and textutils packages. + +These files are used by a program called aclocal (part of the GNU automake +package). aclocal uses these files to create aclocal.m4 which is in turn +used by autoconf to create the configure script at the top level in +this distribution. + +The Makefile.am file in this directory is automatically generated +from the template file, Makefile.am.in. diff --git a/src/apps/bin/diffutils-2.8.1/m4/c-bs-a.m4 b/src/apps/bin/diffutils-2.8.1/m4/c-bs-a.m4 new file mode 100644 index 0000000000..6e0863e4e0 --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/m4/c-bs-a.m4 @@ -0,0 +1,23 @@ +#serial 4 + +dnl From Paul Eggert. + +AC_DEFUN([AC_C_BACKSLASH_A], +[ + AC_CACHE_CHECK([whether backslash-a works in strings], ac_cv_c_backslash_a, + [AC_TRY_COMPILE([], + [ +#if '\a' == 'a' + syntax error; +#endif + char buf['\a' == 'a' ? -1 : 1]; + buf[0] = '\a'; + return buf[0] != "\a"[0]; + ], + ac_cv_c_backslash_a=yes, + ac_cv_c_backslash_a=no)]) + if test $ac_cv_c_backslash_a = yes; then + AC_DEFINE(HAVE_C_BACKSLASH_A, 1, + [Define if backslash-a works in C strings.]) + fi +]) diff --git a/src/apps/bin/diffutils-2.8.1/m4/c-stack.m4 b/src/apps/bin/diffutils-2.8.1/m4/c-stack.m4 new file mode 100644 index 0000000000..0599d5023f --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/m4/c-stack.m4 @@ -0,0 +1,131 @@ +# Check prerequisites for compiling lib/c-stack.c. + +# Copyright (C) 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. + +AC_DEFUN([AC_SYS_XSI_STACK_OVERFLOW_HEURISTIC], + [# for STACK_DIRECTION + AC_REQUIRE([AC_FUNC_ALLOCA]) + + AC_CACHE_CHECK([for working C stack overflow detection], + ac_cv_sys_xsi_stack_overflow_heuristic, + [AC_TRY_RUN( + [ + #include + #include + + static union + { + char buffer[SIGSTKSZ]; + long double ld; + uintmax_t u; + void *p; + } alternate_signal_stack; + + #if STACK_DIRECTION + # define find_stack_direction(ptr) STACK_DIRECTION + #else + static int + find_stack_direction (char const *addr) + { + char dummy; + return (! addr ? find_stack_direction (&dummy) + : addr < &dummy ? 1 : -1); + } + #endif + + static void + segv_handler (int signo, siginfo_t *info, void *context) + { + if (0 < info->si_code) + { + ucontext_t const *user_context = context; + char const *stack_min = user_context->uc_stack.ss_sp; + size_t stack_size = user_context->uc_stack.ss_size; + char const *faulting_address = info->si_addr; + size_t s = faulting_address - stack_min; + size_t page_size = sysconf (_SC_PAGESIZE); + if (find_stack_direction (0) < 0) + s += page_size; + if (s < stack_size + page_size) + _exit (0); + } + + _exit (1); + } + + static int + c_stack_action (void) + { + stack_t st; + struct sigaction act; + int r; + + st.ss_flags = 0; + st.ss_sp = alternate_signal_stack.buffer; + st.ss_size = sizeof alternate_signal_stack.buffer; + r = sigaltstack (&st, 0); + if (r != 0) + return r; + + sigemptyset (&act.sa_mask); + act.sa_flags = SA_NODEFER | SA_ONSTACK | SA_RESETHAND | SA_SIGINFO; + act.sa_sigaction = segv_handler; + return sigaction (SIGSEGV, &act, 0); + } + + static int + recurse (char *p) + { + char array[500]; + array[0] = 1; + return *p + recurse (array); + } + + int + main (void) + { + c_stack_action (); + return recurse ("\1"); + } + ], + [ac_cv_sys_xsi_stack_overflow_heuristic=yes], + [ac_cv_sys_xsi_stack_overflow_heuristic=no], + [ac_cv_sys_xsi_stack_overflow_heuristic=cross-compiling])]) + + if test $ac_cv_sys_xsi_stack_overflow_heuristic = yes; then + AC_DEFINE(HAVE_XSI_STACK_OVERFLOW_HEURISTIC, 1, + [Define to 1 if extending the stack slightly past the limit causes + a SIGSEGV, and an alternate stack can be established with sigaltstack, + and the signal handler is passed a context that specifies the + run time stack. This behavior is defined by POSIX 1003.1-2001 + with the X/Open System Interface (XSI) option + and is a standardized way to implement a SEGV-based stack + overflow detection heuristic.]) + fi]) + + +AC_DEFUN([jm_PREREQ_C_STACK], + [AC_REQUIRE([jm_AC_TYPE_UINTMAX_T]) + AC_REQUIRE([AC_SYS_XSI_STACK_OVERFLOW_HEURISTIC]) + + # for STACK_DIRECTION + AC_REQUIRE([AC_FUNC_ALLOCA]) + + AC_CHECK_HEADERS(unistd.h) + + AC_CHECK_TYPES([siginfo_t, stack_t], , , [#include ])]) diff --git a/src/apps/bin/diffutils-2.8.1/m4/check-decl.m4 b/src/apps/bin/diffutils-2.8.1/m4/check-decl.m4 new file mode 100644 index 0000000000..b374705a02 --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/m4/check-decl.m4 @@ -0,0 +1,85 @@ +#serial 18 + +dnl This is just a wrapper function to encapsulate this kludge. +dnl Putting it in a separate file like this helps share it between +dnl different packages. +AC_DEFUN([jm_CHECK_DECLS], +[ + AC_REQUIRE([_jm_DECL_HEADERS]) + AC_REQUIRE([AC_HEADER_TIME]) + headers=' +#include +#if HAVE_STRING_H +# if !STDC_HEADERS && HAVE_MEMORY_H +# include +# endif +# include +#else +# if HAVE_STRINGS_H +# include +# endif +#endif +#if HAVE_STDLIB_H +# include +#endif +#if HAVE_UNISTD_H +# include +#endif + +#include +#if TIME_WITH_SYS_TIME +# include +# include +#else +# if HAVE_SYS_TIME_H +# include +# else +# include +# endif +#endif + +#if HAVE_UTMP_H +# include +#endif + +#if HAVE_GRP_H +# include +#endif + +#if HAVE_PWD_H +# include +#endif +' + + AC_CHECK_DECLS([ + free, + getenv, + geteuid, + getgrgid, + getlogin, + getpwuid, + getuid, + getutent, + lseek, + malloc, + memchr, + memrchr, + nanosleep, + realloc, + stpcpy, + strndup, + strnlen, + strstr, + strtoul, + strtoull, + ttyname], , , $headers) +]) + +dnl FIXME: when autoconf has support for it. +dnl This is a little helper so we can require these header checks. +AC_DEFUN([_jm_DECL_HEADERS], +[ + AC_REQUIRE([AC_HEADER_STDC]) + AC_CHECK_HEADERS(grp.h memory.h pwd.h string.h strings.h stdlib.h \ + unistd.h sys/time.h utmp.h utmpx.h) +]) diff --git a/src/apps/bin/diffutils-2.8.1/m4/codeset.m4 b/src/apps/bin/diffutils-2.8.1/m4/codeset.m4 new file mode 100644 index 0000000000..59535ebcff --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/m4/codeset.m4 @@ -0,0 +1,23 @@ +# codeset.m4 serial AM1 (gettext-0.10.40) +dnl Copyright (C) 2000-2002 Free Software Foundation, Inc. +dnl This file is free software, distributed under the terms of the GNU +dnl General Public License. As a special exception to the GNU General +dnl Public License, this file may be distributed as part of a program +dnl that contains a configuration script generated by Autoconf, under +dnl the same distribution terms as the rest of that program. + +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/src/apps/bin/diffutils-2.8.1/m4/dos.m4 b/src/apps/bin/diffutils-2.8.1/m4/dos.m4 new file mode 100644 index 0000000000..868626e7e5 --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/m4/dos.m4 @@ -0,0 +1,53 @@ +#serial 5 + +# Define some macros required for proper operation of code in lib/*.c +# on MSDOS/Windows systems. + +# From Jim Meyering. + +AC_DEFUN([jm_AC_DOS], + [ + AC_CACHE_CHECK([whether system is Windows or MSDOS], [ac_cv_win_or_dos], + [ + AC_TRY_COMPILE([], + [#if !defined _WIN32 && !defined __WIN32__ && !defined __MSDOS__ +neither MSDOS nor Windows +#endif], + [ac_cv_win_or_dos=yes], + [ac_cv_win_or_dos=no]) + ]) + + if test x"$ac_cv_win_or_dos" = xyes; then + ac_fs_accepts_drive_letter_prefix=1 + ac_fs_backslash_is_file_name_separator=1 + else + ac_fs_accepts_drive_letter_prefix=0 + ac_fs_backslash_is_file_name_separator=0 + fi + + AH_VERBATIM(FILESYSTEM_PREFIX_LEN, + [#if FILESYSTEM_ACCEPTS_DRIVE_LETTER_PREFIX +# define FILESYSTEM_PREFIX_LEN(Filename) \ + ((Filename)[0] && (Filename)[1] == ':' ? 2 : 0) +#else +# define FILESYSTEM_PREFIX_LEN(Filename) 0 +#endif]) + + AC_DEFINE_UNQUOTED([FILESYSTEM_ACCEPTS_DRIVE_LETTER_PREFIX], + $ac_fs_accepts_drive_letter_prefix, + [Define on systems for which file names may have a so-called + `drive letter' prefix, define this to compute the length of that + prefix, including the colon.]) + + AH_VERBATIM(ISSLASH, + [#if FILESYSTEM_BACKSLASH_IS_FILE_NAME_SEPARATOR +# define ISSLASH(C) ((C) == '/' || (C) == '\\') +#else +# define ISSLASH(C) ((C) == '/') +#endif]) + + AC_DEFINE_UNQUOTED([FILESYSTEM_BACKSLASH_IS_FILE_NAME_SEPARATOR], + $ac_fs_backslash_is_file_name_separator, + [Define if the backslash character may also serve as a file name + component separator.]) + ]) diff --git a/src/apps/bin/diffutils-2.8.1/m4/error.m4 b/src/apps/bin/diffutils-2.8.1/m4/error.m4 new file mode 100644 index 0000000000..3fddb5c111 --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/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/src/apps/bin/diffutils-2.8.1/m4/fnmatch.m4 b/src/apps/bin/diffutils-2.8.1/m4/fnmatch.m4 new file mode 100644 index 0000000000..8132456bb6 --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/m4/fnmatch.m4 @@ -0,0 +1,47 @@ +# Check for fnmatch. + +# This is a modified version of autoconf's AC_FUNC_FNMATCH; +# it also checks for FNM_CASEFOLD or FNM_IGNORECASE. + +# Copyright (C) 2000, 2001 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + +# AC_FUNC_FNMATCH +# --------------- +# We look for fnmatch.h to avoid that the test fails in C++. +AC_DEFUN([AC_FUNC_FNMATCH], +[AC_CACHE_CHECK([for working GNU-style fnmatch], + [ac_cv_func_fnmatch_works], +# Some versions of Solaris, SCO, and the GNU C Library +# have a broken or incompatible fnmatch. +# So we run a test program. If we are cross-compiling, take no chance. +# Thanks to John Oleynick, Franc,ois Pinard, and Paul Eggert for this test. +[AC_RUN_IFELSE([AC_LANG_PROGRAM([@%:@include ], + [exit (fnmatch ("a*", "abc", 0) != 0 + || fnmatch ("xxXX", "xXxX", FNM_CASEFOLD) != 0 + || fnmatch ("d*/*1", "d/s/1", FNM_FILE_NAME) != FNM_NOMATCH + || fnmatch ("*", "x", FNM_FILE_NAME | FNM_LEADING_DIR) != 0 + || fnmatch ("x*", "x/y/z", FNM_FILE_NAME | FNM_LEADING_DIR) != 0 + || fnmatch ("*c*", "c/x", FNM_FILE_NAME | FNM_LEADING_DIR) != 0);])], + [ac_cv_func_fnmatch_works=yes], + [ac_cv_func_fnmatch_works=no], + [ac_cv_func_fnmatch_works=no])]) +if test $ac_cv_func_fnmatch_works = yes; then + AC_DEFINE(HAVE_FNMATCH, 1, + [Define to 1 if your system has a working `fnmatch' function.]) +fi +])# AC_FUNC_FNMATCH diff --git a/src/apps/bin/diffutils-2.8.1/m4/gettext.m4 b/src/apps/bin/diffutils-2.8.1/m4/gettext.m4 new file mode 100644 index 0000000000..520f973d8d --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/m4/gettext.m4 @@ -0,0 +1,541 @@ +# gettext.m4 serial 13 (gettext-0.11.1) +dnl Copyright (C) 1995-2002 Free Software Foundation, Inc. +dnl This file is free software, distributed under the terms of the GNU +dnl General Public License. As a special exception to the GNU General +dnl Public License, this file may be distributed as part of a program +dnl that contains a configuration script generated by Autoconf, under +dnl the same distribution terms as the rest of that program. +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-2002. + +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. +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], , + [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]) + + 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) + + 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-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 +extern int _nl_msg_cat_cntr; +extern int *_nl_domain_bindings;], + [bindtextdomain ("", ""); +return (int) gettext ("")]ifelse([$2], [need-ngettext], [ + (int) 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 +extern int _nl_msg_cat_cntr; +extern int *_nl_domain_bindings; +extern +#ifdef __cplusplus +"C" +#endif +const char *_nl_expand_alias ();], + [bindtextdomain ("", ""); +return (int) gettext ("")]ifelse([$2], [need-ngettext], [ + (int) ngettext ("", "", 0)], [])[ + _nl_msg_cat_cntr + *_nl_domain_bindings + *_nl_expand_alias (0)], + 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 +extern int _nl_msg_cat_cntr; +extern int *_nl_domain_bindings; +extern +#ifdef __cplusplus +"C" +#endif +const char *_nl_expand_alias ();], + [bindtextdomain ("", ""); +return (int) gettext ("")]ifelse([$2], [need-ngettext], [ + (int) ngettext ("", "", 0)], [])[ + _nl_msg_cat_cntr + *_nl_domain_bindings + *_nl_expand_alias (0)], + [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; }; 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. + INTLOBJS="\$(GETTOBJS)" + 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 + + 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 "$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 + + 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; 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) + AC_SUBST(INTLOBJS) + + 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 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 po subdirectory, +dnl except for USE_NLS. +AC_DEFUN([AM_PO_SUBDIRS], +[ + AC_REQUIRE([AC_PROG_MAKE_SET])dnl + AC_REQUIRE([AC_PROG_INSTALL])dnl + AC_REQUIRE([AM_MKINSTALLDIRS])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 >/dev/null 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.11 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= /dev/null >/dev/null 2>&1 && + (if $ac_dir/$ac_word --omit-header --copyright-holder= /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 >/dev/null 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= /dev/null >/dev/null 2>&1 && + (if $XGETTEXT --omit-header --copyright-holder= /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 + 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" + # ALL_LINGUAS, POFILES, GMOFILES, UPDATEPOFILES, DUMMYPOFILES 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 "$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" "$ac_given_srcdir/$ac_dir/LINGUAS"` + # Hide the ALL_LINGUAS assigment from automake. + eval 'ALL_LINGUAS''=$ALL_LINGUAS_' + fi + case "$ac_given_srcdir" in + .) srcdirpre= ;; + *) srcdirpre='$(srcdir)/' ;; + esac + POFILES= + GMOFILES= + UPDATEPOFILES= + DUMMYPOFILES= + for lang in $ALL_LINGUAS; do + POFILES="$POFILES $srcdirpre$lang.po" + GMOFILES="$GMOFILES $srcdirpre$lang.gmo" + UPDATEPOFILES="$UPDATEPOFILES $lang.po-update" + DUMMYPOFILES="$DUMMYPOFILES $lang.nop" + 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|@GMOFILES@|$GMOFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@CATALOGS@|$CATALOGS|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, GMOFILES, UPDATEPOFILES, DUMMYPOFILES, CATALOGS. But hide it + # from automake. + eval 'ALL_LINGUAS''="$ALL_LINGUAS"' + # Capture the value of LINGUAS because we need it to compute CATALOGS. + LINGUAS="${LINGUAS-%UNSET%}" + ]) +]) + + +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([AC_PROG_RANLIB])dnl + AC_REQUIRE([AC_ISC_POSIX])dnl + AC_REQUIRE([AC_HEADER_STDC])dnl + AC_REQUIRE([AC_C_CONST])dnl + AC_REQUIRE([AC_C_INLINE])dnl + AC_REQUIRE([AC_TYPE_OFF_T])dnl + AC_REQUIRE([AC_TYPE_SIZE_T])dnl + AC_REQUIRE([AC_FUNC_ALLOCA])dnl + AC_REQUIRE([AC_FUNC_MMAP])dnl + AC_REQUIRE([jm_GLIBC21])dnl + + AC_CHECK_HEADERS([argz.h limits.h locale.h nl_types.h malloc.h stddef.h \ +stdlib.h string.h unistd.h sys/param.h]) + AC_CHECK_FUNCS([feof_unlocked fgets_unlocked getc_unlocked getcwd getegid \ +geteuid getgid getuid mempcpy munmap putenv setenv setlocale stpcpy \ +strcasecmp strdup strtoul tsearch __argz_count __argz_stringify __argz_next]) + + AM_ICONV + AM_LANGINFO_CODESET + AM_LC_MESSAGES + + 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 +]) + + +AC_DEFUN([AM_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 is. + MKINSTALLDIRS= + if test -n "$ac_aux_dir"; then + MKINSTALLDIRS="$ac_aux_dir/mkinstalldirs" + fi + if test -z "$MKINSTALLDIRS"; then + MKINSTALLDIRS="\$(top_srcdir)/mkinstalldirs" + fi + AC_SUBST(MKINSTALLDIRS) +]) diff --git a/src/apps/bin/diffutils-2.8.1/m4/glibc21.m4 b/src/apps/bin/diffutils-2.8.1/m4/glibc21.m4 new file mode 100644 index 0000000000..9c9f3db303 --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/m4/glibc21.m4 @@ -0,0 +1,32 @@ +# glibc21.m4 serial 2 (fileutils-4.1.3, gettext-0.10.40) +dnl Copyright (C) 2000-2002 Free Software Foundation, Inc. +dnl This file is free software, distributed under the terms of the GNU +dnl General Public License. As a special exception to the GNU General +dnl Public License, this file may be distributed as part of a program +dnl that contains a configuration script generated by Autoconf, under +dnl the same distribution terms as the rest of that program. + +# Test for the GNU C Library, version 2.1 or newer. +# From Bruno Haible. + +AC_DEFUN([jm_GLIBC21], + [ + AC_CACHE_CHECK(whether we are using the GNU C Library 2.1 or newer, + ac_cv_gnu_library_2_1, + [AC_EGREP_CPP([Lucky GNU user], + [ +#include +#ifdef __GNU_LIBRARY__ + #if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2) + Lucky GNU user + #endif +#endif + ], + ac_cv_gnu_library_2_1=yes, + ac_cv_gnu_library_2_1=no) + ] + ) + AC_SUBST(GLIBC21) + GLIBC21="$ac_cv_gnu_library_2_1" + ] +) diff --git a/src/apps/bin/diffutils-2.8.1/m4/gnu-source.m4 b/src/apps/bin/diffutils-2.8.1/m4/gnu-source.m4 new file mode 100644 index 0000000000..d2f490b0d6 --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/m4/gnu-source.m4 @@ -0,0 +1,25 @@ +#serial 3 +# Make sure _GNU_SOURCE is defined where necessary: as early as possible +# for configure-time tests, as well as for every source file that includes +# config.h. + +# From Jim Meyering. + +AC_DEFUN([AC__GNU_SOURCE], +[ + # Make sure that _GNU_SOURCE is defined for all subsequent + # configure-time compile tests. + # This definition must be emitted (into confdefs.h) before any + # test that involves compilation. + cat >>confdefs.h <<\EOF +#ifndef _GNU_SOURCE +# define _GNU_SOURCE +#endif +EOF + + # Emit this code into config.h.in. + # The ifndef is to avoid redefinition warnings. + AH_VERBATIM([_GNU_SOURCE], [#ifndef _GNU_SOURCE +# define _GNU_SOURCE +#endif]) +]) diff --git a/src/apps/bin/diffutils-2.8.1/m4/iconv.m4 b/src/apps/bin/diffutils-2.8.1/m4/iconv.m4 new file mode 100644 index 0000000000..f81e8b995f --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/m4/iconv.m4 @@ -0,0 +1,96 @@ +# iconv.m4 serial AM3 (gettext-0.11) +dnl Copyright (C) 2000-2002 Free Software Foundation, Inc. +dnl This file is free software, distributed under the terms of the GNU +dnl General Public License. As a special exception to the GNU General +dnl Public License, this file may be distributed as part of a program +dnl that contains a configuration script generated by Autoconf, under +dnl the same distribution terms as the rest of that program. + +dnl From Bruno Haible. + +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 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]) + + 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], +[ + AC_REQUIRE([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/src/apps/bin/diffutils-2.8.1/m4/inttypes.m4 b/src/apps/bin/diffutils-2.8.1/m4/inttypes.m4 new file mode 100644 index 0000000000..9571814f53 --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/m4/inttypes.m4 @@ -0,0 +1,32 @@ +#serial 6 + +dnl From Paul Eggert. + +AC_PREREQ(2.52) + +# Define intmax_t to long or long long if doesn't define. + +AC_DEFUN([jm_AC_TYPE_INTMAX_T], +[ + AC_REQUIRE([jm_AC_TYPE_LONG_LONG]) + AC_CHECK_TYPE(intmax_t, , + [test $ac_cv_type_long_long = yes \ + && ac_type='long long' \ + || ac_type='long' + AC_DEFINE_UNQUOTED(intmax_t, $ac_type, + [Define to widest signed type if doesn't define.])]) +]) + +# Define uintmax_t to unsigned long or unsigned long long +# if doesn't define. + +AC_DEFUN([jm_AC_TYPE_UINTMAX_T], +[ + AC_REQUIRE([jm_AC_TYPE_UNSIGNED_LONG_LONG]) + AC_CHECK_TYPE(uintmax_t, , + [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 widest unsigned type if doesn't define.])]) +]) diff --git a/src/apps/bin/diffutils-2.8.1/m4/jm-glibc-io.m4 b/src/apps/bin/diffutils-2.8.1/m4/jm-glibc-io.m4 new file mode 100644 index 0000000000..e8054f0bd2 --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/m4/jm-glibc-io.m4 @@ -0,0 +1,14 @@ +#serial 7 -*- autoconf -*- + +dnl From Jim Meyering. +dnl +dnl See if the glibc *_unlocked I/O macros are available. +dnl Use only those *_unlocked macros that are declared. +dnl + +AC_DEFUN([jm_FUNC_GLIBC_UNLOCKED_IO], + [AC_CHECK_DECLS( + [clearerr_unlocked, feof_unlocked, ferror_unlocked, + fflush_unlocked, fgets_unlocked, fputc_unlocked, fputs_unlocked, + fread_unlocked, fwrite_unlocked, getc_unlocked, + getchar_unlocked, putc_unlocked, putchar_unlocked])]) diff --git a/src/apps/bin/diffutils-2.8.1/m4/lcmessage.m4 b/src/apps/bin/diffutils-2.8.1/m4/lcmessage.m4 new file mode 100644 index 0000000000..ffbf915f1a --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/m4/lcmessage.m4 @@ -0,0 +1,32 @@ +# lcmessage.m4 serial 2 (gettext-0.10.40) +dnl Copyright (C) 1995-2002 Free Software Foundation, Inc. +dnl This file is free software, distributed under the terms of the GNU +dnl General Public License. As a special exception to the GNU General +dnl Public License, this file may be distributed as part of a program +dnl that contains a configuration script generated by Autoconf, under +dnl the same distribution terms as the rest of that program. +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([AM_LC_MESSAGES], + [if test $ac_cv_header_locale_h = yes; then + AC_CACHE_CHECK([for LC_MESSAGES], am_cv_val_LC_MESSAGES, + [AC_TRY_LINK([#include ], [return LC_MESSAGES], + am_cv_val_LC_MESSAGES=yes, am_cv_val_LC_MESSAGES=no)]) + if test $am_cv_val_LC_MESSAGES = yes; then + AC_DEFINE(HAVE_LC_MESSAGES, 1, + [Define if your file defines LC_MESSAGES.]) + fi + fi]) diff --git a/src/apps/bin/diffutils-2.8.1/m4/lib-ld.m4 b/src/apps/bin/diffutils-2.8.1/m4/lib-ld.m4 new file mode 100644 index 0000000000..ddb573234c --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/m4/lib-ld.m4 @@ -0,0 +1,97 @@ +# lib-ld.m4 serial 1 (gettext-0.11) +dnl Copyright (C) 1996-2002 Free Software Foundation, Inc. +dnl This file is free software, distributed under the terms of the GNU +dnl General Public License. As a special exception to the GNU General +dnl Public License, this file may be distributed as part of a program +dnl that contains a configuration script generated by Autoconf, under +dnl the same distribution terms as the rest of that program. + +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. +if $LD -v 2>&1 &5; then + acl_cv_prog_gnu_ld=yes +else + acl_cv_prog_gnu_ld=no +fi]) +with_gnu_ld=$acl_cv_prog_gnu_ld +]) + +dnl From libtool-1.4. Sets the variable LD. +AC_DEFUN([AC_LIB_PROG_LD], +[AC_ARG_WITH(gnu-ld, +[ --with-gnu-ld assume the C compiler uses GNU ld [default=no]], +test "$withval" = no || with_gnu_ld=yes, with_gnu_ld=no) +AC_REQUIRE([AC_PROG_CC])dnl +AC_REQUIRE([AC_CANONICAL_HOST])dnl +ac_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. + if "$acl_cv_path_LD" -v 2>&1 < /dev/null | egrep '(GNU|with BFD)' > /dev/null; then + test "$with_gnu_ld" != no && break + else + test "$with_gnu_ld" != yes && break + fi + fi + done + IFS="$ac_save_ifs" +else + 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/src/apps/bin/diffutils-2.8.1/m4/lib-link.m4 b/src/apps/bin/diffutils-2.8.1/m4/lib-link.m4 new file mode 100644 index 0000000000..a16aa44605 --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/m4/lib-link.m4 @@ -0,0 +1,521 @@ +# lib-link.m4 serial 1 (gettext-0.11) +dnl Copyright (C) 2001-2002 Free Software Foundation, Inc. +dnl This file is free software, distributed under the terms of the GNU +dnl General Public License. As a special exception to the GNU General +dnl Public License, this file may be distributed as part of a program +dnl that contains a configuration script generated by Autoconf, under +dnl the same distribution terms as the rest of that program. + +dnl From Bruno Haible. + +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, +dnl sys_lib_search_path_spec, sys_lib_dlsearch_path_spec. +AC_DEFUN([AC_LIB_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" + sys_lib_search_path_spec="$acl_cv_sys_lib_search_path_spec" + sys_lib_dlsearch_path_spec="$acl_cv_sys_lib_dlsearch_path_spec" +]) + +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_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 "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*) 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*) 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 + ;; + -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/src/apps/bin/diffutils-2.8.1/m4/lib-prefix.m4 b/src/apps/bin/diffutils-2.8.1/m4/lib-prefix.m4 new file mode 100644 index 0000000000..b8b79ab9ad --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/m4/lib-prefix.m4 @@ -0,0 +1,148 @@ +# lib-prefix.m4 serial 1 (gettext-0.11) +dnl Copyright (C) 2001-2002 Free Software Foundation, Inc. +dnl This file is free software, distributed under the terms of the GNU +dnl General Public License. As a special exception to the GNU General +dnl Public License, this file may be distributed as part of a program +dnl that contains a configuration script generated by Autoconf, under +dnl the same distribution terms as the rest of that program. + +dnl From Bruno Haible. + +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_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*) 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/src/apps/bin/diffutils-2.8.1/m4/longlong.m4 b/src/apps/bin/diffutils-2.8.1/m4/longlong.m4 new file mode 100644 index 0000000000..daa95c0751 --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/m4/longlong.m4 @@ -0,0 +1,35 @@ +#serial 2 + +dnl From Paul Eggert. + +# Define HAVE_LONG_LONG if 'long long' works. + +AC_DEFUN([jm_AC_TYPE_LONG_LONG], +[ + AC_CACHE_CHECK([for long long], ac_cv_type_long_long, + [AC_TRY_LINK([long long ll = 1; 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 +]) + +# Define HAVE_UNSIGNED_LONG_LONG if 'unsigned long long' works. + +AC_DEFUN([jm_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 = 1; 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/src/apps/bin/diffutils-2.8.1/m4/malloc.m4 b/src/apps/bin/diffutils-2.8.1/m4/malloc.m4 new file mode 100644 index 0000000000..bb60947dc7 --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/m4/malloc.m4 @@ -0,0 +1,34 @@ +#serial 5 + +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([for working malloc], 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 is broken. + 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/src/apps/bin/diffutils-2.8.1/m4/mbrtowc.m4 b/src/apps/bin/diffutils-2.8.1/m4/mbrtowc.m4 new file mode 100644 index 0000000000..87743919b9 --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/m4/mbrtowc.m4 @@ -0,0 +1,18 @@ +#serial 4 + +dnl From Paul Eggert + +AC_DEFUN([jm_FUNC_MBRTOWC], +[ + AC_CACHE_CHECK([whether mbrtowc and mbstate_t are properly declared], + jm_cv_func_mbrtowc, + [AC_TRY_LINK( + [#include ], + [mbstate_t state; return ! (sizeof state && mbrtowc);], + jm_cv_func_mbrtowc=yes, + jm_cv_func_mbrtowc=no)]) + if test $jm_cv_func_mbrtowc = yes; then + AC_DEFINE(HAVE_MBRTOWC, 1, + [Define to 1 if mbrtowc and mbstate_t are properly declared.]) + fi +]) diff --git a/src/apps/bin/diffutils-2.8.1/m4/mbstate_t.m4 b/src/apps/bin/diffutils-2.8.1/m4/mbstate_t.m4 new file mode 100644 index 0000000000..ae2bcf1e8e --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/m4/mbstate_t.m4 @@ -0,0 +1,29 @@ +# serial 9 + +# From Paul Eggert. + +# BeOS 5 has but does not define mbstate_t, +# so you can't declare an object of that type. +# Check for this incompatibility with Standard C. + +# Include stdlib.h first, because otherwise this test would fail on Linux +# (at least glibc-2.1.3) because the "_XOPEN_SOURCE 500" definition elicits +# a syntax error in wchar.h due to the use of undefined __int32_t. + +AC_DEFUN([AC_MBSTATE_T], + [ + AC_CHECK_HEADERS(stdlib.h) + + AC_CACHE_CHECK([for mbstate_t], ac_cv_type_mbstate_t, + [AC_TRY_COMPILE([ +#if HAVE_STDLIB_H +# include +#endif +#include ], + [mbstate_t x; return sizeof x;], + ac_cv_type_mbstate_t=yes, + ac_cv_type_mbstate_t=no)]) + if test $ac_cv_type_mbstate_t = no; then + AC_DEFINE(mbstate_t, int, + [Define to a type if does not define.]) + fi]) diff --git a/src/apps/bin/diffutils-2.8.1/m4/prereq.m4 b/src/apps/bin/diffutils-2.8.1/m4/prereq.m4 new file mode 100644 index 0000000000..816308ab40 --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/m4/prereq.m4 @@ -0,0 +1,153 @@ +#serial 22 + +dnl These are the prerequisite macros for files in the lib/ +dnl directories of the fileutils, sh-utils, and textutils packages. + +AC_DEFUN([jm_PREREQ], +[ + jm_PREREQ_ADDEXT + jm_PREREQ_CANON_HOST + jm_PREREQ_DIRNAME + jm_PREREQ_ERROR + jm_PREREQ_EXCLUDE + jm_PREREQ_GETPAGESIZE + jm_PREREQ_HARD_LOCALE + jm_PREREQ_HASH + jm_PREREQ_HUMAN + jm_PREREQ_MBSWIDTH + jm_PREREQ_MEMCHR + jm_PREREQ_PHYSMEM + jm_PREREQ_POSIXVER + jm_PREREQ_QUOTEARG + jm_PREREQ_READUTMP + jm_PREREQ_REGEX + jm_PREREQ_TEMPNAME # called by mkstemp + jm_PREREQ_XGETCWD + jm_PREREQ_XREADLINK +]) + +AC_DEFUN([jm_PREREQ_ADDEXT], +[ + dnl For addext.c. + AC_SYS_LONG_FILE_NAMES + AC_CHECK_FUNCS(pathconf) + AC_CHECK_HEADERS(limits.h string.h unistd.h) +]) + +AC_DEFUN([jm_PREREQ_CANON_HOST], +[ + dnl Add any libraries as early as possible. + dnl In particular, inet_ntoa needs -lnsl at least on Solaris5.5.1, + dnl so we have to add -lnsl to LIBS before checking for that function. + AC_SEARCH_LIBS(gethostbyname, [inet nsl]) + + dnl These come from -lnsl on Solaris5.5.1. + AC_CHECK_FUNCS(gethostbyname gethostbyaddr inet_ntoa) + + AC_CHECK_FUNCS(gethostbyname gethostbyaddr inet_ntoa) + AC_CHECK_HEADERS(unistd.h string.h netdb.h sys/socket.h \ + netinet/in.h arpa/inet.h) +]) + +AC_DEFUN([jm_PREREQ_DIRNAME], +[ + AC_HEADER_STDC + AC_CHECK_HEADERS(string.h) +]) + +AC_DEFUN([jm_PREREQ_EXCLUDE], +[ + jm_FUNC_FNMATCH + AC_HEADER_STDBOOL +]) + +AC_DEFUN([jm_PREREQ_GETPAGESIZE], +[ + AC_CHECK_FUNCS(getpagesize) + AC_CHECK_HEADERS(OS.h unistd.h) +]) + +AC_DEFUN([jm_PREREQ_HARD_LOCALE], +[ + AC_C_PROTOTYPES + AC_CHECK_FUNCS(setlocale) + AC_CHECK_HEADERS(locale.h stdlib.h string.h) +]) + +AC_DEFUN([jm_PREREQ_HASH], +[ + AC_CHECK_HEADERS(stdlib.h) + AC_HEADER_STDBOOL + AC_REQUIRE([jm_CHECK_DECLS]) +]) + +# If you use human.c, you need the following files: +# inttypes.m4 ulonglong.m4 +AC_DEFUN([jm_PREREQ_HUMAN], +[ + AC_CHECK_HEADERS(limits.h stdlib.h string.h) + AC_CHECK_DECLS([getenv]) + AC_REQUIRE([jm_AC_TYPE_UINTMAX_T]) +]) + +AC_DEFUN([jm_PREREQ_MEMCHR], +[ + AC_CHECK_HEADERS(limits.h stdlib.h bp-sym.h) +]) + +AC_DEFUN([jm_PREREQ_PHYSMEM], +[ + AC_CHECK_HEADERS(sys/pstat.h unistd.h) + AC_CHECK_FUNCS(pstat_getstatic pstat_getdynamic) +]) + +AC_DEFUN([jm_PREREQ_POSIXVER], +[ + AC_CHECK_HEADERS(unistd.h) + AC_CHECK_DECLS([getenv]) +]) + +AC_DEFUN([jm_PREREQ_QUOTEARG], +[ + AC_CHECK_FUNCS(isascii iswprint) + jm_FUNC_MBRTOWC + AC_CHECK_HEADERS(limits.h stddef.h stdlib.h string.h wchar.h wctype.h) + AC_HEADER_STDC + AC_C_BACKSLASH_A + AC_MBSTATE_T + AM_C_PROTOTYPES +]) + +AC_DEFUN([jm_PREREQ_REGEX], +[ + dnl FIXME: Maybe provide a btowc replacement someday: solaris-2.5.1 lacks it. + dnl FIXME: Check for wctype and iswctype, and and add -lw if necessary + dnl to get them. + AC_CHECK_FUNCS(bzero bcopy isascii btowc) + AC_CHECK_HEADERS(alloca.h libintl.h wctype.h wchar.h) + AC_HEADER_STDC + AC_FUNC_ALLOCA +]) + +AC_DEFUN([jm_PREREQ_TEMPNAME], +[ + AC_HEADER_STDC + AC_HEADER_STAT + AC_CHECK_HEADERS(fcntl.h sys/time.h stdint.h unistd.h) + AC_CHECK_FUNCS(__secure_getenv gettimeofday) + AC_CHECK_DECLS([getenv]) +]) + +AC_DEFUN([jm_PREREQ_XGETCWD], +[ + AC_C_PROTOTYPES + AC_CHECK_HEADERS(limits.h stdlib.h sys/param.h unistd.h) + AC_CHECK_FUNCS(getcwd) + AC_FUNC_GETCWD_NULL +]) + +AC_DEFUN([jm_PREREQ_XREADLINK], +[ + AC_C_PROTOTYPES + AC_CHECK_HEADERS(limits.h stdlib.h sys/types.h unistd.h) +]) diff --git a/src/apps/bin/diffutils-2.8.1/m4/progtest.m4 b/src/apps/bin/diffutils-2.8.1/m4/progtest.m4 new file mode 100644 index 0000000000..443c8e3063 --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/m4/progtest.m4 @@ -0,0 +1,59 @@ +# progtest.m4 serial 2 (gettext-0.10.40) +dnl Copyright (C) 1996-2002 Free Software Foundation, Inc. +dnl This file is free software, distributed under the terms of the GNU +dnl General Public License. As a special exception to the GNU General +dnl Public License, this file may be distributed as part of a program +dnl that contains a configuration script generated by Autoconf, under +dnl the same distribution terms as the rest of that program. +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. + +# 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], +[# Extract the first word of "$2", so it can be a program name with args. +set dummy $2; ac_word=[$]2 +AC_MSG_CHECKING([for $ac_word]) +AC_CACHE_VAL(ac_cv_path_$1, +[case "[$]$1" in + /*) + ac_cv_path_$1="[$]$1" # Let the user override the test with a path. + ;; + *) + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" + for ac_dir in ifelse([$5], , $PATH, [$5]); do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + if [$3]; then + ac_cv_path_$1="$ac_dir/$ac_word" + break + fi + fi + done + IFS="$ac_save_ifs" +dnl If no 4th arg is given, leave the cache variable unset, +dnl so AC_PATH_PROGS will keep looking. +ifelse([$4], , , [ test -z "[$]ac_cv_path_$1" && ac_cv_path_$1="$4" +])dnl + ;; +esac])dnl +$1="$ac_cv_path_$1" +if test ifelse([$4], , [-n "[$]$1"], ["[$]$1" != "$4"]); then + AC_MSG_RESULT([$]$1) +else + AC_MSG_RESULT(no) +fi +AC_SUBST($1)dnl +]) diff --git a/src/apps/bin/diffutils-2.8.1/m4/realloc.m4 b/src/apps/bin/diffutils-2.8.1/m4/realloc.m4 new file mode 100644 index 0000000000..c8a8237472 --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/m4/realloc.m4 @@ -0,0 +1,34 @@ +#serial 5 + +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([for working realloc], 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 is broken. + 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/src/apps/bin/diffutils-2.8.1/m4/regex.m4 b/src/apps/bin/diffutils-2.8.1/m4/regex.m4 new file mode 100644 index 0000000000..0017507edf --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/m4/regex.m4 @@ -0,0 +1,81 @@ +#serial 12 + +dnl Initially derived from code in GNU grep. +dnl Mostly written by Jim Meyering. + +dnl Usage: jm_INCLUDED_REGEX([lib/regex.c]) +dnl +AC_DEFUN([jm_INCLUDED_REGEX], + [ + dnl Even packages that don't use regex.c can use this macro. + dnl Of course, for them it doesn't do anything. + + # Assume we'll default to using the included regex.c. + ac_use_included_regex=yes + + # However, if the system regex support is good enough that it passes the + # the following run test, then default to *not* using the included regex.c. + # If cross compiling, assume the test would fail and use the included + # regex.c. The first failing regular expression is from `Spencer ere + # test #75' in grep-2.3. + AC_CACHE_CHECK([for working re_compile_pattern], + jm_cv_func_working_re_compile_pattern, + AC_TRY_RUN( +[#include +#include + int + main () + { + static struct re_pattern_buffer regex; + const char *s; + struct re_registers regs; + re_set_syntax (RE_SYNTAX_POSIX_EGREP); + [s = re_compile_pattern ("a[[:@:>@:]]b\n", 9, ®ex);] + /* This should fail with _Invalid character class name_ error. */ + if (!s) + exit (1); + + /* This should succeed, but doesn't for e.g. glibc-2.1.3. */ + s = re_compile_pattern ("{1", 2, ®ex); + + if (s) + exit (1); + + /* The following example is derived from a problem report + against gawk from Jorge Stolfi . */ + s = re_compile_pattern ("[[anù]]*n", 7, ®ex); + if (s) + exit (1); + + /* This should match, but doesn't for e.g. glibc-2.2.1. */ + if (re_match (®ex, "an", 2, 0, ®s) != 2) + exit (1); + + exit (0); + } + ], + jm_cv_func_working_re_compile_pattern=yes, + jm_cv_func_working_re_compile_pattern=no, + dnl When crosscompiling, assume it's broken. + jm_cv_func_working_re_compile_pattern=no)) + if test $jm_cv_func_working_re_compile_pattern = yes; then + ac_use_included_regex=no + fi + + test -n "$1" || AC_MSG_ERROR([missing argument]) + m4_syscmd([test -f $1]) + ifelse(m4_sysval, 0, + [ + AC_ARG_WITH(included-regex, + [ --without-included-regex don't compile regex; this is the default on + systems with version 2 of the GNU C library + (use with caution on other system)], + jm_with_regex=$withval, + jm_with_regex=$ac_use_included_regex) + if test "$jm_with_regex" = yes; then + AC_LIBOBJ(regex) + fi + ], + ) + ] +) diff --git a/src/apps/bin/diffutils-2.8.1/m4/setmode.m4 b/src/apps/bin/diffutils-2.8.1/m4/setmode.m4 new file mode 100644 index 0000000000..1af6bca4a7 --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/m4/setmode.m4 @@ -0,0 +1,38 @@ +# Check for setmode, DOS style. + +# Copyright (C) 2001, 2002 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + +AC_DEFUN([AC_FUNC_SETMODE_DOS], + [AC_CHECK_HEADERS(fcntl.h unistd.h) + AC_CACHE_CHECK([for DOS-style setmode], + [ac_cv_func_setmode_dos], + [AC_TRY_LINK( + [#include + #if HAVE_FCNTL_H + # include + #endif + #if HAVE_UNISTD_H + # include + #endif], + [int ret = setmode && setmode (1, O_BINARY);], + [ac_cv_func_setmode_dos=yes], + [ac_cv_func_setmode_dos=no])]) + if test $ac_cv_func_setmode_dos = yes; then + AC_DEFINE(HAVE_SETMODE_DOS, 1, + [Define to 1 if you have the DOS-style `setmode' function.]) + fi]) diff --git a/src/apps/bin/diffutils-2.8.1/m4/st_mtim.m4 b/src/apps/bin/diffutils-2.8.1/m4/st_mtim.m4 new file mode 100644 index 0000000000..e9342cfebf --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/m4/st_mtim.m4 @@ -0,0 +1,32 @@ +#serial 5 + +dnl From Paul Eggert. + +# Define ST_MTIM_NSEC to be the nanoseconds member of struct stat's st_mtim, +# if it exists. + +AC_DEFUN([AC_STRUCT_ST_MTIM_NSEC], + [AC_CACHE_CHECK([for nanoseconds member of struct stat.st_mtim], + ac_cv_struct_st_mtim_nsec, + [ac_save_CPPFLAGS="$CPPFLAGS" + ac_cv_struct_st_mtim_nsec=no + # tv_nsec -- the usual case + # _tv_nsec -- Solaris 2.6, if + # (defined _XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED == 1 + # && !defined __EXTENSIONS__) + # st__tim.tv_nsec -- UnixWare 2.1.2 + for ac_val in tv_nsec _tv_nsec st__tim.tv_nsec; do + CPPFLAGS="$ac_save_CPPFLAGS -DST_MTIM_NSEC=$ac_val" + AC_TRY_COMPILE([#include +#include ], [struct stat s; s.st_mtim.ST_MTIM_NSEC;], + [ac_cv_struct_st_mtim_nsec=$ac_val; break]) + done + CPPFLAGS="$ac_save_CPPFLAGS"]) + + if test $ac_cv_struct_st_mtim_nsec != no; then + AC_DEFINE_UNQUOTED(ST_MTIM_NSEC, $ac_cv_struct_st_mtim_nsec, + [Define to be the nanoseconds member of struct stat's st_mtim, + if it exists.]) + fi + ] +) diff --git a/src/apps/bin/diffutils-2.8.1/m4/stdbool.m4 b/src/apps/bin/diffutils-2.8.1/m4/stdbool.m4 new file mode 100644 index 0000000000..8916dd4c74 --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/m4/stdbool.m4 @@ -0,0 +1,56 @@ +# Check for stdbool.h that conforms to C99. + +# Copyright (C) 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. + +AC_DEFUN([AC_HEADER_STDBOOL], + [AC_CACHE_CHECK([for stdbool.h that conforms to C99], + [ac_cv_header_stdbool_h], + [AC_TRY_COMPILE( + [ + #include + #ifndef bool + "error: bool is not defined" + #endif + #ifndef false + "error: false is not defined" + #endif + #ifndef true + "error: false is not defined" + #endif + #ifndef __bool_true_false_are_defined + "error: __bool_true_false_are_defined is not defined" + #endif + + struct s { _Bool s: 1; _Bool t; } s; + + char a[true == 1 ? 1 : -1]; + char b[false == 0 ? 1 : -1]; + char c[__bool_true_false_are_defined == 1 ? 1 : -1]; + char d[(bool) -0.5 == true ? 1 : -1]; + char e[(bool) &s == true ? 1 : -1]; + char f[(_Bool) -0.0 == false ? 1 : -1]; + char g[true]; + char h[sizeof (_Bool)]; + char i[sizeof s.t]; + ], + [ return !a + !b + !c + !d + !e + !f + !g + !h + !i; ], + [ac_cv_header_stdbool_h=yes], + [ac_cv_header_stdbool_h=no])]) + if test $ac_cv_header_stdbool_h = yes; then + AC_DEFINE(HAVE_STDBOOL_H, 1, [Define to 1 if stdbool.h conforms to C99.]) + fi]) diff --git a/src/apps/bin/diffutils-2.8.1/m4/strftime.m4 b/src/apps/bin/diffutils-2.8.1/m4/strftime.m4 new file mode 100644 index 0000000000..831faecac5 --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/m4/strftime.m4 @@ -0,0 +1,43 @@ +#serial 17 + +dnl This macro is intended to be used solely in this file. +dnl These are the prerequisite macros for GNU's strftime.c replacement. +AC_DEFUN([_jm_STRFTIME_PREREQS], +[ + dnl strftime.c uses localtime_r and the underyling system strftime + dnl if they exist. + AC_CHECK_FUNCS(localtime_r strftime) + + AC_CHECK_HEADERS(limits.h) + AC_CHECK_FUNCS(bcopy tzset mempcpy memcpy memset) + + # This defines (or not) HAVE_TZNAME and HAVE_TM_ZONE. + AC_STRUCT_TIMEZONE + + AC_CHECK_FUNCS(mblen mbrlen) + + AC_CHECK_MEMBER([struct tm.tm_gmtoff], + [AC_DEFINE(HAVE_TM_GMTOFF, 1, + [Define if struct tm has the tm_gmtoff member.])], + , + [#include ]) +]) + +dnl From Jim Meyering. +dnl +AC_DEFUN([jm_FUNC_GNU_STRFTIME], +[AC_REQUIRE([AC_HEADER_TIME])dnl + + _jm_STRFTIME_PREREQS + + AC_REQUIRE([AC_C_CONST])dnl + AC_REQUIRE([AC_HEADER_STDC])dnl + AC_CHECK_HEADERS(sys/time.h) + AC_DEFINE([my_strftime], [nstrftime], + [Define to the name of the strftime replacement function.]) +]) + +AC_DEFUN([jm_FUNC_STRFTIME], +[ + _jm_STRFTIME_PREREQS +]) diff --git a/src/apps/bin/diffutils-2.8.1/m4/vararrays.m4 b/src/apps/bin/diffutils-2.8.1/m4/vararrays.m4 new file mode 100644 index 0000000000..e4256f963b --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/m4/vararrays.m4 @@ -0,0 +1,37 @@ +# Check for variable-length arrays. + +#serial 1 + +# From Paul Eggert + +# Copyright (C) 2001 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + +AC_DEFUN([AC_C_VARARRAYS], +[ + AC_CACHE_CHECK([for variable-length arrays], + ac_cv_c_vararrays, + [AC_TRY_COMPILE( + [], + [static int x; char a[++x]; a[sizeof a - 1] = 0; return a[0];], + ac_cv_c_vararrays=yes, + ac_cv_c_vararrays=no)]) + if test $ac_cv_c_vararrays = yes; then + AC_DEFINE(HAVE_C_VARARRAYS, 1, + [Define to 1 if C supports variable-length arrays.]) + fi +]) diff --git a/src/apps/bin/diffutils-2.8.1/m4/xstrtoumax.m4 b/src/apps/bin/diffutils-2.8.1/m4/xstrtoumax.m4 new file mode 100644 index 0000000000..9ab71ec6dd --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/m4/xstrtoumax.m4 @@ -0,0 +1,40 @@ +#serial 4 + +# autoconf tests required for use of xstrtoumax.c + +AC_DEFUN([jm_AC_PREREQ_XSTRTOUMAX], +[ + AC_REQUIRE([jm_AC_TYPE_INTMAX_T]) + AC_REQUIRE([jm_AC_TYPE_UINTMAX_T]) + AC_REQUIRE([jm_AC_TYPE_LONG_LONG]) + AC_REQUIRE([jm_AC_TYPE_UNSIGNED_LONG_LONG]) + AC_CHECK_DECLS([strtol, strtoul, strtoull, strtoimax, strtoumax]) + AC_CHECK_HEADERS(limits.h stdlib.h inttypes.h) + + AC_CACHE_CHECK([whether defines strtoumax as a macro], + jm_cv_func_strtoumax_macro, + AC_EGREP_CPP([inttypes_h_defines_strtoumax], [#include +#ifdef strtoumax + inttypes_h_defines_strtoumax +#endif], + jm_cv_func_strtoumax_macro=yes, + jm_cv_func_strtoumax_macro=no)) + + if test "$jm_cv_func_strtoumax_macro" != yes; then + AC_REPLACE_FUNCS(strtoumax) + fi + + dnl Only the replacement strtoumax invokes strtoul and strtoull, + dnl so we need the replacements only if strtoumax does not exist. + case "$jm_cv_func_strtoumax_macro,$ac_cv_func_strtoumax" in + no,no) + AC_REPLACE_FUNCS(strtoul) + + dnl We don't need (and can't compile) the replacement strtoull + dnl unless the type `unsigned long long' exists. + if test "$ac_cv_type_unsigned_long_long" = yes; then + AC_REPLACE_FUNCS(strtoull) + fi + ;; + esac +]) diff --git a/src/apps/bin/diffutils-2.8.1/man/Makefile b/src/apps/bin/diffutils-2.8.1/man/Makefile new file mode 100644 index 0000000000..0b2d225324 --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/man/Makefile @@ -0,0 +1,291 @@ +# Makefile.in generated by automake 1.6 from Makefile.am. +# man/Makefile. Generated from Makefile.in by configure. + +# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002 +# Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + + + +# Automakefile for GNU diffutils man pages + +# Copyright (C) 2002 Free Software Foundation, Inc. +SHELL = /bin/sh + +srcdir = . +top_srcdir = .. + +prefix = /usr/local +exec_prefix = ${prefix} + +bindir = ${exec_prefix}/bin +sbindir = ${exec_prefix}/sbin +libexecdir = ${exec_prefix}/libexec +datadir = ${prefix}/share +sysconfdir = ${prefix}/etc +sharedstatedir = ${prefix}/com +localstatedir = ${prefix}/var +libdir = ${exec_prefix}/lib +infodir = ${prefix}/info +mandir = ${prefix}/man +includedir = ${prefix}/include +oldincludedir = /usr/include +pkgdatadir = $(datadir)/diffutils +pkglibdir = $(libdir)/diffutils +pkgincludedir = $(includedir)/diffutils +top_builddir = .. + +ACLOCAL = ${SHELL} /boot/home/Development/current/src/apps/bin/diffutils-2.8.1/config/missing --run aclocal-1.6 +AUTOCONF = ${SHELL} /boot/home/Development/current/src/apps/bin/diffutils-2.8.1/config/missing --run autoconf +AUTOMAKE = ${SHELL} /boot/home/Development/current/src/apps/bin/diffutils-2.8.1/config/missing --run automake-1.6 +AUTOHEADER = ${SHELL} /boot/home/Development/current/src/apps/bin/diffutils-2.8.1/config/missing --run autoheader + +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = /bin/install -c +INSTALL_PROGRAM = ${INSTALL} +INSTALL_DATA = ${INSTALL} -m 644 +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +INSTALL_SCRIPT = ${INSTALL} +INSTALL_HEADER = $(INSTALL_DATA) +transform = s,x,x, +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +host_alias = +host_triplet = i586-pc-beos + +EXEEXT = +OBJEXT = o +PATH_SEPARATOR = : +AMTAR = ${SHELL} /boot/home/Development/current/src/apps/bin/diffutils-2.8.1/config/missing --run tar +AWK = gawk +BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@ +CATOBJEXT = @CATOBJEXT@ +CC = gcc +CPP = gcc -E +DATADIRNAME = @DATADIRNAME@ +DEPDIR = .deps +GENCAT = @GENCAT@ +GLIBC21 = @GLIBC21@ +GMSGFMT = : +HAVE_LIB = @HAVE_LIB@ +HELP2MAN = ${SHELL} /boot/home/Development/current/src/apps/bin/diffutils-2.8.1/config/missing --run help2man +INSTALL_STRIP_PROGRAM = ${SHELL} $(install_sh) -c -s +INSTOBJEXT = @INSTOBJEXT@ +INTLBISON = @INTLBISON@ +INTLLIBS = +INTLOBJS = @INTLOBJS@ +INTL_LIBTOOL_SUFFIX_PREFIX = @INTL_LIBTOOL_SUFFIX_PREFIX@ +LIB = @LIB@ +LIBICONV = +LIBINTL = +LIB_CLOCK_GETTIME = +LTLIB = @LTLIB@ +LTLIBICONV = +LTLIBINTL = +MKINSTALLDIRS = config/mkinstalldirs +PACKAGE = diffutils +POSUB = +PR_PROGRAM = /bin/pr +RANLIB = ranlib +STRIP = +U = +USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@ +USE_NLS = no +VERSION = 2.8.1 +am__include = include +am__quote = +install_sh = /boot/home/Development/current/src/apps/bin/diffutils-2.8.1/config/install-sh + +dist_man_MANS = cmp.1 diff.1 diff3.1 sdiff.1 +MAINTAINERCLEANFILES = $(dist_man_MANS) + +S = $(top_srcdir)/src +subdir = man +mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +DIST_SOURCES = + +NROFF = nroff +MANS = $(dist_man_MANS) +DIST_COMMON = $(dist_man_MANS) Makefile.am Makefile.in +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.ac $(ACLOCAL_M4) + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnits man/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) +uninstall-info-am: + +man1dir = $(mandir)/man1 +install-man1: $(man1_MANS) $(man_MANS) + @$(NORMAL_INSTALL) + $(mkinstalldirs) $(DESTDIR)$(man1dir) + @list='$(man1_MANS) $(dist_man1_MANS) $(nodist_man1_MANS)'; \ + l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \ + for i in $$l2; do \ + case "$$i" in \ + *.1*) list="$$list $$i" ;; \ + esac; \ + done; \ + for i in $$list; do \ + if test -f $(srcdir)/$$i; then file=$(srcdir)/$$i; \ + else file=$$i; fi; \ + ext=`echo $$i | sed -e 's/^.*\\.//'`; \ + inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \ + inst=`echo $$inst | sed -e 's/^.*\///'`; \ + inst=`echo $$inst | sed '$(transform)'`.$$ext; \ + echo " $(INSTALL_DATA) $$file $(DESTDIR)$(man1dir)/$$inst"; \ + $(INSTALL_DATA) $$file $(DESTDIR)$(man1dir)/$$inst; \ + done +uninstall-man1: + @$(NORMAL_UNINSTALL) + @list='$(man1_MANS) $(dist_man1_MANS) $(nodist_man1_MANS)'; \ + l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \ + for i in $$l2; do \ + case "$$i" in \ + *.1*) list="$$list $$i" ;; \ + esac; \ + done; \ + for i in $$list; do \ + ext=`echo $$i | sed -e 's/^.*\\.//'`; \ + inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \ + inst=`echo $$inst | sed -e 's/^.*\///'`; \ + inst=`echo $$inst | sed '$(transform)'`.$$ext; \ + echo " rm -f $(DESTDIR)$(man1dir)/$$inst"; \ + rm -f $(DESTDIR)$(man1dir)/$$inst; \ + done +tags: TAGS +TAGS: + +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) + +top_distdir = .. +distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) + +distdir: $(DISTFILES) + @for file in $(DISTFILES); do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + dir="/$$dir"; \ + $(mkinstalldirs) "$(distdir)$$dir"; \ + else \ + dir=''; \ + fi; \ + if test -d $$d/$$file; then \ + cp -pR $$d/$$file $(distdir)$$dir \ + || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(MANS) + +installdirs: + $(mkinstalldirs) $(DESTDIR)$(man1dir) + +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -rm -f Makefile $(CONFIG_CLEAN_FILES) stamp-h stamp-h[0-9]* + +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 "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES) +clean: clean-am + +clean-am: clean-generic mostlyclean-am + +distclean: distclean-am + +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: + +info: info-am + +info-am: + +install-data-am: install-man + +install-exec-am: + +install-info: install-info-am + +install-man: install-man1 + +installcheck-am: + +maintainer-clean: maintainer-clean-am + +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic + +uninstall-am: uninstall-info-am uninstall-man + +uninstall-man: uninstall-man1 + +.PHONY: all all-am check check-am clean clean-generic distclean \ + distclean-generic distdir dvi dvi-am info info-am install \ + install-am install-data install-data-am install-exec \ + install-exec-am install-info install-info-am install-man \ + install-man1 install-strip installcheck installcheck-am \ + installdirs maintainer-clean maintainer-clean-generic \ + mostlyclean mostlyclean-generic uninstall uninstall-am \ + uninstall-info-am uninstall-man uninstall-man1 + +cmp.1: $S/cmp.c +diff.1: $S/diff.c +diff3.1: $S/diff3.c +sdiff.1: $S/sdiff.c + +# Depend on configure.ac to get version number changes. +$(dist_man_MANS): $(top_srcdir)/configure.ac + base=`expr $@ : '\(.*\).1'` && \ + (echo '[NAME]' && sed 's@/\* *@@; s/-/\\-/; q' $S/$$base.c) | \ + $(HELP2MAN) -i - -S '$(PACKAGE) $(VERSION)' ../src/$$base | \ + sed 's/^\.B info .*/.B info diff/' >$@ +# 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/apps/bin/diffutils-2.8.1/man/Makefile.am b/src/apps/bin/diffutils-2.8.1/man/Makefile.am new file mode 100644 index 0000000000..d3a1ee20bb --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/man/Makefile.am @@ -0,0 +1,34 @@ +# Automakefile for GNU diffutils man pages + +# Copyright (C) 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. + +dist_man_MANS = cmp.1 diff.1 diff3.1 sdiff.1 +MAINTAINERCLEANFILES = $(dist_man_MANS) + +S = $(top_srcdir)/src +cmp.1: $S/cmp.c +diff.1: $S/diff.c +diff3.1: $S/diff3.c +sdiff.1: $S/sdiff.c + +# Depend on configure.ac to get version number changes. +$(dist_man_MANS): $(top_srcdir)/configure.ac + base=`expr $@ : '\(.*\).1'` && \ + (echo '[NAME]' && sed 's@/\* *@@; s/-/\\-/; q' $S/$$base.c) | \ + $(HELP2MAN) -i - -S '$(PACKAGE) $(VERSION)' ../src/$$base | \ + sed 's/^\.B info .*/.B info diff/' >$@ diff --git a/src/apps/bin/diffutils-2.8.1/man/Makefile.in b/src/apps/bin/diffutils-2.8.1/man/Makefile.in new file mode 100644 index 0000000000..73ae371ad6 --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/man/Makefile.in @@ -0,0 +1,291 @@ +# Makefile.in generated by automake 1.6 from Makefile.am. +# @configure_input@ + +# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002 +# Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# Automakefile for GNU diffutils man pages + +# Copyright (C) 2002 Free Software Foundation, Inc. +SHELL = @SHELL@ + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +prefix = @prefix@ +exec_prefix = @exec_prefix@ + +bindir = @bindir@ +sbindir = @sbindir@ +libexecdir = @libexecdir@ +datadir = @datadir@ +sysconfdir = @sysconfdir@ +sharedstatedir = @sharedstatedir@ +localstatedir = @localstatedir@ +libdir = @libdir@ +infodir = @infodir@ +mandir = @mandir@ +includedir = @includedir@ +oldincludedir = /usr/include +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +top_builddir = .. + +ACLOCAL = @ACLOCAL@ +AUTOCONF = @AUTOCONF@ +AUTOMAKE = @AUTOMAKE@ +AUTOHEADER = @AUTOHEADER@ + +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = @INSTALL@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_DATA = @INSTALL_DATA@ +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_HEADER = $(INSTALL_DATA) +transform = @program_transform_name@ +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +host_alias = @host_alias@ +host_triplet = @host@ + +EXEEXT = @EXEEXT@ +OBJEXT = @OBJEXT@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +AMTAR = @AMTAR@ +AWK = @AWK@ +BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@ +CATOBJEXT = @CATOBJEXT@ +CC = @CC@ +CPP = @CPP@ +DATADIRNAME = @DATADIRNAME@ +DEPDIR = @DEPDIR@ +GENCAT = @GENCAT@ +GLIBC21 = @GLIBC21@ +GMSGFMT = @GMSGFMT@ +HAVE_LIB = @HAVE_LIB@ +HELP2MAN = @HELP2MAN@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INSTOBJEXT = @INSTOBJEXT@ +INTLBISON = @INTLBISON@ +INTLLIBS = @INTLLIBS@ +INTLOBJS = @INTLOBJS@ +INTL_LIBTOOL_SUFFIX_PREFIX = @INTL_LIBTOOL_SUFFIX_PREFIX@ +LIB = @LIB@ +LIBICONV = @LIBICONV@ +LIBINTL = @LIBINTL@ +LIB_CLOCK_GETTIME = @LIB_CLOCK_GETTIME@ +LTLIB = @LTLIB@ +LTLIBICONV = @LTLIBICONV@ +LTLIBINTL = @LTLIBINTL@ +MKINSTALLDIRS = @MKINSTALLDIRS@ +PACKAGE = @PACKAGE@ +POSUB = @POSUB@ +PR_PROGRAM = @PR_PROGRAM@ +RANLIB = @RANLIB@ +STRIP = @STRIP@ +U = @U@ +USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@ +USE_NLS = @USE_NLS@ +VERSION = @VERSION@ +am__include = @am__include@ +am__quote = @am__quote@ +install_sh = @install_sh@ + +dist_man_MANS = cmp.1 diff.1 diff3.1 sdiff.1 +MAINTAINERCLEANFILES = $(dist_man_MANS) + +S = $(top_srcdir)/src +subdir = man +mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +DIST_SOURCES = + +NROFF = nroff +MANS = $(dist_man_MANS) +DIST_COMMON = $(dist_man_MANS) Makefile.am Makefile.in +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.ac $(ACLOCAL_M4) + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnits man/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) +uninstall-info-am: + +man1dir = $(mandir)/man1 +install-man1: $(man1_MANS) $(man_MANS) + @$(NORMAL_INSTALL) + $(mkinstalldirs) $(DESTDIR)$(man1dir) + @list='$(man1_MANS) $(dist_man1_MANS) $(nodist_man1_MANS)'; \ + l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \ + for i in $$l2; do \ + case "$$i" in \ + *.1*) list="$$list $$i" ;; \ + esac; \ + done; \ + for i in $$list; do \ + if test -f $(srcdir)/$$i; then file=$(srcdir)/$$i; \ + else file=$$i; fi; \ + ext=`echo $$i | sed -e 's/^.*\\.//'`; \ + inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \ + inst=`echo $$inst | sed -e 's/^.*\///'`; \ + inst=`echo $$inst | sed '$(transform)'`.$$ext; \ + echo " $(INSTALL_DATA) $$file $(DESTDIR)$(man1dir)/$$inst"; \ + $(INSTALL_DATA) $$file $(DESTDIR)$(man1dir)/$$inst; \ + done +uninstall-man1: + @$(NORMAL_UNINSTALL) + @list='$(man1_MANS) $(dist_man1_MANS) $(nodist_man1_MANS)'; \ + l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \ + for i in $$l2; do \ + case "$$i" in \ + *.1*) list="$$list $$i" ;; \ + esac; \ + done; \ + for i in $$list; do \ + ext=`echo $$i | sed -e 's/^.*\\.//'`; \ + inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \ + inst=`echo $$inst | sed -e 's/^.*\///'`; \ + inst=`echo $$inst | sed '$(transform)'`.$$ext; \ + echo " rm -f $(DESTDIR)$(man1dir)/$$inst"; \ + rm -f $(DESTDIR)$(man1dir)/$$inst; \ + done +tags: TAGS +TAGS: + +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) + +top_distdir = .. +distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) + +distdir: $(DISTFILES) + @for file in $(DISTFILES); do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + dir="/$$dir"; \ + $(mkinstalldirs) "$(distdir)$$dir"; \ + else \ + dir=''; \ + fi; \ + if test -d $$d/$$file; then \ + cp -pR $$d/$$file $(distdir)$$dir \ + || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(MANS) + +installdirs: + $(mkinstalldirs) $(DESTDIR)$(man1dir) + +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -rm -f Makefile $(CONFIG_CLEAN_FILES) stamp-h stamp-h[0-9]* + +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 "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES) +clean: clean-am + +clean-am: clean-generic mostlyclean-am + +distclean: distclean-am + +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: + +info: info-am + +info-am: + +install-data-am: install-man + +install-exec-am: + +install-info: install-info-am + +install-man: install-man1 + +installcheck-am: + +maintainer-clean: maintainer-clean-am + +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic + +uninstall-am: uninstall-info-am uninstall-man + +uninstall-man: uninstall-man1 + +.PHONY: all all-am check check-am clean clean-generic distclean \ + distclean-generic distdir dvi dvi-am info info-am install \ + install-am install-data install-data-am install-exec \ + install-exec-am install-info install-info-am install-man \ + install-man1 install-strip installcheck installcheck-am \ + installdirs maintainer-clean maintainer-clean-generic \ + mostlyclean mostlyclean-generic uninstall uninstall-am \ + uninstall-info-am uninstall-man uninstall-man1 + +cmp.1: $S/cmp.c +diff.1: $S/diff.c +diff3.1: $S/diff3.c +sdiff.1: $S/sdiff.c + +# Depend on configure.ac to get version number changes. +$(dist_man_MANS): $(top_srcdir)/configure.ac + base=`expr $@ : '\(.*\).1'` && \ + (echo '[NAME]' && sed 's@/\* *@@; s/-/\\-/; q' $S/$$base.c) | \ + $(HELP2MAN) -i - -S '$(PACKAGE) $(VERSION)' ../src/$$base | \ + sed 's/^\.B info .*/.B info diff/' >$@ +# 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/apps/bin/diffutils-2.8.1/man/cmp.1 b/src/apps/bin/diffutils-2.8.1/man/cmp.1 new file mode 100644 index 0000000000..546406f178 --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/man/cmp.1 @@ -0,0 +1,64 @@ +.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.27. +.TH CMP "1" "April 2002" "diffutils 2.8.1" "User Commands" +.SH NAME +cmp \- compare two files byte by byte +.SH SYNOPSIS +.B cmp +[\fIOPTION\fR]... \fIFILE1 \fR[\fIFILE2 \fR[\fISKIP1 \fR[\fISKIP2\fR]]] +.SH DESCRIPTION +Compare two files byte by byte. +.TP +\fB\-b\fR \fB\-\-print\-bytes\fR +Print differing bytes. +.TP +\fB\-i\fR SKIP \fB\-\-ignore\-initial\fR=\fISKIP\fR +Skip the first SKIP bytes of input. +.HP +\fB\-i\fR SKIP1:SKIP2 \fB\-\-ignore\-initial\fR=\fISKIP1\fR:SKIP2 +.IP +Skip the first SKIP1 bytes of FILE1 and the first SKIP2 bytes of FILE2. +.TP +\fB\-l\fR \fB\-\-verbose\fR +Output byte numbers and values of all differing bytes. +.TP +\fB\-n\fR LIMIT \fB\-\-bytes\fR=\fILIMIT\fR +Compare at most LIMIT bytes. +.TP +\fB\-s\fR \fB\-\-quiet\fR \fB\-\-silent\fR +Output nothing; yield exit status only. +.TP +\fB\-v\fR \fB\-\-version\fR +Output version info. +.TP +\fB\-\-help\fR +Output this help. +.PP +SKIP1 and SKIP2 are the number of bytes to skip in each file. +SKIP values may be followed by the following multiplicative suffixes: +kB 1000, K 1024, MB 1,000,000, M 1,048,576, +GB 1,000,000,000, G 1,073,741,824, and so on for T, P, E, Z, Y. +.PP +If a FILE is `-' or missing, read standard input. +.SH AUTHOR +Written by Torbjorn Granlund and David MacKenzie. +.SH "REPORTING BUGS" +Report bugs to . +.SH COPYRIGHT +Copyright \(co 2002 Free Software Foundation, Inc. +.PP +This program comes with NO WARRANTY, to the extent permitted by law. +You may redistribute copies of this program +under the terms of the GNU General Public License. +For more information about these matters, see the file named COPYING. +.SH "SEE ALSO" +The full documentation for +.B cmp +is maintained as a Texinfo manual. If the +.B info +and +.B cmp +programs are properly installed at your site, the command +.IP +.B info diff +.PP +should give you access to the complete manual. diff --git a/src/apps/bin/diffutils-2.8.1/man/diff.1 b/src/apps/bin/diffutils-2.8.1/man/diff.1 new file mode 100644 index 0000000000..5bcabc1d77 --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/man/diff.1 @@ -0,0 +1,225 @@ +.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.27. +.TH DIFF "1" "April 2002" "diffutils 2.8.1" "User Commands" +.SH NAME +diff \- compare files line by line +.SH SYNOPSIS +.B diff +[\fIOPTION\fR]... \fIFILES\fR +.SH DESCRIPTION +Compare files line by line. +.TP +\fB\-i\fR \fB\-\-ignore\-case\fR +Ignore case differences in file contents. +.TP +\fB\-\-ignore\-file\-name\-case\fR +Ignore case when comparing file names. +.TP +\fB\-\-no\-ignore\-file\-name\-case\fR +Consider case when comparing file names. +.TP +\fB\-E\fR \fB\-\-ignore\-tab\-expansion\fR +Ignore changes due to tab expansion. +.TP +\fB\-b\fR \fB\-\-ignore\-space\-change\fR +Ignore changes in the amount of white space. +.TP +\fB\-w\fR \fB\-\-ignore\-all\-space\fR +Ignore all white space. +.TP +\fB\-B\fR \fB\-\-ignore\-blank\-lines\fR +Ignore changes whose lines are all blank. +.TP +\fB\-I\fR RE \fB\-\-ignore\-matching\-lines\fR=\fIRE\fR +Ignore changes whose lines all match RE. +.TP +\fB\-\-strip\-trailing\-cr\fR +Strip trailing carriage return on input. +.TP +\fB\-a\fR \fB\-\-text\fR +Treat all files as text. +.TP +\fB\-c\fR \fB\-C\fR NUM \fB\-\-context\fR[=\fINUM\fR] +Output NUM (default 3) lines of copied context. +.TP +\fB\-u\fR \fB\-U\fR NUM \fB\-\-unified\fR[=\fINUM\fR] +Output NUM (default 3) lines of unified context. +.TP +\fB\-\-label\fR LABEL +Use LABEL instead of file name. +.TP +\fB\-p\fR \fB\-\-show\-c\-function\fR +Show which C function each change is in. +.TP +\fB\-F\fR RE \fB\-\-show\-function\-line\fR=\fIRE\fR +Show the most recent line matching RE. +.TP +\fB\-q\fR \fB\-\-brief\fR +Output only whether files differ. +.TP +\fB\-e\fR \fB\-\-ed\fR +Output an ed script. +.TP +\fB\-\-normal\fR +Output a normal diff. +.TP +\fB\-n\fR \fB\-\-rcs\fR +Output an RCS format diff. +.TP +\fB\-y\fR \fB\-\-side\-by\-side\fR +Output in two columns. +.TP +\fB\-W\fR NUM \fB\-\-width\fR=\fINUM\fR +Output at most NUM (default 130) print columns. +.TP +\fB\-\-left\-column\fR +Output only the left column of common lines. +.TP +\fB\-\-suppress\-common\-lines\fR +Do not output common lines. +.TP +\fB\-D\fR NAME \fB\-\-ifdef\fR=\fINAME\fR +Output merged file to show `#ifdef NAME' diffs. +.TP +\fB\-\-GTYPE\-group\-format\fR=\fIGFMT\fR +Similar, but format GTYPE input groups with GFMT. +.TP +\fB\-\-line\-format\fR=\fILFMT\fR +Similar, but format all input lines with LFMT. +.TP +\fB\-\-LTYPE\-line\-format\fR=\fILFMT\fR +Similar, but format LTYPE input lines with LFMT. +.TP +LTYPE is `old', `new', or `unchanged'. +GTYPE is LTYPE or `changed'. +.IP +GFMT may contain: +.TP +%< +lines from FILE1 +.TP +%> +lines from FILE2 +.TP +%= +lines common to FILE1 and FILE2 +.TP +%[-][WIDTH][.[PREC]]{doxX}LETTER +printf-style spec for LETTER +.IP +LETTERs are as follows for new group, lower case for old group: +.TP +F +first line number +.TP +L +last line number +.TP +N +number of lines = L-F+1 +.TP +E +F-1 +.TP +M +L+1 +.IP +LFMT may contain: +.TP +%L +contents of line +.TP +%l +contents of line, excluding any trailing newline +.TP +%[-][WIDTH][.[PREC]]{doxX}n +printf-style spec for input line number +.IP +Either GFMT or LFMT may contain: +.TP +%% +% +.TP +%c'C' +the single character C +.TP +%c'\eOOO' +the character with octal code OOO +.TP +\fB\-l\fR \fB\-\-paginate\fR +Pass the output through `pr' to paginate it. +.TP +\fB\-t\fR \fB\-\-expand\-tabs\fR +Expand tabs to spaces in output. +.TP +\fB\-T\fR \fB\-\-initial\-tab\fR +Make tabs line up by prepending a tab. +.TP +\fB\-r\fR \fB\-\-recursive\fR +Recursively compare any subdirectories found. +.TP +\fB\-N\fR \fB\-\-new\-file\fR +Treat absent files as empty. +.TP +\fB\-\-unidirectional\-new\-file\fR +Treat absent first files as empty. +.TP +\fB\-s\fR \fB\-\-report\-identical\-files\fR +Report when two files are the same. +.TP +\fB\-x\fR PAT \fB\-\-exclude\fR=\fIPAT\fR +Exclude files that match PAT. +.TP +\fB\-X\fR FILE \fB\-\-exclude\-from\fR=\fIFILE\fR +Exclude files that match any pattern in FILE. +.TP +\fB\-S\fR FILE \fB\-\-starting\-file\fR=\fIFILE\fR +Start with FILE when comparing directories. +.TP +\fB\-\-from\-file\fR=\fIFILE1\fR +Compare FILE1 to all operands. FILE1 can be a directory. +.TP +\fB\-\-to\-file\fR=\fIFILE2\fR +Compare all operands to FILE2. FILE2 can be a directory. +.TP +\fB\-\-horizon\-lines\fR=\fINUM\fR +Keep NUM lines of the common prefix and suffix. +.TP +\fB\-d\fR \fB\-\-minimal\fR +Try hard to find a smaller set of changes. +.TP +\fB\-\-speed\-large\-files\fR +Assume large files and many scattered small changes. +.TP +\fB\-v\fR \fB\-\-version\fR +Output version info. +.TP +\fB\-\-help\fR +Output this help. +.PP +FILES are `FILE1 FILE2' or `DIR1 DIR2' or `DIR FILE...' or `FILE... DIR'. +If \fB\-\-from\-file\fR or \fB\-\-to\-file\fR is given, there are no restrictions on FILES. +If a FILE is `-', read standard input. +.SH AUTHOR +Written by Paul Eggert, Mike Haertel, David Hayes, +Richard Stallman, and Len Tower. +.SH "REPORTING BUGS" +Report bugs to . +.SH COPYRIGHT +Copyright \(co 2002 Free Software Foundation, Inc. +.PP +This program comes with NO WARRANTY, to the extent permitted by law. +You may redistribute copies of this program +under the terms of the GNU General Public License. +For more information about these matters, see the file named COPYING. +.SH "SEE ALSO" +The full documentation for +.B diff +is maintained as a Texinfo manual. If the +.B info +and +.B diff +programs are properly installed at your site, the command +.IP +.B info diff +.PP +should give you access to the complete manual. diff --git a/src/apps/bin/diffutils-2.8.1/man/diff3.1 b/src/apps/bin/diffutils-2.8.1/man/diff3.1 new file mode 100644 index 0000000000..9696911591 --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/man/diff3.1 @@ -0,0 +1,76 @@ +.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.27. +.TH DIFF3 "1" "April 2002" "diffutils 2.8.1" "User Commands" +.SH NAME +diff3 \- compare three files line by line +.SH SYNOPSIS +.B diff3 +[\fIOPTION\fR]... \fIMYFILE OLDFILE YOURFILE\fR +.SH DESCRIPTION +Compare three files line by line. +.TP +\fB\-e\fR \fB\-\-ed\fR +Output unmerged changes from OLDFILE to YOURFILE into MYFILE. +.TP +\fB\-E\fR \fB\-\-show\-overlap\fR +Output unmerged changes, bracketing conflicts. +.TP +\fB\-A\fR \fB\-\-show\-all\fR +Output all changes, bracketing conflicts. +.TP +\fB\-x\fR \fB\-\-overlap\-only\fR +Output overlapping changes. +.TP +\fB\-X\fR +Output overlapping changes, bracketing them. +.TP +\fB\-3\fR \fB\-\-easy\-only\fR +Output unmerged nonoverlapping changes. +.TP +\fB\-m\fR \fB\-\-merge\fR +Output merged file instead of ed script (default \fB\-A\fR). +.TP +\fB\-L\fR LABEL \fB\-\-label\fR=\fILABEL\fR +Use LABEL instead of file name. +.TP +\fB\-i\fR +Append `w' and `q' commands to ed scripts. +.TP +\fB\-a\fR \fB\-\-text\fR +Treat all files as text. +.TP +\fB\-T\fR \fB\-\-initial\-tab\fR +Make tabs line up by prepending a tab. +.TP +\fB\-\-diff\-program\fR=\fIPROGRAM\fR +Use PROGRAM to compare files. +.TP +\fB\-v\fR \fB\-\-version\fR +Output version info. +.TP +\fB\-\-help\fR +Output this help. +.PP +If a FILE is `-', read standard input. +.SH AUTHOR +Written by Randy Smith. +.SH "REPORTING BUGS" +Report bugs to . +.SH COPYRIGHT +Copyright \(co 2002 Free Software Foundation, Inc. +.PP +This program comes with NO WARRANTY, to the extent permitted by law. +You may redistribute copies of this program +under the terms of the GNU General Public License. +For more information about these matters, see the file named COPYING. +.SH "SEE ALSO" +The full documentation for +.B diff3 +is maintained as a Texinfo manual. If the +.B info +and +.B diff3 +programs are properly installed at your site, the command +.IP +.B info diff +.PP +should give you access to the complete manual. diff --git a/src/apps/bin/diffutils-2.8.1/man/sdiff.1 b/src/apps/bin/diffutils-2.8.1/man/sdiff.1 new file mode 100644 index 0000000000..e1f6beb67b --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/man/sdiff.1 @@ -0,0 +1,88 @@ +.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.27. +.TH SDIFF "1" "April 2002" "diffutils 2.8.1" "User Commands" +.SH NAME +sdiff \- side-by-side merge of file differences +.SH SYNOPSIS +.B sdiff +[\fIOPTION\fR]... \fIFILE1 FILE2\fR +.SH DESCRIPTION +Side-by-side merge of file differences. +.TP +\fB\-o\fR FILE \fB\-\-output\fR=\fIFILE\fR +Operate interactively, sending output to FILE. +.TP +\fB\-i\fR \fB\-\-ignore\-case\fR +Consider upper- and lower-case to be the same. +.TP +\fB\-E\fR \fB\-\-ignore\-tab\-expansion\fR +Ignore changes due to tab expansion. +.TP +\fB\-b\fR \fB\-\-ignore\-space\-change\fR +Ignore changes in the amount of white space. +.TP +\fB\-W\fR \fB\-\-ignore\-all\-space\fR +Ignore all white space. +.TP +\fB\-B\fR \fB\-\-ignore\-blank\-lines\fR +Ignore changes whose lines are all blank. +.TP +\fB\-I\fR RE \fB\-\-ignore\-matching\-lines\fR=\fIRE\fR +Ignore changes whose lines all match RE. +.TP +\fB\-\-strip\-trailing\-cr\fR +Strip trailing carriage return on input. +.TP +\fB\-a\fR \fB\-\-text\fR +Treat all files as text. +.TP +\fB\-w\fR NUM \fB\-\-width\fR=\fINUM\fR +Output at most NUM (default 130) columns per line. +.TP +\fB\-l\fR \fB\-\-left\-column\fR +Output only the left column of common lines. +.TP +\fB\-s\fR \fB\-\-suppress\-common\-lines\fR +Do not output common lines. +.TP +\fB\-t\fR \fB\-\-expand\-tabs\fR +Expand tabs to spaces in output. +.TP +\fB\-d\fR \fB\-\-minimal\fR +Try hard to find a smaller set of changes. +.TP +\fB\-H\fR \fB\-\-speed\-large\-files\fR +Assume large files and many scattered small changes. +.TP +\fB\-\-diff\-program\fR=\fIPROGRAM\fR +Use PROGRAM to compare files. +.TP +\fB\-v\fR \fB\-\-version\fR +Output version info. +.TP +\fB\-\-help\fR +Output this help. +.PP +If a FILE is `-', read standard input. +.SH AUTHOR +Written by Thomas Lord. +.SH "REPORTING BUGS" +Report bugs to . +.SH COPYRIGHT +Copyright \(co 2002 Free Software Foundation, Inc. +.PP +This program comes with NO WARRANTY, to the extent permitted by law. +You may redistribute copies of this program +under the terms of the GNU General Public License. +For more information about these matters, see the file named COPYING. +.SH "SEE ALSO" +The full documentation for +.B sdiff +is maintained as a Texinfo manual. If the +.B info +and +.B sdiff +programs are properly installed at your site, the command +.IP +.B info diff +.PP +should give you access to the complete manual. diff --git a/src/apps/bin/diffutils-2.8.1/ms/Makefile b/src/apps/bin/diffutils-2.8.1/ms/Makefile new file mode 100644 index 0000000000..ca28859068 --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/ms/Makefile @@ -0,0 +1,230 @@ +# Makefile.in generated by automake 1.6 from Makefile.am. +# ms/Makefile. Generated from Makefile.in by configure. + +# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002 +# Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + + + +# Makefile for GNU diffutils sources used on Microsoft operating systems. + +# Copyright (C) 2001, 2002 Free Software Foundation, Inc. +SHELL = /bin/sh + +srcdir = . +top_srcdir = .. + +prefix = /usr/local +exec_prefix = ${prefix} + +bindir = ${exec_prefix}/bin +sbindir = ${exec_prefix}/sbin +libexecdir = ${exec_prefix}/libexec +datadir = ${prefix}/share +sysconfdir = ${prefix}/etc +sharedstatedir = ${prefix}/com +localstatedir = ${prefix}/var +libdir = ${exec_prefix}/lib +infodir = ${prefix}/info +mandir = ${prefix}/man +includedir = ${prefix}/include +oldincludedir = /usr/include +pkgdatadir = $(datadir)/diffutils +pkglibdir = $(libdir)/diffutils +pkgincludedir = $(includedir)/diffutils +top_builddir = .. + +ACLOCAL = ${SHELL} /boot/home/Development/current/src/apps/bin/diffutils-2.8.1/config/missing --run aclocal-1.6 +AUTOCONF = ${SHELL} /boot/home/Development/current/src/apps/bin/diffutils-2.8.1/config/missing --run autoconf +AUTOMAKE = ${SHELL} /boot/home/Development/current/src/apps/bin/diffutils-2.8.1/config/missing --run automake-1.6 +AUTOHEADER = ${SHELL} /boot/home/Development/current/src/apps/bin/diffutils-2.8.1/config/missing --run autoheader + +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = /bin/install -c +INSTALL_PROGRAM = ${INSTALL} +INSTALL_DATA = ${INSTALL} -m 644 +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +INSTALL_SCRIPT = ${INSTALL} +INSTALL_HEADER = $(INSTALL_DATA) +transform = s,x,x, +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +host_alias = +host_triplet = i586-pc-beos + +EXEEXT = +OBJEXT = o +PATH_SEPARATOR = : +AMTAR = ${SHELL} /boot/home/Development/current/src/apps/bin/diffutils-2.8.1/config/missing --run tar +AWK = gawk +BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@ +CATOBJEXT = @CATOBJEXT@ +CC = gcc +CPP = gcc -E +DATADIRNAME = @DATADIRNAME@ +DEPDIR = .deps +GENCAT = @GENCAT@ +GLIBC21 = @GLIBC21@ +GMSGFMT = : +HAVE_LIB = @HAVE_LIB@ +HELP2MAN = ${SHELL} /boot/home/Development/current/src/apps/bin/diffutils-2.8.1/config/missing --run help2man +INSTALL_STRIP_PROGRAM = ${SHELL} $(install_sh) -c -s +INSTOBJEXT = @INSTOBJEXT@ +INTLBISON = @INTLBISON@ +INTLLIBS = +INTLOBJS = @INTLOBJS@ +INTL_LIBTOOL_SUFFIX_PREFIX = @INTL_LIBTOOL_SUFFIX_PREFIX@ +LIB = @LIB@ +LIBICONV = +LIBINTL = +LIB_CLOCK_GETTIME = +LTLIB = @LTLIB@ +LTLIBICONV = +LTLIBINTL = +MKINSTALLDIRS = config/mkinstalldirs +PACKAGE = diffutils +POSUB = +PR_PROGRAM = /bin/pr +RANLIB = ranlib +STRIP = +U = +USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@ +USE_NLS = no +VERSION = 2.8.1 +am__include = include +am__quote = +install_sh = /boot/home/Development/current/src/apps/bin/diffutils-2.8.1/config/install-sh + +EXTRA_DIST = config.bat config.sed config.site +subdir = ms +mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +DIST_SOURCES = +DIST_COMMON = README Makefile.am Makefile.in +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.ac $(ACLOCAL_M4) + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnits ms/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) +uninstall-info-am: +tags: TAGS +TAGS: + +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) + +top_distdir = .. +distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) + +distdir: $(DISTFILES) + @for file in $(DISTFILES); do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + dir="/$$dir"; \ + $(mkinstalldirs) "$(distdir)$$dir"; \ + else \ + dir=''; \ + fi; \ + if test -d $$d/$$file; then \ + cp -pR $$d/$$file $(distdir)$$dir \ + || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile + +installdirs: + +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -rm -f Makefile $(CONFIG_CLEAN_FILES) stamp-h stamp-h[0-9]* + +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 + +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: + +info: info-am + +info-am: + +install-data-am: + +install-exec-am: + +install-info: install-info-am + +install-man: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic + +uninstall-am: uninstall-info-am + +.PHONY: all all-am check check-am clean clean-generic distclean \ + distclean-generic distdir dvi dvi-am info info-am install \ + install-am install-data install-data-am install-exec \ + install-exec-am install-info install-info-am install-man \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-generic uninstall uninstall-am uninstall-info-am + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/src/apps/bin/diffutils-2.8.1/ms/Makefile.am b/src/apps/bin/diffutils-2.8.1/ms/Makefile.am new file mode 100644 index 0000000000..5c2e0fdf1d --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/ms/Makefile.am @@ -0,0 +1,19 @@ +# Makefile for GNU diffutils sources used on Microsoft operating systems. + +# Copyright (C) 2001, 2002 Free Software Foundation, Inc. + +## This program is free software; you can redistribute it and/or modify +## it under the terms of the GNU General Public License as published by +## the Free Software Foundation; either version 2, or (at your option) +## any later version. + +## This program is distributed in the hope that it will be useful, +## but WITHOUT ANY WARRANTY; without even the implied warranty of +## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +## GNU General Public License for more details. + +## You should have received a copy of the GNU General Public License +## along with this program; if not, write to the Free Software Foundation, +## Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +EXTRA_DIST = config.bat config.sed config.site diff --git a/src/apps/bin/diffutils-2.8.1/ms/Makefile.in b/src/apps/bin/diffutils-2.8.1/ms/Makefile.in new file mode 100644 index 0000000000..cda3f640be --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/ms/Makefile.in @@ -0,0 +1,230 @@ +# Makefile.in generated by automake 1.6 from Makefile.am. +# @configure_input@ + +# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002 +# Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# Makefile for GNU diffutils sources used on Microsoft operating systems. + +# Copyright (C) 2001, 2002 Free Software Foundation, Inc. +SHELL = @SHELL@ + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +prefix = @prefix@ +exec_prefix = @exec_prefix@ + +bindir = @bindir@ +sbindir = @sbindir@ +libexecdir = @libexecdir@ +datadir = @datadir@ +sysconfdir = @sysconfdir@ +sharedstatedir = @sharedstatedir@ +localstatedir = @localstatedir@ +libdir = @libdir@ +infodir = @infodir@ +mandir = @mandir@ +includedir = @includedir@ +oldincludedir = /usr/include +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +top_builddir = .. + +ACLOCAL = @ACLOCAL@ +AUTOCONF = @AUTOCONF@ +AUTOMAKE = @AUTOMAKE@ +AUTOHEADER = @AUTOHEADER@ + +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = @INSTALL@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_DATA = @INSTALL_DATA@ +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_HEADER = $(INSTALL_DATA) +transform = @program_transform_name@ +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +host_alias = @host_alias@ +host_triplet = @host@ + +EXEEXT = @EXEEXT@ +OBJEXT = @OBJEXT@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +AMTAR = @AMTAR@ +AWK = @AWK@ +BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@ +CATOBJEXT = @CATOBJEXT@ +CC = @CC@ +CPP = @CPP@ +DATADIRNAME = @DATADIRNAME@ +DEPDIR = @DEPDIR@ +GENCAT = @GENCAT@ +GLIBC21 = @GLIBC21@ +GMSGFMT = @GMSGFMT@ +HAVE_LIB = @HAVE_LIB@ +HELP2MAN = @HELP2MAN@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INSTOBJEXT = @INSTOBJEXT@ +INTLBISON = @INTLBISON@ +INTLLIBS = @INTLLIBS@ +INTLOBJS = @INTLOBJS@ +INTL_LIBTOOL_SUFFIX_PREFIX = @INTL_LIBTOOL_SUFFIX_PREFIX@ +LIB = @LIB@ +LIBICONV = @LIBICONV@ +LIBINTL = @LIBINTL@ +LIB_CLOCK_GETTIME = @LIB_CLOCK_GETTIME@ +LTLIB = @LTLIB@ +LTLIBICONV = @LTLIBICONV@ +LTLIBINTL = @LTLIBINTL@ +MKINSTALLDIRS = @MKINSTALLDIRS@ +PACKAGE = @PACKAGE@ +POSUB = @POSUB@ +PR_PROGRAM = @PR_PROGRAM@ +RANLIB = @RANLIB@ +STRIP = @STRIP@ +U = @U@ +USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@ +USE_NLS = @USE_NLS@ +VERSION = @VERSION@ +am__include = @am__include@ +am__quote = @am__quote@ +install_sh = @install_sh@ + +EXTRA_DIST = config.bat config.sed config.site +subdir = ms +mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +DIST_SOURCES = +DIST_COMMON = README Makefile.am Makefile.in +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.ac $(ACLOCAL_M4) + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnits ms/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) +uninstall-info-am: +tags: TAGS +TAGS: + +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) + +top_distdir = .. +distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) + +distdir: $(DISTFILES) + @for file in $(DISTFILES); do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + dir="/$$dir"; \ + $(mkinstalldirs) "$(distdir)$$dir"; \ + else \ + dir=''; \ + fi; \ + if test -d $$d/$$file; then \ + cp -pR $$d/$$file $(distdir)$$dir \ + || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile + +installdirs: + +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -rm -f Makefile $(CONFIG_CLEAN_FILES) stamp-h stamp-h[0-9]* + +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 + +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: + +info: info-am + +info-am: + +install-data-am: + +install-exec-am: + +install-info: install-info-am + +install-man: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic + +uninstall-am: uninstall-info-am + +.PHONY: all all-am check check-am clean clean-generic distclean \ + distclean-generic distdir dvi dvi-am info info-am install \ + install-am install-data install-data-am install-exec \ + install-exec-am install-info install-info-am install-man \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-generic uninstall uninstall-am uninstall-info-am + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/src/apps/bin/diffutils-2.8.1/ms/README b/src/apps/bin/diffutils-2.8.1/ms/README new file mode 100644 index 0000000000..24b8082aa9 --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/ms/README @@ -0,0 +1,66 @@ +This directory contains files required to build GNU Diffutils on +MS_DOS and MS-Windows using the DJGPP tools. + +To build Diffutils, you will need the following packages: + + . the basic DJGPP development kit: GCC, Binutils, and djdevNNN.zip + . a DJGPP port of Bash (bsh204b.zip) + . GNU Fileutils (fil40b.zip) + . GNU Textutils (txt20b.zip) + . GNU Sh-utils (shl112b.zip) + . GNU Grep (grep24b.zip) + . GNU Awk (gwk306b.zip) + . GNU Sed (sed302b.zip) + . GNU Make (mak3791b.zip) + +The package names in parentheses indicate the oldest version which +should work; newer versions are okay. All those packages can be found +on the usual DJGPP sites, in the v2gnu directory. Please see + for a list of DJGPP sites. + +The source distribution of Diffutils you find on DJGPP sites comes +preconfigured for the latest officially released version of the DJGPP +library, and without NLS support. If that is what you have installed, +and if you don't need NLS support in Diffutils, you don't need to run +the configure script; proceed directly to the "make" step below. + +If you are building the official GNU distribution, or your library is +not the latest official release, or if you modified your headers or +installed optional libraries, or if you want to have NLS support in +Diffutils, you will have to reconfigure the package. To this end, +after unpacking the sources, chdir to the top-level directory created +by unpacking, and type this command: + + ms\config [nls] + +The "nls" option, if given, will configure the package for NLS +support. + +This will run for a while and create the Makefile's and the config.h +header file. + +Next type "make"; this will build the programs. + +To install the package, type "make install". + +That's it! + +----- +Copyright (C) 2001 Free Software Foundation, Inc. + +This file is part of GNU DIFF. + +GNU DIFF 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. + +GNU DIFF is distributed in the hope that 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 tar; see the file COPYING. If not, write to +the Free Software Foundation, Inc., 59 Temple Place - Suite 330, +Boston, MA 02111-1307, USA. diff --git a/src/apps/bin/diffutils-2.8.1/ms/config.bat b/src/apps/bin/diffutils-2.8.1/ms/config.bat new file mode 100644 index 0000000000..4c9ba4bc93 --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/ms/config.bat @@ -0,0 +1,261 @@ +@echo off + +echo Configuring GNU Diffutils for DJGPP v2.x... + +Rem Copyright (C) 2001 Free Software Foundation, Inc. + +Rem This program is free software; you can redistribute it and/or modify +Rem it under the terms of the GNU General Public License as published by +Rem the Free Software Foundation; either version 2, or (at your option) +Rem any later version. + +Rem This program is distributed in the hope that it will be useful, +Rem but WITHOUT ANY WARRANTY; without even the implied warranty of +Rem MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +Rem GNU General Public License for more details. + +Rem You should have received a copy of the GNU General Public License +Rem along with this program; if not, write to the Free Software +Rem Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +Rem 02111-1307, USA. + +Rem Written by Eli Zaretskii. + + +Rem The small_env tests protect against fixed and too small size +Rem of the environment in stock DOS shell. + +Rem Find out if NLS is wanted or not, +Rem if dependency-tracking is wanted or not, +Rem if cache is wanted or not +Rem and where the sources are. +set ARGS= +set NLS=disabled +if not "%NLS%" == "disabled" goto small_env +set CACHE=enabled +if not "%CACHE%" == "enabled" goto small_env +set DEPENDENCY_TRACKING=disabled +if not "%DEPENDENCY_TRACKING%" == "disabled" goto small_env +set XSRC=. +if not "%XSRC%" == "." goto small_env + +Rem Loop over all arguments. +Rem Special arguments are: NLS, XSRC CACHE and DEPS. +Rem All other arguments are stored into ARGS. +:arg_loop +set SPECIAL_ARG_SEEN=0 +if not "%SPECIAL_ARG_SEEN%" == "0" goto small_env +if "%1" == "NLS" goto nls_on +if not "%1" == "nls" goto CacheOpt +:nls_on +if "%1" == "nls" set NLS=enabled +if "%1" == "NLS" set NLS=enabled +if not "%NLS%" == "enabled" goto small_env +set SPECIAL_ARG_SEEN=1 +if not "%SPECIAL_ARG_SEEN%" == "1" goto small_env +shift +:CacheOpt +set SPECIAL_ARG_SEEN=0 +if not "%SPECIAL_ARG_SEEN%" == "0" goto small_env +if "%1" == "no-cache" goto cache_off +if "%1" == "no-CACHE" goto cache_off +if not "%1" == "NO-CACHE" goto dependency_opt +:cache_off +if "%1" == "no-cache" set CACHE=disabled +if "%1" == "no-CACHE" set CACHE=disabled +if "%1" == "NO-CACHE" set CACHE=disabled +if not "%CACHE%" == "disabled" goto small_env +set SPECIAL_ARG_SEEN=1 +if not "%SPECIAL_ARG_SEEN%" == "1" goto small_env +shift +:dependency_opt +set SPECIAL_ARG_SEEN=0 +if not "%SPECIAL_ARG_SEEN%" == "0" goto small_env +if "%1" == "dep" goto dep_off +if not "%1" == "DEP" goto src_dir_opt +:dep_off +if "%1" == "dep" set DEPENDENCY_TRACKING=enabled +if "%1" == "DEP" set DEPENDENCY_TRACKING=enabled +if not "%DEPENDENCY_TRACKING%" == "enabled" goto small_env +set SPECIAL_ARG_SEEN=1 +if not "%SPECIAL_ARG_SEEN%" == "1" goto small_env +shift +:src_dir_opt +set SPECIAL_ARG_SEEN=0 +if not "%SPECIAL_ARG_SEEN%" == "0" goto small_env +echo %1 | grep -q "/" +if errorlevel 1 goto collect_arg +set XSRC=%1 +if not "%XSRC%" == "%1" goto small_env +set SPECIAL_ARG_SEEN=1 +if not "%SPECIAL_ARG_SEEN%" == "1" goto small_env +:collect_arg +if "%SPECIAL_ARG_SEEN%" == "0" set _ARGS=%ARGS% %1 +if "%SPECIAL_ARG_SEEN%" == "0" if not "%_ARGS%" == "%ARGS% %1" goto small_env +echo %_ARGS% | grep -q "[^ ]" +if not errorlevel 0 set ARGS=%_ARGS% +set _ARGS= +shift +if not "%1" == "" goto arg_loop +set SPECIAL_ARG_SEEN= + +Rem Create a response file for the configure script. +echo --srcdir=%XSRC% > arguments +if "%CACHE%" == "enabled" echo --config-cache >> arguments +if "%DEPENDENCY_TRACKING%" == "enabled" echo --enable-dependency-tracking >> arguments +if "%DEPENDENCY_TRACKING%" == "disabled" echo --disable-dependency-tracking >> arguments +if not "%ARGS%" == "" echo %ARGS% >> arguments +set ARGS= +set CACHE= +set DEPENDENCY_TRACKING= + +if "%XSRC%" == "." goto in_place + +:not_in_place +redir -e /dev/null update %XSRC%/configure.orig ./configure +test -f ./configure +if errorlevel 1 update %XSRC%/configure ./configure + +:in_place +Rem Update configuration files +echo Updating configuration scripts... +test -f ./configure.orig +if errorlevel 1 update configure configure.orig +sed -f %XSRC%/ms/config.sed configure.orig > configure +if errorlevel 1 goto sed_error + +Rem Make sure they have a config.site file +set CONFIG_SITE=%XSRC%/ms/config.site +if not "%CONFIG_SITE%" == "%XSRC%/ms/config.site" goto small_env + +Rem Make sure crucial file names are not munged by unpacking +test -f %XSRC%/po/Makefile.in.in +if not errorlevel 1 mv -f %XSRC%/po/Makefile.in.in %XSRC%/po/Makefile.in-in +test -f %XSRC%/m4/Makefile.am.in +if not errorlevel 1 mv -f %XSRC%/m4/Makefile.am.in %XSRC%/m4/Makefile.am-in + +Rem This is required because DOS/Windows are case-insensitive +Rem to file names, and "make install" will do nothing if Make +Rem finds a file called `install'. +if exist INSTALL ren INSTALL INSTALL.txt + +Rem Set HOME to a sane default so configure stops complaining. +if not "%HOME%" == "" goto HostName +set HOME=%XSRC%/ms +if not "%HOME%" == "%XSRC%/ms" goto small_env +echo No HOME found in the environment, using default value + +:HostName +Rem Set HOSTNAME so it shows in config.status +if not "%HOSTNAME%" == "" goto hostdone +if "%windir%" == "" goto msdos +set OS=MS-Windows +if not "%OS%" == "MS-Windows" goto small_env +goto haveos +:msdos +set OS=MS-DOS +if not "%OS%" == "MS-DOS" goto small_env +:haveos +if not "%USERNAME%" == "" goto haveuname +if not "%USER%" == "" goto haveuser +echo No USERNAME and no USER found in the environment, using default values +set HOSTNAME=Unknown PC +if not "%HOSTNAME%" == "Unknown PC" goto small_env +goto userdone +:haveuser +set HOSTNAME=%USER%'s PC +if not "%HOSTNAME%" == "%USER%'s PC" goto small_env +goto userdone +:haveuname +set HOSTNAME=%USERNAME%'s PC +if not "%HOSTNAME%" == "%USERNAME%'s PC" goto small_env +:userdone +set _HOSTNAME=%HOSTNAME%, %OS% +if not "%_HOSTNAME%" == "%HOSTNAME%, %OS%" goto small_env +set HOSTNAME=%_HOSTNAME% +:hostdone +set _HOSTNAME= +set OS= + +Rem install-sh is required by the configure script but clashes with the +Rem various Makefile install-foo targets, so we MUST have it before the +Rem script runs and rename it afterwards +test -f %XSRC%/install-sh +if not errorlevel 1 goto no_ren0 +test -f %XSRC%/install-sh.sh +if not errorlevel 1 mv -f %XSRC%/install-sh.sh %XSRC%/install-sh +:no_ren0 + +if "%NLS%" == "disabled" goto without_NLS + +:with_NLS +Rem Check for the needed libraries and binaries. +test -x /dev/env/DJDIR/bin/msgfmt.exe +if not errorlevel 0 goto missing_NLS_tools +test -x /dev/env/DJDIR/bin/xgettext.exe +if not errorlevel 0 goto missing_NLS_tools +test -f /dev/env/DJDIR/include/libcharset.h +if not errorlevel 0 goto missing_NLS_tools +test -f /dev/env/DJDIR/lib/libcharset.a +if not errorlevel 0 goto missing_NLS_tools +test -f /dev/env/DJDIR/include/iconv.h +if not errorlevel 0 goto missing_NLS_tools +test -f /dev/env/DJDIR/lib/libiconv.a +if not errorlevel 0 goto missing_NLS_tools +test -f /dev/env/DJDIR/include/libintl.h +if not errorlevel 0 goto missing_NLS_tools +test -f /dev/env/DJDIR/lib/libintl.a +if not errorlevel 0 goto missing_NLS_tools + +Rem Recreate the files in the %XSRC%/po subdir with our ported tools. +redir -e /dev/null rm %XSRC%/po/*.gmo +redir -e /dev/null rm %XSRC%/po/diffutil*.pot +redir -e /dev/null rm %XSRC%/po/cat-id-tbl.c +redir -e /dev/null rm %XSRC%/po/stamp-cat-id + +Rem Update the arguments file for the configure script. +Rem We prefer without-included-gettext because libintl.a from gettext package +Rem is the only one that is guaranteed to have been ported to DJGPP. +echo --enable-nls --without-included-gettext >> arguments +goto configure_package + +:missing_NLS_tools +echo Needed libs/tools for NLS not found. Configuring without NLS. +:without_NLS +Rem Update the arguments file for the configure script. +echo --disable-nls >> arguments + +:configure_package +echo Running the ./configure script... +sh ./configure @arguments +if errorlevel 1 goto cfg_error +rm arguments +echo Done. +goto End + +:sed_error +echo ./configure script editing failed! +goto End + +:cfg_error +echo ./configure script exited abnormally! +goto End + +:small_env +echo Your environment size is too small. Enlarge it and run me again. +echo Configuration NOT done! + +:End +test -f %XSRC%/install-sh.sh +if not errorlevel 1 goto no_ren1 +test -f %XSRC%/install-sh +if not errorlevel 1 mv -f %XSRC%/install-sh %XSRC%/install-sh.sh +:no_ren1 +if "%HOME%" == "%XSRC%/ms" set HOME= +set ARGS= +set CONFIG_SITE= +set HOSTNAME= +set NLS= +set CACHE= +set DEPENDENCY_TRACKING= +set XSRC= diff --git a/src/apps/bin/diffutils-2.8.1/ms/config.sed b/src/apps/bin/diffutils-2.8.1/ms/config.sed new file mode 100644 index 0000000000..332eb5c1f7 --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/ms/config.sed @@ -0,0 +1,87 @@ +# Additional editing of Makefiles and of config.status + +# Copyright (C) 2001, 2002 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + +# Written by Eli Zaretskii. + + +/(echo[ ]*':t/ a\ +# DJGPP specific Makefile changes.\ + /^aliaspath * *=/s,:,";",g;t t\ + /TEXINPUTS=/s,:,";",g;t t\ + /PATH=/s,:,";",g;t t\ + s,\\.deps,_deps,g;t t\ + s,\\.new\\.,_new.,g;t t\ + s,\\.old\\.,_old.,g;t t\ + s,\\.tab\\.,_tab.,g;t t\ + s,Makefile\\.in\\.in,Makefile.in-in,g;t t\ + s,Makefile\\.am\\.in,Makefile.am-in,g;t t\ + /^install-info-am:/,/^$/ {\ + /@list=.\\\$(INFO_DEPS)\[^ \]/s,DEPS),& diff.i,\ + s,\\(\\\$\\\$d/\\\$\\\$file-\\[0-9\\]\\[0-9\\]\\)\\(\[^ \]\\),\\1 \\$\\$d/\\$\\$file[0-9] \\$\\$d/\\$\\$file[0-9][0-9]\\2,\ + s,\\( \\\$\\\$file-\\[0-9\\]\\[0-9\\]\\)\\(\[^ \]\\),\\1 \\$\\$file[0-9] \\$\\$file[0-9][0-9]\\2,\ + }\ + /^uninstall-info-am:/,/^$/ {\ + /@list=.\\\$(INFO_DEPS)\[^ \]/s,DEPS),& diff.i,\ + s,\\(file-\\[0-9\\]\\[0-9\\]\\)\\(\[^ \]\\),\\1 \\$\\$file[0-9] \\$\\$file[0-9][0-9]\\2,\ + } + +# Makefile.in.in is renamed to Makefile.in-in. +/^ac_config_files=/,/_ACEOF/ { + s|po/Makefile\.in|&:po/Makefile.in-in| +} +/CONFIG_FILES=/ s|po/Makefile\.in|&:po/Makefile.in-in|2 + +# We always use _deps instead of .deps, because the latter is an +# invalid name on 8+3 MS-DOS filesystem. This makes the generated +# Makefiles good for every DJGPP installation, not only the one +# where the package was configured (which could happen to be a +# Windows box, where leading dots in file names are allowed). +s,\.deps,_deps,g + +# The following two items are changes needed for configuring +# and compiling across partitions. +# The given srcdir value is always translated from the +# "x:" syntax into "/dev/x" syntax while we run configure. +/^[ ]*-srcdir=\*.*$/ a\ + ac_optarg=`echo "$ac_optarg" | sed "s,^\\([A-Za-z]\\):,/dev/\\1,"` +/set X `ls -Lt \$srcdir/ i\ + if `echo $srcdir | grep "^/dev/" - > /dev/null`; then\ + srcdir=`echo "$srcdir" | sed -e "s%^/dev/%%" -e "s%/%:/%"`\ + fi + +# Autoconf 2.52e generated configure scripts write absolute paths into +# Makefiles, making them useless for DJGPP installations other than the +# one for which the package has been configured. +/MISSING=/,/^$/ { + /^fi$/ a\ +am_missing_run=`echo "$am_missing_run" | sed 's%/dev.*/diffutil.*[-.]2.*[7-9].*[0-9]%${top_srcdir}%'` +} +/^install_sh=/a\ +install_sh=`echo "$install_sh" | sed 's%/dev.*/diffutil.*[-.]2.*[7-9].*[0-9]%${top_srcdir}%'` + + +# The following makes sure we are not going to remove a directory +# which is the cwd on its drive (DOS doesn't allow to remove such +# a directory). The trick is to chdir to the root directory on +# temp directory's drive. +/^ *trap 'exit_status=\$\?; rm -rf/s%rm -rf%cd $tmp; cd /; &% + +# AC_CONFIG_LINKS fails if the source and destination are on +# different file systems and symlinks don't work. +/^ ln \$srcdir/s%||%|| cp -pf $srcdir/$ac_source $ac_dest ||% diff --git a/src/apps/bin/diffutils-2.8.1/ms/config.site b/src/apps/bin/diffutils-2.8.1/ms/config.site new file mode 100644 index 0000000000..e8c4b9f31a --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/ms/config.site @@ -0,0 +1,81 @@ +#! /bin/sh +# Site defaults for the DJGPP configuration + +# Copyright (C) 2001 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + +# Written by Eli Zaretskii. + + +# These two variables are required, otherwise looking for +# programs along the PATH will not work. +PATH_SEPARATOR=: +PATH_EXPAND=y + +# This is required in for "test -f foo" to find foo.exe. +export TEST_FINDS_EXE=y + +# The root of the DJGPP tree serves as the default prefix +# for all paths that are hardcoded in the binaries. +# When installing the installation prefix must be supplied. +test "x$prefix" = xNONE && prefix='/dev/env/DJDIR' + +# This is required for config.status script to be run, since +# ./configure runs it by invoking ${CONFIG_SHELL-/bin/sh} +# CONFIG_SHELL=${CONFIG_SHELL='sh'} + +# These are set here so the generated Makefile's will be good +# for every DJGPP installation, not only the one where the +# package was configured. +# $INSTALL must be an absolute path name, otherwise config.status +# will try to prepend ./ and ../ to it when it goes into subdirs. +INSTALL=${INSTALL='/dev/env/DJDIR/bin/ginstall -c'} +RANLIB=${RANLIB='ranlib'} +GMSGFMT=${GMSGFMT='/dev/env/DJDIR/bin/msgfmt'} +MSGFMT=${MSGFMT='/dev/env/DJDIR/bin/msgfmt'} +XGETTEXT=${XGETTEXT='/dev/env/DJDIR/bin/xgettext'} + +# Sane defaults for standard programs compiled into the package that +# we are about to build. Use .exe extension so that library functions +# invoking these programs will provide a better diagnostics when a +# program is not found: the library won't need to call the stock DOS +# shell, which always returns a zero status, even if it doesn't find +# the program. +ac_cv_path_PR_PROGRAM=${PR_PROGRAM='/dev/env/DJDIR/bin/pr.exe'} + +# Sane defaults for standard programs used by the build process. +# We force the values of these variables so that the resultant +# Makefile's will work on any DJGPP platform, not only on the +# machine where the package was configured. +ac_cv_prog_AWK=${AWK='gawk'} +ac_cv_prog_INTLBISON=${INTLBISON='bison'} +ac_cv_prog_CC=${CC='gcc'} + +# These are set here so the generated libtool/Makefile's will +# be good for every DJGPP installation, not only the one where +# the package was configured. +NM=${NM='nm'} +LD=${LD='ld'} +MAKEINFO=${MAKEINFO='makeinfo'} + +# Force the test for 'ln -s' to report 'cp -pf'. +ac_cv_prog_LN_S='cp -pf' + +# We have `fork', but it always fails. Don't trust Autoconf to be +# smart enough to detect that... +ac_cv_func_fork=no +ac_cv_func_vfork=no diff --git a/src/apps/bin/diffutils-2.8.1/po/LINGUAS b/src/apps/bin/diffutils-2.8.1/po/LINGUAS new file mode 100644 index 0000000000..603a5833a4 --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/po/LINGUAS @@ -0,0 +1 @@ +cs da de en_GB eo es fr gl he id ja pl ru sv tr zh_TW diff --git a/src/apps/bin/diffutils-2.8.1/po/Makefile b/src/apps/bin/diffutils-2.8.1/po/Makefile new file mode 100644 index 0000000000..f7bf9e9921 --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/po/Makefile @@ -0,0 +1,397 @@ +# Makefile for PO directory in any package using GNU gettext. +# Copyright (C) 1995-1997, 2000-2002 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. + +PACKAGE = diffutils +VERSION = 2.8.1 + +SHELL = /bin/sh + + +srcdir = . +top_srcdir = .. + + +prefix = /usr/local +exec_prefix = ${prefix} +datadir = ${prefix}/share +localedir = $(datadir)/locale +gettextsrcdir = $(datadir)/gettext/po + +INSTALL = /bin/install -c +INSTALL_DATA = ${INSTALL} -m 644 +MKINSTALLDIRS = config/mkinstalldirs +mkinstalldirs = $(SHELL) `case "$(MKINSTALLDIRS)" in /*) echo "$(MKINSTALLDIRS)" ;; *) echo "$(top_builddir)/$(MKINSTALLDIRS)" ;; esac` + +GMSGFMT = : +MSGFMT = : +XGETTEXT = AWK='gawk' $(SHELL) $(top_srcdir)/exgettext : +MSGMERGE = msgmerge +MSGMERGE_UPDATE = : --update +MSGINIT = msginit +MSGCONV = msgconv +MSGFILTER = msgfilter + +POFILES = cs.po da.po de.po en_GB.po eo.po es.po fr.po gl.po he.po id.po ja.po pl.po ru.po sv.po tr.po zh_TW.po +GMOFILES = cs.gmo da.gmo de.gmo en_GB.gmo eo.gmo es.gmo fr.gmo gl.gmo he.gmo id.gmo ja.gmo pl.gmo ru.gmo sv.gmo tr.gmo zh_TW.gmo +UPDATEPOFILES = cs.po-update da.po-update de.po-update en_GB.po-update eo.po-update es.po-update fr.po-update gl.po-update he.po-update id.po-update ja.po-update pl.po-update ru.po-update sv.po-update tr.po-update zh_TW.po-update +DUMMYPOFILES = cs.nop da.nop de.nop en_GB.nop eo.nop es.nop fr.nop gl.nop he.nop id.nop ja.nop pl.nop ru.nop sv.nop tr.nop zh_TW.nop +DISTFILES.common = Makefile.in.in Makevars remove-potcdate.sin \ +$(DISTFILES.common.extra1) $(DISTFILES.common.extra2) $(DISTFILES.common.extra3) +DISTFILES = $(DISTFILES.common) POTFILES.in $(DOMAIN).pot \ +$(POFILES) $(GMOFILES) \ +$(DISTFILES.extra1) $(DISTFILES.extra2) $(DISTFILES.extra3) + +POTFILES = \ + ../lib/c-stack.c \ + ../lib/error.c \ + ../lib/freesoft.c \ + ../lib/getopt.c \ + ../lib/regex.c \ + ../lib/xmalloc.c \ + ../src/analyze.c \ + ../src/cmp.c \ + ../src/diff.c \ + ../src/diff3.c \ + ../src/dir.c \ + ../src/sdiff.c \ + ../src/util.c + +CATALOGS = cs.gmo da.gmo de.gmo en_GB.gmo eo.gmo es.gmo fr.gmo gl.gmo he.gmo id.gmo ja.gmo pl.gmo ru.gmo sv.gmo tr.gmo zh_TW.gmo + +# Makevars gets inserted here. (Don't remove this line!) +# 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_ + +# 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 = + +.SUFFIXES: +.SUFFIXES: .po .gmo .mo .sed .sin .nop .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-no + +all-yes: $(CATALOGS) +all-no: + +# 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. + +$(DOMAIN).pot-update: $(POTFILES) $(srcdir)/POTFILES.in remove-potcdate.sed + $(XGETTEXT) --default-domain=$(DOMAIN) --directory=$(top_srcdir) \ + --add-comments=TRANSLATORS: $(XGETTEXT_OPTIONS) \ + --files-from=$(srcdir)/POTFILES.in \ + --copyright-holder='$(COPYRIGHT_HOLDER)' + 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; \ + } + +$(srcdir)/$(DOMAIN).pot: + $(MAKE) $(DOMAIN).pot-update + +$(POFILES): $(srcdir)/$(DOMAIN).pot + @lang=`echo $@ | sed -e 's,.*/,,' -e 's/\.po$$//'`; \ + test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \ + echo "$${cdcmd}$(MSGMERGE_UPDATE) $${lang}.po $(DOMAIN).pot"; \ + cd $(srcdir) && $(MSGMERGE_UPDATE) $${lang}.po $(DOMAIN).pot + + +install: install-exec install-data +install-exec: +install-data: install-data-no + if test "$(PACKAGE)" = "gettext"; then \ + $(mkinstalldirs) $(DESTDIR)$(gettextsrcdir); \ + for file in $(DISTFILES.common); do \ + $(INSTALL_DATA) $(srcdir)/$$file \ + $(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-no + if test "$(PACKAGE)" = "gettext"; 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-no + if test "$(PACKAGE)" = "gettext"; then \ + for file in $(DISTFILES.common); 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 + +dvi info tags TAGS ID: + +mostlyclean: + rm -f remove-potcdate.sed + 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 $(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: $(DISTFILES) + dists="$(DISTFILES)"; \ + if test -f $(srcdir)/ChangeLog; then dists="$$dists ChangeLog"; fi; \ + if test -f $(srcdir)/LINGUAS; then dists="$$dists LINGUAS"; fi; \ + for file in $$dists; do \ + if test -f $$file; then \ + cp -p $$file $(distdir); \ + else \ + cp -p $(srcdir)/$$file $(distdir); \ + fi; \ + done + +update-po: Makefile + $(MAKE) $(DOMAIN).pot-update + $(MAKE) $(UPDATEPOFILES) + $(MAKE) update-gmo + +# General rule for updating PO files. + +.nop.po-update: + @lang=`echo $@ | sed -e 's/\.po-update$$//'`; \ + if test "$(PACKAGE)" = "gettext"; 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 $(top_builddir)/config.status POTFILES.in + 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: +# 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-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/src/apps/bin/diffutils-2.8.1/po/Makefile.in b/src/apps/bin/diffutils-2.8.1/po/Makefile.in new file mode 100644 index 0000000000..2b8a9619e0 --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/po/Makefile.in @@ -0,0 +1,317 @@ +# Makefile for PO directory in any package using GNU gettext. +# Copyright (C) 1995-1997, 2000-2002 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. + +PACKAGE = diffutils +VERSION = 2.8.1 + +SHELL = /bin/sh + + +srcdir = . +top_srcdir = .. + + +prefix = /usr/local +exec_prefix = ${prefix} +datadir = ${prefix}/share +localedir = $(datadir)/locale +gettextsrcdir = $(datadir)/gettext/po + +INSTALL = /bin/install -c +INSTALL_DATA = ${INSTALL} -m 644 +MKINSTALLDIRS = config/mkinstalldirs +mkinstalldirs = $(SHELL) `case "$(MKINSTALLDIRS)" in /*) echo "$(MKINSTALLDIRS)" ;; *) echo "$(top_builddir)/$(MKINSTALLDIRS)" ;; esac` + +GMSGFMT = : +MSGFMT = : +XGETTEXT = AWK='gawk' $(SHELL) $(top_srcdir)/exgettext : +MSGMERGE = msgmerge +MSGMERGE_UPDATE = : --update +MSGINIT = msginit +MSGCONV = msgconv +MSGFILTER = msgfilter + +POFILES = @POFILES@ +GMOFILES = @GMOFILES@ +UPDATEPOFILES = @UPDATEPOFILES@ +DUMMYPOFILES = @DUMMYPOFILES@ +DISTFILES.common = Makefile.in.in Makevars remove-potcdate.sin \ +$(DISTFILES.common.extra1) $(DISTFILES.common.extra2) $(DISTFILES.common.extra3) +DISTFILES = $(DISTFILES.common) POTFILES.in $(DOMAIN).pot \ +$(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-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-no + +all-yes: $(CATALOGS) +all-no: + +# 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. + +$(DOMAIN).pot-update: $(POTFILES) $(srcdir)/POTFILES.in remove-potcdate.sed + $(XGETTEXT) --default-domain=$(DOMAIN) --directory=$(top_srcdir) \ + --add-comments=TRANSLATORS: $(XGETTEXT_OPTIONS) \ + --files-from=$(srcdir)/POTFILES.in \ + --copyright-holder='$(COPYRIGHT_HOLDER)' + 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; \ + } + +$(srcdir)/$(DOMAIN).pot: + $(MAKE) $(DOMAIN).pot-update + +$(POFILES): $(srcdir)/$(DOMAIN).pot + @lang=`echo $@ | sed -e 's,.*/,,' -e 's/\.po$$//'`; \ + test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \ + echo "$${cdcmd}$(MSGMERGE_UPDATE) $${lang}.po $(DOMAIN).pot"; \ + cd $(srcdir) && $(MSGMERGE_UPDATE) $${lang}.po $(DOMAIN).pot + + +install: install-exec install-data +install-exec: +install-data: install-data-no + if test "$(PACKAGE)" = "gettext"; then \ + $(mkinstalldirs) $(DESTDIR)$(gettextsrcdir); \ + for file in $(DISTFILES.common); do \ + $(INSTALL_DATA) $(srcdir)/$$file \ + $(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-no + if test "$(PACKAGE)" = "gettext"; 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-no + if test "$(PACKAGE)" = "gettext"; then \ + for file in $(DISTFILES.common); 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 + +dvi info tags TAGS ID: + +mostlyclean: + rm -f remove-potcdate.sed + 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 $(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: $(DISTFILES) + dists="$(DISTFILES)"; \ + if test -f $(srcdir)/ChangeLog; then dists="$$dists ChangeLog"; fi; \ + if test -f $(srcdir)/LINGUAS; then dists="$$dists LINGUAS"; fi; \ + for file in $$dists; do \ + if test -f $$file; then \ + cp -p $$file $(distdir); \ + else \ + cp -p $(srcdir)/$$file $(distdir); \ + fi; \ + done + +update-po: Makefile + $(MAKE) $(DOMAIN).pot-update + $(MAKE) $(UPDATEPOFILES) + $(MAKE) update-gmo + +# General rule for updating PO files. + +.nop.po-update: + @lang=`echo $@ | sed -e 's/\.po-update$$//'`; \ + if test "$(PACKAGE)" = "gettext"; 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 $(top_builddir)/config.status POTFILES.in + 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/src/apps/bin/diffutils-2.8.1/po/Makefile.in.in b/src/apps/bin/diffutils-2.8.1/po/Makefile.in.in new file mode 100644 index 0000000000..ada8bb4ffa --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/po/Makefile.in.in @@ -0,0 +1,317 @@ +# Makefile for PO directory in any package using GNU gettext. +# Copyright (C) 1995-1997, 2000-2002 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. + +PACKAGE = @PACKAGE@ +VERSION = @VERSION@ + +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) `case "$(MKINSTALLDIRS)" in /*) echo "$(MKINSTALLDIRS)" ;; *) echo "$(top_builddir)/$(MKINSTALLDIRS)" ;; esac` + +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 Makevars remove-potcdate.sin \ +$(DISTFILES.common.extra1) $(DISTFILES.common.extra2) $(DISTFILES.common.extra3) +DISTFILES = $(DISTFILES.common) POTFILES.in $(DOMAIN).pot \ +$(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-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: $(CATALOGS) +all-no: + +# 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. + +$(DOMAIN).pot-update: $(POTFILES) $(srcdir)/POTFILES.in remove-potcdate.sed + $(XGETTEXT) --default-domain=$(DOMAIN) --directory=$(top_srcdir) \ + --add-comments=TRANSLATORS: $(XGETTEXT_OPTIONS) \ + --files-from=$(srcdir)/POTFILES.in \ + --copyright-holder='$(COPYRIGHT_HOLDER)' + 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; \ + } + +$(srcdir)/$(DOMAIN).pot: + $(MAKE) $(DOMAIN).pot-update + +$(POFILES): $(srcdir)/$(DOMAIN).pot + @lang=`echo $@ | sed -e 's,.*/,,' -e 's/\.po$$//'`; \ + test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \ + echo "$${cdcmd}$(MSGMERGE_UPDATE) $${lang}.po $(DOMAIN).pot"; \ + cd $(srcdir) && $(MSGMERGE_UPDATE) $${lang}.po $(DOMAIN).pot + + +install: install-exec install-data +install-exec: +install-data: install-data-@USE_NLS@ + if test "$(PACKAGE)" = "gettext"; then \ + $(mkinstalldirs) $(DESTDIR)$(gettextsrcdir); \ + for file in $(DISTFILES.common); do \ + $(INSTALL_DATA) $(srcdir)/$$file \ + $(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"; 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"; then \ + for file in $(DISTFILES.common); 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 + +dvi info tags TAGS ID: + +mostlyclean: + rm -f remove-potcdate.sed + 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 $(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: $(DISTFILES) + dists="$(DISTFILES)"; \ + if test -f $(srcdir)/ChangeLog; then dists="$$dists ChangeLog"; fi; \ + if test -f $(srcdir)/LINGUAS; then dists="$$dists LINGUAS"; fi; \ + for file in $$dists; do \ + if test -f $$file; then \ + cp -p $$file $(distdir); \ + else \ + cp -p $(srcdir)/$$file $(distdir); \ + fi; \ + done + +update-po: Makefile + $(MAKE) $(DOMAIN).pot-update + $(MAKE) $(UPDATEPOFILES) + $(MAKE) update-gmo + +# General rule for updating PO files. + +.nop.po-update: + @lang=`echo $@ | sed -e 's/\.po-update$$//'`; \ + if test "$(PACKAGE)" = "gettext"; 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 $(top_builddir)/config.status POTFILES.in + 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/src/apps/bin/diffutils-2.8.1/po/Makevars b/src/apps/bin/diffutils-2.8.1/po/Makevars new file mode 100644 index 0000000000..8b09f53b0f --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/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_ + +# 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/src/apps/bin/diffutils-2.8.1/po/POTFILES b/src/apps/bin/diffutils-2.8.1/po/POTFILES new file mode 100644 index 0000000000..11c4d3115a --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/po/POTFILES @@ -0,0 +1,13 @@ + ../lib/c-stack.c \ + ../lib/error.c \ + ../lib/freesoft.c \ + ../lib/getopt.c \ + ../lib/regex.c \ + ../lib/xmalloc.c \ + ../src/analyze.c \ + ../src/cmp.c \ + ../src/diff.c \ + ../src/diff3.c \ + ../src/dir.c \ + ../src/sdiff.c \ + ../src/util.c diff --git a/src/apps/bin/diffutils-2.8.1/po/POTFILES.in b/src/apps/bin/diffutils-2.8.1/po/POTFILES.in new file mode 100644 index 0000000000..3a987b2dfe --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/po/POTFILES.in @@ -0,0 +1,33 @@ +# List of files that contain translatable strings. + +# Copyright (C) 2001, 2002 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + +lib/c-stack.c +lib/error.c +lib/freesoft.c +lib/getopt.c +lib/regex.c +lib/xmalloc.c + +src/analyze.c +src/cmp.c +src/diff.c +src/diff3.c +src/dir.c +src/sdiff.c +src/util.c diff --git a/src/apps/bin/diffutils-2.8.1/po/Rules-quot b/src/apps/bin/diffutils-2.8.1/po/Rules-quot new file mode 100644 index 0000000000..5f46d237d2 --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/po/Rules-quot @@ -0,0 +1,42 @@ +# 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-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/src/apps/bin/diffutils-2.8.1/po/boldquot.sed b/src/apps/bin/diffutils-2.8.1/po/boldquot.sed new file mode 100644 index 0000000000..4b937aa517 --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/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/src/apps/bin/diffutils-2.8.1/po/cs.gmo b/src/apps/bin/diffutils-2.8.1/po/cs.gmo new file mode 100644 index 0000000000000000000000000000000000000000..5ed97e16f161876669109c0c56e77ba69ace7918 GIT binary patch literal 23035 zcmb`P3vgW5dEc)ZE4JWAY)h8)h^!+;BuEjv1gHloNRS1RAPEsK0U$_5bOu}=DZJF1MdYt zVeyy2KHmQg_yD*G?sJ?w-)X+zIRF-T{|Kl+ska~eHIVl2{IbQr2FD!duDihJK^LUn zU7rV^0RM~0|G;}e`v1UX@Fchbei;0h;BoN(neTV=P1?Wv;~-@M|FLe~>ZD z`v;}|G4OZ5r$EU+;W+mk0HMb{HIV0fehYjK{8NyA?q#mdI5-cU1)-s|bMN1Rw0+-W zApP7o57O>^p92qre-1*=`#%6u?|%Al9sz#>JPm#kgy#2uo%NYx35EXDf8Z7HL*Va$ zlzZS$z+pZ;1hTdtDuYGv(;(yj(0>FO$Afo*(Bi@8K*~M%3OEA(E0B4pZvj~^CF6k3 zO6JS6`YcF$Y6E=MaUQzI;(3sMANpyK`9Aap$Xp+WH=OSPX?M_6NrIXp53-VX-${f9x;?~%`gqu?Kc`x)xpAocdKcFqUEmrVY?1ccZ2 zT?M7wUxJj~PZ`+<`(c8d>!S{gl`RD-1ydGTuncJh^56*zH@0s7BZ?(vng)WDl z1gU>$351^y$#@unwdi2q@%%|^J^Sw{{fu4ObUgqETE1&|uXi@m! z4&HCTx5I2*;VarL3O~FJ6#6jF;$@I|79)^x6+aFh0cHOEAT$zs9wrHW55tqPZig>| zjPGy?Qt$B3gYeGbFWLOBgY?%=Sy{h+S?_m)9|mcwU)F*7_sjgDd%w(I^1lGS6a3ep z)ED|g@BXiV%%}gWAmi@;8xWcf^nk3v!23YxFrYwaJiyq6?*=A8=r_;=8Oy+@z&k;q zGj#`E2WfxcKS8G#!2ia3!WM!Cx4i-iT|dWGWQ~OHpZGFJn@`F*((aQ1NZBVp2{MK! z{{W<)C;!;u{{{yf=O}X%`W=<|!>dQj_WKWk)Ia)rAmcr{2||x!%u)F1*r3JpAblNU zY|a$;KS1XA)Z^gOpa;SePkjb_z;OoO0iFhFQ{?iXjB^b9E%2_&JcA)o(+jSfF48t0faWs-UA*7;Wf#B_Tyj(z7AeNADu0M%is@!to7Ny0v}|l?*;D%8H@1i z*g24KkNpzJ*v7sFegKt8o3bCrnVZO|@oDf*kTzw1j(<0JH~1Ow9`K)o@WS|)z;}Wz zkTo2a^<+E~v?=)$!nf3)cpg+>9sE)7$G~4@NZ$^Qfd39;t*71v{s~Cm(%+P{$GX4p zHjp-75IVgdlm!rc(W11=I9_-Kd=&fy2yI^YB1r!){58l}rkR`A2h(1SH_l<`mh4R{#Q4Nc_xjEtXo&#ZvZedd!O>oN1Y;6d<@!9(EJLCVeYEb?gfBnVw* zXF%%BeiVE=2pw;OUuL0!(EXgu^LEFXdk0AUIqHgjo1?Dq#oRDh0ArB(%~4<4o%=(O zcIRY%(DJ;D_ZWB-gx}9Mz$d|1LGsT3Ie3@jTmWQ!ER&hl@_bw=8qcE`Ec147q}?*-onLQ~`IP&HL|zv~%$dka1o78h9INf|UJa%%38aNaslZlmxE}eWVTj`yu{HoAP6v z&I_a;CkY?RUXWivdWiHa>F<(ct%P3RLz3UO7|?(JK7W6jWaX3dcX%El9VTVJ58DTs z(>O`i`W4azl1GxYl;1K*==@WpA0RD|vfn8lgx89sVMlJGnHCOXLZE>iYm zuR9UxGua1=@Rsxaq~rD-9@M`V`FqAb|1)rr^z$Uye@~Nsf;37>Ni!rxdYI&s*oXS} z4*m*1f130*($A5OlH~Vmq&rBmPvrNb2AqEkBG*J#>EBt4?*>0h`UL4+_Sqs5q+cYxo%9Szem_FGOnQX0pCrFek`9vQAn9{t>B0`Y}?KG(`F(lKg&wbf2Tth@UKZkve^9 zd{%{#8WXI$tEwCZiR%Z0J&NDHeI)Z#?mf|~6m?YW2a7dNm6zPeEhn^bA}jII>Mb-&yDdq%06A9%4^h{C!$H99sjU>bjRTgDNSF_dML!+Jdo zR1%tM$_*;|$(FlRxP0mS=*ihLmoF7BO-+xSxP1AemGH`ikByDY&W=ng)rkBcSt!KG zDwB&FURf;&U39MQO4*lKxsj(_#u(OW;fi3S0&hhvMq%3MQ+$IcWjFS8PFSm$979qe z>nWuc{3uTJTvd?POI~EVpc5wK?vgj5Y-trPSV9e{vBIfChDy@*2+bGTuj4d$Xu#p` z&I?R$vf^Hl#95n$uC?tMeagF1uB8>$AL_2EByxRLYf&aIt7a~DE^w)Cze z+-Y!~)JlWMD~F4Lzvks6GXyeZ*fC$vr^hK2G*1=uZZ5F5>uxfn#g&@z>we9R`cw&i zH8~jrY8KX2Vx=XX)F{%J=F5UGO4gR%i95DsnLghRwkfF~O_lt>jaHSK_S}l*+Lg#p zJXLWMSNVam*>!}hlon~T-^*}G384s2L-{0(R;95euhvj%GEHQECrd1+e9<{! zLQlovYVim;ry6p(Yjh%>KVsL21|pw2RSN` zF9@4nRC5~*S@ib&hoxe?6s{Cx%vrq-8nLsnX{uhL>xIEW%`YcHx#LpP@>{9q235nk zDrYuBW3{prvcU`oYb$|%ba~o1sV0WUQO`8AQ1KRq%$ps&9lB;vHkk}k&3}h3sH-75 z;RYGX$xKWKVWQ%+(Fmi2No%2#?LOa&or3Ag?2*JR6}&4A7oKEAw~o4!da`g7Lc`la z^rRcmWr3;nh1#-30t+dknBCa znUxbU3iotLtB%#A-&twJ5B$Vu!^l#pakt94u~&>8k~T0*Fk`)j7Z@8&GO2l9*EEa( zvm;O3vX|3J*nee76p8*$`3w0v@34)!mKq6N*A?{e8J{r_5mTrUtwAtIwau7Gsbq=m zZI(e~RYQv^kujQ3wB^cR6Yolr%L2xiivY=>5R=chqaJm^Fk(I_%a_uwXc4y_rpOak zvU{ew9c}m*j8UkjGd-5+@q|`S^sFuBE6F8MT$giViS9bU#&*+Mq8>Zg z)??+c;j=?+tzu6hrLl8aV~D~9vTwC9TfE(xkV12C#?WuV!C2`9w6Yb1<-!8?w6-?Y zj0hbFR9;diRQ}m>dAH<6gZn{IS~z95q81NXS-la5WFP9Lg!1)}qYNg2h;tE(X6=Qt zdKXq?Aa%G}E5KQ-8%~uK5k?C>=Qr1=Ftljw>E*NQ%7Vbaup9NQ07cF47MIax!XaC; zw@NH?z?>XAsX3SaE>51C*3YbesKzhKGwt}&jTQXHyvP+hqSuQGTJP#3pD{nEj3Fdb zkFhg$Y#|d;E~3U9DZHSJ+<;lNpwW!Nfy`7MrW;5xztXF_nt!=h8%1J%37zsuo8of9 z=@_z=7enUr4yU2^NheeDzS5_pLHUc8&u8D+)PTu#3TRQd&s#{?6ScICYO%|qHM3Ab zG8wSWWdB)vPHRZ!r|UP|MJ!tckeYI1CPl3sU6dJtWK7rJ^`DrN*8VNoVNYxwGps1+9MbHaeAYhZe|5-QMPf;e!l>X%`An8M~~_ zjMFD(vLk}E;{r7{IzFn!xRxqI_BFGxMKH>4F`qNRW84|ifuV_&s*_@YGgG*g2R3li ztF892O^oQz=x1s(#FwRoQsjFJ`5^TYp>m*iWF@Sj4#hDHnUPmcqnMWE$YCF`w^%}b zX3(}~TI$eJOgIfHREH9U0_R6IEe|nPH`_lW4t9%Z?WfhM@8KKquK3t7iJPPt{n&F^ zb@UjPO#vG^Nc=K7&nN+gBHxX!OjbltXr0R;reo9T0f=$L2{wi|#Wj?fY$ro3M5Kvf zu`LX#2ds^tiYQsy84-&Jkt8p$pjJ0}ubKuJZc`=+9~#?g(zKhs`@up;nH4Ex<;bn* z;1#70MTNqOUrCnC3CXsc@ky7y8F;M!pxtJ%f;Y6VrQa*kuT|sS=JF1@U6-F4)+}l@ z`H+6yRfm&HC2Vk6<%)+E)tIlf=wH^z?EhG6j`MG2W?DygHS^Y`j;OD~Ti}i3=J;*+ zZJ!Y?fY~!W4%=A#k8#(I7{u$LrI0v@DA7J_8*PZeCZe#I=Os&#m)S~MUv4jv^Sl;y z!ZQCKtDH90Sj1KOZE(yLu&Cr76T6o1;UI=5IXntZM7ibW~XOG|P}X58X_5yT|m zgUq|*YmY9b-D0vmWSVTje7A1T&ge9{0Qqw_gA6Y}SxS$K$eW-~_OduxNkNGHAO}}% zrHG8sW1lHHwB+h%sW)HHQ>pv0_^11*gXxY~2`XYxSmn00#%{%|v#rEgkcRO2iGp@U z?PrV->-jF@sg1Qmp`D3S*wyw_UaTWeds@W~ed(hweJuZulq!4LWRJYXltaB7!$fj% zSj!9HaN$^vd~bi*UU=NA<9ng{lACgRsW=m%vAE>Hx@i>xL@Ww>u8|x%Yx=kWne4Xy zC*_RIJ{FIqaPd^+VZW!WjBR9xI@8;lL3Cmm`HPMf-=%a>i_>R#C@cnPAx->R{2Wik zFj{=J=xB?@>TbCwz^F3*cC;`&FS6dei!QHYa{CPq>rftbWn4sFJlIn`t_J%1`}@>c z@W|tRYMc*!@4ENZ7^Y{1x=6*rl6+li|6 ztjB3$Qk@^3o*tfX!s2!1MNt^>QJ*U5;DE@KmkxA%IjFxJ?D%p?zFhi9$CsBr>YR&l zd})b&X>w|IbaLV{0#XYYD@=R#EOJSt=n-{Eo6iQ0T)upHuSzq!Wt#Jc%FZX*;iSho zkIR=umn|^GK~s$^E_zV{U;Fq1&bT~#wLW#yZE{y|#$EN|zMg3gbRq-sHq>f(2n`#L z(a5aaR24hhoQA_!)eP*k)b)LKDXimx8w(@MyN)r;hEZub#7}q{@l=DAH2<6K$KCQ- zFIe+o?)kz#ZgDcl70efw;;`l=-qR|iFXbnD6-nVJS|}@Ngo3^LdQP93+Z=*pLA;g1 zlj3a_hI2}_5CJZCdH781CyY=1q@@o+g)JsZnSsO49k#54<5J8-o6i9B38cfry|qNn z<0vD!>kwff4_Ub`Q(c)8N4J7r$XBYWul$RME>GZk`07HwhZoZ?ppJ@G%pU1?TylAma(O!c<_!H z*ds`^Vv`%q{GP#_OM9Awcg&e{<*r3u9=zj)lw)X*gA|TjD66kT4E-1Uh0yT>%{z%- z>L7fZJMrR(Wg*$UVlSy=wILiW3PH5Pcgn|GsL{YIVXaUTX7#sK z!B66?;4q|Vdyj>B(mm=u6H~#Afdw#1fIvzWvSzv8`l;!Gu2v9+WMh?PS?H?O|`JVdg>+F`;6Q4exSCmAAiS zZliV_r9OX|f!DVhS14yu8S3TKOFhS$o;fGD3oNXuX}6uiWg$|5^RY;qP6lzTYeO_? zw_~3V=IRXJfRh;pM(1f8*IXbwxfLdtBu3U{pR_EDvDz9;)N^7e1#{Thgr#L@>BLA% z4@ku1m80PTJ}r4Q_OoRp4mTY0e7S|pMj}gUFR`87vSmWv6% zm!)N@@or|KOSZ(;(XV(u3Qo_{+=*JEOhuv0t}t3Du%E@89#mr32zzLQQynQDEe`be zOij)fPRP|0MG7Yobc5g9H7A{$u@8urQ6SEKPNld#o_*8V@rcv2r4=sAdz)PO(86O=VX-{>a z*x!S@QjEmHEMyzR#JiFlZq!^qcv^hA5pLC?(V5A@v13m>RXEZvEIo4UDU7f!WseQ2 zV_ZKIM4;639v&IBW+He3uN2zQk{ef1FQwRB3Y%`SOZd>TsT;V}j-Vk-ZGwi@@8hTSQ9X?}Rq1A;*4#=HK8;eHBbbB7i==f zN)WQn>%q;P$~0H6x|NifWG!tiWCDx6k*;mL&|9eTCIj9!);$T?8Dg}J%JX~07ZKqz z1G|NluoP@?Ktos#0-_b-O(jX(~*w`pbDVQWd!rh0UM^ z2btYBfXA&8;>z zU*j;5VmSw`M%cVo(G#!+q75{dntXi(ANdrg&GJ%9nO81CE5S`fgpsRki%KIzm?Idj zZ_1POVhv_7RJKJd>6P|sepT*(j4Dt~MzPiuBcOvKV(w$GM6bh>ENUL*zzzE74TlA+BjkldW27 zRa(+#b;C|v=vWUz^j#FLHIkd0C!qDtt6GWJM6wbh$c5@VL_JMb_~^oEDVk^172 zERYk^xN{A~^cb_4Cu%V6Q`fNy47WFBU)VY~ z_}Fx>3daN<_h*oMd9%E^GdYZSF#H2Ah@RT0XD#_`U%s@~D!~S%dQ7fHIwGs=ejpyN z7N+YSrc&U++12P~)0G}&(n4in?k&MpwrWNumaVcWHi=1nqgFJmGL#b zNraV5Rd*y4U_ZH)Yj)WAmZOc6>iO{z9HmUcgjm^EI~F^Mo0g}rO6;ieNGn~Q8xUH` z^%^q{*~*a&0ZNs9>e+Sh-#o~wbKqemcGpBfat!inEsg~`dS*o5M@dwgy^>REJKgo< zcc{K}{@ zw`x?Rl|Jw_nWn8*2$Fa+za1^<$1XdK_>C zF*GJzZEiJbhS$lgN~9VZMMAi`3uqe@o!h{91!Eb#CpSQ zpNoy{A!`#JT*{$SZ+@(*mRM76t!2$jm+rS$$_4m#+fSeEaZZ>su&Ipz#AZV`SKT!( z@g!PJNvs-!GgHNA$>!=SEsDF{$3uL}`_$eIWd4LbOLy92)E*d|*eNtkf8Qx6Et76x z3K?r&6B7V~M*fYL^#OHS5nE!?tToHvm$7FNkX-LbIGW5x-jb*l;IP6xgAm;zX?eG6 z+?+xWIUR9Wj_>+nN(W`Lw=QSlW)J z!ipSsrCAe~re7?lws}RqcIr1BoF15VdEL=!*)(rK9O=q?F^%{u za!0ndB8m=?YT|;)jaqz)I*?2IpQ9UV!A6fWlRLljePLoBq$E*3`9?B3?}k}6cw2KO z1Z|f{M4f3}uvaNV;t;Rt4deQxDUo|LWyHZn;~$?lZv$3H5VB_6vco5*M`nhJW3vx7 zqi5c}+wwZ5&D5|Okr)nJgp=Kj9;bL&F@*WsKzmC}k9c$QuTV#SSd}kr%Guzys!(sI zd`np|2rANiDtlA@6=&|lGE>Rp-TDYfNzlH}naM zP^9ad1dZtZon=u$?sGUc8;@T5ySW$8;ct24h_Om}DO}q$@n@QMn>V9&PdCMFfVM^< zaKV(eThmvZ9p$Io`n7+-Wy87`HCln|h(K@2zox3V&WWYflJ)Y?T6X;)5=mY;*6TG* zovGbM1I?|o#bZ&#lxV^rHY$!v>uwB*>_{a7P6md{N>3$qbWmJ-timCfOPFPi6GD}&U^%Tv1q%&7xLPjP|BsiL}iu&)OV+6e2L0e54p1R}Mj z?NK-0ta+Vnrs^4ep{N7z)PZ%bJXVQnKVyv*9f()Q^_J?3fJ)fF9Kfp>wB&|KJD%k3 zN;^5-y8q3Oxr39vWh{^chN2_Pt}TIgT*|l#gD|bM#4QEa$^DkLsj?F%+k)|HgHud3 zp|U=0)U#EW`6iq*omnnR<#tUkfvnM5*{iwg_{fXu#owPkcb4e8X2yr~#K{yJy^br3 zbzd#^%+g9$J8W`bUM;xY}n{gEfgDfapoeS7`WT1`5E3)zAUa7_1G4s*^cpS@RJGR*9Ekf_K zSR(i?|8&rPI@tbn$$Yx}k@hE|@ATO*;a-gXE=|2LGWACj!>{WIye$erloK}xdltQ9 z>g*Ja_hyy(KjiFQBtK_$9mevbSdTNz)xmY2>;AVGoChb5A-rv5p0q~nz;tI+p8eJp zk(c#4yFDDw#sYQ(;~@&nouG}%gU1odTf*`7EY#39H!w+eRGz*g)ZDL{!c>8Gl?@~+ zFuQ>;Jn86&Jh>C#-^PY=*>9QE35BVwYVFV-#xTg8t~vrR^TEQQfmcHo8(rfj4&fBx z61K6{J;XY9x&d$KcpQifSN9VClOI*C*;ck{O?^;YCqA(~X3=aNW6p!~L>crr_E=~r z3@alRw7;9ln&Y4CyW@LCYvzD(lURbxz<2DN^C&&B-V01kZq8)cu4zl26P8FbBwSdk zxL9LLH3C2hqrg3s1?cTkvmKzN6QA#Gt2uaMUwuAR>p@wjQIpJ+>--un#EB12OT&c+>y20qRsn*Kb zEFVAO+XV4xrr%aBzm^nNGjWLBr79b>ss_Z8^*7pg4hk66R-Z`%b=+QXNhsiZD~yI0@@w zIuLD=xa)H5CznoQtb~LGi?)R=s`Ck`e2kD;+4r1iB{%q{9BRPU6C+U)=h>S0-TXpAIH5Hp;e z^Yj$s2LB?3e`a1|zwOuprUR1CdTbbqHjT}tZ$?hOIj@jt* UoQc7}wJqB*b=F$cwRCg-KT8W9kN^Mx literal 0 HcmV?d00001 diff --git a/src/apps/bin/diffutils-2.8.1/po/cs.po b/src/apps/bin/diffutils-2.8.1/po/cs.po new file mode 100644 index 0000000000..b749caefd7 --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/po/cs.po @@ -0,0 +1,947 @@ +# Czech translations for the GNU diffutils messages. +# Copyright (C) 1998 Free Software Foundation, Inc. +# Petr Koèvara , 1998, 2002. +# +msgid "" +msgstr "" +"Project-Id-Version: GNU diffutils 2.7.10\n" +"POT-Creation-Date: 2002-04-05 14:10-0800\n" +"PO-Revision-Date: 2002-03-19 18:44+0100\n" +"Last-Translator: Petr Koèvara \n" +"Language-Team: Czech \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=ISO-8859-2\n" +"Content-Transfer-Encoding: 8-bit\n" + +#: lib/c-stack.c:188 +msgid "program error" +msgstr "chyba programu" + +#: lib/c-stack.c:189 +msgid "stack overflow" +msgstr "pøeteèení zásobníku" + +#: lib/error.c:128 lib/error.c:156 +msgid "Unknown system error" +msgstr "Neznámá chyba systému" + +#: lib/freesoft.c:27 +msgid "" +"This program comes with NO WARRANTY, to the extent permitted by law.\n" +"You may redistribute copies of this program\n" +"under the terms of the GNU General Public License.\n" +"For more information about these matters, see the file named COPYING." +msgstr "" +"Tento program je zcela BEZ ZÁRUKY, v rozsahu povoleném zákony.\n" +"Toto programové vybavení mù¾ete dále ¹íøit podle podmínek Obecné veøejné\n" +"licence GNU. Dal¹í informace o licenèních podmínkách naleznete v souboru\n" +"COPYING." + +#: lib/getopt.c:693 +#, c-format +msgid "%s: option `%s' is ambiguous\n" +msgstr "%s: pøepínaè `%s' není jednoznaèný\n" + +#: lib/getopt.c:718 +#, 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:723 +#, 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:741 lib/getopt.c:914 +#, c-format +msgid "%s: option `%s' requires an argument\n" +msgstr "%s: pøepínaè `%s' vy¾aduje argument\n" + +#: lib/getopt.c:770 +#, c-format +msgid "%s: unrecognized option `--%s'\n" +msgstr "%s: neznámý pøepínaè `--%s'\n" + +#: lib/getopt.c:774 +#, c-format +msgid "%s: unrecognized option `%c%s'\n" +msgstr "%s: neznámý pøepínaè `%c%s'\n" + +#: lib/getopt.c:800 +#, c-format +msgid "%s: illegal option -- %c\n" +msgstr "%s: neznámý pøepínaè -- %c\n" + +#: lib/getopt.c:803 +#, c-format +msgid "%s: invalid option -- %c\n" +msgstr "%s: neznámý pøepínaè -- %c\n" + +#: lib/getopt.c:833 lib/getopt.c:963 +#, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "%s: pøepínaè vy¾aduje argument -- %c\n" + +#: lib/getopt.c:880 +#, c-format +msgid "%s: option `-W %s' is ambiguous\n" +msgstr "%s: pøepínaè `-W %s' není jednoznaèný\n" + +#: lib/getopt.c:898 +#, c-format +msgid "%s: option `-W %s' doesn't allow an argument\n" +msgstr "%s: pøepínaè `-W %s' musí být zadán bez argumentu\n" + +#: lib/regex.c:1367 +msgid "Success" +msgstr "Hotovo" + +#: lib/regex.c:1370 +msgid "No match" +msgstr "®ádná shoda" + +#: lib/regex.c:1373 +msgid "Invalid regular expression" +msgstr "Neplatný regulární výraz" + +#: lib/regex.c:1376 +msgid "Invalid collation character" +msgstr "Neplatný znak porovnání" + +#: lib/regex.c:1379 +msgid "Invalid character class name" +msgstr "Neplatné jméno tøídy znakù" + +#: lib/regex.c:1382 +msgid "Trailing backslash" +msgstr "Koncové zpìtné lomítko" + +#: lib/regex.c:1385 +msgid "Invalid back reference" +msgstr "Neplatný zpìtný odkaz" + +#: lib/regex.c:1388 +msgid "Unmatched [ or [^" +msgstr "Nepárová [ nebo ]^" + +#: lib/regex.c:1391 +msgid "Unmatched ( or \\(" +msgstr "Nepárová ( nebo \\(" + +#: lib/regex.c:1394 +msgid "Unmatched \\{" +msgstr "Nepárová \\{" + +#: lib/regex.c:1397 +msgid "Invalid content of \\{\\}" +msgstr "Neplatný obsah \\{\\}" + +#: lib/regex.c:1400 +msgid "Invalid range end" +msgstr "Neplatný konec rozsahu" + +#: lib/regex.c:1403 +msgid "Memory exhausted" +msgstr "Pamì» vyèerpána" + +#: lib/regex.c:1406 +msgid "Invalid preceding regular expression" +msgstr "Neplatný pøedchozí regulární výraz" + +#: lib/regex.c:1409 +msgid "Premature end of regular expression" +msgstr "Pøedèasný konec regulárního výrazu" + +#: lib/regex.c:1412 +msgid "Regular expression too big" +msgstr "Regulární výraz je pøíli¹ dlouhý" + +#: lib/regex.c:1415 +msgid "Unmatched ) or \\)" +msgstr "Nepárová ) nebo \\)" + +#: lib/regex.c:8034 +msgid "No previous regular expression" +msgstr "Pøedchozí regulární výraz neexistuje" + +#: lib/xmalloc.c:63 +msgid "memory exhausted" +msgstr "pamì» vyèerpána" + +#: src/analyze.c:809 src/diff.c:1283 +#, c-format +msgid "Files %s and %s differ\n" +msgstr "Soubory %s a %s jsou rùzné\n" + +#: src/analyze.c:812 +#, c-format +msgid "Binary files %s and %s differ\n" +msgstr "Binární soubory %s a %s jsou rùzné\n" + +#: src/analyze.c:1058 src/diff3.c:1413 src/util.c:526 +msgid "No newline at end of file" +msgstr "Chybí znak konce øádku na konci souboru" + +#: src/cmp.c:43 +msgid "Written by Torbjorn Granlund and David MacKenzie." +msgstr "Autoøi: Torbjorn Granlund a David MacKenzie." + +#: src/cmp.c:118 src/diff.c:817 src/diff3.c:427 src/sdiff.c:168 +#, c-format +msgid "Try `%s --help' for more information." +msgstr "Více informací získáte pøíkazem `%s --help'." + +#: src/cmp.c:137 +#, c-format +msgid "invalid --ignore-initial value `%s'" +msgstr "neplatná hodnota --ignore-inital `%s'" + +#: src/cmp.c:146 +msgid "options -l and -s are incompatible" +msgstr "pøepínaèe -l a -s nejsou kompatibilní" + +#: src/cmp.c:154 src/diff.c:826 src/diff3.c:435 src/sdiff.c:177 +#: src/sdiff.c:313 src/sdiff.c:320 src/sdiff.c:910 src/util.c:194 +#: src/util.c:286 src/util.c:293 +msgid "write failed" +msgstr "zápis selhal" + +#: src/cmp.c:156 src/diff.c:828 src/diff.c:1354 src/diff3.c:437 +#: src/sdiff.c:179 +msgid "standard output" +msgstr "standardní výstup" + +#: src/cmp.c:160 +msgid "-b --print-bytes Print differing bytes." +msgstr "-b --print-bytes Vypí¹e rozdílné bajty." + +#: src/cmp.c:161 +msgid "-i SKIP --ignore-initial=SKIP Skip the first SKIP bytes of input." +msgstr "-i N --ignore-initial=N Ignoruje prvních N bajtù na vstupu." + +#: src/cmp.c:162 +msgid "-i SKIP1:SKIP2 --ignore-initial=SKIP1:SKIP2" +msgstr "-i N1:N2 --ignore-initial=N1:N2" + +#: src/cmp.c:163 +msgid "" +" Skip the first SKIP1 bytes of FILE1 and the first SKIP2 bytes of FILE2." +msgstr "" +" Pøeskoèí prvních N1 bajtù souboru SOUBOR1 a prvních N2 bajtù souboru " +"SOUBOR2." + +#: src/cmp.c:164 +msgid "-l --verbose Output byte numbers and values of all differing bytes." +msgstr "-l --verbose Vypí¹e pozice a hodnoty v¹ech rozdílných bajtù." + +#: src/cmp.c:165 +msgid "-n LIMIT --bytes=LIMIT Compare at most LIMIT bytes." +msgstr "-n LIMIT --bytes=LIMIT Porovná maximálnì LIMIT bajtù." + +#: src/cmp.c:166 +msgid "-s --quiet --silent Output nothing; yield exit status only." +msgstr "-s --quiet --silent ®ádný výstup; vrátí pouze status." + +#: src/cmp.c:167 src/diff.c:904 src/diff3.c:455 src/sdiff.c:204 +msgid "-v --version Output version info." +msgstr "-v --version Informace o verzi." + +#: src/cmp.c:168 src/diff.c:905 src/diff3.c:456 src/sdiff.c:205 +msgid "--help Output this help." +msgstr "--help Vypí¹e tuto nápovìdu." + +#: src/cmp.c:177 +#, c-format +msgid "Usage: %s [OPTION]... FILE1 [FILE2 [SKIP1 [SKIP2]]]\n" +msgstr "Pou¾ití: %s [PØEPÍNAÈ]... SOUBOR1 [SOUBOR2 [SKIP1 [SKIP2]]]\n" + +#: src/cmp.c:179 +msgid "Compare two files byte by byte." +msgstr "Porovnání dvou soborù bajt po bajtu." + +#: src/cmp.c:183 +msgid "SKIP1 and SKIP2 are the number of bytes to skip in each file." +msgstr "N1 a N2 udávají poèet bajtù, které budou ignorovány v ka¾dém souboru." + +#: src/cmp.c:184 +msgid "" +"SKIP values may be followed by the following multiplicative suffixes:\n" +"kB 1000, K 1024, MB 1,000,000, M 1,048,576,\n" +"GB 1,000,000,000, G 1,073,741,824, and so on for T, P, E, Z, Y." +msgstr "" +"Hodnoty SKIP mohou být doplnìny následujícími pøíponami:\n" +"kB 1000, K 1024, MB 1,000,000, M 1,048,576,\n" +"GB 1,000,000,000, G 1,073,741,824, a stejnì tak i pro T, P, E, Z, Y." + +#: src/cmp.c:187 +msgid "If a FILE is `-' or missing, read standard input." +msgstr "" +"Pokud SOUBOR bude `-' nebo nebude existovat, bude èten standardní vstup." + +#: src/cmp.c:188 src/diff.c:911 src/diff3.c:475 src/sdiff.c:223 +msgid "Report bugs to ." +msgstr "" +"Chyby v programu oznamujte na adrese (pouze " +"anglicky),\n" +"pøipomínky k pøekladu zasílejte na adresu (èesky)." + +#: src/cmp.c:231 +#, c-format +msgid "invalid --bytes value `%s'" +msgstr "neplatná hodnota pøepínaèe --bytes `%s'" + +#: src/cmp.c:258 src/diff.c:734 src/diff3.c:333 src/sdiff.c:558 +#, c-format +msgid "missing operand after `%s'" +msgstr "po `%s' je nesprávný operand" + +#: src/cmp.c:270 src/diff.c:736 src/diff3.c:335 src/sdiff.c:560 +#, c-format +msgid "extra operand `%s'" +msgstr "operand `%s' je nadbyteèný" + +#: src/cmp.c:477 +#, c-format +msgid "%s %s differ: byte %s, line %s\n" +msgstr "%s %s se li¹í: bajt %s, øádek %s\n" + +#: src/cmp.c:495 +#, c-format +msgid "%s %s differ: byte %s, line %s is %3o %s %3o %s\n" +msgstr "%s %s se li¹í: bajt %s, øádek %s je %3o %s %3o %s\n" + +#: src/cmp.c:543 +#, c-format +msgid "cmp: EOF on %s\n" +msgstr "cmp: EOF v %s\n" + +#: src/diff.c:41 +msgid "" +"Written by Paul Eggert, Mike Haertel, David Hayes,\n" +"Richard Stallman, and Len Tower." +msgstr "" +"Autoøi: Paul Eggert, Mike Haertel, David Hayes,\n" +"Richard Stallman a Len Tower." + +#: src/diff.c:322 +#, c-format +msgid "invalid context length `%s'" +msgstr "neplatná délka kontextu `%s'" + +#: src/diff.c:405 +msgid "pagination not supported on this host" +msgstr "pøestránkování není na tomto poèítaèi podporováno" + +#: src/diff.c:420 src/diff3.c:315 +msgid "too many file label options" +msgstr "pøíli¹ mnoho pøepínaèù popisu souboru" + +#: src/diff.c:498 +#, c-format +msgid "invalid width `%s'" +msgstr "nesprávná délka `%s'" + +#: src/diff.c:502 +msgid "conflicting width options" +msgstr "" + +#: src/diff.c:526 +#, c-format +msgid "invalid horizon length `%s'" +msgstr "neplatná délka obzoru `%s'" + +#: src/diff.c:629 +#, c-format +msgid "`-%ld' option is obsolete; use `-%c %ld'" +msgstr "pøepínaè `-%ld' je obsolete; pou¾ijte `-%c %ld'" + +#: src/diff.c:641 +#, c-format +msgid "`-%ld' option is obsolete; omit it" +msgstr "pøepínaè `-%ld' je obsolete; omit it" + +#: src/diff.c:709 +msgid "--from-file and --to-file both specified" +msgstr "" + +#: src/diff.c:832 +msgid "Compare files line by line." +msgstr "Porovnání souborù øádek po øádku." + +#: src/diff.c:834 +msgid "-i --ignore-case Ignore case differences in file contents." +msgstr "-i --ignore-case Ignoruje velikost písmen v obsahu souboru." + +#: src/diff.c:835 +msgid "--ignore-file-name-case Ignore case when comparing file names." +msgstr "--ignore-file-name-case Ignoruje velikost písmen v názvech souborù." + +#: src/diff.c:836 +msgid "--no-ignore-file-name-case Consider case when comparing file names." +msgstr "" +"--no-ignore-file-name-case Bere v potaz velikost písmen v názvech souborù." + +#: src/diff.c:837 src/sdiff.c:186 +msgid "-E --ignore-tab-expansion Ignore changes due to tab expansion." +msgstr "-E --ignore-tab-expansion Ignoruje zmìny v odsazení tabelátorem." + +#: src/diff.c:838 src/sdiff.c:187 +msgid "-b --ignore-space-change Ignore changes in the amount of white space." +msgstr "-b --ignore-space-change Ignoruje zmìny v poètu mezer." + +#: src/diff.c:839 +msgid "-w --ignore-all-space Ignore all white space." +msgstr "-w --ignore-all-space Ignoruje v¹echny mezery." + +#: src/diff.c:840 src/sdiff.c:189 +msgid "-B --ignore-blank-lines Ignore changes whose lines are all blank." +msgstr "-B --ignore-blank-lines Ignoruje zmìny v pøípadì prázdných øádkù." + +#: src/diff.c:841 src/sdiff.c:190 +msgid "" +"-I RE --ignore-matching-lines=RE Ignore changes whose lines all match RE." +msgstr "" +"-I RV --ignore-matching-lines=RV Ignoruje zmìny na v¹ech øádcích\n" +" odpovídajících RV." + +#: src/diff.c:842 src/sdiff.c:191 +msgid "--strip-trailing-cr Strip trailing carriage return on input." +msgstr "--strip-trailing-cr Odstraní ukonèovací znak CR na vstupu." + +#: src/diff.c:844 +msgid "--binary Read and write data in binary mode." +msgstr "--binary Ète a zapisuje data v binárním re¾imu." + +#: src/diff.c:846 src/diff3.c:451 src/sdiff.c:192 +msgid "-a --text Treat all files as text." +msgstr "-a --text Pokládá v¹echny soubory za text." + +#: src/diff.c:848 +msgid "" +"-c -C NUM --context[=NUM] Output NUM (default 3) lines of copied " +"context.\n" +"-u -U NUM --unified[=NUM] Output NUM (default 3) lines of unified " +"context.\n" +" --label LABEL Use LABEL instead of file name.\n" +" -p --show-c-function Show which C function each change is in.\n" +" -F RE --show-function-line=RE Show the most recent line matching RE." +msgstr "" +"-c -C POÈ --context[=POÈ] Vypí¹e POÈ (implicitnì 3) øádky kopírovaného\n" +" kontextu.\n" +"-u -U POÈ --unified[=POÈ] Vypí¹e POÈ (implicitnì 3) øádky sjednoceného\n" +" kontextu.\n" +" -L POPIS --label POPIS Pou¾ije POPIS místo jména souboru.\n" +" -p --show-c-function U ka¾dé zmìny vypí¹e jméno C funkce, ve které se\n" +" tato zmìna nachází.\n" +" -F RV --show-function-line=RV Vypí¹e nejnovìj¹í øádky odpovídající RV." + +#: src/diff.c:853 +msgid "-q --brief Output only whether files differ." +msgstr "-q --brief Výstup pouze pøi rozdílných souborech." + +#: src/diff.c:854 +msgid "-e --ed Output an ed script." +msgstr "-e --ed Vytvoøí skript pro ed." + +#: src/diff.c:855 +msgid "--normal Output a normal diff." +msgstr "--normal Výstup bude v normálním diff formátu." + +#: src/diff.c:856 +msgid "-n --rcs Output an RCS format diff." +msgstr "-n --rcs Výstup bude ve formátu RCS diff." + +#: src/diff.c:857 +msgid "" +"-y --side-by-side Output in two columns.\n" +" -W NUM --width=NUM Output at most NUM (default 130) print columns.\n" +" --left-column Output only the left column of common lines.\n" +" --suppress-common-lines Do not output common lines." +msgstr "" +"-y --side-by-side Výstup ve dvou sloupcích.\n" +" -W POÈ --width=POÈ Vypí¹e maximálnì POÈ (implicitnì 130) znakù na " +"øádek.\n" +" --left-column Vypí¹e pouze levý sloupec spoleèných øádkù.\n" +" --suppress-common-lines Nevypí¹e spoleèné øádky." + +#: src/diff.c:861 +msgid "-D NAME --ifdef=NAME Output merged file to show `#ifdef NAME' diffs." +msgstr "" +"-D JMENO --ifdef=JMENO Vypí¹e slouèený soubor s rozdíly `#ifdef JMENO'." + +#: src/diff.c:862 +msgid "" +"--GTYPE-group-format=GFMT Similar, but format GTYPE input groups with GFMT." +msgstr "" +"--GTYPE-group-format=FMTS Podobné, ale formátuje vstupní skupiny GTYPE\n" +" podle FMTS." + +#: src/diff.c:863 +msgid "--line-format=LFMT Similar, but format all input lines with LFMT." +msgstr "" +"--line-format=FMTR Podobnì, ale formátuje v¹echny vstupní øádky podle FMTR." + +#: src/diff.c:864 +msgid "" +"--LTYPE-line-format=LFMT Similar, but format LTYPE input lines with LFMT." +msgstr "" +"--LTYPE-line-format=FMTR Podobné, ale formátuje vstupní øádky LTYPE podle " +"FMTR." + +#: src/diff.c:865 +msgid " LTYPE is `old', `new', or `unchanged'. GTYPE is LTYPE or `changed'." +msgstr "" +" LTYPE je `starý', `nový' nebo `nezmìnìn'. GTYPE je LTYPE nebo `zmìnìn'." + +#: src/diff.c:866 +msgid "" +" GFMT may contain:\n" +" %< lines from FILE1\n" +" %> lines from FILE2\n" +" %= lines common to FILE1 and FILE2\n" +" %[-][WIDTH][.[PREC]]{doxX}LETTER printf-style spec for LETTER\n" +" LETTERs are as follows for new group, lower case for old group:\n" +" F first line number\n" +" L last line number\n" +" N number of lines = L-F+1\n" +" E F-1\n" +" M L+1" +msgstr "" +" GFMT mù¾e obsahovat:\n" +" %< øádky ze SOUBOR1\n" +" %> øádky ze SOUBOR2\n" +" %= øádky spoleèné pro SOUBOR1 i SOUBOR2\n" +" %[-][DELKA][.[PRES]]{doxX}ZNAK formát stylu printf pro ZNAK\n" +" ZNAKy dále jsou pro novou skupinu, malými písmeny pro starou skupinu:\n" +" F èíslo prvního øádku\n" +" L èíslo posledního øádku\n" +" N poèet øádkù = L-F+1\n" +" E F-1\n" +" M L+1" + +#: src/diff.c:877 +msgid "" +" LFMT may contain:\n" +" %L contents of line\n" +" %l contents of line, excluding any trailing newline\n" +" %[-][WIDTH][.[PREC]]{doxX}n printf-style spec for input line number" +msgstr "" +" LFMT mù¾e obsahovat:\n" +" %L obsah øádku\n" +" %l obsah øádku, s vyjímkou znaku konce øádku\n" +" %[-][©ÍØKA][.[PØES]]{doxX}c formát stylu printf pro èíslo vstupního " +"øádku" + +#: src/diff.c:881 +msgid "" +" Either GFMT or LFMT may contain:\n" +" %% %\n" +" %c'C' the single character C\n" +" %c'\\OOO' the character with octal code OOO" +msgstr "" +" Jeden z GFMT nebo LFMT mù¾e obsahovat:\n" +" %% %\n" +" %c'C' jeden znak C\n" +" %c'\\000' znak s osmièkovým kódem 000" + +#: src/diff.c:886 +msgid "-l --paginate Pass the output through `pr' to paginate it." +msgstr "-l --paginate Výstup projde pøes `pr' pro pøestránkování." + +#: src/diff.c:887 src/sdiff.c:198 +msgid "-t --expand-tabs Expand tabs to spaces in output." +msgstr "-t --expand-tabs Ve výstupu pøevede tabulátory na mezery." + +#: src/diff.c:888 src/diff3.c:452 +msgid "-T --initial-tab Make tabs line up by prepending a tab." +msgstr "-T --initial-tab Na zaèátek øádkù se vlo¾í tabulátor." + +#: src/diff.c:890 +msgid "-r --recursive Recursively compare any subdirectories found." +msgstr "-r --recursive Rekurzívní porovnání v¹ech nalezených podadresáøù." + +#: src/diff.c:891 +msgid "-N --new-file Treat absent files as empty." +msgstr "-N --new-file Neexistující soubory pova¾uje za prázdné." + +#: src/diff.c:892 +msgid "--unidirectional-new-file Treat absent first files as empty." +msgstr "" +"--unidirectional-new-file Pøi porovnávání adresáøù pova¾uje neexistující\n" +" soubory v prvém adresáøi za prázdné." + +#: src/diff.c:893 +msgid "-s --report-identical-files Report when two files are the same." +msgstr "-s --report-identical-files Uvede pouze shodné soubory." + +#: src/diff.c:894 +msgid "-x PAT --exclude=PAT Exclude files that match PAT." +msgstr "-x VZOR --exclude=VZOR Vynechá soubory odpovídající VZORu." + +#: src/diff.c:895 +msgid "" +"-X FILE --exclude-from=FILE Exclude files that match any pattern in FILE." +msgstr "" +"-X SOUBOR --exclude-from=SOUBOR Vynechá soubory, které odpovídají\n" +" libovolnému vzorku ze SOUBORu." + +#: src/diff.c:896 +msgid "" +"-S FILE --starting-file=FILE Start with FILE when comparing directories." +msgstr "" +"-S SOUBOR --starting-file=SOUBOR Pøi porovnávání adresáøù zaène souborem\n" +" SOUBOR." + +#: src/diff.c:897 +msgid "" +"--from-file=FILE1 Compare FILE1 to all operands. FILE1 can be a directory." +msgstr "" +"--from-file=SOUBOR1 Porovná SOUBOR1 se v¹emi operandy. SOUBOR1 mù¾e být\n" +" adresáø." + +#: src/diff.c:898 +msgid "" +"--to-file=FILE2 Compare all operands to FILE2. FILE2 can be a directory." +msgstr "" +"--to-file=SOUBOR2 Porovná v¹echny operandy se SOUBOR2. SOUBOR2 mù¾e být\n" +" adresáø." + +#: src/diff.c:900 +msgid "--horizon-lines=NUM Keep NUM lines of the common prefix and suffix." +msgstr "" +"--horizon-lines=POÈET Ponechá POÈET shodných øádkù pøedpony a pøípony." + +#: src/diff.c:901 src/sdiff.c:200 +msgid "-d --minimal Try hard to find a smaller set of changes." +msgstr "-d --minimal Pokusí se nalézt nejmen¹í sadu zmìn." + +#: src/diff.c:902 +msgid "" +"--speed-large-files Assume large files and many scattered small changes." +msgstr "" +"--speed-large-files Pøedpokládá velké soubory a mnoho rozptýlených\n" +" drobných zmìn." + +#: src/diff.c:907 +msgid "" +"FILES are `FILE1 FILE2' or `DIR1 DIR2' or `DIR FILE...' or `FILE... DIR'." +msgstr "" +"SOUBORY jsou `SOUBOR1 SOUBOR2' nebo `ADRESAR1 ADRESAR2' nebo\n" +"`ADRESAR SOUBOR...' nebo `SOUBOR... ADRESAR'." + +#: src/diff.c:908 +msgid "" +"If --from-file or --to-file is given, there are no restrictions on FILES." +msgstr "" +"Pokud je uveden --from-file nebo --to-file, pak nejsou u SOUBORù ¾ádná " +"omezení." + +#: src/diff.c:909 src/diff3.c:474 src/sdiff.c:222 +msgid "If a FILE is `-', read standard input." +msgstr "Pokud SOUBOR bude `-', bude èten standardní vstup." + +#: src/diff.c:920 +#, c-format +msgid "Usage: %s [OPTION]... FILES\n" +msgstr "Pou¾ití: %s [PØEPÍNAÈ]... SOUBORY\n" + +#: src/diff.c:949 +#, c-format +msgid "conflicting %s option value `%s'" +msgstr "pro pøepínaè %s konfliktní hodnota `%s'" + +#: src/diff.c:962 +msgid "conflicting output style options" +msgstr "konfliktní pøepínaèe pro styl výstupu" + +#: src/diff.c:976 +msgid "regular empty file" +msgstr "obyèejný prázdný soubor" + +#: src/diff.c:976 +msgid "regular file" +msgstr "obyèejný soubor" + +#: src/diff.c:978 +msgid "directory" +msgstr "adresáø" + +#: src/diff.c:981 +msgid "block special file" +msgstr "speciální blokový soubor" + +#: src/diff.c:984 +msgid "character special file" +msgstr "speciální znakový soubor" + +#: src/diff.c:987 +msgid "fifo" +msgstr "roura" + +#: src/diff.c:991 +msgid "socket" +msgstr "soket" + +#: src/diff.c:994 +msgid "message queue" +msgstr "fronta zpráv" + +#: src/diff.c:997 +msgid "semaphore" +msgstr "semafor" + +#: src/diff.c:1000 +msgid "shared memory object" +msgstr "objekt sdílené pamìti" + +#: src/diff.c:1003 +msgid "typed memory object" +msgstr "typový pamì»ový objekt" + +#: src/diff.c:1006 +msgid "weird file" +msgstr "soubor neznámého typu" + +#: src/diff.c:1070 src/diff.c:1256 +#, c-format +msgid "Only in %s: %s\n" +msgstr "Pouze v %s: %s\n" + +#: src/diff.c:1193 +msgid "cannot compare `-' to a directory" +msgstr "`-' s adresáøem nelze porovnat" + +#: src/diff.c:1220 +msgid "-D option not supported with directories" +msgstr "-D pøepínaè nepodporuje práci s adresáøi" + +#: src/diff.c:1229 +#, c-format +msgid "Common subdirectories: %s and %s\n" +msgstr "Spoleèné podadresáøe: %s a %s\n" + +#: src/diff.c:1266 +#, c-format +msgid "File %s is a %s while file %s is a %s\n" +msgstr "Soubor %s je %s pokud soubor %s je %s\n" + +#: src/diff.c:1345 +#, c-format +msgid "Files %s and %s are identical\n" +msgstr "Soubory %s a %s jsou identické\n" + +#: src/diff3.c:26 +msgid "Written by Randy Smith." +msgstr "Autor: Randy Smith." + +#: src/diff3.c:328 +msgid "incompatible options" +msgstr "nekompatibilní pøepínaèe" + +#: src/diff3.c:368 +msgid "`-' specified for more than one input file" +msgstr "`-' zadáno pro více ne¾ jeden vstupní soubor" + +#: src/diff3.c:408 src/diff3.c:1232 src/diff3.c:1645 src/diff3.c:1700 +#: src/sdiff.c:305 src/sdiff.c:879 src/sdiff.c:890 +msgid "read failed" +msgstr "ètení selhalo" + +#: src/diff3.c:441 +msgid "-e --ed Output unmerged changes from OLDFILE to YOURFILE into MYFILE." +msgstr "" +"-e --ed Vypí¹e nespojené zmìny ze STARYSOUBOR k VASSOUBOR do MUJSOUBOR." + +#: src/diff3.c:442 +msgid "-E --show-overlap Output unmerged changes, bracketing conflicts." +msgstr "-E --show-overlap Vypí¹e neslouèené zmìny, konflikty v závorkách." + +#: src/diff3.c:443 +msgid "-A --show-all Output all changes, bracketing conflicts." +msgstr "-A --show-all Vypí¹e v¹echny rozdíly, konflikty v závorkách." + +#: src/diff3.c:444 +msgid "-x --overlap-only Output overlapping changes." +msgstr "-x --overlap-only Vypí¹e pøekrývající se zmìny." + +#: src/diff3.c:445 +msgid "-X Output overlapping changes, bracketing them." +msgstr "-X Vypí¹e pøekrývající se zmìny, uzavøené v závorkách." + +#: src/diff3.c:446 +msgid "-3 --easy-only Output unmerged nonoverlapping changes." +msgstr "-3 --easy-only Vypí¹e neslouèené nepøekrývající se zmìny." + +#: src/diff3.c:448 +msgid "-m --merge Output merged file instead of ed script (default -A)." +msgstr "-m --merge Vypí¹e spojený soubor místo ed skriptu (implicitnì -A)." + +#: src/diff3.c:449 +msgid "-L LABEL --label=LABEL Use LABEL instead of file name." +msgstr "-L POPIS --label=POPIS Pou¾ije POPIS místo jména souboru." + +#: src/diff3.c:450 +msgid "-i Append `w' and `q' commands to ed scripts." +msgstr "-i Pøidá pøíkazy `w' a `q' do skriptù pro ed." + +#: src/diff3.c:453 src/sdiff.c:202 +msgid "--diff-program=PROGRAM Use PROGRAM to compare files." +msgstr "--diff-program=PROGRAM Pou¾ij PROGRAM k porovnání souborù." + +#: src/diff3.c:465 +#, c-format +msgid "Usage: %s [OPTION]... MYFILE OLDFILE YOURFILE\n" +msgstr "Pou¾ití: %s [PØEPÍNAÈ]... MUJSOUBOR STARYSOUBOR VASSOUBOR\n" + +#: src/diff3.c:467 +msgid "Compare three files line by line." +msgstr "Porovnání tøí souborù øádek po øádku." + +#: src/diff3.c:673 +msgid "internal error: screwup in format of diff blocks" +msgstr "vnitøní chyba: chyba ve formátu diff blokù" + +#: src/diff3.c:971 +#, c-format +msgid "%s: diff failed: " +msgstr "%s: diff selhal: " + +#: src/diff3.c:993 +msgid "internal error: invalid diff type in process_diff" +msgstr "vnitøní chyba: nesprávný typ diffu v process_diff" + +#: src/diff3.c:1018 +msgid "invalid diff format; invalid change separator" +msgstr "neplatný formát diff souboru; neplatný oddìlovaè zmìny" + +#: src/diff3.c:1242 +msgid "invalid diff format; incomplete last line" +msgstr "neplatný formát diff souboru; nekompletní poslední øádek" + +#: src/diff3.c:1265 src/sdiff.c:273 +#, c-format +msgid "subsidiary program `%s' not executable" +msgstr "pomocný program `%s' není spustitelný" + +#: src/diff3.c:1268 src/sdiff.c:276 src/util.c:298 +#, c-format +msgid "subsidiary program `%s' not found" +msgstr "pomocný program `%s' nebyl nalezen" + +#: src/diff3.c:1272 src/sdiff.c:268 src/util.c:301 +#, c-format +msgid "subsidiary program `%s' failed" +msgstr "pomocný program `%s' selhal" + +#: src/diff3.c:1294 +msgid "invalid diff format; incorrect leading line chars" +msgstr "neplatný formát diff souboru; nesprávné úvodní znaky na øádku" + +#: src/diff3.c:1370 +msgid "internal error: invalid diff type passed to output" +msgstr "vnitøní chyba: nesprávný typ diffu pro výstup" + +#: src/diff3.c:1647 src/diff3.c:1704 +msgid "input file shrank" +msgstr "vstupní soubor se zmen¹il" + +#: src/dir.c:162 +#, c-format +msgid "cannot compare file names `%s' and `%s'" +msgstr "nemohu porovnat jména souborù `%s' a `%s'" + +#: src/sdiff.c:35 +msgid "Written by Thomas Lord." +msgstr "Autor: Thomas Lord." + +#: src/sdiff.c:183 +msgid "-o FILE --output=FILE Operate interactively, sending output to FILE." +msgstr "" +"-o SOUBOR --output=SOUBOR Interaktivní práce, výstup pùjde do SOUBORu." + +#: src/sdiff.c:185 +msgid "-i --ignore-case Consider upper- and lower-case to be the same." +msgstr "-i --ignore-case Nerozli¹uje velká a malá písmena." + +#: src/sdiff.c:188 +msgid "-W --ignore-all-space Ignore all white space." +msgstr "-W --ignore-all-space Ignoruje v¹echny mezery." + +#: src/sdiff.c:194 +msgid "-w NUM --width=NUM Output at most NUM (default 130) columns per line." +msgstr "" +"-w POÈ --width=POÈ Vypí¹e maximálnì POÈ (implicitnì 130) znakù na øádek." + +#: src/sdiff.c:195 +msgid "-l --left-column Output only the left column of common lines." +msgstr "-l --left-column Vypí¹e pouze levý sloupec spoleèných øádkù." + +#: src/sdiff.c:196 +msgid "-s --suppress-common-lines Do not output common lines." +msgstr "-s --suppress-common-lines Nevypisuje shodné øádky." + +#: src/sdiff.c:201 +msgid "" +"-H --speed-large-files Assume large files and many scattered small changes." +msgstr "" +"-H --speed-large-files Pøedpokládá velké soubory a mnoho rozptýlených\n" +" drobných zmìn." + +#: src/sdiff.c:214 +#, c-format +msgid "Usage: %s [OPTION]... FILE1 FILE2\n" +msgstr "Pou¾ití: %s [PØEPÍNAÈ]... SOUBOR1 SOUBOR2\n" + +#: src/sdiff.c:215 +msgid "Side-by-side merge of file differences." +msgstr "" + +#: src/sdiff.c:327 +msgid "cannot interactively merge standard input" +msgstr "interaktivnì nelze standardní vstup slouèit" + +#: src/sdiff.c:588 +msgid "both files to be compared are directories" +msgstr "oba soubory k porovnání jsou adresáøi" + +#: src/sdiff.c:853 +msgid "" +"ed:\tEdit then use both versions, each decorated with a header.\n" +"eb:\tEdit then use both versions.\n" +"el:\tEdit then use the left version.\n" +"er:\tEdit then use the right version.\n" +"e:\tEdit a new version.\n" +"l:\tUse the left version.\n" +"r:\tUse the right version.\n" +"s:\tSilently include common lines.\n" +"v:\tVerbosely include common lines.\n" +"q:\tQuit.\n" +msgstr "" +"ed:\tEditace - pou¾ije obì verze, ka¾dou obdaøí hlavièkou.\n" +"eb:\tEditace - pou¾ije obì verze.\n" +"el:\tEditace - pou¾ije levou verzi.\n" +"er:\tEditace - pou¾ije pravou verzi.\n" +"e:\tEditace nové verze.\n" +"l:\tPou¾ije levou verzi.\n" +"r:\tPou¾ije pravou verzi.\n" +"s:\tVtichosti vlo¾í spoleèné øádky.\n" +"v:\tUpozorní na vlo¾ení spoleèných øádkù.\n" +"q:\tUkonèení.\n" + +#~ msgid "context length specified twice" +#~ msgstr "délka kontextu zadána dvakrát" + +#~ msgid "multiple `--from-file' options" +#~ msgstr "více pøepínaèù `--from-file'" + +#~ msgid "multiple `--to-file' options" +#~ msgstr "více pøepínaèù `--to-file'" + +#~ msgid "--inhibit-hunk-merge Do not merge hunks." +#~ msgstr "--inhibit-hunk-merge Neslouèí èásti." + +#~ msgid "regular empty executable file" +#~ msgstr "obyèejný prázdný spustitelný soubor" + +#~ msgid "regular executable file" +#~ msgstr "obyèejný spustitelný soubor" diff --git a/src/apps/bin/diffutils-2.8.1/po/da.gmo b/src/apps/bin/diffutils-2.8.1/po/da.gmo new file mode 100644 index 0000000000000000000000000000000000000000..3af33a074484001a3c6ba28ebac79dba959249d4 GIT binary patch literal 22910 zcmb`O3y>YzdDnZ1?PSMx9Pi8PwVge?wscp!)1w(_*V2xpwMLrJXsmf@X7q|ywtD9F z+-cp{YCWp^yrfoq|9? zLxz`uF4Xd3@)4o$q|}iPt>v?*sSyW#H{W@Y;U{{&5hzzTqCf zX&C(OAb8VA5Zt#8exCcE4}v#80iFSW8=MM)2i^ic4n`o~Jn$j#&EPM9Zw1w^Q2h;p zcffZ9!Grri%7drf^9K_!e;nkyhyFA8To63` z0QeMm7NpL@FM;&`@Rz`G@T=f^g5VLx5S#+9x#y335~QC;)F1PD%WJ_C;2cOlZ}|a# zukVir!K06W&x3l;93K4$2wfii3P}HNeF!`W(uVqZE3^z|z+VH;1;Jx)0%_;5s~~fF z?1w@6c}(wV_ib+g4}!EQy1s1#mHl`aJ$Aka~}+oe7qNwloh@1^0m(2lO_Y zFJpY-TR_@-f;j{)fLk8_5lFvJ{0Yc>pJZ&oVK4>X34R7-o=^S@ka0fwr|$lp^c6fy z71g^9sz1i?u8)IHfS&`I+q?dizyCVO`t5ro$olOI!TsPS$anjG3WQhp{i=We`yjl% zpKnxe|9Ox#-G38A9`^qrNc;PL4&=N2zX?M3{r?e!zboR8$3Wf%-vJ&1zYT1__rU2f4`gI`m zf0{l5-aXA)X*^Fac~pP8*F4?;iXWZ?e-wNc{1uS4p8l^O>-7wEf<^Ec$XuS$yoI9o z2>4GxzJKPALHK%5<9QksUo)P;H4y$Ad>Le227el4{DZ&YpQ|6}8fv`IArzk(@TA8G z761O6Y7z7GPL-@%7L#&?ju0%(8m3P{@rKL$eIgIZ_k zeekOw>v&M~Wt_v0f_yhD{(?t_bN7Du(;)o~e+gtghkplzmxlinNPENo4SbSMUk^h6 z5oo9PBTFF9MwUUoA8CQmbmT)I^BMU#$hb#-3}o#_J_mj~_)8%482P6ld@}N{!TsQW z2cKX{q8H;nbPRkDyaWz_b&&QCp%3nx1izR2mk_Dn;-0>q)w=v+MDt&Q?+t=?e*~Nc ze-EVHBNWl=$Z3%A9-$reb42xoTE8Li*Fa?Bh~~}xQD|aO{09Awwm{_J=qEwOee|D$ z(CO$m96tZ8;CWOLGz-pxImmiEuXQ;I{vilIjq3dpcn)N3Mn4HMuhB1pb3t(IK9G4F zqpe^Tgg?~Iv9E*FI}Qz{SC5N63!uhNTgUH!rx2-e@CESu!71>|AoX9+eBk33-skT% z|1;eGTafSH!+~^(#0boj0se1SZyec^{vBTi>2LhgAoL#p0}y&ld^`9osBu$o;)g)y zHzEFEP0z5VvU6uHg7k6bZ-eg!e;uUW8TEtSo;(VUfm%oCGWmIsF;D&}$b8P~J@;ob z@Con>Am5!;KhS6De(*4O0i>NN(eIDI-vakBD&8O)zI0=f*L*Q?M&}jNkz_+uMT7URV(JPxjdp9Vh%La(`bkg?7E zE%0^VZ-ci%@y{bcF#jbG`p^G9_-0V;)Bky`pYREftfl1o{3K|=1(5YRFS;|o^FIqR z@AJO_LXY$R3uOKany2tOI1Jtd8TZ1^fQ)_NcR}d62uRN?YF^NJ5gwI(Uc3TAv&9dA z)L;C0Q1$)*WZsM40I9#k+%&Ew`VgNkF$USCr8ayF|1NEE|6mYY_*L*V;O~H}-GzSx zJ`8>xr2UKcf%JV*{XY%9A7p+PKMJy57e5QKju*cIs{YqN=zEDdYJQhyKMuxu+D->hDqX zdxip??XSWAj4hCi(3bpe$$lUjeUPHx=P8T!%Ki5jftM&>ps0_(M0o?{Wr}{Y6s_?` zDB@Akafl*1ZcsGNi1G=FXsO@dbrAej@CPW+ClGyEZ^?k>8=R#42<2~3^ka>Js}w`I zKq-E2_ZRD6i*k+fQ6HJq~s# zE0hJwBt^f^I*`5%eug61)9;5VAEs1w<9`o${4Q{=cvaH|dDBnYQ7v;Sa{pt>a4}srC8KlIN*H8v1KTFx7 z==aN%*HV6x@&QWk?|uH}?}I-|`6T79Q=X*g7dntENiW)8=5ZKYrX-Yk$~!3MDQ~3g zqpVW&L!V1mNzceu1;0oseuua?K=};ie#%iwh4Pmve}(cXN=|v0qTi2Ej!_<=+@O31 zrTCrV;-mJ)n297`i&HasW@gE>Q!_1WMq6g3-O8h+H9BDU?b}CjS1Xm%6=V3uWJ#;m zh|S7cltwE#ZJaJ@yf`;E=PPyJZqkuyujEmKwyUwBPGDTWJNr9sOe1N<^y zdSb*i{=$wIhun)3#fz18v)OK$yzM?SQLAdNe7&pTwX2t=#+S}syE=4reqrMDwQDa| z+cz(NaC%~CX=1^c^)zYat6`RJF}Z9#UNNhpi+yXmGX5qrQ5u_wF}53x_NFj3t$5Sa z(spNk(C`eRtVCIC-?ST5_r{S_WIbcdYLaHTovUeen#*zOyPy*$6z%bD*7(|{z3K^d z!c2!}o^e!C+Y>Y&c5i2B@R^Z-|94+tdee%>tvoB*baZX(d@*R^n=6e@mGy_ZTP9DV zgw?8P@>(_b;huzU?M36HwchEYg@(IyWq!gWnYj-ADud=aeE?AUdZz_*wQ6y-G6WwL z_1p(~U%sW8#d@-Cnby&J@!Zt>h*{ps;V>v@`O7kj__|x=P=A#}L&3hx@UNPzuEy!8 zeak&d&8)c?c!l?x$G*dDHQ_)XjN0bRDm09%qsBf-8jZMyptRTX1YQn9vv0-KO}4K<_P4-uD5M)N;~_(k){a;;3r5b~8=#*i@rDGD*w$*G-hHYKvLJ^|W0}qvnbEg}KRv zF_ggtv{G?{szhn7OPj62gqgmQ-VJqUI|#$P?e3P_XmM%9WHpJay%kS5DKe*hQ|^|w zVL>=5PEo`elIotXz)s6F4)e1_c{|-wuWNB*-I%#fE=7>9vF>_e-?Y=@1MQY2V0L2m z0#i5_$LmH{BC3^RNv~J`>uJ22+_ZzwI;&i&k)+mYr_i5ig{`O=hgLb8Df`%I>dm#d z<*6Z!W+|YmmMHhOdYW%nm2F$QR(r2eoNl+Wq*_>vyN-idG|>(Pp(5iSXsI<%)+erp zaA?gszty;A+&hj)_4+{k!uB50^J?iTG zl_*V&NyUB&gf-`!cHIZoNvQSOLe6 zW+{y$)ZB80Zu6?!GO-ME++5GaSBH%W!#K*e!gi~H;CKe>w3;#Gs6xJ0dm~O8(fYa; zy*vLgeVDDaH$#oN_^yXWr~sUwdYs$u+O5?_vXYB(r}U-gx8+9Esyog#C9^pio6WU0 zlIS?tx)bzc>(j=#nH`(Kj?>U;HC{d8?)>2W&@F=^WE!No{!Uxbeuj>P8#I*hLZ7$V zxyd@~>+LjW(pEba(wD?p5W23MjO5XB7~fov;7L|=`>3m(SPMrbTmfH+o@@h_T%MdI z$x2dt+U`lWvzFq2Ui>>{7J4Uz247iYrMwo=yF&JNTMm}OenBHlZrV(botnT;3X!bk zxN*YYN|Uc;;44Y83A2 z(^fsJNxw^KC21vjg1~60%uG~g-H;XMuyoe(VDNY2^|RW0wbklxdhtK$&CyAQE-uOvQSm(0PQu!LyT?@w7Eh^lV-0oB354u4^T+WV@b1u%k{RH-`^&?bu3t9pma8 za)v(;c4+KE(HN>ww)b8e^VPepi4>ND3x<9L4#u4ivC3W%u7s;N-qtNOi&8oeXl2cu zHs#|u;@*=N3!b!w)WR7ridH=ob*&(tkQ~~kMEPc$Jr6E{)Vb86TYFK~N?}z4X~Nak z050JMvHh${8LcL4^de`%u%cOPm(Q;&3jzbfZhY?*C}xJcYz1p34%z;CyT)=m(Yfhy z%enM-W$wa)y=MK}X6A~nX(v%PUhzBkqBQKN-Z%}d-L-o|=YH@pj*zCF;b-jHLZPH0 zRE^tv#H|(d2Fz*|O|f%xACJ)uq`1CWv0Yt%sbZZXxnH7FIceF3#AqwjGi0wXPPoUr zY@51UqQcC(HbzGE30A(GeQ#6#Z4hEb;l6k^MiwF{q-y?1TRTwhNsnrvA!(Hh&2G4#u_xkbkkSihUrCZ}rH zV0D~7DNX0--7DEmO~IPqvW;G2++zhwQg_8X96P{3n06SZEBIwyW?VSESnMUdAJ;O| zQ!`Umja#j9!rvAiwiKhJ#XT+*kBfV#14k3DRp;b^GgG*g3j}y0Zfp%ACQkJi^mAV` z#Fx~NTvR4%KlCnNhsbNi$m3-o#(xZ?S}Sb76hW&T@~HV#1wP zmCvC>7_!ksXt~I6&=LQFIQT8H+Q-aR5)(v;ZzlLLd6ai>`tj$A&#_~8HX%NAD^FIi zdCmwh6g_vgGT)SKb6U8=541=zOa=*KTp2v{u{H*;E~`NAAT2ZyLKP3d7B$ny5kv_IpqR4nHdNWV+AU+ zK8YA5JYuzwqDj=~?#i7t#9@;v94g=CYiV5gO4eTPtWom3Rdu`<4h1q;i#CRNU6&)) zp*mEtv9&1_8;>BgSMDs;V-0=N8k8(68cS)l@gKBtwO)#JgdO|hP(VwOz1DZv zLpzmbk|~fq$Tzs|sFhY#4uv;v+rQYWnvcpYvlpZxf`c;9!IXcD6XHYUD};12qkuy9 zCDG%^`cq}Ko_97RD?jwbmtXu~`5Y~^5?hx&jcXk?_1cC>bFo<~D-m#ETaJG3KG|7$ zCT?2dN zbLP_6!ot|>(iNnLO+6!E(+ME*Wuf=-Rbwcl&5@ua|D0Vv2oCv56T7E)hd! z(IqPLY)H*Strn*_{GSjrI2&;tHwMjkw87!S*=Q@y1_u_{_(@k1m1s1GBszAVrjaEb zeGT=txqu{WnMK%Xt?&8LTDwW4Zn~Y~2KJ0$shuw0XcJGIM2$6IB`YVc`}aQL~$=M4yO%ANG@8GzlX^hCn9*C=@$qou6pc7!Qzosi5Y(1Iunh93`)Tqem3pp8_+Vy(4jGq z%W2l;a+RolCYzFRdLg9zkq+S4$r zZC!k{P-+s1?W5m}6HK3-r#pW2M43<9nq4?m4UuO#|&WSW7V@ifUmoKBMQyC!%Yh2lL;&9OF_y05`bjNUH8;`{=e9hbyp63digsqGb93X`i)<}XF7 z8wuWhe*)8u-VCO)hGYp>(55)q8e*zFbC}{AMPk$RZT22DlhxB?!=*Lx=60$hoITQ+ zPNkh%H=juo>gUpG;4!)|L8`Fn@+~B!FPtd8EV7#*wG-`}p30D;PEbZTq7-dxdrsOk za5lc$`^XQ6ArWR<6{T8hvo0IAak-!>dOB*fYZ|`GaJtA&6`jn$)^6P1Ey0Os%ou9! zlr?k4-FfYa#_`r9Vnk zET{|WQFbkAa4=krS#i6s(CBx|gu)a-F?pWJl9n$_H!MJZtDp*RNZ?978Y zgDIoW)vVD`-~_hXAk)xhL7AtvWknr80edr{)_U@y`uVD#ove(>M{s;~$lQgm_RNoh zg>a~4^sL#?MDdDbCg2d~A8Zgm=0VPRgqHlUjyrm?r5t^weM5As!hul8-WDf9w!L0@ zZOfZ-E!fGGwFYs#6l|z#$C6m3jtFIz+;>l&f{V*mEQ#1mH#!VYv$B)$js|m43f09~ zO{hqr(w!TRn~aUcStijNyW;Y0)Z^o;EXIUN~o`?h>y2 zt=0AJIzf(MN1KFOCR`zH-S|g-ANpRIc}S-Lxcz>&?76 zbE~_s@ca5LH+QRk;X9b8gZr$sZz-~p2bjxUbFna2`owK3(oQq0;~Pn$tQe7&g5|+w>t^cknB`<-f~lmrmUlGV@SprSz71JN;|lNPoJCRZER0=mVH8g zmZO?`|5O=}a2Zkc(Fm1U5A! zZehHnIC}H8L=*(Dfy#7=TXlQ>sD&)_h&<`UCvKH;?3?P(-YVa!Rh%0BF39c#;pw<` z%PM8-x%9J*|B5y1&*+*=QLWlE$VItRlcY#KWY^_M$-rZ`-FC9nptM5DiOcSCYe!W% zHaL*|$zAU4E?U#`l9?QvnVFcD9N-mF2w+W{Jd&`PxVa4k?*sOG#t(&J9x`wTrGQFIB=iMjQLyX1O%X za?(}-keOw7iQOK{oGkbJu6s)>El6C~aVgp(o6CN`Yqpo$mlid4%lHzb)H^MdA1Z^@ zthXC&`ND{mO9#L=?V4~l^o9%T0S+laIH6nauH8%8t#aJ*Oz=&@!*6m4OJ!5pb9$Dr? z>nwF`Wg6FQmY7y&_q?wu+-?qrMEXVNFIox`jg>t=-0Q+|?wxvB&z{u<; z2Mi&zeg}sX&J4LJ730_=#m6ld9n$+Q{JAp$Y&zQLnsB;+hN5(7t&l0VN_5ZSHYF^(LktHGg<{nV>f=#a_l42}a~`b)2RvKWZf+)dfG z)So0)%<^6omBz7Gl9(U2wh3;py&B=`%cNNnv%@4+OeVr{pqGU!^fU0CI2uX-y;`R-bYtdTM%AZoixR%J>{I-P^&;O}J_ zV}&c5$UwH3k6xY|BYrVQc+y|&cw_aBvdR1hQbXiK`075VOp!;Yc634Tg}<@YDQfRy zmp3N;-AlGoPIrIZM^&p5dcr+^NaZ$NBk)lnj;6I$#x=6qz@?d4=ZR;yDwZS=@75|g zPfD876HB7^7c+I65KabAZZY%WK%w+7OG~>;10ezAou8m2$eXy}BCTdQs&%Sl;THL4 z{&`Nq*#-x?>_JctVO=?Baru$sNQKF)PF0oS9r+X8IJ-?iD_ewu9O^$A77oVf}Qo?OvS7jG(c7AfUBTvSL)Z6RJMDud8)}(RmK7;F=ek=pqc)i^?!3#Z2 zyDE1b*EtMY0-w0Nv@>vWo>Ubs>NX=PZJ&-RDqgg6)C-X}EBoR};OLpD)UDdz zJ7LXwN}+c^>_Hc)?;L~bctX3D?m&Fon;ydF7gM7a?V3m%AoL3@&g| zqAluEUZW{>%|AL&JR*0^Kf3B4DS6F5B6UrBOqaQ~G&Oy3Y}gZMrR3&koIP&oFs)vQZs7zS`6^ariWx;uF_;T3mor%fz*w=Y5H5 zz0Y?fuF>?4ytO5FB*vgCE`v>S(oS#V7UaiZVH<7XI=Fkq<+!zFoA4=Yl~CDXI-6AF z9S&hiU(+AURrSXZN?WTdB)-C51ls$UBtLK5W!1W-0O{qv^w|TQ!rL%sPZfqNSN*w(Hrs1lD%-4BqCh(R9D=mJ7sRzAIjj zGQh*K>eY(gzAQu$=p-`EN9{-ZL+qO$J zoPIc>tTcLmQ3oa=C7^ggcAJE=+?^NCNp7>x`q3}OD@1wVFQN%ZSkmfpi%W5fZR&*GGW8wVSWBIbF-Gy2ObDF zW{oYDQ>@ig1^-}2n1ENT#asU7T literal 0 HcmV?d00001 diff --git a/src/apps/bin/diffutils-2.8.1/po/da.po b/src/apps/bin/diffutils-2.8.1/po/da.po new file mode 100644 index 0000000000..368d076bce --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/po/da.po @@ -0,0 +1,931 @@ +# Danish diffutils translation po-file +# Copyright (C) 2000 Free Software Foundation, Inc. +# Claus Hindsgaul , 2000-2002. +# +msgid "" +msgstr "" +"Project-Id-Version: diffutils 2.7.10\n" +"POT-Creation-Date: 2002-04-05 14:10-0800\n" +"PO-Revision-Date: 2002-03-12 14:51GMT\n" +"Last-Translator: Claus Hindsgaul \n" +"Language-Team: Danish \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=ISO-8859-1\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 0.9.5\n" + +#: lib/c-stack.c:188 +msgid "program error" +msgstr "programfejl" + +#: lib/c-stack.c:189 +msgid "stack overflow" +msgstr "stakoverløb" + +#: lib/error.c:128 lib/error.c:156 +msgid "Unknown system error" +msgstr "Ukendt systemfejl" + +#: lib/freesoft.c:27 +msgid "" +"This program comes with NO WARRANTY, to the extent permitted by law.\n" +"You may redistribute copies of this program\n" +"under the terms of the GNU General Public License.\n" +"For more information about these matters, see the file named COPYING." +msgstr "" +"Dette program kommer HELT UDEN GARANTI i den udstrækning, loven tillader " +"det.\n" +"Du må videredistribuere kopier af dette program\n" +"under betingelserne i GNU General Public License (GPL).\n" +"Se filen COPYING for flere oplysninger om dette." + +#: lib/getopt.c:693 +#, c-format +msgid "%s: option `%s' is ambiguous\n" +msgstr "%s: tilvalg '%s' er flertydigt\n" + +#: lib/getopt.c:718 +#, c-format +msgid "%s: option `--%s' doesn't allow an argument\n" +msgstr "%s: tilvalg '--%s' tillader ikke et parameter\n" + +#: lib/getopt.c:723 +#, c-format +msgid "%s: option `%c%s' doesn't allow an argument\n" +msgstr "%s: tilvalg '%c%s' tillader ikke et parameter\n" + +#: lib/getopt.c:741 lib/getopt.c:914 +#, c-format +msgid "%s: option `%s' requires an argument\n" +msgstr "%s: tilvalg '--%s' tillader ikke et parameter\n" + +#: lib/getopt.c:770 +#, c-format +msgid "%s: unrecognized option `--%s'\n" +msgstr "%s: ukendt tilvalg '--%s'\n" + +#: lib/getopt.c:774 +#, c-format +msgid "%s: unrecognized option `%c%s'\n" +msgstr "%s: ukendt tilvalg '%c%s'\n" + +#: lib/getopt.c:800 +#, c-format +msgid "%s: illegal option -- %c\n" +msgstr "%s: ugyldigt tilvalg -- %c\n" + +#: lib/getopt.c:803 +#, c-format +msgid "%s: invalid option -- %c\n" +msgstr "%s: ugyldigt tilvalg -- %c\n" + +#: lib/getopt.c:833 lib/getopt.c:963 +#, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "%s: tilvalg kræver et parameter -- %c\n" + +#: lib/getopt.c:880 +#, c-format +msgid "%s: option `-W %s' is ambiguous\n" +msgstr "%s: tilvalget '-W %s' er flertydigt\n" + +#: lib/getopt.c:898 +#, c-format +msgid "%s: option `-W %s' doesn't allow an argument\n" +msgstr "%s: tilvalget '-W %s' tillader ikke et parameter\n" + +#: lib/regex.c:1367 +msgid "Success" +msgstr "Succes" + +#: lib/regex.c:1370 +msgid "No match" +msgstr "Ingen match" + +#: lib/regex.c:1373 +msgid "Invalid regular expression" +msgstr "Ugyldigt regulært udtryk" + +#: lib/regex.c:1376 +msgid "Invalid collation character" +msgstr "Ugyldig sammenlignings-tegn" + +#: lib/regex.c:1379 +msgid "Invalid character class name" +msgstr "Ugyldigt navn på tegn-klasse" + +#: lib/regex.c:1382 +msgid "Trailing backslash" +msgstr "Efterstillet backslash" + +#: lib/regex.c:1385 +msgid "Invalid back reference" +msgstr "Ugyldig bagud-reference" + +#: lib/regex.c:1388 +msgid "Unmatched [ or [^" +msgstr "Uparret [ eller [^" + +#: lib/regex.c:1391 +msgid "Unmatched ( or \\(" +msgstr "Uparret ( eller \\(" + +#: lib/regex.c:1394 +msgid "Unmatched \\{" +msgstr "Uparret \\{" + +#: lib/regex.c:1397 +msgid "Invalid content of \\{\\}" +msgstr "Ugyldigt indhold af \\{\\}" + +#: lib/regex.c:1400 +msgid "Invalid range end" +msgstr "Ugyldig område-afslutning" + +#: lib/regex.c:1403 +msgid "Memory exhausted" +msgstr "Hukommelse opbrugt" + +#: lib/regex.c:1406 +msgid "Invalid preceding regular expression" +msgstr "Ugyldigt foranstillet regulært udtryk" + +#: lib/regex.c:1409 +msgid "Premature end of regular expression" +msgstr "For tidlig afslutning på regulært udtryk" + +#: lib/regex.c:1412 +msgid "Regular expression too big" +msgstr "For stort regulært udtryk" + +#: lib/regex.c:1415 +msgid "Unmatched ) or \\)" +msgstr "Uparret ) eller \\)" + +#: lib/regex.c:8034 +msgid "No previous regular expression" +msgstr "Intet foranstillet regulært udtryk" + +#: lib/xmalloc.c:63 +msgid "memory exhausted" +msgstr "hukommelse opbrugt" + +#: src/analyze.c:809 src/diff.c:1283 +#, c-format +msgid "Files %s and %s differ\n" +msgstr "Filerne %s og %s er forskellige\n" + +#: src/analyze.c:812 +#, c-format +msgid "Binary files %s and %s differ\n" +msgstr "Binære filer %s og %s er forskellige\n" + +#: src/analyze.c:1058 src/diff3.c:1413 src/util.c:526 +msgid "No newline at end of file" +msgstr "Intet linjeskift ved filafslutning" + +#: src/cmp.c:43 +msgid "Written by Torbjorn Granlund and David MacKenzie." +msgstr "Skrevet af Torbjorn Granlund og David MacKenzie." + +#: src/cmp.c:118 src/diff.c:817 src/diff3.c:427 src/sdiff.c:168 +#, c-format +msgid "Try `%s --help' for more information." +msgstr "Prøv '%s --help' for mere information." + +#: src/cmp.c:137 +#, c-format +msgid "invalid --ignore-initial value `%s'" +msgstr "ugyldig '--ignore-initial'-værdi `%s'" + +#: src/cmp.c:146 +msgid "options -l and -s are incompatible" +msgstr "tilvalgene -l og -s er inkompatible" + +#: src/cmp.c:154 src/diff.c:826 src/diff3.c:435 src/sdiff.c:177 +#: src/sdiff.c:313 src/sdiff.c:320 src/sdiff.c:910 src/util.c:194 +#: src/util.c:286 src/util.c:293 +msgid "write failed" +msgstr "skrivning mislykkedes" + +#: src/cmp.c:156 src/diff.c:828 src/diff.c:1354 src/diff3.c:437 +#: src/sdiff.c:179 +msgid "standard output" +msgstr "standard-ud" + +#: src/cmp.c:160 +msgid "-b --print-bytes Print differing bytes." +msgstr "-b --print-byte Vis afvigende byte." + +#: src/cmp.c:161 +msgid "-i SKIP --ignore-initial=SKIP Skip the first SKIP bytes of input." +msgstr "" +"-i SPRING --ignore-initial=SPRING Overspring de første SPRING byte i " +"inddata." + +#: src/cmp.c:162 +msgid "-i SKIP1:SKIP2 --ignore-initial=SKIP1:SKIP2" +msgstr "-i SPRING1:SPRING2 --ignore-initial=SPRING1:SPRING2" + +#: src/cmp.c:163 +msgid "" +" Skip the first SKIP1 bytes of FILE1 and the first SKIP2 bytes of FILE2." +msgstr "" +" Overspring de første SPRING1 byte i FIL1 og de første SPRING2 byte i FIL2." + +#: src/cmp.c:164 +msgid "-l --verbose Output byte numbers and values of all differing bytes." +msgstr "-l --verbose Vis antal byte og værdierne for alle afvigende byte." + +#: src/cmp.c:165 +msgid "-n LIMIT --bytes=LIMIT Compare at most LIMIT bytes." +msgstr "-n GRÆNSE --bytes=GRÆNSE Sammenlign højst GRÆNSE byte." + +#: src/cmp.c:166 +msgid "-s --quiet --silent Output nothing; yield exit status only." +msgstr "" +"-s --quiet --silent Ingen udlæsning; sæt kun en afslutnings-slut-kode." + +#: src/cmp.c:167 src/diff.c:904 src/diff3.c:455 src/sdiff.c:204 +msgid "-v --version Output version info." +msgstr "-v --version Vis versions-info." + +#: src/cmp.c:168 src/diff.c:905 src/diff3.c:456 src/sdiff.c:205 +msgid "--help Output this help." +msgstr "--help Vis denne hjælp." + +#: src/cmp.c:177 +#, c-format +msgid "Usage: %s [OPTION]... FILE1 [FILE2 [SKIP1 [SKIP2]]]\n" +msgstr "Brug: %s [TILVALG]... FIL1 [FIL2 [SPRING1 [SPRING2]]]\n" + +#: src/cmp.c:179 +msgid "Compare two files byte by byte." +msgstr "Sammenlign to filer byte for byte." + +#: src/cmp.c:183 +msgid "SKIP1 and SKIP2 are the number of bytes to skip in each file." +msgstr "" +"SPRING1 og SPRING2 er antallet af byte, der skal overspringes i hver fil." + +#: src/cmp.c:184 +msgid "" +"SKIP values may be followed by the following multiplicative suffixes:\n" +"kB 1000, K 1024, MB 1,000,000, M 1,048,576,\n" +"GB 1,000,000,000, G 1,073,741,824, and so on for T, P, E, Z, Y." +msgstr "" +"SPRING-værdier kan efterfølges af følgende enheder:\n" +"kB 1000, K 1024, MB 1,000,000, M 1,048,576,\n" +"GB 1,000,000,000, G 1,073,741,824, og så videre for T, P, E, Z, Y." + +#: src/cmp.c:187 +msgid "If a FILE is `-' or missing, read standard input." +msgstr "Såfremt en FIL er '_' eller mangler, læses fra standard inddata." + +#: src/cmp.c:188 src/diff.c:911 src/diff3.c:475 src/sdiff.c:223 +msgid "Report bugs to ." +msgstr "Raportér programfejl på engelsk til ." + +#: src/cmp.c:231 +#, c-format +msgid "invalid --bytes value `%s'" +msgstr "ugyldig '--bytes'-værdi `%s'" + +#: src/cmp.c:258 src/diff.c:734 src/diff3.c:333 src/sdiff.c:558 +#, c-format +msgid "missing operand after `%s'" +msgstr "manglende operant efter '%s'" + +#: src/cmp.c:270 src/diff.c:736 src/diff3.c:335 src/sdiff.c:560 +#, c-format +msgid "extra operand `%s'" +msgstr "ekstra operant '%s'" + +#: src/cmp.c:477 +#, c-format +msgid "%s %s differ: byte %s, line %s\n" +msgstr "%s %s afviger: byte %s, linje %s\n" + +#: src/cmp.c:495 +#, c-format +msgid "%s %s differ: byte %s, line %s is %3o %s %3o %s\n" +msgstr "%s %s afviger: tegn %s, linje %s er %3o %s %3o %s\n" + +#: src/cmp.c:543 +#, c-format +msgid "cmp: EOF on %s\n" +msgstr "cmp: filafslutning på %s\n" + +#: src/diff.c:41 +msgid "" +"Written by Paul Eggert, Mike Haertel, David Hayes,\n" +"Richard Stallman, and Len Tower." +msgstr "" +"Skrevet af Paul Eggert, Mike Haertel, David Hayes,\n" +"Richard Stallman og Len Tower." + +#: src/diff.c:322 +#, c-format +msgid "invalid context length `%s'" +msgstr "ugyldig indholdslængde '%s'" + +#: src/diff.c:405 +msgid "pagination not supported on this host" +msgstr "paginering understøttes ikke af denne vært" + +#: src/diff.c:420 src/diff3.c:315 +msgid "too many file label options" +msgstr "for mange fil-mærke tilvalg" + +#: src/diff.c:498 +#, c-format +msgid "invalid width `%s'" +msgstr "ugyldig bredde '%s'" + +#: src/diff.c:502 +msgid "conflicting width options" +msgstr "modstridende breddeangivelser" + +#: src/diff.c:526 +#, c-format +msgid "invalid horizon length `%s'" +msgstr "ugyldig horisont-længde '%s'" + +#: src/diff.c:629 +#, c-format +msgid "`-%ld' option is obsolete; use `-%c %ld'" +msgstr "Tilvalget '-%ld' er forældet; benyt '-%c %ld'" + +#: src/diff.c:641 +#, c-format +msgid "`-%ld' option is obsolete; omit it" +msgstr "Tilvalget '-%ld' er forældet; udelad det" + +#: src/diff.c:709 +msgid "--from-file and --to-file both specified" +msgstr "både --from-file og --to-file er angivet" + +#: src/diff.c:832 +msgid "Compare files line by line." +msgstr "Sammenlign filer linje for linje" + +#: src/diff.c:834 +msgid "-i --ignore-case Ignore case differences in file contents." +msgstr "-i --ignore-case Ignorér versalforskelle i filindholdet" + +#: src/diff.c:835 +msgid "--ignore-file-name-case Ignore case when comparing file names." +msgstr "" +"--ignore-file-name-case Ignorér versalforskelle ved sammenligning af " +"filnavne." + +#: src/diff.c:836 +msgid "--no-ignore-file-name-case Consider case when comparing file names." +msgstr "" +"--no-ignore-file-name-case Bemærk versalforskelle, når filnavne " +"sammenlignes." + +#: src/diff.c:837 src/sdiff.c:186 +msgid "-E --ignore-tab-expansion Ignore changes due to tab expansion." +msgstr "" +"-E --ignore-tab-expansion Ignore ændringer, der skyldes tabulatoromsætning." + +#: src/diff.c:838 src/sdiff.c:187 +msgid "-b --ignore-space-change Ignore changes in the amount of white space." +msgstr "" +"-b --ignore-space-change Ignorér ændringer i antallet af mellemrumstegn." + +#: src/diff.c:839 +msgid "-w --ignore-all-space Ignore all white space." +msgstr "-w --ignore-all-space Ignorér alle mellemrums-tegn." + +#: src/diff.c:840 src/sdiff.c:189 +msgid "-B --ignore-blank-lines Ignore changes whose lines are all blank." +msgstr "" +"-B --ignore-blank-lines Ignorér ændringer med udelukkende tomme linjer." + +#: src/diff.c:841 src/sdiff.c:190 +msgid "" +"-I RE --ignore-matching-lines=RE Ignore changes whose lines all match RE." +msgstr "" +"-I MØNSTER --ignore-matching-lines=MØNSTER Ignorér ændringer, hvis linjer " +"alle matcher MØNSTER." + +#: src/diff.c:842 src/sdiff.c:191 +msgid "--strip-trailing-cr Strip trailing carriage return on input." +msgstr "" +"--strip-trailing-cr Fjern afsluttende vognretur (carriage return) i inddata." + +#: src/diff.c:844 +msgid "--binary Read and write data in binary mode." +msgstr "--binary Læs og skriv data binært." + +#: src/diff.c:846 src/diff3.c:451 src/sdiff.c:192 +msgid "-a --text Treat all files as text." +msgstr "-a --text Behandl alle filer som tekst." + +#: src/diff.c:848 +msgid "" +"-c -C NUM --context[=NUM] Output NUM (default 3) lines of copied " +"context.\n" +"-u -U NUM --unified[=NUM] Output NUM (default 3) lines of unified " +"context.\n" +" --label LABEL Use LABEL instead of file name.\n" +" -p --show-c-function Show which C function each change is in.\n" +" -F RE --show-function-line=RE Show the most recent line matching RE." +msgstr "" +"-c -C ANTAL --context[=ANTAL] Udlæs ANTAL (standard 3) linjer af kopieret " +"kontekst.\n" +"-u -U ANTAL --unified[=ANTAL] Udlæs ANTAL (standard 3) linjer af unified " +"kontekst.\n" +" -L MÆRKE --label MÆRKE Brug MÆRKE i stedet for filnavn.\n" +" -p --show-c-function Vis hvilken C funktion hver ændring er i.\n" +" -F MØNSTER --show-function-line=MØNSTER Vis den sidste foregående linje, " +"der matcher MØNSTER." + +#: src/diff.c:853 +msgid "-q --brief Output only whether files differ." +msgstr "-q --brief Undersøg kun om filerne er ens eller ej." + +#: src/diff.c:854 +msgid "-e --ed Output an ed script." +msgstr "-e --ed Udlæs et ed skript." + +#: src/diff.c:855 +msgid "--normal Output a normal diff." +msgstr "--normal Udlæs en almindelig diff." + +#: src/diff.c:856 +msgid "-n --rcs Output an RCS format diff." +msgstr "-n --rcs Udlæs en diff i RCS-format." + +#: src/diff.c:857 +msgid "" +"-y --side-by-side Output in two columns.\n" +" -W NUM --width=NUM Output at most NUM (default 130) print columns.\n" +" --left-column Output only the left column of common lines.\n" +" --suppress-common-lines Do not output common lines." +msgstr "" +"-y --side-by-side Udlæs i to kolonner.\n" +" -W ANTAL --width=ANTAL Udlæs højst ANTAL (standard 130) skriftsøjler.\n" +" --left-column Vis kun venstre kolonne af identiske linjer.\n" +" --suppress-common-lines Udlæs ikke sammenfaldende linjer." + +#: src/diff.c:861 +msgid "-D NAME --ifdef=NAME Output merged file to show `#ifdef NAME' diffs." +msgstr "" +"-D NAVN --ifdef=NAVN Udlæs flettet fil for at vise '#ifdef NAVN' ændringer." + +#: src/diff.c:862 +msgid "" +"--GTYPE-group-format=GFMT Similar, but format GTYPE input groups with GFMT." +msgstr "" +"--GTYPE-group-format=GFMT Det samme, men formatér GTYPE inddata grupper med " +"GFMT" + +#: src/diff.c:863 +msgid "--line-format=LFMT Similar, but format all input lines with LFMT." +msgstr "" +"--line-format=LFMT Det samme, men formatér alle indlæste linjer med LFMT." + +#: src/diff.c:864 +msgid "" +"--LTYPE-line-format=LFMT Similar, but format LTYPE input lines with LFMT." +msgstr "" +"--LTYPE-line-format=LFMT Det samme, men formatér LTYPE inddata med LFMT" + +#: src/diff.c:865 +msgid " LTYPE is `old', `new', or `unchanged'. GTYPE is LTYPE or `changed'." +msgstr "" +" LTYPE er 'gammel', 'ny' eller 'uændret'. GTYPE er LTYPE eller 'ændret'." + +#: src/diff.c:866 +msgid "" +" GFMT may contain:\n" +" %< lines from FILE1\n" +" %> lines from FILE2\n" +" %= lines common to FILE1 and FILE2\n" +" %[-][WIDTH][.[PREC]]{doxX}LETTER printf-style spec for LETTER\n" +" LETTERs are as follows for new group, lower case for old group:\n" +" F first line number\n" +" L last line number\n" +" N number of lines = L-F+1\n" +" E F-1\n" +" M L+1" +msgstr "" +" GFMT må indeholde:\n" +" %< linjer fra FIL1\n" +" %> linjer fra FIL2\n" +" %= linjer, der er fælles mellem FIL1 og FIL2\n" +" %[-][BREDDE][.[PRÆC]]{doxX}BOGSTAV printf-type specifikation for " +"BOGSTAV\n" +" BOGSAV er som nedenfor for en ny gruppe, små bogstaver for gammel " +"gruppe:\n" +" F første linjenummer\n" +" L sidste linjenummer\n" +" N antal linjer = L-F+1\n" +" E F-1\n" +" M L+1" + +#: src/diff.c:877 +msgid "" +" LFMT may contain:\n" +" %L contents of line\n" +" %l contents of line, excluding any trailing newline\n" +" %[-][WIDTH][.[PREC]]{doxX}n printf-style spec for input line number" +msgstr "" +" LFMT må indeholde:\n" +" %L indhold af linje\n" +" %l indhold af linje, undtagen eventuel følgende linjeskift\n" +" %[-][BREDDE][.[PRÆC]]{doxX}n printf-stil angivelse af inddata " +"linjenummer" + +#: src/diff.c:881 +msgid "" +" Either GFMT or LFMT may contain:\n" +" %% %\n" +" %c'C' the single character C\n" +" %c'\\OOO' the character with octal code OOO" +msgstr "" +" Enten kan GFMT eller LFMT indeholde:\n" +" %% %\n" +" %c'T' tegnet T alene\n" +" %c'\\000' tegnet med oktal kode 000" + +#: src/diff.c:886 +msgid "-l --paginate Pass the output through `pr' to paginate it." +msgstr "-l --paginate Led uddata gennem 'pr' for at sideinddele det." + +#: src/diff.c:887 src/sdiff.c:198 +msgid "-t --expand-tabs Expand tabs to spaces in output." +msgstr "-t --expand-tabs Lav tabulatorer om til mellemrum i output." + +#: src/diff.c:888 src/diff3.c:452 +msgid "-T --initial-tab Make tabs line up by prepending a tab." +msgstr "" +"-T --initial-tab Få tabulatorer på linje ved at forudstille en tabulator." + +#: src/diff.c:890 +msgid "-r --recursive Recursively compare any subdirectories found." +msgstr "-r --recursive Sammenlign alle fundne underkataloger rekursivt." + +#: src/diff.c:891 +msgid "-N --new-file Treat absent files as empty." +msgstr "-N --new-file Behandl manglende filer som var de tomme." + +#: src/diff.c:892 +msgid "--unidirectional-new-file Treat absent first files as empty." +msgstr "" +"--unidirectional-new-file Behandl første manglende filer som var de tomme." + +#: src/diff.c:893 +msgid "-s --report-identical-files Report when two files are the same." +msgstr "-s --report-identical-files Rapportér hvis to filer er ens." + +#: src/diff.c:894 +msgid "-x PAT --exclude=PAT Exclude files that match PAT." +msgstr "-x MØNSTER --exclude=MØNSTER Udelad filer, det matcher MØNSTER." + +#: src/diff.c:895 +msgid "" +"-X FILE --exclude-from=FILE Exclude files that match any pattern in FILE." +msgstr "" +"-X FIL --exclude-from=FIL Udelad filer, der matcher ethvert mønster i FIL." + +#: src/diff.c:896 +msgid "" +"-S FILE --starting-file=FILE Start with FILE when comparing directories." +msgstr "-S FIL --starting-file=FIL Star med FIL, når kataloger sammenlignes." + +#: src/diff.c:897 +msgid "" +"--from-file=FILE1 Compare FILE1 to all operands. FILE1 can be a directory." +msgstr "" +"--from-file=FIL1 Sammenlign FIL1 med alle operanter. FIL1 må godt være et " +"katalog." + +#: src/diff.c:898 +msgid "" +"--to-file=FILE2 Compare all operands to FILE2. FILE2 can be a directory." +msgstr "" +"--to-file=FIL1 Sammenlign alle operanter med FIL2. FIL2 må godt være et " +"katalog." + +#: src/diff.c:900 +msgid "--horizon-lines=NUM Keep NUM lines of the common prefix and suffix." +msgstr "" +"--horizon-lines=ANTAL Behold ANTAL linjer af fælles præfix og suffiks." + +#: src/diff.c:901 src/sdiff.c:200 +msgid "-d --minimal Try hard to find a smaller set of changes." +msgstr "-d --minimal Grundigt forsøg på at finde et mindre antal ændringer." + +#: src/diff.c:902 +msgid "" +"--speed-large-files Assume large files and many scattered small changes." +msgstr "" +"--speed-large-files Antag store filer og mange spredte, små ændringer." + +#: src/diff.c:907 +msgid "" +"FILES are `FILE1 FILE2' or `DIR1 DIR2' or `DIR FILE...' or `FILE... DIR'." +msgstr "" +"FILER er 'FIL1 FIL2' eller 'KATALOG1 KATALOG2' eller 'KATALOG FIL...' eller " +"'FIL... KATALOG'." + +#: src/diff.c:908 +msgid "" +"If --from-file or --to-file is given, there are no restrictions on FILES." +msgstr "" +"hvis --from-file eller --to-file er angivet, er der ingen restriktioner på " +"FILER." + +#: src/diff.c:909 src/diff3.c:474 src/sdiff.c:222 +msgid "If a FILE is `-', read standard input." +msgstr "Såfremt en FIL er '-', læses fra standard-ind." + +#: src/diff.c:920 +#, c-format +msgid "Usage: %s [OPTION]... FILES\n" +msgstr "Brug: %s [TILVALG]... FILER\n" + +#: src/diff.c:949 +#, c-format +msgid "conflicting %s option value `%s'" +msgstr "modstridende værdi for %s-tilvalget: '%s'" + +#: src/diff.c:962 +msgid "conflicting output style options" +msgstr "modstridende valg af uddata-stil" + +#: src/diff.c:976 +msgid "regular empty file" +msgstr "almindelig tom fil" + +#: src/diff.c:976 +msgid "regular file" +msgstr "almindelig fil" + +#: src/diff.c:978 +msgid "directory" +msgstr "katalog" + +#: src/diff.c:981 +msgid "block special file" +msgstr "blok-specialfil" + +#: src/diff.c:984 +msgid "character special file" +msgstr "tegn-specialfil" + +#: src/diff.c:987 +msgid "fifo" +msgstr "fifo" + +#: src/diff.c:991 +msgid "socket" +msgstr "stik" + +#: src/diff.c:994 +msgid "message queue" +msgstr "meddelelseskø" + +#: src/diff.c:997 +msgid "semaphore" +msgstr "signal" + +#: src/diff.c:1000 +msgid "shared memory object" +msgstr "delt hukommelses-objekt" + +#: src/diff.c:1003 +msgid "typed memory object" +msgstr "typeangivet hukommelses-objekt" + +#: src/diff.c:1006 +msgid "weird file" +msgstr "mystisk fil" + +#: src/diff.c:1070 src/diff.c:1256 +#, c-format +msgid "Only in %s: %s\n" +msgstr "Kun i %s: %s\n" + +#: src/diff.c:1193 +msgid "cannot compare `-' to a directory" +msgstr "kan ikke sammenligne '-' med et katalog" + +#: src/diff.c:1220 +msgid "-D option not supported with directories" +msgstr "-D tilvalg understøttes ikke for kataloger" + +#: src/diff.c:1229 +#, c-format +msgid "Common subdirectories: %s and %s\n" +msgstr "Identiske underkataloger: %s og %s\n" + +#: src/diff.c:1266 +#, c-format +msgid "File %s is a %s while file %s is a %s\n" +msgstr "Filen %s er en %s mens filen %s er en %s\n" + +#: src/diff.c:1345 +#, c-format +msgid "Files %s and %s are identical\n" +msgstr "Filerne %s og %s er identiske\n" + +#: src/diff3.c:26 +msgid "Written by Randy Smith." +msgstr "Skrevet af Randy Smith." + +#: src/diff3.c:328 +msgid "incompatible options" +msgstr "inkompatible tilvalg" + +#: src/diff3.c:368 +msgid "`-' specified for more than one input file" +msgstr "'-' angiver mere en én ind-fil" + +#: src/diff3.c:408 src/diff3.c:1232 src/diff3.c:1645 src/diff3.c:1700 +#: src/sdiff.c:305 src/sdiff.c:879 src/sdiff.c:890 +msgid "read failed" +msgstr "læsning mislykkedes" + +#: src/diff3.c:441 +msgid "-e --ed Output unmerged changes from OLDFILE to YOURFILE into MYFILE." +msgstr "" +"-e --ed Udlæs uflettede ændringer mellem GAMMELFIL og DINFIL til MINFIL." + +#: src/diff3.c:442 +msgid "-E --show-overlap Output unmerged changes, bracketing conflicts." +msgstr "-E --show-overlap Udlæs uflettede ændringer, konflikter i paranteser" + +#: src/diff3.c:443 +msgid "-A --show-all Output all changes, bracketing conflicts." +msgstr "-A --show-all Udlæs alle ændringer, konflikter i paranteser." + +#: src/diff3.c:444 +msgid "-x --overlap-only Output overlapping changes." +msgstr "-x --overlap-only Vis kun overlappende ændringer." + +#: src/diff3.c:445 +msgid "-X Output overlapping changes, bracketing them." +msgstr "-X Udlæs overlappende ændringer, i paranteser." + +#: src/diff3.c:446 +msgid "-3 --easy-only Output unmerged nonoverlapping changes." +msgstr "-3 --easy-only Udlæs ikke-flettede, ikke-overlappende ændringer." + +#: src/diff3.c:448 +msgid "-m --merge Output merged file instead of ed script (default -A)." +msgstr "-m --merge Udlæs flettet fil i stedet for ed skript (standard -A)." + +#: src/diff3.c:449 +msgid "-L LABEL --label=LABEL Use LABEL instead of file name." +msgstr "-L MÆRKE --label=MÆRKE Brug MÆRKE i stedet for filnavn." + +#: src/diff3.c:450 +msgid "-i Append `w' and `q' commands to ed scripts." +msgstr "-i Tilføj 'w' og 'q'-kommandoer til ed skripter." + +#: src/diff3.c:453 src/sdiff.c:202 +msgid "--diff-program=PROGRAM Use PROGRAM to compare files." +msgstr "--diff-program=PROGRAM Brug PROGRAM til at sammenligne filerne." + +#: src/diff3.c:465 +#, c-format +msgid "Usage: %s [OPTION]... MYFILE OLDFILE YOURFILE\n" +msgstr "Brug: %s [TILVALG]... MINFIL GAMMELFIL DINFIL\n" + +#: src/diff3.c:467 +msgid "Compare three files line by line." +msgstr "Sammenlign tre filer linje for linje." + +#: src/diff3.c:673 +msgid "internal error: screwup in format of diff blocks" +msgstr "intern fejl: rod i formatet på diff blokke" + +#: src/diff3.c:971 +#, c-format +msgid "%s: diff failed: " +msgstr "%s: diff fejlede: " + +#: src/diff3.c:993 +msgid "internal error: invalid diff type in process_diff" +msgstr "intern fejl: ugyldig diff type i process_diff" + +#: src/diff3.c:1018 +msgid "invalid diff format; invalid change separator" +msgstr "ugyldigt diff format; ugyldig ændrings-separator" + +#: src/diff3.c:1242 +msgid "invalid diff format; incomplete last line" +msgstr "ugyldigt diff format; uafsluttet sidste linje" + +#: src/diff3.c:1265 src/sdiff.c:273 +#, c-format +msgid "subsidiary program `%s' not executable" +msgstr "hjælpeprogram '%s' er ikke eksekverbart" + +#: src/diff3.c:1268 src/sdiff.c:276 src/util.c:298 +#, c-format +msgid "subsidiary program `%s' not found" +msgstr "hjælpeprogram '%s' blev ikke fundet" + +#: src/diff3.c:1272 src/sdiff.c:268 src/util.c:301 +#, c-format +msgid "subsidiary program `%s' failed" +msgstr "hjælpeprogram '%s' fejlede" + +#: src/diff3.c:1294 +msgid "invalid diff format; incorrect leading line chars" +msgstr "ugyldigt diff format; forkerte linje-begyndelses-tegn" + +#: src/diff3.c:1370 +msgid "internal error: invalid diff type passed to output" +msgstr "intern fejl: ugyldig diff type sendt til uddata" + +#: src/diff3.c:1647 src/diff3.c:1704 +msgid "input file shrank" +msgstr "ind-fil formindskedes" + +#: src/dir.c:162 +#, c-format +msgid "cannot compare file names `%s' and `%s'" +msgstr "kan ikke sammenligne filnavnene '%s' og '%s'" + +#: src/sdiff.c:35 +msgid "Written by Thomas Lord." +msgstr "Skrevet af Thomas Lord." + +#: src/sdiff.c:183 +msgid "-o FILE --output=FILE Operate interactively, sending output to FILE." +msgstr "-o FIL --output=FIL Arbejd interaktivt, send uddata til FIL." + +#: src/sdiff.c:185 +msgid "-i --ignore-case Consider upper- and lower-case to be the same." +msgstr "-e --ignore-case Anse store og små bogstaver for at være ens." + +#: src/sdiff.c:188 +msgid "-W --ignore-all-space Ignore all white space." +msgstr "-W --ignore-all-space Ignorer alle mellemrumskarakterer." + +#: src/sdiff.c:194 +msgid "-w NUM --width=NUM Output at most NUM (default 130) columns per line." +msgstr "" +"-w ANTAL --width=ANTAL Udlæs højst ANTAL (standard 130) søjler per linje." + +#: src/sdiff.c:195 +msgid "-l --left-column Output only the left column of common lines." +msgstr "-l --left-column Vis kun venstre kolonne af identiske linjer." + +#: src/sdiff.c:196 +msgid "-s --suppress-common-lines Do not output common lines." +msgstr "-s --suppress-common-lines Udlæs ingen identiske linjer." + +#: src/sdiff.c:201 +msgid "" +"-H --speed-large-files Assume large files and many scattered small changes." +msgstr "" +"-H --speed-large-files Antag store filer og mange spredte, små ændringer." + +#: src/sdiff.c:214 +#, c-format +msgid "Usage: %s [OPTION]... FILE1 FILE2\n" +msgstr "Brug: %s [TILVALG]... FIL1 FIL2\n" + +#: src/sdiff.c:215 +msgid "Side-by-side merge of file differences." +msgstr "Ved-siden-af-hinanden-sammenfletning af filforskelle." + +#: src/sdiff.c:327 +msgid "cannot interactively merge standard input" +msgstr "kan ikke indflette standard input interaktivt" + +#: src/sdiff.c:588 +msgid "both files to be compared are directories" +msgstr "begge filer der sammenlignes er kataloger" + +#: src/sdiff.c:853 +msgid "" +"ed:\tEdit then use both versions, each decorated with a header.\n" +"eb:\tEdit then use both versions.\n" +"el:\tEdit then use the left version.\n" +"er:\tEdit then use the right version.\n" +"e:\tEdit a new version.\n" +"l:\tUse the left version.\n" +"r:\tUse the right version.\n" +"s:\tSilently include common lines.\n" +"v:\tVerbosely include common lines.\n" +"q:\tQuit.\n" +msgstr "" +"ed:\tRedigér og brug så begge udgaver, hver udstyret med et hoved.\n" +"eb:\tRedigér og brug så begge udgaver.\n" +"el:\tRedigér og brug så venstre udgave.\n" +"er:\tRedigér og brug så højre udgave.\n" +"e:\tRedigér en ny udgave.\n" +"l:\tBrug venstre udgave.\n" +"r:\tBrug højre udgave.\n" +"s:\tMedtag tavst fælles linjer.\n" +"v:\tMedtag og vis fælles linjer.\n" +"q:\tAfslut.\n" diff --git a/src/apps/bin/diffutils-2.8.1/po/de.gmo b/src/apps/bin/diffutils-2.8.1/po/de.gmo new file mode 100644 index 0000000000000000000000000000000000000000..1c33b98773048916d464ddb1e4849e4cd6060637 GIT binary patch literal 24021 zcmb`P4Uk;fRo|b%2JhI;+H3E6y^h(t@=CMXo!6Qft-bPSwYwu}B+Y8Rc4j15U$%Ot zU(d9s`}OSWZjGdk0h`zaf(;n_0R|gLFbTrJHjo5VHbrGCp^~@)A#q6I3WO4_n0yc? zRU1M!MSlNt?|a=nA6jLLF5UU}d-wa?bI&>V+|&B_EARRbk^lS}@Ykd0RnLRpilW!l z{p&l2!S9ZuJ4d4E73<&^c>V`b^o9q(W8m+AlTmcno5B0RGDw}fJ^;P}{1W&UQ0)rU z-w^oc;M=0;jk`h88;|(+Z>)ha&z}GtsCs+AKLKg~O|K0|8_^Wcr08kzCqU}G=_dG& zD7yPD@FDO7NSV8z1?m6puYgCv-v^(JqI(!abQrwo-{12yApP8<{+QRBUj-flXF>XT z^GCw7>K}-rd+!0?1uCC8-1`F{bh-DdApO7PP2f`?ZK$8OK+9+v{4MZg6y0|xNIUnP z2bt4-KMvB*eaffZx4stK2hyhK`qs-J_1^jm;Dg}*1dp?H_kw%DORUpr@CSLO{@eZ| z_+9*aD@eKT8Ux3{4}y<_qHl>QzXD|Z_tS^Qaeo_xKKK7DNV)sf&IC(BTbhTffV)AB z1A05nmoYx@?I7(vz#O6{z^eiOF-X4;{4bFC?qY1welP>y4t@?~p1b}z$T)ZXg@1lK zeMOH_MCHB#sz1i?;77p+z|Vus?ZJN)p8qq*`t5!l$olP$!9CyxNWI;k0pZo%Uk>^I z7KFF=P)FtVJOi?(d#-@&hdnw?XK>=Z`@6draJHZcu%y;nPpz8fPILN<$1AY;F5rkJBVvp(lL;nT*PL}pf;5R|W6v5jM ze+LNtAEu9pyoXsUjpyOTfa*`rn#XHF@xw0gli;J^Z-BJ*@SlOK*CUjP7Qllbb9qGb z7K+{@;BSJ|f8<*rd_AP`JPeAj8PCuv2>%T|2eK|hKMykgp??a4w48 z`C$;+yz}3IwEq}$kH)}vgYdy)KNj!{ApJe|RS-Ho_D#^SW$9b%dEilybw6++;P->j z_rRAx_~O9VK<07aFFn4C@6jxxNPIF4egqr^{{TF}5TJn;b4>Gk7F2r<{NLcoC^`tu zqYSKqQ{cY`HxNn8LG*w8Ga%(2mmHg6>#$}~9egiH`9uE_WUNn!j!%KmOXGL~I!RtV z`6{pkQdZ-9@;MONJ^3#{+ItF~jXnq_;9*dF2o1&`@%iJIz)7Be8RXr##yw0?#ui-y zPlH3C`gLBZN;w#`mQ0qy%lNujwPpbYC;C1jR@K3=BifDdM zf~<+?^z;`&-aY;2ApM?v5Tx8mjUV}c@{=I*IQdoZFBrm`!M%|BE|C7G8JqZHnz`8f z9{~q>)_l)_8uth!7oY3`n;?D6d<=vhGol}Pv)b>_VRiwekJ%4{l%EwJ+z0*^2>;HC zevETgYuScYQ2xR^Xp8(;(1&xn+E&PGUML^Gs8sFQ%r$N3i zu7Zz&9|c*<#eWKpf!_enMA0dDMf>*D)qraMojj}G{otR12cqaSbC!HNO&!UN(;5%? zr$vA0efoKjwK@F)2wl&Rr*WRCf^Pu77i9crJ_a)XGhYTB_}{?SMA5sU)hnRgyP=Wj zdiLkRSAtsCd%)iWq5s*hf$+)MKLeS^In7si31r^qJ`L^xe;s6A=l%#}+~@u;$eNuO zKeF%6zYnDR`OkuPfnNsc_x$gGw0ZtdKRtG| z;l28WJ{Nu)gvT!Y9>{uL_$K%|@LM2rz3`VH>v56q;^&L|K=|*X)*o75d=7*b7k?6@ z%*B5Q((gsB-z!KNX@jJG_0hbbw|%r%-$?p)lIZ!}q<4|tOL{*^pD&OW?3@4dH-KkJ zUnGfVzLz9k)j0H-A)O^@-Wt=JNhQ)W=`!gMsZ9Df>C+^A{*H&}Z-E~nG5+Y6Nzg;Q zB6%M@MfwEkM@jmyw$XW#Bb_4UAJ)P?>-_bXsLZ=AJ*AESNO}? zMc+n(HzaTD^8kN;EPNMVZvK3T7x1ioPV@ICNZ&{LVbaf$ev0%%q~6b$c+ejC+u`Ln zI1;{3fm-Jiq{qU$3*buleiZDGmPz8X<0O54!GriW`uimK#y&sJ-w%>1{?Y#46~3PX zXM5i3>yxBk+Vt+TJd5WRN&87BN!Ll2NWV&Ik|s$XC4E0hpVyEYr0>uJpU;!Nhx8!n zX_7u`9-eRg3Mv1L@?|gSbEG>+2S|gY zze)Nq>1Ro8(%mF|K1Di6x`*^W((6h2=P+M>&>ozdsI^y<%pE^Az37^mn-Vt4SKV?m zZI^55*ns1+dpF5{TOK?z=p1!itCp_R6Surt&dSSe+BlMzxG+0A8wz!EH|WSUm)qq! zZC4UUnaKHmxAynAbM;!9v|Kf7Hr%nvsfiKa_!C<)Mt#PiJY%`pXf#vTZu)AjoL1~x zD0e=-c>c`f(Zv%N&zH{6%}*S;c=5SP^UAy5KQ*zqI5F?sdR9x@)wtEZ%H&$>$+D}8 zE|zOux$w|(7VYAtKE zZLTiuG?tPqbU`OfsJuhoj0>e*vl<9>$W6t^9`RIC+Y>Y&cOR!|@R5;-zuPY`y=ldh zwB5?v^mMIn%@}gYmF0S;!umtqtFE1uYpm9aCa+cV6?Y_bx)Y6S>3XM+78>s2*|`Z< zYq?9%Z*a(6q7MK{U+SbVSGtl^221c!Ud~rgevwNv3v0D?V_Hw|g_DzWBW~$x8xDhl z#$U!L;_Gga(f%T%rD%7{@vl;=R+DVZa(QN{nKfSqULs%f*uB50COoLZm^J6B&@ict zIeSy9*OL`CN^`wkgO}sj?Oyg}Yw6{3y;j*KCzQRkdwF+j&{djAD;;dRvRIR;!K*8s z2FvT4DGF1RL6sXzwUth@V>1}b8^5H6vgFxLErU)wwh_nwA05VLnEh=JFO=SKgxd|S zms*`POO~4}Y3*84kjxXvlVRI@o6kTL$Hr5!?dF)h-6*#YnV577wMMO8&W79){OWUZ z1~eA7DlKOcPc=$3W_%foQS!EICvMwTVESS^gr-zMO)b^Za(30Z`J`MiuHDFL?Zj2e z?Xs(-E@U?lvMMcRjn}j0N>*+hnwy_JK0l5yIE7To9}txY&2>q$Doof?Ey>+jPu4*k zx10WHsfiSqRIF8NNu{^oA-{{XOEeDivqbG?c2&Ku zCiQjaW;<;Og7zxwt~Zv`%xc$~sS&VsXyz1CIGH5tPTxdS+sE3yLHw_0Nws#x2H)yb z`Km^0D`_)>{!A-Q%Z(&9;p`^uwU^Wzt4SKDA&F)bP*Eew?X8~X+ZAP-)-G-CG>Rk5 zv{kF*8snDZU=|IeLr$o&3oo?PnkVa%RAM-E#ZR{7+<2?S_D7@e&abl3rXl&=S}wQI z-)xZ<&7z)7tlErQ?X0#Q=K?-n&Jd+~)s^|nGo;HrUnel1#I1N=RN%fF_ z3WE)|UoB}xvG2<7k#>10 zPOhw%;Yn6>^QbGGL<>hDOo32{o~!{QS0HCWvVzoswmZ`8gi-vjihn2FeD9=?;LEG5 zRFERd%lH0v%fV7u4H{u`Q*LVf@C0^J%+6X$>W9LkB&q*eOIvM;WGsq8ZcuSXRd!@p z331B)Y4kJ#)i>Sx#{v6>&9O3 z21{oh3kG{PSx-`L%qf$aXRM}Y1ehIpQeI99T8aHPR;6+5J>}nBtn)V8sBfu}&<(3# z!)JWnl0;0QZ^9%e%(%>@RC|@}?UzBaYTZPYWQ-Atw#pi8JGs(!xh!COg$Pgvg_wM? z9c|RHXT)MsfiKmrv`D$p>>y8A$^MyIJ9a{dz4hqkbX*7)p@e|FrpIM^JYwpJp3Str z(mpT6b+I6pbk{>{>~g2xcKi2s_1JQA9p&l`a)v(;cWCTX-WZ}#y7zV)3&p#wi4?}c zIYYk$2V>61XyqUXm*Xmix0$7GK|%)tEw8#Gu6Ui4c@E@7gV)lMS~wQAqKSvRtZl?Y z+K1MZDBoyu=D{S8IG0%TYcI;$F05!E4Y=AA;38%a$Ips{QMJZFuk2MATC|ne@`ZI} zL119mjru`=qGot%Eu+oEA)B)|ODum9ot-*roJ)UaXHU)Bch9sPSiyBwa>sz^o={@{^mdJWe-|;?l;T zb#>|4K{JYEeu+-Sq@^2bPDi1hAqRPJ$iLp^*wj4|UeunlFrk+cV{;=1yjF88@FE0zs?1Z_j{-V zPm>^3XJvsiQ@E8cY~agD{pt|g#Ebr%e!ezCd{!+iWwoSQ4APbel>@!AAYnaqD2`#s zjFRO})}m#dO~O~~Etb#@7iMdAmU^@l6YiuHszZr5=Ag-@HxB!Ay63muUbp~$&kRItV>v2YeLG?d_lQX$d6Ov7J(YWHh`}aNSSs?` zt67rUN~SNjmMD1ML>>9UQY3}7U_Q)C`Z{6;)##x4){aijk2wBxA1$|3D*1d4(x|oM$R45&raNLKt;nDV%58Ivor(po z+!AL&8p1g!1szR>*BBweMZSznx8>we=w{+QE}K176zj<|m#pm23(sA6fAJnEwVasA zo+T?C4)r>QNpf*mD+=Lo;aHA*@4neucsgm|d!hPjxx?wD!bP>Wxb!9Xa~%Ri7DYJM zD2L82*YFoI*)9Fg>Ws}kmTOa7JeMWd?;TbqG_p;d`7O;LIx&oDD^U>NOPv)Hr;qa` zUP(J~r(LVJp5j}nnXNogip*jOx?2|t7**aej~0gKCF}jOba?}lySC0@9m=Dwyo)Gl zjSZ|Fb|b^X!$a;QIQr<2o94xk-q_n|Jv@3~=pB!}b783>FzlNq}TWe!cyH|XA zb0jQKuZ>8#&N8-QiyL^DKKKEpl9S+>nwfQH#^>k9XBN-0i#XIX0uD`5z^H{r4cCwn zuwLFM4V-OuV2`UTd!?o=h67YCH;ya80oUzg0L_kCQFB-vjlw~9eCCupo}?HdbvM^p zVh!9>4RgPhlm?DLB=}KQig&BZ`A}X$ajG4RHW-P<@VK`SdTQE)jP_H-9hsdwJ2`W_ z6fNfW5!#L|cHAnjuDVNz9PeTrwAI+$Q7Jl=uBFWlMDkU(Lc=9l*35Wmr%yU~NTQJo z`0ks%_GWL-oAY{e{yjZ!E<6{VYT+O=$$oxzZgFyU<|2aB1W^#W1Gg-4Ueb2dofnsk zco@BS@#3v2E$o!(&nYfH$K;2Yf#?iAWENdpWsU=>n^;*%vNrr*!)I`!%=e@|5 z*fWO3X14UcCjP|Zh_O1XWc$Q-KV4ovnWWchY=TSiZmxxL2N%rOTxvDzNjo{{n)Kyr z?OPS;z)`fY?9>Pa2fLo_E{EWNkXKVYDX+8`E?TNL5%lH;hl~9yImY$Pq!hx3Ehgp7 zz~Sc}n>WJ2DRVO9GXOiO^mxKImne7~rKQUg2^D?G%k`P`&WnP6MHUsRrGL=NjrB1% zF?&n`N}`&BqH)-F~2%2aFBW>ia!tJ<}to+at>EnZ@F(;CGPqPWq$gd2miSz`9J zEH2l+x-MRqs*v7zuU_6pjdctg)(QpU`C>~IJT1uvE=QUUS7xXy>(O>oiwb@e96Rk| zwukMyS>Z$!d<*`p?g@~W3BESgJ6&N*+D6IqtUKTPK?WjXNmz6*+KWMKDVbq%;gNy| zwK>ev)~4zXds7WR7mCOTYbA(+GPhhs`>XywYui!!ePaV}Y&OqO+fpX(*-p|)qF}rh zoKUW^uzt#6Lpq!uk{6t?C5L($Bnr+E>Dd0O0bcmaH@pi`ZZddnXjZbntBwjgPS-46 z3g)j&B(|{o)|qG$wV)Kt5oXg|dLOimTFB4@Xv=8U;j)TXOpo3I4{XHoh=XEH7oPb@ zM45139_^H^2_;u>LU0U6VBe~k`5+>hn|2#!($@P&bD^d!v3c|xNe$I!^YquRfhcoX zQ?rXFD>3_72Kkti$s_hKlhuuu9xIIu56sOj#z%B{MUnU@f^N)>4iAsU!;i+p?{FiJ zj*Se*!v}^{FrLTSR#ScD_Qxap-N=El(a}eSu~`SEh!%;leNs#wSZxeD!gV650`D7?oj$y4>3nbrf-lhYI3$&8eS z2XJZ1K#Uh5%oyg~mG-{%dbyS!l;1bQ^?GP>VKzQ+;2rNG1f?jfp>Z^dC)jw}MPu#& zciBWF;QnoHG*|0B8mL@{S3CHS?Sg#mg)~J=V7jkxd_cR>?`pYD_eE$@Uu056_kOkX zT2e=4pGz=NsNIcB!b~SJNrmz}nF$rFz1cO)7>i7z3`4T3{xx*d=NB*fjEka)`(*&VRMsrBR83scn@64i^rjqux z9rL*)J6DDSbYut=3=vJ;HYO~jsl?iN&e(2kxSyL$#UI_40{w9QZq6Z&XcaD*@nK6` z`nU;LER^4w-gs~Q5d9=wt&vlEfitO%&!Ulxd2SH5bbZL(z=F8$2+7FYjUsUAI*Nho zkvw)pu3W3=i+SBqxvmC}!ZAn_Esj409QG=btsU4$CbIadr_`w1R7xRmFA`(c5_7Pf z`s0~u@>+~p9gIH?sp4_IVQ*jy@=qcx!6R(N$hEE2TN1ZQd%FOq8>)HTa#s?#DB6o@giQbj)p^>4SGd@f!+wy3V}o<<3&utwB*Y9)g`hD@94lX^4$v zHLD~@kMiO=WLq{*|!LIa?h`(9Mo5bJgdeNu#Y6o`;tl%StAi@;xZiC#UXfkcZ_)| zTJu3s+q7mId{b+A*pqZ67r+gNfAwZYm=kU&j$ORd9tc9p4?ujkIrfRjp%C~qjjU}r zv@~I?o|&a8)qIV{AoYecj?JX&epDY_|0AwLoFfUY7_6)nWGzxuGcU>?3fnW^rXm%m zW!kq38MUvT@)2}}ozzMG32k^~1XnWTYZ`HiPB#fck3MwD&2%z}0gfjpYV~U3C}$g; z0(}uw=f+PUD&674bg8pP+wiHa=1S6l!*n5;a>Jd(M%sm!3Zy!va|H{)?KDSTMBVYM z`G@;9>yCoRa@(Y)H}i@1p_%$7ZA4L7-2IVrU8aN;rH+tRftBK(scgqeJ4a#N{uFi| zII}P&viZRssAD)*lgI4oEJgtIxwh7;wz*(0dvry5HG%1)=+<2K= zvBW(OD`kjF&rc2fa=P&(jCo4{*BOkxG<$J*4S`v84;`7`E6wLACWaS3qX}!N-&ELJ zNPTQDHJ3+p8Ao#2J1(MkIa%BtvR;CzL#bP`^o}uKJ=(CEtg@Lzn0(*Lj;bdx#8Sc` zIVb)8A=eiI=4RMG?f6;;9)}B8lIn}AxVYRygcbYS+`+vrRT(KvMTQw^dZ^s9Vw=Lm zj40cb#Edfc$r}B@04M9}Iul(FYjojg+ZQcniod5R4F%0B!E}ix_d@kX|8#?7e05SkDAtxfR$H zu0_;hbV9{SvYL9v?c4EKd$6x!@503+L948jA73xKmofGwNr-a!ry_hf9EyahIgW8@tsZ8r;CR6;3Ia$OoI|ZZpKs3%-cx&02 zIxlraQL9g<%|H~4(hx>@EbOC~*hUL}d)w0V#i!YRmOepr^r)vo3K--0LQ4tJ8(y9) zitT$N)Q~!oOr9MooebmRGG0K|-DbqbfoHhz;(QA!r3O1*y(wfZY#+geXP8$xFaZlFqeWyWIxUyN6D5pNB>tBP34dP~4&4 zQ^f#^=(imQu*-^YJ)lAC`l}j6f5@EQpuKdG@QNX9jlnZzliplj zWv}@a#i-3?s|h3eM+#l*U{qAAvM>6>@y0t^`(e7z#BXzyjm{^_)WVb2ZY!n)i^c4+85djz?X%MW_A7``H`ukd-{vb?dLUAGh6 zg8U1*M9<_!)QEG_+A5=yd;p+?op<5*qvIJ#3=_Lquy*Vyqk}K&zgaZKy>Wo&HrtW5 zkWfA-Vp%&|nYxg5ZgW`RcyQ&3C3J>8WghgA8;urtcYn#)`kVBLo_7{ecA45KiTg46f(cGGy6+YM(J=kmC z;0l)NHX1MuRzO=Z=M88r)7d7Yh(gg=cR5lK`U0JU2ZfjU!a(>PA`6e<+udp_ZFv2T z!0>T}rtP^|xMBg=x$d_O!u3qh8eJ8xC_}p3CaCc1J6K>n1HIy=Pc7&-xrNnrD7?rQ zqibY^3~x~ph|p=lZ}nR8hejU78}^4APKH(Wa;Jwr(vxRi&ZP5!Z<@T?>kmELBJ{c( zQuw~}#!PKvGi)E2dK(O8KC()1Y3-ISu+Tg6TZv)3vxYl{=y>7s;hcpWAh)~uEOl zL@w`*n_PJ??IJI{rwAm=r5go3ZTzr&Oe3V-xd?OWA^jN%nI5O1pGe_tVbOwXF*t#S z2ztcTonUO6z#EwGmoqohaB>on1Eq+nQS0{PZp7XJZu6Jxga99@CeaP~Xcw=vXqw)< zKik!Q$toPvgGYa!vs?&=yr%G~@IG@hGL8c)NO*ASB7C5yNQ)~$ZZ8Yr*OQgy_c$84 z!XiT+K7dT8MO2fyNHi(CkG`4lZ5(NdJ+Ri(P>bU#42r^(Z>J|?`+5sO?};J#)gQJ6 z7O>xf5@yh?)vh%fs15(xvw2~M;A0E?qP|q`b_Oe9VXUYf2tRQ+Vpr?EL{k~ zWR_ffgjw?24sQNB^}ea=YEkY(0(N!UN5c~%i))fFOG3ZkGIz`1%GldSl^3%rJ?Six zU&`V$4)K(07Ej4IyvfOrb8v|75LH>?o>ghc5mi|tsRpwbfo2beXQI#d4DoYks zsm(@IB_cz95wX#>k(DauBP+F|%~_UTF`8NAwFlJY8iRKH9uEdCtH>n1&$SfI$gj_e zu|wFnZ8_j%SL9Y7Ka;TH5B2F7b0hAxy=6`3#{_xDOVLCo>LDWKtZ(6Dw;yOX_;DX$ z1$HfYJdyO_^werI8r{wEV+>4Gf*%R5)2%gC2Vev&8ri5UZ~Z1Az$+49B@@iy@|^aq zbH;)lYk|XlewsGH2?NKsjmHcG_QtatIGXSug5ZXzl;I=Y!r#;_YcBq~;g=H@oOC#k zy(~pHcISbY*S+AHl+|LlaBStmMvDH;ipo}1g9 zXQve5o|`lKVm`NIZVCL~>norITo3E&2;5w%c`EANvwSfN#u((O>zbq9}Z> z_VQ*cz{i%_k+8TKzrSl87cBks`vO-(;MiXo<7fQsFR4m@{kB;t05t=%Jf}PA{~HI+Z61 z!LM0!!ew+F&D*}s7MX}plncs_ z|E;KdA~1_RHD5}atm0)W5wJ=x<&J`}_z})6i#|)y!-;JzOc-3k1h3{H8e#D*e04I# zSIIBDEqvAAKS?P}c#G6;G|8_{W1T=pe$S(G3cf|>?U^xM5P8c}m*BWfh) zWxdT>7(;>AdL2kxIt+dpF|l=cxc&k`jdp^t+l$<0C`E|td}txS)$FM-{l46O*IaM0 zVt%<-yDrCGXrsvVSIWU>bkJ3~9+u)H(zS@c>M?dVm4d;R6Nr8fP-MCjJ{Y0x$3I9wXLm&Yj?zTJwkG!szGZK?Dk4o0I2Z*t z`T}FG@AW3G4LDp+d!MuyHIkS)em{0^cy7qd_hgB01(BuN*jua, 1996 +# Martin von Löwis , 1997, 2001, 2002 +# +msgid "" +msgstr "" +"Project-Id-Version: GNU diffutils 2.7.10\n" +"POT-Creation-Date: 2002-04-05 14:10-0800\n" +"PO-Revision-Date: 2002-03-13 18:22+0100\n" +"Last-Translator: Martin von Löwis \n" +"Language-Team: German \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=ISO-8859-1\n" +"Content-Transfer-Encoding: 8-bit\n" + +#: lib/c-stack.c:188 +msgid "program error" +msgstr "Programmfehler" + +#: lib/c-stack.c:189 +msgid "stack overflow" +msgstr "Stacküberlauf" + +#: lib/error.c:128 lib/error.c:156 +msgid "Unknown system error" +msgstr "Unbekannter Systemfehler." + +#: lib/freesoft.c:27 +msgid "" +"This program comes with NO WARRANTY, to the extent permitted by law.\n" +"You may redistribute copies of this program\n" +"under the terms of the GNU General Public License.\n" +"For more information about these matters, see the file named COPYING." +msgstr "" +"Dieses Programm wird ohne Gewährleistung geliefert, soweit dies\n" +"gesetzlich zulässig ist. Sie können es unter den Bedingungen der GNU\n" +"General Public License weitergeben. \n" +"Details dazu enthält die Datei COPYING." + +#: lib/getopt.c:693 +#, c-format +msgid "%s: option `%s' is ambiguous\n" +msgstr "%s: Option »%s« ist mehrdeutig.\n" + +#: lib/getopt.c:718 +#, c-format +msgid "%s: option `--%s' doesn't allow an argument\n" +msgstr "%s: Option »--%s« verlangt kein Argument.\n" + +#: lib/getopt.c:723 +#, c-format +msgid "%s: option `%c%s' doesn't allow an argument\n" +msgstr "%s: Option »%c%s« erlaubt kein Argument.\n" + +#: lib/getopt.c:741 lib/getopt.c:914 +#, c-format +msgid "%s: option `%s' requires an argument\n" +msgstr "%s: Option »%s« verlangt ein Argument.\n" + +#: lib/getopt.c:770 +#, c-format +msgid "%s: unrecognized option `--%s'\n" +msgstr "%s: Unbekannte Option »--%s«.\n" + +#: lib/getopt.c:774 +#, c-format +msgid "%s: unrecognized option `%c%s'\n" +msgstr "%s: Unbekannte Option »%c%s«.\n" + +#: lib/getopt.c:800 +#, c-format +msgid "%s: illegal option -- %c\n" +msgstr "%s: ungültige Option -- %c.\n" + +#: lib/getopt.c:803 +#, c-format +msgid "%s: invalid option -- %c\n" +msgstr "%s: ungültige Option -- %c\n" + +#: lib/getopt.c:833 lib/getopt.c:963 +#, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "%s: Option verlangt ein Argument -- %c.\n" + +#: lib/getopt.c:880 +#, c-format +msgid "%s: option `-W %s' is ambiguous\n" +msgstr "%s: Option »-W %s« ist mehrdeutig.\n" + +#: lib/getopt.c:898 +#, c-format +msgid "%s: option `-W %s' doesn't allow an argument\n" +msgstr "%s: Option »-W %s« erlaubt kein Argument.\n" + +#: lib/regex.c:1367 +msgid "Success" +msgstr "Erfolg." + +#: lib/regex.c:1370 +msgid "No match" +msgstr "Keine Übereinstimmung." + +#: lib/regex.c:1373 +msgid "Invalid regular expression" +msgstr "Ungültiger regulärer Ausdruck." + +#: lib/regex.c:1376 +msgid "Invalid collation character" +msgstr "Ungültiges Sortierzeichen." + +#: lib/regex.c:1379 +msgid "Invalid character class name" +msgstr "Ungültiger Name für Zeichenklasse." + +#: lib/regex.c:1382 +msgid "Trailing backslash" +msgstr "Extra Backslash." + +#: lib/regex.c:1385 +msgid "Invalid back reference" +msgstr "Ungültige Rückreferenz." + +#: lib/regex.c:1388 +msgid "Unmatched [ or [^" +msgstr "Öffnende [ oder [^ ohne schließende." + +#: lib/regex.c:1391 +msgid "Unmatched ( or \\(" +msgstr "Öffnende ( oder \\( ohne schließende." + +#: lib/regex.c:1394 +msgid "Unmatched \\{" +msgstr "Öffnende \\{ ohne schließende." + +#: lib/regex.c:1397 +msgid "Invalid content of \\{\\}" +msgstr "Ungültiger Inhalt von \\{\\}." + +#: lib/regex.c:1400 +msgid "Invalid range end" +msgstr "Ungültiges Bereichsende." + +#: lib/regex.c:1403 +msgid "Memory exhausted" +msgstr "Speicher verbraucht." + +#: lib/regex.c:1406 +msgid "Invalid preceding regular expression" +msgstr "Ungüliger vorhergehender regulärer Ausdruck." + +#: lib/regex.c:1409 +msgid "Premature end of regular expression" +msgstr "Vorzeitiges Ende des regulären Ausdrucks." + +#: lib/regex.c:1412 +msgid "Regular expression too big" +msgstr "Regulärer Ausdruck zu groß." + +#: lib/regex.c:1415 +msgid "Unmatched ) or \\)" +msgstr "Schließende ) oder \\) ohne öffnende." + +#: lib/regex.c:8034 +msgid "No previous regular expression" +msgstr "Kein vorhergehender regulärer Ausdruck." + +#: lib/xmalloc.c:63 +msgid "memory exhausted" +msgstr "Speicher verbraucht." + +#: src/analyze.c:809 src/diff.c:1283 +#, c-format +msgid "Files %s and %s differ\n" +msgstr "Dateien %s und %s sind verschieden.\n" + +#: src/analyze.c:812 +#, c-format +msgid "Binary files %s and %s differ\n" +msgstr "Binärdateien %s and %s sind verschieden.\n" + +#: src/analyze.c:1058 src/diff3.c:1413 src/util.c:526 +msgid "No newline at end of file" +msgstr "Kein Zeilenumbruch am Dateiende." + +#: src/cmp.c:43 +msgid "Written by Torbjorn Granlund and David MacKenzie." +msgstr "Geschrieben von Torbjorn Granlund und David MacKenzie." + +#: src/cmp.c:118 src/diff.c:817 src/diff3.c:427 src/sdiff.c:168 +#, c-format +msgid "Try `%s --help' for more information." +msgstr "»%s --help« gibt Ihnen mehr Informationen." + +#: src/cmp.c:137 +#, c-format +msgid "invalid --ignore-initial value `%s'" +msgstr "ungültiger --ignore-initial-Wert »%s«." + +#: src/cmp.c:146 +msgid "options -l and -s are incompatible" +msgstr "Die Optionen -l und -s sind inkompatibel." + +#: src/cmp.c:154 src/diff.c:826 src/diff3.c:435 src/sdiff.c:177 +#: src/sdiff.c:313 src/sdiff.c:320 src/sdiff.c:910 src/util.c:194 +#: src/util.c:286 src/util.c:293 +msgid "write failed" +msgstr "Schreibfehler." + +#: src/cmp.c:156 src/diff.c:828 src/diff.c:1354 src/diff3.c:437 +#: src/sdiff.c:179 +msgid "standard output" +msgstr "Standardausgabe" + +#: src/cmp.c:160 +msgid "-b --print-bytes Print differing bytes." +msgstr "-b --print-bytes Verschiedene Bytes ausgeben." + +#: src/cmp.c:161 +msgid "-i SKIP --ignore-initial=SKIP Skip the first SKIP bytes of input." +msgstr "" +"-i SKIP --ignore-initial=SKIP Die ersten SKIP Bytes der Eingabe " +"überspringen." + +#: src/cmp.c:162 +msgid "-i SKIP1:SKIP2 --ignore-initial=SKIP1:SKIP2" +msgstr "-i SKIP1:SKIP2 --ignore-initial=SKIP1:SKIP2" + +#: src/cmp.c:163 +msgid "" +" Skip the first SKIP1 bytes of FILE1 and the first SKIP2 bytes of FILE2." +msgstr "" +" Die ersten SKIP1 Bytes von DATEI1 und die ersten SKIP2 Bytes von DATEI2\n" +" überspringen." + +#: src/cmp.c:164 +msgid "-l --verbose Output byte numbers and values of all differing bytes." +msgstr "" +"-l --verbose Bytenummern und Werte aller unterschiedlichen Bytes ausgeben." + +#: src/cmp.c:165 +msgid "-n LIMIT --bytes=LIMIT Compare at most LIMIT bytes." +msgstr "-n LIMIT --bytes=LIMIT Höchstens LIMIT Bytes vergleichen." + +#: src/cmp.c:166 +msgid "-s --quiet --silent Output nothing; yield exit status only." +msgstr "-s -quiet --silent Keine Ausgabe; nur den Exit-Status setzen." + +#: src/cmp.c:167 src/diff.c:904 src/diff3.c:455 src/sdiff.c:204 +msgid "-v --version Output version info." +msgstr "-v -version Versionsinformation ausgeben." + +#: src/cmp.c:168 src/diff.c:905 src/diff3.c:456 src/sdiff.c:205 +msgid "--help Output this help." +msgstr "--help Nur diese Hilfe zeigen." + +#: src/cmp.c:177 +#, c-format +msgid "Usage: %s [OPTION]... FILE1 [FILE2 [SKIP1 [SKIP2]]]\n" +msgstr "Aufruf: %s [OPTION]... DATEI1 [DATEI2 [SKIP1 [SKIP2]]]\n" + +#: src/cmp.c:179 +msgid "Compare two files byte by byte." +msgstr "Zwei Dateien Byte für Byte vergleichen." + +#: src/cmp.c:183 +msgid "SKIP1 and SKIP2 are the number of bytes to skip in each file." +msgstr "" +"SKIP1 und SKIP2 ist die Zahl der Bytes, die in jeder Datei übersprungen " +"werden." + +#: src/cmp.c:184 +msgid "" +"SKIP values may be followed by the following multiplicative suffixes:\n" +"kB 1000, K 1024, MB 1,000,000, M 1,048,576,\n" +"GB 1,000,000,000, G 1,073,741,824, and so on for T, P, E, Z, Y." +msgstr "" +"SKIP-Werte dürfen die folgenden multiplikativen Anhänge haben:\n" +"kB 1000, K 1024, MB 1.000.000, M 1.048.576,\n" +"GB 1.000.000.000, G 1.073.741.824, und so weiter für T, P, E, Z, Y." + +#: src/cmp.c:187 +msgid "If a FILE is `-' or missing, read standard input." +msgstr "Wenn DATEI »-« ist oder fehlt, von der Standardeingabe lesen." + +#: src/cmp.c:188 src/diff.c:911 src/diff3.c:475 src/sdiff.c:223 +msgid "Report bugs to ." +msgstr "Fehlerberichte bitte an ." + +#: src/cmp.c:231 +#, c-format +msgid "invalid --bytes value `%s'" +msgstr "ungültiger --bytes-Wert »%s«." + +#: src/cmp.c:258 src/diff.c:734 src/diff3.c:333 src/sdiff.c:558 +#, c-format +msgid "missing operand after `%s'" +msgstr "Fehlender Operand nach »%s«." + +#: src/cmp.c:270 src/diff.c:736 src/diff3.c:335 src/sdiff.c:560 +#, c-format +msgid "extra operand `%s'" +msgstr "extra Argument »%s«." + +#: src/cmp.c:477 +#, c-format +msgid "%s %s differ: byte %s, line %s\n" +msgstr "%s %s differieren: Byte %s, Zeile %s.\n" + +#: src/cmp.c:495 +#, c-format +msgid "%s %s differ: byte %s, line %s is %3o %s %3o %s\n" +msgstr "%s %s differieren: Zeichen %s, Zeile %s ist %3o %s %3o %s\n" + +#: src/cmp.c:543 +#, c-format +msgid "cmp: EOF on %s\n" +msgstr "cmp: EOF auf %s.\n" + +#: src/diff.c:41 +msgid "" +"Written by Paul Eggert, Mike Haertel, David Hayes,\n" +"Richard Stallman, and Len Tower." +msgstr "" +"Geschrieben von Paul Eggert, Mike Haertel, David Hayes,\n" +"Richard Stallman und Len Tower." + +#: src/diff.c:322 +#, c-format +msgid "invalid context length `%s'" +msgstr "Ungültige Kontextlänge »%s«." + +#: src/diff.c:405 +msgid "pagination not supported on this host" +msgstr "Seitenumbruch ist auf diesem System nicht unterstützt." + +#: src/diff.c:420 src/diff3.c:315 +msgid "too many file label options" +msgstr "Zu viele Datei-Label-Optionen." + +#: src/diff.c:498 +#, c-format +msgid "invalid width `%s'" +msgstr "Ungültig mit »%s«." + +#: src/diff.c:502 +msgid "conflicting width options" +msgstr "Widersprüchliche Breitenoptionen" + +#: src/diff.c:526 +#, c-format +msgid "invalid horizon length `%s'" +msgstr "ungültige Horizontlänge '%s'." + +#: src/diff.c:629 +#, c-format +msgid "`-%ld' option is obsolete; use `-%c %ld'" +msgstr "Die Option »-%ld« ist veraltet; verwenden Sie »-%c %ld«." + +#: src/diff.c:641 +#, c-format +msgid "`-%ld' option is obsolete; omit it" +msgstr "Die Option »-%ld« ist veraltet; lassen Sie sie weg." + +#: src/diff.c:709 +msgid "--from-file and --to-file both specified" +msgstr "--from-file und --to-file sind beide angegeben." + +#: src/diff.c:832 +msgid "Compare files line by line." +msgstr "Vergleichen Sie Dateien Zeile für Zeile." + +#: src/diff.c:834 +msgid "-i --ignore-case Ignore case differences in file contents." +msgstr "" +"-i --ignore-case Unterschiede der Groß/Kleinschreibung im Dateiinhalt \n" +" ignorieren." + +#: src/diff.c:835 +msgid "--ignore-file-name-case Ignore case when comparing file names." +msgstr "" +"--ignore-file-name-case Unterschiede der Groß/Kleinschreibung von " +"Dateinamen\n" +" ignorieren." + +#: src/diff.c:836 +msgid "--no-ignore-file-name-case Consider case when comparing file names." +msgstr "" +"--no-ignore-file-name-case Unterschiede der Groß/Kleinschreibung von \n" +" Dateinamen beachten." + +#: src/diff.c:837 src/sdiff.c:186 +msgid "-E --ignore-tab-expansion Ignore changes due to tab expansion." +msgstr "" +"-E --ignore-tab-expansion Änderungen aufgrund von Tabausdehnungen " +"ignorieren." + +#: src/diff.c:838 src/sdiff.c:187 +msgid "-b --ignore-space-change Ignore changes in the amount of white space." +msgstr "-b --ignore-space-change Ignoriere Änderungen im Leerraum." + +#: src/diff.c:839 +msgid "-w --ignore-all-space Ignore all white space." +msgstr "-w --ignore-all-space Freiraum ignorieren." + +#: src/diff.c:840 src/sdiff.c:189 +msgid "-B --ignore-blank-lines Ignore changes whose lines are all blank." +msgstr "" +"-B, --ignore-blank-lines Die Änderungen übergehen, wo die Zeilen leer sind." + +#: src/diff.c:841 src/sdiff.c:190 +msgid "" +"-I RE --ignore-matching-lines=RE Ignore changes whose lines all match RE." +msgstr "" +"-I RE --ignore-matching-lines=RE Änderungen ignorieren, deren Zeilen \n" +" auf das Muster RE passen." + +#: src/diff.c:842 src/sdiff.c:191 +msgid "--strip-trailing-cr Strip trailing carriage return on input." +msgstr "" +"--strip-trailing-cr Wagenrücklauf (CR) am Zeilenende beim Einlesen " +"entfernen." + +#: src/diff.c:844 +msgid "--binary Read and write data in binary mode." +msgstr "--binary Daten im Binärmodus lesen und schreiben." + +#: src/diff.c:846 src/diff3.c:451 src/sdiff.c:192 +msgid "-a --text Treat all files as text." +msgstr "-a --text Betrachte alle Dateien als Text." + +#: src/diff.c:848 +msgid "" +"-c -C NUM --context[=NUM] Output NUM (default 3) lines of copied " +"context.\n" +"-u -U NUM --unified[=NUM] Output NUM (default 3) lines of unified " +"context.\n" +" --label LABEL Use LABEL instead of file name.\n" +" -p --show-c-function Show which C function each change is in.\n" +" -F RE --show-function-line=RE Show the most recent line matching RE." +msgstr "" +" -c, -C ZAHL, --context[=ZAHL] ZAHL Zeilen des kopierten Kontextes " +"ausgeben\n" +" (Vorgabe: 3).\n" +" -u, -U ZAHL, --unified[=ZAHL] ZAHL Zeilen des \"unifizierten\" " +"Kontextes ausgeben\n" +" (Vorgabe: 3).\n" +" --label LABEL LABEL statt Dateiname verwenden.\n" +" -p, --show-c-function Anzeigen, in welcher C-Funktion die " +"Veränderung\n" +" vorkommt.\n" +" -F RE, --show-function-line=RE Die nächste Zeile anzeigen, auf die RE " +"zutrifft." + +#: src/diff.c:853 +msgid "-q --brief Output only whether files differ." +msgstr "-q --brief Nur ausgeben ob die Dateien verschieden sind." + +#: src/diff.c:854 +msgid "-e --ed Output an ed script." +msgstr "-e --ed Ein ed-Skript ausgeben." + +#: src/diff.c:855 +msgid "--normal Output a normal diff." +msgstr "--normal Ein normales Diff ausgeben." + +#: src/diff.c:856 +msgid "-n --rcs Output an RCS format diff." +msgstr "-n --rcs Ausgabe im Diff-Format von RCS." + +#: src/diff.c:857 +msgid "" +"-y --side-by-side Output in two columns.\n" +" -W NUM --width=NUM Output at most NUM (default 130) print columns.\n" +" --left-column Output only the left column of common lines.\n" +" --suppress-common-lines Do not output common lines." +msgstr "" +"-y -side-by-side In zwei Spalten ausgeben.\n" +" -W ZAHL --width=ZAHL Maximal ZAHL Zeichen pro Zeile ausgeben(Vorgabe: " +"130).\n" +" --left-column Nur linke Spalte gemeinsamer Zeilen ausgeben.\n" +" ---suppress-common-lines Keine gemeinsamen Zeilen ausgeben." + +#: src/diff.c:861 +msgid "-D NAME --ifdef=NAME Output merged file to show `#ifdef NAME' diffs." +msgstr "-D NAME --ifdef=NAME Datei mit »#ifdef NAME« in die Ausgabe mischen." + +#: src/diff.c:862 +msgid "" +"--GTYPE-group-format=GFMT Similar, but format GTYPE input groups with GFMT." +msgstr "" +"--GTYPE-group-format=GFMT Ähnlich, GTYPE-Eingabe jedoch mit GFMT " +"formatieren." + +#: src/diff.c:863 +msgid "--line-format=LFMT Similar, but format all input lines with LFMT." +msgstr "" +"--line-format=LFMT Ähnlich, aber alle Eingabe-Zeilen mit LFMT formatieren." + +#: src/diff.c:864 +msgid "" +"--LTYPE-line-format=LFMT Similar, but format LTYPE input lines with LFMT." +msgstr "" +"--LTYPE-line-format=LFMT Ähnlich, LTYPE-Eingabe jedoch mit LFMT formatieren." + +#: src/diff.c:865 +msgid " LTYPE is `old', `new', or `unchanged'. GTYPE is LTYPE or `changed'." +msgstr "" +" LTYPE kann »old«, »new« oder »unchanged« sein. GTYPE ist LTYPE oder " +"»changed«." + +#: src/diff.c:866 +msgid "" +" GFMT may contain:\n" +" %< lines from FILE1\n" +" %> lines from FILE2\n" +" %= lines common to FILE1 and FILE2\n" +" %[-][WIDTH][.[PREC]]{doxX}LETTER printf-style spec for LETTER\n" +" LETTERs are as follows for new group, lower case for old group:\n" +" F first line number\n" +" L last line number\n" +" N number of lines = L-F+1\n" +" E F-1\n" +" M L+1" +msgstr "" +" GFMT kann enthalten:\n" +" %< Zeilen von DATEI1.\n" +" %> Zeilen von DATEI2.\n" +" %= Zeilen, die sowohl zu DATEI1 als auc zu DATEI2 gehören.\n" +" %[-][BREITE][.[PRÄZ]]{doxX}BUCHST Ausgabe nach printf-Regeln für " +"BUCHST.\n" +" Folgende BUCHTSTaben gelten für neue Gruppen, Kleinschreibung für " +"alte:\n" +" F Erste Zeilennummer.\n" +" L Letzte Zeilennummer.\n" +" N Zahl der Zeilen = L-F+1.\n" +" E F-1." + +#: src/diff.c:877 +msgid "" +" LFMT may contain:\n" +" %L contents of line\n" +" %l contents of line, excluding any trailing newline\n" +" %[-][WIDTH][.[PREC]]{doxX}n printf-style spec for input line number" +msgstr "" +" LFMT kann enthalten:\n" +" %L Inhalt der Zeile.\n" +" %l Inhalt der Zeile, ohne Newline am Ende.\n" +" %[-][BREITE][.[PRÄZ]]{doxX}n Zeilennummer im printf-Stil." + +#: src/diff.c:881 +msgid "" +" Either GFMT or LFMT may contain:\n" +" %% %\n" +" %c'C' the single character C\n" +" %c'\\OOO' the character with octal code OOO" +msgstr "" +" Sowohl GFMT als auch LFMT können folgendes enthalten:\n" +" %% %\n" +" %c'C' das einzelne Zeichen C\n" +" %c'\\000' das Zeichen mit dem Oktalcode 000" + +#: src/diff.c:886 +msgid "-l --paginate Pass the output through `pr' to paginate it." +msgstr "-l --paginate Ausgabe an »pr« zum Seitenumbruch übergeben." + +#: src/diff.c:887 src/sdiff.c:198 +msgid "-t --expand-tabs Expand tabs to spaces in output." +msgstr "-t -expand-tabs Tabulatoren zu Leerzeichen in der Ausgabe ausdehnen." + +#: src/diff.c:888 src/diff3.c:452 +msgid "-T --initial-tab Make tabs line up by prepending a tab." +msgstr "" +"-T --initial-tab Einrückungen durch vorangestellte Tabulatoren erzeugen." + +#: src/diff.c:890 +msgid "-r --recursive Recursively compare any subdirectories found." +msgstr "-r --recursive Rekursiv alle Unterverzeichnisse vergleichen." + +#: src/diff.c:891 +msgid "-N --new-file Treat absent files as empty." +msgstr "-N --new-file Fehlende Dateien als leer betrachten." + +#: src/diff.c:892 +msgid "--unidirectional-new-file Treat absent first files as empty." +msgstr "" +"--unidirectional-new-file Die ersten fehlenden Dateien als leer betrachten." + +#: src/diff.c:893 +msgid "-s --report-identical-files Report when two files are the same." +msgstr "-s --report-identical-files Meldung, wenn zwei Dateien gleich sind." + +#: src/diff.c:894 +msgid "-x PAT --exclude=PAT Exclude files that match PAT." +msgstr "" +"-x MUSTER --exclude=MUSTER Dateien, die auf MUSTER passen, ausschließen." + +#: src/diff.c:895 +msgid "" +"-X FILE --exclude-from=FILE Exclude files that match any pattern in FILE." +msgstr "" +"-X DATEI --exclude-from=DATEI Dateien überspringen, die auf eines der " +"Muster in DATEI passen." + +#: src/diff.c:896 +msgid "" +"-S FILE --starting-file=FILE Start with FILE when comparing directories." +msgstr "" +"-S DATEI --starting-file=DATEI Beim Verzeichnisvergleich mit DATEI " +"beginnen." + +#: src/diff.c:897 +msgid "" +"--from-file=FILE1 Compare FILE1 to all operands. FILE1 can be a directory." +msgstr "" +"--from-file=DATEI1 DATEI1 mit allen Operanden vergleichen.\n" +" DATEI1 kann ein Verzeichnis sein." + +#: src/diff.c:898 +msgid "" +"--to-file=FILE2 Compare all operands to FILE2. FILE2 can be a directory." +msgstr "" +"--to-file=DATEI2 Alle Operanden mit DATEI2 vergleichen.\n" +" DATEI2 kann ein Verzeichnis sein." + +#: src/diff.c:900 +msgid "--horizon-lines=NUM Keep NUM lines of the common prefix and suffix." +msgstr "" +"--horizon-lines=ZAHL Behalte ZAHL Zeilen mit gemeinsamen Pre- und Suffix." + +#: src/diff.c:901 src/sdiff.c:200 +msgid "-d --minimal Try hard to find a smaller set of changes." +msgstr "" +"-d --minimal Aufwendig nach einem kleineren Satz von Änderungen suchen." + +#: src/diff.c:902 +msgid "" +"--speed-large-files Assume large files and many scattered small changes." +msgstr "" +"--speed-large-files Es werden große Dateien und viele Änderungen vermutet." + +#: src/diff.c:907 +msgid "" +"FILES are `FILE1 FILE2' or `DIR1 DIR2' or `DIR FILE...' or `FILE... DIR'." +msgstr "" +"DATEIEN sind 'DATEI1 DATEI2' oder 'VERZ1 VERZ2' oder \"VERZ DATEI...\" \n" +"oder \"DATEI... VERZ;" + +#: src/diff.c:908 +msgid "" +"If --from-file or --to-file is given, there are no restrictions on FILES." +msgstr "" +"Wenn --from-file oder --to-file angegeben werden, gibt es keine \n" +"Einschränkungen für DATEIEN." + +#: src/diff.c:909 src/diff3.c:474 src/sdiff.c:222 +msgid "If a FILE is `-', read standard input." +msgstr "Wenn DATEI »-« ist, von der Standardeingabe lesen." + +#: src/diff.c:920 +#, c-format +msgid "Usage: %s [OPTION]... FILES\n" +msgstr "Aufruf: %s [OPTION]... DATEIEN\n" + +#: src/diff.c:949 +#, c-format +msgid "conflicting %s option value `%s'" +msgstr "Widersprüchlicher Optionswert %s für »%s«." + +#: src/diff.c:962 +msgid "conflicting output style options" +msgstr "Widersprüchliche Optionenen für den Ausgabestil." + +#: src/diff.c:976 +msgid "regular empty file" +msgstr "Normale leere Datei." + +#: src/diff.c:976 +msgid "regular file" +msgstr "Normale Datei." + +#: src/diff.c:978 +msgid "directory" +msgstr "Verzeichnis" + +#: src/diff.c:981 +msgid "block special file" +msgstr "Blockgerät" + +#: src/diff.c:984 +msgid "character special file" +msgstr "Zeichenorientiertes Gerät" + +#: src/diff.c:987 +msgid "fifo" +msgstr "fifo" + +#: src/diff.c:991 +msgid "socket" +msgstr "Socket." + +#: src/diff.c:994 +msgid "message queue" +msgstr "Nachrichtenschlange (»message queue«)" + +#: src/diff.c:997 +msgid "semaphore" +msgstr "Semaphore." + +#: src/diff.c:1000 +msgid "shared memory object" +msgstr "Shared-Memory-Objekt." + +# XXX was ist das? +#: src/diff.c:1003 +msgid "typed memory object" +msgstr "Typisiertes Speicherobjekt." + +#: src/diff.c:1006 +msgid "weird file" +msgstr "Seltsame Datei." + +#: src/diff.c:1070 src/diff.c:1256 +#, c-format +msgid "Only in %s: %s\n" +msgstr "Nur in %s: %s.\n" + +#: src/diff.c:1193 +msgid "cannot compare `-' to a directory" +msgstr "»-« kann nicht mit Verzeichnis verglichen werden." + +#: src/diff.c:1220 +msgid "-D option not supported with directories" +msgstr "Option -D nicht unterstützt bei Verzeichnissen" + +#: src/diff.c:1229 +#, c-format +msgid "Common subdirectories: %s and %s\n" +msgstr "Gemeinsame Unterverzeichnisse: %s und %s.\n" + +#: src/diff.c:1266 +#, c-format +msgid "File %s is a %s while file %s is a %s\n" +msgstr "Datei %s ist ein %s während Datei %s ein %s ist.\n" + +#: src/diff.c:1345 +#, c-format +msgid "Files %s and %s are identical\n" +msgstr "Dateien %s und %s sind identisch.\n" + +#: src/diff3.c:26 +msgid "Written by Randy Smith." +msgstr "Geschrieben von Randy Smith." + +#: src/diff3.c:328 +msgid "incompatible options" +msgstr "Inkompatible Optionen." + +#: src/diff3.c:368 +msgid "`-' specified for more than one input file" +msgstr "»-« für mehr als eine Eingabedatei angegeben." + +#: src/diff3.c:408 src/diff3.c:1232 src/diff3.c:1645 src/diff3.c:1700 +#: src/sdiff.c:305 src/sdiff.c:879 src/sdiff.c:890 +msgid "read failed" +msgstr "Lesefehler." + +#: src/diff3.c:441 +msgid "-e --ed Output unmerged changes from OLDFILE to YOURFILE into MYFILE." +msgstr "" +"-e --ed Nicht in DEINEDATEI übernommene Änderungen aus ALTEDATEI in " +"MEINEDATEI abspeichern." + +#: src/diff3.c:442 +msgid "-E --show-overlap Output unmerged changes, bracketing conflicts." +msgstr "" +"-E --show-overlap Ungemische Änderungen anzeigen, Konflikte in Klammern." + +#: src/diff3.c:443 +msgid "-A --show-all Output all changes, bracketing conflicts." +msgstr "-A --show-all Alle Änderungen ausgeben, Konflikte in Klammern." + +#: src/diff3.c:444 +msgid "-x --overlap-only Output overlapping changes." +msgstr "-x --overlap-only Überlappende Änderungen ausgeben." + +#: src/diff3.c:445 +msgid "-X Output overlapping changes, bracketing them." +msgstr "-X Überlappende Änderungen geklammert ausgeben." + +#: src/diff3.c:446 +msgid "-3 --easy-only Output unmerged nonoverlapping changes." +msgstr "" +"-3, --easy-only Nicht-zusammengeführte (`unmerged') nichtüberlappende " +"Änderungen ausgeben." + +#: src/diff3.c:448 +msgid "-m --merge Output merged file instead of ed script (default -A)." +msgstr "" +"-m --merge Zusammengeführte Datei anstelle von ed-Skript ausgeben (Vorgabe " +"-A)." + +#: src/diff3.c:449 +msgid "-L LABEL --label=LABEL Use LABEL instead of file name." +msgstr "-L LABEL --label=LABEL LABEL anstelle des Dateinamens verwenden." + +#: src/diff3.c:450 +msgid "-i Append `w' and `q' commands to ed scripts." +msgstr "-i An ed-Skripte »w«- und »q«-Kommandos anhängen." + +#: src/diff3.c:453 src/sdiff.c:202 +msgid "--diff-program=PROGRAM Use PROGRAM to compare files." +msgstr "" +"--diff-program=PROGRAMM PROGRAMM zum Vergleichen von Dateien verwenden." + +#: src/diff3.c:465 +#, c-format +msgid "Usage: %s [OPTION]... MYFILE OLDFILE YOURFILE\n" +msgstr "Benutzung: %s [OPTION]... MEINEDATEI ALTEDATEI DEINEDATEI\n" + +#: src/diff3.c:467 +msgid "Compare three files line by line." +msgstr "Drei Dateien Zeile für Zeile vergleichen." + +#: src/diff3.c:673 +msgid "internal error: screwup in format of diff blocks" +msgstr "Interner Fehler: Format für diff-Blöcke ist durcheinander." + +#: src/diff3.c:971 +#, c-format +msgid "%s: diff failed: " +msgstr "%s: »diff« ist gescheitert: " + +#: src/diff3.c:993 +msgid "internal error: invalid diff type in process_diff" +msgstr "Interner Fehler: Ungültiger diff-Typ in process_diff." + +#: src/diff3.c:1018 +msgid "invalid diff format; invalid change separator" +msgstr "Ungültiges Diff-Format; ungültiger Änderungstrenner." + +#: src/diff3.c:1242 +msgid "invalid diff format; incomplete last line" +msgstr "Ungültiges Diff-Format; felende letzte Zeile." + +#: src/diff3.c:1265 src/sdiff.c:273 +#, c-format +msgid "subsidiary program `%s' not executable" +msgstr "Unterprogramm »%s« ist nicht ausführbar." + +#: src/diff3.c:1268 src/sdiff.c:276 src/util.c:298 +#, c-format +msgid "subsidiary program `%s' not found" +msgstr "Unterprogramm »%s« nicht gefunden." + +#: src/diff3.c:1272 src/sdiff.c:268 src/util.c:301 +#, c-format +msgid "subsidiary program `%s' failed" +msgstr "Unterprogramm »%s« schlug fehl." + +#: src/diff3.c:1294 +msgid "invalid diff format; incorrect leading line chars" +msgstr "Ungültiges Diff-Format; inkorrektes Zeichen in führender Zeile" + +#: src/diff3.c:1370 +msgid "internal error: invalid diff type passed to output" +msgstr "Interner Fehler: Ungültiger diff-Typ an Ausgabe übergeben." + +#: src/diff3.c:1647 src/diff3.c:1704 +msgid "input file shrank" +msgstr "Eingabedatei schrumpfte." + +#: src/dir.c:162 +#, c-format +msgid "cannot compare file names `%s' and `%s'" +msgstr "Die Dateinamen »%s« und »%s« können nicht verglichen werden." + +#: src/sdiff.c:35 +msgid "Written by Thomas Lord." +msgstr "Geschrieben von Thomas Lord." + +#: src/sdiff.c:183 +msgid "-o FILE --output=FILE Operate interactively, sending output to FILE." +msgstr "" +"-o DATEI --output=DATEI Interaktiv arbeiten, Ausgabe in DATEI speichern." + +#: src/sdiff.c:185 +msgid "-i --ignore-case Consider upper- and lower-case to be the same." +msgstr "" +"-i --ignore-case Nicht zwischen Groß- und Kleinschreibung unterscheiden." + +#: src/sdiff.c:188 +msgid "-W --ignore-all-space Ignore all white space." +msgstr "-W -ignore-all-space Leerraum ignorieren." + +#: src/sdiff.c:194 +msgid "-w NUM --width=NUM Output at most NUM (default 130) columns per line." +msgstr "-w ZAHL --width=ZAHL Maximal ZAHL Zeichen pro Zeile (Vorgabe: 130)." + +#: src/sdiff.c:195 +msgid "-l --left-column Output only the left column of common lines." +msgstr "-l --left-column Nur linke Spalte der gemeinsamen Zeilen ausgeben." + +#: src/sdiff.c:196 +msgid "-s --suppress-common-lines Do not output common lines." +msgstr "-s --suppress-common-lines Keine gemeinsamen Zeilen ausgeben." + +#: src/sdiff.c:201 +msgid "" +"-H --speed-large-files Assume large files and many scattered small changes." +msgstr "" +"-H --speed-large-files Es werden große Dateien und viele Änderungen " +"vermutet." + +#: src/sdiff.c:214 +#, c-format +msgid "Usage: %s [OPTION]... FILE1 FILE2\n" +msgstr "Aufruf: %s [OPTION]... DATEI1 DATEI2\n" + +# XXX Was ist das? +#: src/sdiff.c:215 +msgid "Side-by-side merge of file differences." +msgstr "" +"Nebeneinanderstehenden Zusammenbringen (side-by-side merge) der " +"Dateiunterschiede." + +#: src/sdiff.c:327 +msgid "cannot interactively merge standard input" +msgstr "Kann nicht die Standardeingabe interaktiv mischen." + +#: src/sdiff.c:588 +msgid "both files to be compared are directories" +msgstr "Beide zu vergleichenden Dateien sind Verzeichnisse." + +#: src/sdiff.c:853 +msgid "" +"ed:\tEdit then use both versions, each decorated with a header.\n" +"eb:\tEdit then use both versions.\n" +"el:\tEdit then use the left version.\n" +"er:\tEdit then use the right version.\n" +"e:\tEdit a new version.\n" +"l:\tUse the left version.\n" +"r:\tUse the right version.\n" +"s:\tSilently include common lines.\n" +"v:\tVerbosely include common lines.\n" +"q:\tQuit.\n" +msgstr "" +"ed:\\tEdieren, dann beide Versionen benutzen, jede mit einem Kopf " +"dekoriert.\n" +"eb:\\tEdieren, dann beide Versionen benutzen.\n" +"el:\\tEdieren, dann linke Version benutzen.\n" +"er:\\tEdieren, dann rechte Version benutzen.\n" +"e:\\t Neue Version edieren.\n" +"l:\\tLinke Version benutzen.\n" +"r:\\tRechte Version benutzen.\n" +"s:\\tSchweigend gemeinsame Zeilen übernehmen.\n" +"v:\\tLauthals gemeinsame Zeilen übernehmen.\n" +"q:\\tBeenden.\n" + +#~ msgid "--inhibit-hunk-merge Do not merge hunks." +#~ msgstr "--inhibit-hunk-merge Blöcke (hunks) nicht vermischen." + +#~ msgid "" +#~ "SKIP values may be followed by the following multiplicative suffixes:\n" +#~ msgstr "nicht gefunden" + +#~ msgid "kB 1000, K 1024, MB 1,000,000, M 1,048,576,\n" +#~ msgstr "kB 1000, K 1024, MB 1.000.000, M 1.048.576,\n" + +#~ msgid "GB 1,000,000,000, G 1,073,741,824, and so on for T, P, E, Z, Y.\n" +#~ msgstr "" +#~ "GB 1.000.000.000, G 1.073.741.824, und so weiter für T, P, E, Z, Y.\n" + +#~ msgid "Report bugs to .\n" +#~ msgstr "Fehlerberichte bitte an .\n" + +#~ msgid "context length specified twice" +#~ msgstr "Kontextlänge zweimal angegeben." + +#~ msgid "multiple `--from-file' options" +#~ msgstr "mehrere Optionen '--from-file'." + +#~ msgid "multiple `--to-file' options" +#~ msgstr "mehrere Optionen '--to-file'." + +#~ msgid "regular empty executable file" +#~ msgstr "Normale leere ausführbare Datei." + +#~ msgid "regular executable file" +#~ msgstr "Normale ausführbare Datei." + +#~ msgid "If a FILE is `-', read standard input.\n" +#~ msgstr "Wenn DATEI »-« ist, von der Standardeingabe lesen.\n" diff --git a/src/apps/bin/diffutils-2.8.1/po/diffutils.pot b/src/apps/bin/diffutils-2.8.1/po/diffutils.pot new file mode 100644 index 0000000000..0325b1e192 --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/po/diffutils.pot @@ -0,0 +1,841 @@ +# 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" +"POT-Creation-Date: 2002-04-05 14:10-0800\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/c-stack.c:188 +msgid "program error" +msgstr "" + +#: lib/c-stack.c:189 +msgid "stack overflow" +msgstr "" + +#: lib/error.c:128 lib/error.c:156 +msgid "Unknown system error" +msgstr "" + +#: lib/freesoft.c:27 +msgid "" +"This program comes with NO WARRANTY, to the extent permitted by law.\n" +"You may redistribute copies of this program\n" +"under the terms of the GNU General Public License.\n" +"For more information about these matters, see the file named COPYING." +msgstr "" + +#: lib/getopt.c:693 +#, c-format +msgid "%s: option `%s' is ambiguous\n" +msgstr "" + +#: lib/getopt.c:718 +#, c-format +msgid "%s: option `--%s' doesn't allow an argument\n" +msgstr "" + +#: lib/getopt.c:723 +#, c-format +msgid "%s: option `%c%s' doesn't allow an argument\n" +msgstr "" + +#: lib/getopt.c:741 lib/getopt.c:914 +#, c-format +msgid "%s: option `%s' requires an argument\n" +msgstr "" + +#: lib/getopt.c:770 +#, c-format +msgid "%s: unrecognized option `--%s'\n" +msgstr "" + +#: lib/getopt.c:774 +#, c-format +msgid "%s: unrecognized option `%c%s'\n" +msgstr "" + +#: lib/getopt.c:800 +#, c-format +msgid "%s: illegal option -- %c\n" +msgstr "" + +#: lib/getopt.c:803 +#, c-format +msgid "%s: invalid option -- %c\n" +msgstr "" + +#: lib/getopt.c:833 lib/getopt.c:963 +#, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "" + +#: lib/getopt.c:880 +#, c-format +msgid "%s: option `-W %s' is ambiguous\n" +msgstr "" + +#: lib/getopt.c:898 +#, c-format +msgid "%s: option `-W %s' doesn't allow an argument\n" +msgstr "" + +#: lib/regex.c:1367 +msgid "Success" +msgstr "" + +#: lib/regex.c:1370 +msgid "No match" +msgstr "" + +#: lib/regex.c:1373 +msgid "Invalid regular expression" +msgstr "" + +#: lib/regex.c:1376 +msgid "Invalid collation character" +msgstr "" + +#: lib/regex.c:1379 +msgid "Invalid character class name" +msgstr "" + +#: lib/regex.c:1382 +msgid "Trailing backslash" +msgstr "" + +#: lib/regex.c:1385 +msgid "Invalid back reference" +msgstr "" + +#: lib/regex.c:1388 +msgid "Unmatched [ or [^" +msgstr "" + +#: lib/regex.c:1391 +msgid "Unmatched ( or \\(" +msgstr "" + +#: lib/regex.c:1394 +msgid "Unmatched \\{" +msgstr "" + +#: lib/regex.c:1397 +msgid "Invalid content of \\{\\}" +msgstr "" + +#: lib/regex.c:1400 +msgid "Invalid range end" +msgstr "" + +#: lib/regex.c:1403 +msgid "Memory exhausted" +msgstr "" + +#: lib/regex.c:1406 +msgid "Invalid preceding regular expression" +msgstr "" + +#: lib/regex.c:1409 +msgid "Premature end of regular expression" +msgstr "" + +#: lib/regex.c:1412 +msgid "Regular expression too big" +msgstr "" + +#: lib/regex.c:1415 +msgid "Unmatched ) or \\)" +msgstr "" + +#: lib/regex.c:8034 +msgid "No previous regular expression" +msgstr "" + +#: lib/xmalloc.c:63 +msgid "memory exhausted" +msgstr "" + +#: src/analyze.c:809 src/diff.c:1283 +#, c-format +msgid "Files %s and %s differ\n" +msgstr "" + +#: src/analyze.c:812 +#, c-format +msgid "Binary files %s and %s differ\n" +msgstr "" + +#: src/analyze.c:1058 src/diff3.c:1413 src/util.c:526 +msgid "No newline at end of file" +msgstr "" + +#: src/cmp.c:43 +msgid "Written by Torbjorn Granlund and David MacKenzie." +msgstr "" + +#: src/cmp.c:118 src/diff.c:817 src/diff3.c:427 src/sdiff.c:168 +#, c-format +msgid "Try `%s --help' for more information." +msgstr "" + +#: src/cmp.c:137 +#, c-format +msgid "invalid --ignore-initial value `%s'" +msgstr "" + +#: src/cmp.c:146 +msgid "options -l and -s are incompatible" +msgstr "" + +#: src/cmp.c:154 src/diff.c:826 src/diff3.c:435 src/sdiff.c:177 +#: src/sdiff.c:313 src/sdiff.c:320 src/sdiff.c:910 src/util.c:194 +#: src/util.c:286 src/util.c:293 +msgid "write failed" +msgstr "" + +#: src/cmp.c:156 src/diff.c:828 src/diff.c:1354 src/diff3.c:437 +#: src/sdiff.c:179 +msgid "standard output" +msgstr "" + +#: src/cmp.c:160 +msgid "-b --print-bytes Print differing bytes." +msgstr "" + +#: src/cmp.c:161 +msgid "-i SKIP --ignore-initial=SKIP Skip the first SKIP bytes of input." +msgstr "" + +#: src/cmp.c:162 +msgid "-i SKIP1:SKIP2 --ignore-initial=SKIP1:SKIP2" +msgstr "" + +#: src/cmp.c:163 +msgid "" +" Skip the first SKIP1 bytes of FILE1 and the first SKIP2 bytes of FILE2." +msgstr "" + +#: src/cmp.c:164 +msgid "-l --verbose Output byte numbers and values of all differing bytes." +msgstr "" + +#: src/cmp.c:165 +msgid "-n LIMIT --bytes=LIMIT Compare at most LIMIT bytes." +msgstr "" + +#: src/cmp.c:166 +msgid "-s --quiet --silent Output nothing; yield exit status only." +msgstr "" + +#: src/cmp.c:167 src/diff.c:904 src/diff3.c:455 src/sdiff.c:204 +msgid "-v --version Output version info." +msgstr "" + +#: src/cmp.c:168 src/diff.c:905 src/diff3.c:456 src/sdiff.c:205 +msgid "--help Output this help." +msgstr "" + +#: src/cmp.c:177 +#, c-format +msgid "Usage: %s [OPTION]... FILE1 [FILE2 [SKIP1 [SKIP2]]]\n" +msgstr "" + +#: src/cmp.c:179 +msgid "Compare two files byte by byte." +msgstr "" + +#: src/cmp.c:183 +msgid "SKIP1 and SKIP2 are the number of bytes to skip in each file." +msgstr "" + +#: src/cmp.c:184 +msgid "" +"SKIP values may be followed by the following multiplicative suffixes:\n" +"kB 1000, K 1024, MB 1,000,000, M 1,048,576,\n" +"GB 1,000,000,000, G 1,073,741,824, and so on for T, P, E, Z, Y." +msgstr "" + +#: src/cmp.c:187 +msgid "If a FILE is `-' or missing, read standard input." +msgstr "" + +#: src/cmp.c:188 src/diff.c:911 src/diff3.c:475 src/sdiff.c:223 +msgid "Report bugs to ." +msgstr "" + +#: src/cmp.c:231 +#, c-format +msgid "invalid --bytes value `%s'" +msgstr "" + +#: src/cmp.c:258 src/diff.c:734 src/diff3.c:333 src/sdiff.c:558 +#, c-format +msgid "missing operand after `%s'" +msgstr "" + +#: src/cmp.c:270 src/diff.c:736 src/diff3.c:335 src/sdiff.c:560 +#, c-format +msgid "extra operand `%s'" +msgstr "" + +#: src/cmp.c:477 +#, c-format +msgid "%s %s differ: byte %s, line %s\n" +msgstr "" + +#: src/cmp.c:495 +#, c-format +msgid "%s %s differ: byte %s, line %s is %3o %s %3o %s\n" +msgstr "" + +#: src/cmp.c:543 +#, c-format +msgid "cmp: EOF on %s\n" +msgstr "" + +#: src/diff.c:41 +msgid "" +"Written by Paul Eggert, Mike Haertel, David Hayes,\n" +"Richard Stallman, and Len Tower." +msgstr "" + +#: src/diff.c:322 +#, c-format +msgid "invalid context length `%s'" +msgstr "" + +#: src/diff.c:405 +msgid "pagination not supported on this host" +msgstr "" + +#: src/diff.c:420 src/diff3.c:315 +msgid "too many file label options" +msgstr "" + +#: src/diff.c:498 +#, c-format +msgid "invalid width `%s'" +msgstr "" + +#: src/diff.c:502 +msgid "conflicting width options" +msgstr "" + +#: src/diff.c:526 +#, c-format +msgid "invalid horizon length `%s'" +msgstr "" + +#: src/diff.c:629 +#, c-format +msgid "`-%ld' option is obsolete; use `-%c %ld'" +msgstr "" + +#: src/diff.c:641 +#, c-format +msgid "`-%ld' option is obsolete; omit it" +msgstr "" + +#: src/diff.c:709 +msgid "--from-file and --to-file both specified" +msgstr "" + +#: src/diff.c:832 +msgid "Compare files line by line." +msgstr "" + +#: src/diff.c:834 +msgid "-i --ignore-case Ignore case differences in file contents." +msgstr "" + +#: src/diff.c:835 +msgid "--ignore-file-name-case Ignore case when comparing file names." +msgstr "" + +#: src/diff.c:836 +msgid "--no-ignore-file-name-case Consider case when comparing file names." +msgstr "" + +#: src/diff.c:837 src/sdiff.c:186 +msgid "-E --ignore-tab-expansion Ignore changes due to tab expansion." +msgstr "" + +#: src/diff.c:838 src/sdiff.c:187 +msgid "-b --ignore-space-change Ignore changes in the amount of white space." +msgstr "" + +#: src/diff.c:839 +msgid "-w --ignore-all-space Ignore all white space." +msgstr "" + +#: src/diff.c:840 src/sdiff.c:189 +msgid "-B --ignore-blank-lines Ignore changes whose lines are all blank." +msgstr "" + +#: src/diff.c:841 src/sdiff.c:190 +msgid "" +"-I RE --ignore-matching-lines=RE Ignore changes whose lines all match RE." +msgstr "" + +#: src/diff.c:842 src/sdiff.c:191 +msgid "--strip-trailing-cr Strip trailing carriage return on input." +msgstr "" + +#: src/diff.c:844 +msgid "--binary Read and write data in binary mode." +msgstr "" + +#: src/diff.c:846 src/diff3.c:451 src/sdiff.c:192 +msgid "-a --text Treat all files as text." +msgstr "" + +#: src/diff.c:848 +msgid "" +"-c -C NUM --context[=NUM] Output NUM (default 3) lines of copied " +"context.\n" +"-u -U NUM --unified[=NUM] Output NUM (default 3) lines of unified " +"context.\n" +" --label LABEL Use LABEL instead of file name.\n" +" -p --show-c-function Show which C function each change is in.\n" +" -F RE --show-function-line=RE Show the most recent line matching RE." +msgstr "" + +#: src/diff.c:853 +msgid "-q --brief Output only whether files differ." +msgstr "" + +#: src/diff.c:854 +msgid "-e --ed Output an ed script." +msgstr "" + +#: src/diff.c:855 +msgid "--normal Output a normal diff." +msgstr "" + +#: src/diff.c:856 +msgid "-n --rcs Output an RCS format diff." +msgstr "" + +#: src/diff.c:857 +msgid "" +"-y --side-by-side Output in two columns.\n" +" -W NUM --width=NUM Output at most NUM (default 130) print columns.\n" +" --left-column Output only the left column of common lines.\n" +" --suppress-common-lines Do not output common lines." +msgstr "" + +#: src/diff.c:861 +msgid "-D NAME --ifdef=NAME Output merged file to show `#ifdef NAME' diffs." +msgstr "" + +#: src/diff.c:862 +msgid "" +"--GTYPE-group-format=GFMT Similar, but format GTYPE input groups with GFMT." +msgstr "" + +#: src/diff.c:863 +msgid "--line-format=LFMT Similar, but format all input lines with LFMT." +msgstr "" + +#: src/diff.c:864 +msgid "" +"--LTYPE-line-format=LFMT Similar, but format LTYPE input lines with LFMT." +msgstr "" + +#: src/diff.c:865 +msgid " LTYPE is `old', `new', or `unchanged'. GTYPE is LTYPE or `changed'." +msgstr "" + +#: src/diff.c:866 +msgid "" +" GFMT may contain:\n" +" %< lines from FILE1\n" +" %> lines from FILE2\n" +" %= lines common to FILE1 and FILE2\n" +" %[-][WIDTH][.[PREC]]{doxX}LETTER printf-style spec for LETTER\n" +" LETTERs are as follows for new group, lower case for old group:\n" +" F first line number\n" +" L last line number\n" +" N number of lines = L-F+1\n" +" E F-1\n" +" M L+1" +msgstr "" + +#: src/diff.c:877 +msgid "" +" LFMT may contain:\n" +" %L contents of line\n" +" %l contents of line, excluding any trailing newline\n" +" %[-][WIDTH][.[PREC]]{doxX}n printf-style spec for input line number" +msgstr "" + +#: src/diff.c:881 +msgid "" +" Either GFMT or LFMT may contain:\n" +" %% %\n" +" %c'C' the single character C\n" +" %c'\\OOO' the character with octal code OOO" +msgstr "" + +#: src/diff.c:886 +msgid "-l --paginate Pass the output through `pr' to paginate it." +msgstr "" + +#: src/diff.c:887 src/sdiff.c:198 +msgid "-t --expand-tabs Expand tabs to spaces in output." +msgstr "" + +#: src/diff.c:888 src/diff3.c:452 +msgid "-T --initial-tab Make tabs line up by prepending a tab." +msgstr "" + +#: src/diff.c:890 +msgid "-r --recursive Recursively compare any subdirectories found." +msgstr "" + +#: src/diff.c:891 +msgid "-N --new-file Treat absent files as empty." +msgstr "" + +#: src/diff.c:892 +msgid "--unidirectional-new-file Treat absent first files as empty." +msgstr "" + +#: src/diff.c:893 +msgid "-s --report-identical-files Report when two files are the same." +msgstr "" + +#: src/diff.c:894 +msgid "-x PAT --exclude=PAT Exclude files that match PAT." +msgstr "" + +#: src/diff.c:895 +msgid "" +"-X FILE --exclude-from=FILE Exclude files that match any pattern in FILE." +msgstr "" + +#: src/diff.c:896 +msgid "" +"-S FILE --starting-file=FILE Start with FILE when comparing directories." +msgstr "" + +#: src/diff.c:897 +msgid "" +"--from-file=FILE1 Compare FILE1 to all operands. FILE1 can be a directory." +msgstr "" + +#: src/diff.c:898 +msgid "" +"--to-file=FILE2 Compare all operands to FILE2. FILE2 can be a directory." +msgstr "" + +#: src/diff.c:900 +msgid "--horizon-lines=NUM Keep NUM lines of the common prefix and suffix." +msgstr "" + +#: src/diff.c:901 src/sdiff.c:200 +msgid "-d --minimal Try hard to find a smaller set of changes." +msgstr "" + +#: src/diff.c:902 +msgid "" +"--speed-large-files Assume large files and many scattered small changes." +msgstr "" + +#: src/diff.c:907 +msgid "" +"FILES are `FILE1 FILE2' or `DIR1 DIR2' or `DIR FILE...' or `FILE... DIR'." +msgstr "" + +#: src/diff.c:908 +msgid "" +"If --from-file or --to-file is given, there are no restrictions on FILES." +msgstr "" + +#: src/diff.c:909 src/diff3.c:474 src/sdiff.c:222 +msgid "If a FILE is `-', read standard input." +msgstr "" + +#: src/diff.c:920 +#, c-format +msgid "Usage: %s [OPTION]... FILES\n" +msgstr "" + +#: src/diff.c:949 +#, c-format +msgid "conflicting %s option value `%s'" +msgstr "" + +#: src/diff.c:962 +msgid "conflicting output style options" +msgstr "" + +#: src/diff.c:976 +msgid "regular empty file" +msgstr "" + +#: src/diff.c:976 +msgid "regular file" +msgstr "" + +#: src/diff.c:978 +msgid "directory" +msgstr "" + +#: src/diff.c:981 +msgid "block special file" +msgstr "" + +#: src/diff.c:984 +msgid "character special file" +msgstr "" + +#: src/diff.c:987 +msgid "fifo" +msgstr "" + +#: src/diff.c:991 +msgid "socket" +msgstr "" + +#: src/diff.c:994 +msgid "message queue" +msgstr "" + +#: src/diff.c:997 +msgid "semaphore" +msgstr "" + +#: src/diff.c:1000 +msgid "shared memory object" +msgstr "" + +#: src/diff.c:1003 +msgid "typed memory object" +msgstr "" + +#: src/diff.c:1006 +msgid "weird file" +msgstr "" + +#: src/diff.c:1070 src/diff.c:1256 +#, c-format +msgid "Only in %s: %s\n" +msgstr "" + +#: src/diff.c:1193 +msgid "cannot compare `-' to a directory" +msgstr "" + +#: src/diff.c:1220 +msgid "-D option not supported with directories" +msgstr "" + +#: src/diff.c:1229 +#, c-format +msgid "Common subdirectories: %s and %s\n" +msgstr "" + +#: src/diff.c:1266 +#, c-format +msgid "File %s is a %s while file %s is a %s\n" +msgstr "" + +#: src/diff.c:1345 +#, c-format +msgid "Files %s and %s are identical\n" +msgstr "" + +#: src/diff3.c:26 +msgid "Written by Randy Smith." +msgstr "" + +#: src/diff3.c:328 +msgid "incompatible options" +msgstr "" + +#: src/diff3.c:368 +msgid "`-' specified for more than one input file" +msgstr "" + +#: src/diff3.c:408 src/diff3.c:1232 src/diff3.c:1645 src/diff3.c:1700 +#: src/sdiff.c:305 src/sdiff.c:879 src/sdiff.c:890 +msgid "read failed" +msgstr "" + +#: src/diff3.c:441 +msgid "-e --ed Output unmerged changes from OLDFILE to YOURFILE into MYFILE." +msgstr "" + +#: src/diff3.c:442 +msgid "-E --show-overlap Output unmerged changes, bracketing conflicts." +msgstr "" + +#: src/diff3.c:443 +msgid "-A --show-all Output all changes, bracketing conflicts." +msgstr "" + +#: src/diff3.c:444 +msgid "-x --overlap-only Output overlapping changes." +msgstr "" + +#: src/diff3.c:445 +msgid "-X Output overlapping changes, bracketing them." +msgstr "" + +#: src/diff3.c:446 +msgid "-3 --easy-only Output unmerged nonoverlapping changes." +msgstr "" + +#: src/diff3.c:448 +msgid "-m --merge Output merged file instead of ed script (default -A)." +msgstr "" + +#: src/diff3.c:449 +msgid "-L LABEL --label=LABEL Use LABEL instead of file name." +msgstr "" + +#: src/diff3.c:450 +msgid "-i Append `w' and `q' commands to ed scripts." +msgstr "" + +#: src/diff3.c:453 src/sdiff.c:202 +msgid "--diff-program=PROGRAM Use PROGRAM to compare files." +msgstr "" + +#: src/diff3.c:465 +#, c-format +msgid "Usage: %s [OPTION]... MYFILE OLDFILE YOURFILE\n" +msgstr "" + +#: src/diff3.c:467 +msgid "Compare three files line by line." +msgstr "" + +#: src/diff3.c:673 +msgid "internal error: screwup in format of diff blocks" +msgstr "" + +#: src/diff3.c:971 +#, c-format +msgid "%s: diff failed: " +msgstr "" + +#: src/diff3.c:993 +msgid "internal error: invalid diff type in process_diff" +msgstr "" + +#: src/diff3.c:1018 +msgid "invalid diff format; invalid change separator" +msgstr "" + +#: src/diff3.c:1242 +msgid "invalid diff format; incomplete last line" +msgstr "" + +#: src/diff3.c:1265 src/sdiff.c:273 +#, c-format +msgid "subsidiary program `%s' not executable" +msgstr "" + +#: src/diff3.c:1268 src/sdiff.c:276 src/util.c:298 +#, c-format +msgid "subsidiary program `%s' not found" +msgstr "" + +#: src/diff3.c:1272 src/sdiff.c:268 src/util.c:301 +#, c-format +msgid "subsidiary program `%s' failed" +msgstr "" + +#: src/diff3.c:1294 +msgid "invalid diff format; incorrect leading line chars" +msgstr "" + +#: src/diff3.c:1370 +msgid "internal error: invalid diff type passed to output" +msgstr "" + +#: src/diff3.c:1647 src/diff3.c:1704 +msgid "input file shrank" +msgstr "" + +#: src/dir.c:162 +#, c-format +msgid "cannot compare file names `%s' and `%s'" +msgstr "" + +#: src/sdiff.c:35 +msgid "Written by Thomas Lord." +msgstr "" + +#: src/sdiff.c:183 +msgid "-o FILE --output=FILE Operate interactively, sending output to FILE." +msgstr "" + +#: src/sdiff.c:185 +msgid "-i --ignore-case Consider upper- and lower-case to be the same." +msgstr "" + +#: src/sdiff.c:188 +msgid "-W --ignore-all-space Ignore all white space." +msgstr "" + +#: src/sdiff.c:194 +msgid "-w NUM --width=NUM Output at most NUM (default 130) columns per line." +msgstr "" + +#: src/sdiff.c:195 +msgid "-l --left-column Output only the left column of common lines." +msgstr "" + +#: src/sdiff.c:196 +msgid "-s --suppress-common-lines Do not output common lines." +msgstr "" + +#: src/sdiff.c:201 +msgid "" +"-H --speed-large-files Assume large files and many scattered small changes." +msgstr "" + +#: src/sdiff.c:214 +#, c-format +msgid "Usage: %s [OPTION]... FILE1 FILE2\n" +msgstr "" + +#: src/sdiff.c:215 +msgid "Side-by-side merge of file differences." +msgstr "" + +#: src/sdiff.c:327 +msgid "cannot interactively merge standard input" +msgstr "" + +#: src/sdiff.c:588 +msgid "both files to be compared are directories" +msgstr "" + +#: src/sdiff.c:853 +msgid "" +"ed:\tEdit then use both versions, each decorated with a header.\n" +"eb:\tEdit then use both versions.\n" +"el:\tEdit then use the left version.\n" +"er:\tEdit then use the right version.\n" +"e:\tEdit a new version.\n" +"l:\tUse the left version.\n" +"r:\tUse the right version.\n" +"s:\tSilently include common lines.\n" +"v:\tVerbosely include common lines.\n" +"q:\tQuit.\n" +msgstr "" diff --git a/src/apps/bin/diffutils-2.8.1/po/en@boldquot.header b/src/apps/bin/diffutils-2.8.1/po/en@boldquot.header new file mode 100644 index 0000000000..fedb6a06d1 --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/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/src/apps/bin/diffutils-2.8.1/po/en@quot.header b/src/apps/bin/diffutils-2.8.1/po/en@quot.header new file mode 100644 index 0000000000..a9647fc35c --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/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/src/apps/bin/diffutils-2.8.1/po/en_GB.gmo b/src/apps/bin/diffutils-2.8.1/po/en_GB.gmo new file mode 100644 index 0000000000000000000000000000000000000000..00aeb8173104e469b69f2d39d627545b0fab6a2c GIT binary patch literal 617 zcmaKp%}yIJ6orQXn^|^;R26SVsEa!|QxMSrQK}GCBS9OLq$?JfnLEa4u!HR>Kd->L zPr;+`4m?ZmBtZ$Ns-;iI@;N$|um7xlcnM}}jpQS7K&%sIM6)Ku2601d5|49z3WAj` z?VpKHLC^|k=dI6k%}7^>Rif!`5kU~Sl&PvhDJo_rUKz~*Sd@oTr`8s8BeiPYPlS?4kW6774w`aLy;XI72(5@2R*pv-LU9o|bXgxc? zsrLM>(yrEVZmzrGvCy&>5@CemI%NYbE9EXJt9yRlgK=pQORG>9E;d$n!;|b}uy|TK z=3(DxkD4yOpU^8j-udlGC6wN0`K7Q9{o(i&zMl58Y!PkxOSCZ1xha&EDeGJ)|8Bf) UY5Wl7@29_P|Lb>_{rT_w1^3ITH~;_u literal 0 HcmV?d00001 diff --git a/src/apps/bin/diffutils-2.8.1/po/en_GB.po b/src/apps/bin/diffutils-2.8.1/po/en_GB.po new file mode 100644 index 0000000000..57d715ba07 --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/po/en_GB.po @@ -0,0 +1,843 @@ +# British English messages for GNU diffutils +# Copyright (C) 1998, 2001, 2002 Free Software Foundation, Inc. +# Paul Eggert , 1998 +# +msgid "" +msgstr "" +"Project-Id-Version: GNU diffutils 2.7.8\n" +"POT-Creation-Date: 2002-04-05 14:10-0800\n" +"PO-Revision-Date: 2002-02-27 23:01-0800\n" +"Last-Translator: Paul Eggert \n" +"Language-Team: English \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=US-ASCII\n" +"Content-Transfer-Encoding: 8bit\n" + +#: lib/c-stack.c:188 +msgid "program error" +msgstr "" + +#: lib/c-stack.c:189 +msgid "stack overflow" +msgstr "" + +#: lib/error.c:128 lib/error.c:156 +msgid "Unknown system error" +msgstr "" + +#: lib/freesoft.c:27 +msgid "" +"This program comes with NO WARRANTY, to the extent permitted by law.\n" +"You may redistribute copies of this program\n" +"under the terms of the GNU General Public License.\n" +"For more information about these matters, see the file named COPYING." +msgstr "" + +#: lib/getopt.c:693 +#, c-format +msgid "%s: option `%s' is ambiguous\n" +msgstr "" + +#: lib/getopt.c:718 +#, c-format +msgid "%s: option `--%s' doesn't allow an argument\n" +msgstr "" + +#: lib/getopt.c:723 +#, c-format +msgid "%s: option `%c%s' doesn't allow an argument\n" +msgstr "" + +#: lib/getopt.c:741 lib/getopt.c:914 +#, c-format +msgid "%s: option `%s' requires an argument\n" +msgstr "" + +# `Thou whoreson zed! Thou unnecessary letter!' -- Kent in _King Lear_ +#: lib/getopt.c:770 +#, c-format +msgid "%s: unrecognized option `--%s'\n" +msgstr "%s: unrecognised option `--%s'\n" + +#: lib/getopt.c:774 +#, c-format +msgid "%s: unrecognized option `%c%s'\n" +msgstr "%s: unrecognised option `%c%s'\n" + +# POSIX requires the word "illegal" in the POSIX locale, but the error +# is not really against the law. This is not the POSIX locale, so fix +# the wording. +#: lib/getopt.c:800 +#, c-format +msgid "%s: illegal option -- %c\n" +msgstr "%s: unrecognised option `-%c'\n" + +#: lib/getopt.c:803 +#, c-format +msgid "%s: invalid option -- %c\n" +msgstr "" + +#: lib/getopt.c:833 lib/getopt.c:963 +#, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "" + +#: lib/getopt.c:880 +#, c-format +msgid "%s: option `-W %s' is ambiguous\n" +msgstr "" + +#: lib/getopt.c:898 +#, c-format +msgid "%s: option `-W %s' doesn't allow an argument\n" +msgstr "" + +#: lib/regex.c:1367 +msgid "Success" +msgstr "" + +#: lib/regex.c:1370 +msgid "No match" +msgstr "" + +#: lib/regex.c:1373 +msgid "Invalid regular expression" +msgstr "" + +#: lib/regex.c:1376 +msgid "Invalid collation character" +msgstr "" + +#: lib/regex.c:1379 +msgid "Invalid character class name" +msgstr "" + +#: lib/regex.c:1382 +msgid "Trailing backslash" +msgstr "" + +#: lib/regex.c:1385 +msgid "Invalid back reference" +msgstr "" + +#: lib/regex.c:1388 +msgid "Unmatched [ or [^" +msgstr "" + +#: lib/regex.c:1391 +msgid "Unmatched ( or \\(" +msgstr "" + +#: lib/regex.c:1394 +msgid "Unmatched \\{" +msgstr "" + +#: lib/regex.c:1397 +msgid "Invalid content of \\{\\}" +msgstr "" + +#: lib/regex.c:1400 +msgid "Invalid range end" +msgstr "" + +#: lib/regex.c:1403 +msgid "Memory exhausted" +msgstr "" + +#: lib/regex.c:1406 +msgid "Invalid preceding regular expression" +msgstr "" + +#: lib/regex.c:1409 +msgid "Premature end of regular expression" +msgstr "" + +#: lib/regex.c:1412 +msgid "Regular expression too big" +msgstr "" + +#: lib/regex.c:1415 +msgid "Unmatched ) or \\)" +msgstr "" + +#: lib/regex.c:8034 +msgid "No previous regular expression" +msgstr "" + +#: lib/xmalloc.c:63 +msgid "memory exhausted" +msgstr "" + +#: src/analyze.c:809 src/diff.c:1283 +#, c-format +msgid "Files %s and %s differ\n" +msgstr "" + +#: src/analyze.c:812 +#, c-format +msgid "Binary files %s and %s differ\n" +msgstr "" + +#: src/analyze.c:1058 src/diff3.c:1413 src/util.c:526 +msgid "No newline at end of file" +msgstr "" + +#: src/cmp.c:43 +msgid "Written by Torbjorn Granlund and David MacKenzie." +msgstr "" + +#: src/cmp.c:118 src/diff.c:817 src/diff3.c:427 src/sdiff.c:168 +#, c-format +msgid "Try `%s --help' for more information." +msgstr "" + +#: src/cmp.c:137 +#, c-format +msgid "invalid --ignore-initial value `%s'" +msgstr "" + +#: src/cmp.c:146 +msgid "options -l and -s are incompatible" +msgstr "" + +#: src/cmp.c:154 src/diff.c:826 src/diff3.c:435 src/sdiff.c:177 +#: src/sdiff.c:313 src/sdiff.c:320 src/sdiff.c:910 src/util.c:194 +#: src/util.c:286 src/util.c:293 +msgid "write failed" +msgstr "" + +#: src/cmp.c:156 src/diff.c:828 src/diff.c:1354 src/diff3.c:437 +#: src/sdiff.c:179 +msgid "standard output" +msgstr "" + +#: src/cmp.c:160 +msgid "-b --print-bytes Print differing bytes." +msgstr "" + +#: src/cmp.c:161 +msgid "-i SKIP --ignore-initial=SKIP Skip the first SKIP bytes of input." +msgstr "" + +#: src/cmp.c:162 +msgid "-i SKIP1:SKIP2 --ignore-initial=SKIP1:SKIP2" +msgstr "" + +#: src/cmp.c:163 +msgid "" +" Skip the first SKIP1 bytes of FILE1 and the first SKIP2 bytes of FILE2." +msgstr "" + +#: src/cmp.c:164 +msgid "-l --verbose Output byte numbers and values of all differing bytes." +msgstr "" + +#: src/cmp.c:165 +msgid "-n LIMIT --bytes=LIMIT Compare at most LIMIT bytes." +msgstr "" + +#: src/cmp.c:166 +msgid "-s --quiet --silent Output nothing; yield exit status only." +msgstr "" + +#: src/cmp.c:167 src/diff.c:904 src/diff3.c:455 src/sdiff.c:204 +msgid "-v --version Output version info." +msgstr "" + +#: src/cmp.c:168 src/diff.c:905 src/diff3.c:456 src/sdiff.c:205 +msgid "--help Output this help." +msgstr "" + +#: src/cmp.c:177 +#, c-format +msgid "Usage: %s [OPTION]... FILE1 [FILE2 [SKIP1 [SKIP2]]]\n" +msgstr "" + +#: src/cmp.c:179 +msgid "Compare two files byte by byte." +msgstr "" + +#: src/cmp.c:183 +msgid "SKIP1 and SKIP2 are the number of bytes to skip in each file." +msgstr "" + +#: src/cmp.c:184 +msgid "" +"SKIP values may be followed by the following multiplicative suffixes:\n" +"kB 1000, K 1024, MB 1,000,000, M 1,048,576,\n" +"GB 1,000,000,000, G 1,073,741,824, and so on for T, P, E, Z, Y." +msgstr "" + +#: src/cmp.c:187 +msgid "If a FILE is `-' or missing, read standard input." +msgstr "" + +#: src/cmp.c:188 src/diff.c:911 src/diff3.c:475 src/sdiff.c:223 +msgid "Report bugs to ." +msgstr "" + +#: src/cmp.c:231 +#, c-format +msgid "invalid --bytes value `%s'" +msgstr "" + +#: src/cmp.c:258 src/diff.c:734 src/diff3.c:333 src/sdiff.c:558 +#, c-format +msgid "missing operand after `%s'" +msgstr "" + +#: src/cmp.c:270 src/diff.c:736 src/diff3.c:335 src/sdiff.c:560 +#, c-format +msgid "extra operand `%s'" +msgstr "" + +#: src/cmp.c:477 +#, c-format +msgid "%s %s differ: byte %s, line %s\n" +msgstr "" + +#: src/cmp.c:495 +#, c-format +msgid "%s %s differ: byte %s, line %s is %3o %s %3o %s\n" +msgstr "" + +#: src/cmp.c:543 +#, c-format +msgid "cmp: EOF on %s\n" +msgstr "" + +#: src/diff.c:41 +msgid "" +"Written by Paul Eggert, Mike Haertel, David Hayes,\n" +"Richard Stallman, and Len Tower." +msgstr "" + +#: src/diff.c:322 +#, c-format +msgid "invalid context length `%s'" +msgstr "" + +#: src/diff.c:405 +msgid "pagination not supported on this host" +msgstr "" + +#: src/diff.c:420 src/diff3.c:315 +msgid "too many file label options" +msgstr "" + +#: src/diff.c:498 +#, c-format +msgid "invalid width `%s'" +msgstr "" + +#: src/diff.c:502 +msgid "conflicting width options" +msgstr "" + +#: src/diff.c:526 +#, c-format +msgid "invalid horizon length `%s'" +msgstr "" + +#: src/diff.c:629 +#, c-format +msgid "`-%ld' option is obsolete; use `-%c %ld'" +msgstr "" + +#: src/diff.c:641 +#, c-format +msgid "`-%ld' option is obsolete; omit it" +msgstr "" + +#: src/diff.c:709 +msgid "--from-file and --to-file both specified" +msgstr "" + +#: src/diff.c:832 +msgid "Compare files line by line." +msgstr "" + +#: src/diff.c:834 +msgid "-i --ignore-case Ignore case differences in file contents." +msgstr "" + +#: src/diff.c:835 +msgid "--ignore-file-name-case Ignore case when comparing file names." +msgstr "" + +#: src/diff.c:836 +msgid "--no-ignore-file-name-case Consider case when comparing file names." +msgstr "" + +#: src/diff.c:837 src/sdiff.c:186 +msgid "-E --ignore-tab-expansion Ignore changes due to tab expansion." +msgstr "" + +#: src/diff.c:838 src/sdiff.c:187 +msgid "-b --ignore-space-change Ignore changes in the amount of white space." +msgstr "" + +#: src/diff.c:839 +msgid "-w --ignore-all-space Ignore all white space." +msgstr "" + +#: src/diff.c:840 src/sdiff.c:189 +msgid "-B --ignore-blank-lines Ignore changes whose lines are all blank." +msgstr "" + +#: src/diff.c:841 src/sdiff.c:190 +msgid "" +"-I RE --ignore-matching-lines=RE Ignore changes whose lines all match RE." +msgstr "" + +#: src/diff.c:842 src/sdiff.c:191 +msgid "--strip-trailing-cr Strip trailing carriage return on input." +msgstr "" + +#: src/diff.c:844 +msgid "--binary Read and write data in binary mode." +msgstr "" + +#: src/diff.c:846 src/diff3.c:451 src/sdiff.c:192 +msgid "-a --text Treat all files as text." +msgstr "" + +#: src/diff.c:848 +msgid "" +"-c -C NUM --context[=NUM] Output NUM (default 3) lines of copied " +"context.\n" +"-u -U NUM --unified[=NUM] Output NUM (default 3) lines of unified " +"context.\n" +" --label LABEL Use LABEL instead of file name.\n" +" -p --show-c-function Show which C function each change is in.\n" +" -F RE --show-function-line=RE Show the most recent line matching RE." +msgstr "" + +#: src/diff.c:853 +msgid "-q --brief Output only whether files differ." +msgstr "" + +#: src/diff.c:854 +msgid "-e --ed Output an ed script." +msgstr "" + +#: src/diff.c:855 +msgid "--normal Output a normal diff." +msgstr "" + +#: src/diff.c:856 +msgid "-n --rcs Output an RCS format diff." +msgstr "" + +#: src/diff.c:857 +msgid "" +"-y --side-by-side Output in two columns.\n" +" -W NUM --width=NUM Output at most NUM (default 130) print columns.\n" +" --left-column Output only the left column of common lines.\n" +" --suppress-common-lines Do not output common lines." +msgstr "" + +#: src/diff.c:861 +msgid "-D NAME --ifdef=NAME Output merged file to show `#ifdef NAME' diffs." +msgstr "" + +#: src/diff.c:862 +msgid "" +"--GTYPE-group-format=GFMT Similar, but format GTYPE input groups with GFMT." +msgstr "" + +#: src/diff.c:863 +msgid "--line-format=LFMT Similar, but format all input lines with LFMT." +msgstr "" + +#: src/diff.c:864 +msgid "" +"--LTYPE-line-format=LFMT Similar, but format LTYPE input lines with LFMT." +msgstr "" + +#: src/diff.c:865 +msgid " LTYPE is `old', `new', or `unchanged'. GTYPE is LTYPE or `changed'." +msgstr "" + +#: src/diff.c:866 +msgid "" +" GFMT may contain:\n" +" %< lines from FILE1\n" +" %> lines from FILE2\n" +" %= lines common to FILE1 and FILE2\n" +" %[-][WIDTH][.[PREC]]{doxX}LETTER printf-style spec for LETTER\n" +" LETTERs are as follows for new group, lower case for old group:\n" +" F first line number\n" +" L last line number\n" +" N number of lines = L-F+1\n" +" E F-1\n" +" M L+1" +msgstr "" + +#: src/diff.c:877 +msgid "" +" LFMT may contain:\n" +" %L contents of line\n" +" %l contents of line, excluding any trailing newline\n" +" %[-][WIDTH][.[PREC]]{doxX}n printf-style spec for input line number" +msgstr "" + +#: src/diff.c:881 +msgid "" +" Either GFMT or LFMT may contain:\n" +" %% %\n" +" %c'C' the single character C\n" +" %c'\\OOO' the character with octal code OOO" +msgstr "" + +#: src/diff.c:886 +msgid "-l --paginate Pass the output through `pr' to paginate it." +msgstr "" + +#: src/diff.c:887 src/sdiff.c:198 +msgid "-t --expand-tabs Expand tabs to spaces in output." +msgstr "" + +#: src/diff.c:888 src/diff3.c:452 +msgid "-T --initial-tab Make tabs line up by prepending a tab." +msgstr "" + +#: src/diff.c:890 +msgid "-r --recursive Recursively compare any subdirectories found." +msgstr "" + +#: src/diff.c:891 +msgid "-N --new-file Treat absent files as empty." +msgstr "" + +#: src/diff.c:892 +msgid "--unidirectional-new-file Treat absent first files as empty." +msgstr "" + +#: src/diff.c:893 +msgid "-s --report-identical-files Report when two files are the same." +msgstr "" + +#: src/diff.c:894 +msgid "-x PAT --exclude=PAT Exclude files that match PAT." +msgstr "" + +#: src/diff.c:895 +msgid "" +"-X FILE --exclude-from=FILE Exclude files that match any pattern in FILE." +msgstr "" + +#: src/diff.c:896 +msgid "" +"-S FILE --starting-file=FILE Start with FILE when comparing directories." +msgstr "" + +#: src/diff.c:897 +msgid "" +"--from-file=FILE1 Compare FILE1 to all operands. FILE1 can be a directory." +msgstr "" + +#: src/diff.c:898 +msgid "" +"--to-file=FILE2 Compare all operands to FILE2. FILE2 can be a directory." +msgstr "" + +#: src/diff.c:900 +msgid "--horizon-lines=NUM Keep NUM lines of the common prefix and suffix." +msgstr "" + +#: src/diff.c:901 src/sdiff.c:200 +msgid "-d --minimal Try hard to find a smaller set of changes." +msgstr "" + +#: src/diff.c:902 +msgid "" +"--speed-large-files Assume large files and many scattered small changes." +msgstr "" + +#: src/diff.c:907 +msgid "" +"FILES are `FILE1 FILE2' or `DIR1 DIR2' or `DIR FILE...' or `FILE... DIR'." +msgstr "" + +#: src/diff.c:908 +msgid "" +"If --from-file or --to-file is given, there are no restrictions on FILES." +msgstr "" + +#: src/diff.c:909 src/diff3.c:474 src/sdiff.c:222 +msgid "If a FILE is `-', read standard input." +msgstr "" + +#: src/diff.c:920 +#, c-format +msgid "Usage: %s [OPTION]... FILES\n" +msgstr "" + +#: src/diff.c:949 +#, c-format +msgid "conflicting %s option value `%s'" +msgstr "" + +#: src/diff.c:962 +msgid "conflicting output style options" +msgstr "" + +#: src/diff.c:976 +msgid "regular empty file" +msgstr "" + +#: src/diff.c:976 +msgid "regular file" +msgstr "" + +#: src/diff.c:978 +msgid "directory" +msgstr "" + +#: src/diff.c:981 +msgid "block special file" +msgstr "" + +#: src/diff.c:984 +msgid "character special file" +msgstr "" + +#: src/diff.c:987 +msgid "fifo" +msgstr "" + +#: src/diff.c:991 +msgid "socket" +msgstr "" + +#: src/diff.c:994 +msgid "message queue" +msgstr "" + +#: src/diff.c:997 +msgid "semaphore" +msgstr "" + +#: src/diff.c:1000 +msgid "shared memory object" +msgstr "" + +#: src/diff.c:1003 +msgid "typed memory object" +msgstr "" + +#: src/diff.c:1006 +msgid "weird file" +msgstr "" + +#: src/diff.c:1070 src/diff.c:1256 +#, c-format +msgid "Only in %s: %s\n" +msgstr "" + +#: src/diff.c:1193 +msgid "cannot compare `-' to a directory" +msgstr "" + +#: src/diff.c:1220 +msgid "-D option not supported with directories" +msgstr "" + +#: src/diff.c:1229 +#, c-format +msgid "Common subdirectories: %s and %s\n" +msgstr "" + +#: src/diff.c:1266 +#, c-format +msgid "File %s is a %s while file %s is a %s\n" +msgstr "" + +#: src/diff.c:1345 +#, c-format +msgid "Files %s and %s are identical\n" +msgstr "" + +#: src/diff3.c:26 +msgid "Written by Randy Smith." +msgstr "" + +#: src/diff3.c:328 +msgid "incompatible options" +msgstr "" + +#: src/diff3.c:368 +msgid "`-' specified for more than one input file" +msgstr "" + +#: src/diff3.c:408 src/diff3.c:1232 src/diff3.c:1645 src/diff3.c:1700 +#: src/sdiff.c:305 src/sdiff.c:879 src/sdiff.c:890 +msgid "read failed" +msgstr "" + +#: src/diff3.c:441 +msgid "-e --ed Output unmerged changes from OLDFILE to YOURFILE into MYFILE." +msgstr "" + +#: src/diff3.c:442 +msgid "-E --show-overlap Output unmerged changes, bracketing conflicts." +msgstr "" + +#: src/diff3.c:443 +msgid "-A --show-all Output all changes, bracketing conflicts." +msgstr "" + +#: src/diff3.c:444 +msgid "-x --overlap-only Output overlapping changes." +msgstr "" + +#: src/diff3.c:445 +msgid "-X Output overlapping changes, bracketing them." +msgstr "" + +#: src/diff3.c:446 +msgid "-3 --easy-only Output unmerged nonoverlapping changes." +msgstr "" + +#: src/diff3.c:448 +msgid "-m --merge Output merged file instead of ed script (default -A)." +msgstr "" + +#: src/diff3.c:449 +msgid "-L LABEL --label=LABEL Use LABEL instead of file name." +msgstr "" + +#: src/diff3.c:450 +msgid "-i Append `w' and `q' commands to ed scripts." +msgstr "" + +#: src/diff3.c:453 src/sdiff.c:202 +msgid "--diff-program=PROGRAM Use PROGRAM to compare files." +msgstr "" + +#: src/diff3.c:465 +#, c-format +msgid "Usage: %s [OPTION]... MYFILE OLDFILE YOURFILE\n" +msgstr "" + +#: src/diff3.c:467 +msgid "Compare three files line by line." +msgstr "" + +#: src/diff3.c:673 +msgid "internal error: screwup in format of diff blocks" +msgstr "" + +#: src/diff3.c:971 +#, c-format +msgid "%s: diff failed: " +msgstr "" + +#: src/diff3.c:993 +msgid "internal error: invalid diff type in process_diff" +msgstr "" + +#: src/diff3.c:1018 +msgid "invalid diff format; invalid change separator" +msgstr "" + +#: src/diff3.c:1242 +msgid "invalid diff format; incomplete last line" +msgstr "" + +#: src/diff3.c:1265 src/sdiff.c:273 +#, c-format +msgid "subsidiary program `%s' not executable" +msgstr "" + +#: src/diff3.c:1268 src/sdiff.c:276 src/util.c:298 +#, c-format +msgid "subsidiary program `%s' not found" +msgstr "" + +#: src/diff3.c:1272 src/sdiff.c:268 src/util.c:301 +#, c-format +msgid "subsidiary program `%s' failed" +msgstr "" + +#: src/diff3.c:1294 +msgid "invalid diff format; incorrect leading line chars" +msgstr "" + +#: src/diff3.c:1370 +msgid "internal error: invalid diff type passed to output" +msgstr "" + +#: src/diff3.c:1647 src/diff3.c:1704 +msgid "input file shrank" +msgstr "" + +#: src/dir.c:162 +#, c-format +msgid "cannot compare file names `%s' and `%s'" +msgstr "" + +#: src/sdiff.c:35 +msgid "Written by Thomas Lord." +msgstr "" + +#: src/sdiff.c:183 +msgid "-o FILE --output=FILE Operate interactively, sending output to FILE." +msgstr "" + +#: src/sdiff.c:185 +msgid "-i --ignore-case Consider upper- and lower-case to be the same." +msgstr "" + +#: src/sdiff.c:188 +msgid "-W --ignore-all-space Ignore all white space." +msgstr "" + +#: src/sdiff.c:194 +msgid "-w NUM --width=NUM Output at most NUM (default 130) columns per line." +msgstr "" + +#: src/sdiff.c:195 +msgid "-l --left-column Output only the left column of common lines." +msgstr "" + +#: src/sdiff.c:196 +msgid "-s --suppress-common-lines Do not output common lines." +msgstr "" + +#: src/sdiff.c:201 +msgid "" +"-H --speed-large-files Assume large files and many scattered small changes." +msgstr "" + +#: src/sdiff.c:214 +#, c-format +msgid "Usage: %s [OPTION]... FILE1 FILE2\n" +msgstr "" + +#: src/sdiff.c:215 +msgid "Side-by-side merge of file differences." +msgstr "" + +#: src/sdiff.c:327 +msgid "cannot interactively merge standard input" +msgstr "" + +#: src/sdiff.c:588 +msgid "both files to be compared are directories" +msgstr "" + +#: src/sdiff.c:853 +msgid "" +"ed:\tEdit then use both versions, each decorated with a header.\n" +"eb:\tEdit then use both versions.\n" +"el:\tEdit then use the left version.\n" +"er:\tEdit then use the right version.\n" +"e:\tEdit a new version.\n" +"l:\tUse the left version.\n" +"r:\tUse the right version.\n" +"s:\tSilently include common lines.\n" +"v:\tVerbosely include common lines.\n" +"q:\tQuit.\n" +msgstr "" diff --git a/src/apps/bin/diffutils-2.8.1/po/eo.gmo b/src/apps/bin/diffutils-2.8.1/po/eo.gmo new file mode 100644 index 0000000000000000000000000000000000000000..14f7cd982cb454577dbe134c10e51562f4d3d8e3 GIT binary patch literal 22734 zcmb`P3v^}IS>I2{gIGy0@hgs9$J=&hG`4j$lE%)AH6DB98O@Al^s=ORF`h6-x<}HH z?!D*wK1L(EfyQYlq!1v55NHS_kU(1k1VW!cR~wqrc6CwG(&etUY1&o1pzqMG;?gFo zzyG)QIrm<@GV$Ur@A;o|_WRr4{=RR2`;&k44Yz$c^1ojL{!A3T@wdRQM$ua;{`0Lv z;CDsQt;13Dx;psFy#Hbpz5N036!_1;i72}59pL?73{vN|_k(W-e+7IesCI?wZvcE1 zyf2Dw-v^RzKjFXMo`NObKMFcf_4b3m57Pb}Zw*Kr(IoGr=q&i-AocF}kKp4`bmwj0 z0q_h+nLD2c>Hp5(1W$r5gHK1%U5p`m2E6LO-}TcV{oJMgnAbbr2p$7xK>B&d4}^Es zKN3ZE-vvGaDxW#r{e2*Gx%;1j^#9H~z~dlosGoO2%V-Mxd*Hb!y60AqcJ8?XGN*ff z1f-vPlux_&z7;$O(x&Ko?{$!R_x>FCZt#DCr&+qY!H2ukQPekpFuiyuF_~ zD!2bxkTu{QBcS-2@eHhj@ZZ3TAnP*lX^`;`{KN2F{Xo}}#tR)v;xh*x4;X{w zm0kjG0Y45OkAa`zo%RR+0DJ@Ze?j^_2xxu>?*tj&LHdfI{lUv1Z6Ex85c(d}Iz#V+ zFN3V(LD83S4&4n>Z%F(Fj|{bZ{?MmD`WyO9ko6q;T@YRx`VS!O4gC-BL8`t5g#N?O zPWi(NAm4@;LFy0JKxjJrevtVLe;8!k!yf}#yW!7*-v)jjgdW3R0O6D2e-7>k{|J15 zDT!W;d*mp1J9rW71J^;?A3+|x?h^O`-k)bn{TtplS>kElf0C{F+u+$KdXM@b3r>Rn1ROzB-3>DLCn;n26Cm}T{6mk&2EbEvt?@$3V}BiVh$_}X z^6sgFAmeyS`Lm$-p0#}%UeI`-PQWL@p8@IP>96?j$JH+K?D$&1Pk@Z^xaL2M=zA0# z1+RjG;Kx`e)@w}r;|QYn2@pD;Xn<$HkATO)e+`bIvPAFqfbRvF&q>J-2fhqa{-o9g z9vLT3^cw#z5IT(i7D(Tx;GO6&$Q+e_Y6GObQ@;T+u2cUDr2c8m|0K8$QvS5oU*G=# zEYTHfta+Z916kKI-vd4d{w{ceC3_S2M<97x*R#+}e0+8lr0&@dfd{}}0^y&t8b5S6 z_bnjppKF28;oPUd2f@D&o(6v(gie!`5&b5Y!FPb7!@Z#R2;P|dMeC?Op87nFvk(E(ac ze+fkP%-jZkD+nzkXgTu?NISF8P<%Rj3cLfXf|Q+oDWJx$_n!yf2L2t8_GUE?=sf#X zka;}252XKRSsTgeXB!~%dG?C|zYGrZuJO^|95fbv=Vn0a&TWFsd+w(|_+jpIAoHI4 zxBi_bt^IlNG2@y44)9h`<9!Hx9|%3>KM6vo`7eOCfM0=+S@-$>#5?ml&)P^%pXZy} zIe!Mc9lQdLfLXv#fz0Rp?}5pFaycPttm>lKvctc}6di^qVGKCTadZ zL4s#QSJ|M^b<#0XOcEddWs-hB<01N9@CQiWMiSlNZ^=IKLv)<pD+o4vzi`2|l;qkMQqHq_Tgte{T!V+IKTu-}U%3=@+(q`zhWpkrqgY zNaDl4M!H7&JSihhkUmWM3ncyCLaLJ9q!)glC4D#P-K4W5{nkB1?+4#Z8XzU4H;~}t z=&zDCN&5X7>5U}u`U|A)-+RN$&x1ck`f1V+ksc)JSMs2}s{L!fX22nEk(82VN%xVS zCB2QbkF-qEkNvAXCb=UW7X2zI|BdkQFzGX-TS!Mp{iHun`X16JNiEWyB>g@{I!d~W zv_|@NQvQ2}hY#6{bK_}iHEFohr=}KM)^L-;YP{)|vRW%nYomRR-@bh$|FqP9qTe~{ zxMo^gsU&V`HEzU9E!sGdmw0YwW+oKsibt5&m`Yh}Kgi)&?j3gxbpu3ot~adP3z)hmNnX6MFF zT)p~YIlFP`eUsx03*&Rn)f;K8wOnepHkn+ro-Da#(ZzDDD;HjxE^Z_)W{g>-l5GeZ zu9j@Ll}6UC4>-O-l%=?tSWZ?c`y5YFk@b{w%W0$8vbnliySkV(LKk$xgyLQDrd=rQ zvgJUiV{Wo^>QPT6wLMPrrOxXV4L&*?@$b$HOmAB8q}FQYZF;&^wr32uk2?F3Rw~H~8zrl^Qh2#ka{HEi z*|c^&uB7E1azfc_`tJQ;S( zxB2u%rIPVf$#!#zyLhmgkOD5&Va_kR;B4o;;F_UjTv8-#3*@N zwi9=3D=>Yr9YRy8pr#hnTHM%lZZ3(-#A5k4!Fi-o{(`7PXx1gomSMuCYDw;v^kyBDO0CSlEoMk@NyT(IP0HN`kNI8X zPK2iXD{aGqa8%Mj5I5PW{`(T_v`FJHKTFig8k_2MHL28{n`yTs2wJPGyS`XX)<|E- zYDU23vFYi>pb=gtMEl z&t6h*tR}TU4M{YkfQlMXZf^B7-;OBTvUas>w^5wPYR$BqYm7a|!7Qpshn!Hc3m>%9 znkVa%luK~vil1!Lxv^%G?T<#`n_p$4O;z%{xfHk1-)xa4&7z)7tlEs5twvfe9D!+!Ge%s&8Qlz#>*X37#QW7^eOIfYL#t978u2mDrQHFfA z?0V9u#Pzxsy)*wYRcx+i8zqf7uh&H*L;%LmdeX9bS#7zJF119tXH+xr+hQfIt$WUO z1+#e?yN%V1o#;8(%nACj^0aZ%O^;2X$7yJ}oGc&nZ(;CZ=*FOIG7ZvQd&mk}HDoN@ zprM@1<#{b@xn{dw&l)WzZPF>+DY;RP;Yn6>>!{1^L<>hDOo32{ zo~!{QS0HCWvVzosw!6~pj8Xhgi+?BFT=%4q;7hBlRFERd%lH0H%fV7u4H{u`lWubC znQ`o-5<6=#sT>QhlBE7Ituzu^`z#FIb~AwqSf?_ z0J9@c;-#dZmDqn{RT{^>Q~px1&O2th{dD=U#eYck+_<*kteKV z?@X;7J0X<3_2_1GTnHASgn)gf$0d3^Vd{yV&9uJJx+2AOwIG&s*8w(m+^)3Tp@%zq zY$>awT)jcg@cT+_8atmihA5Qoz1hY>@lIi7s(BFWAG3QHY|LZPiuo};Z)d)CLZ##wh@nMA6iqQd^O|DgGnH9F0ts>UX-<6 zSk^$QaJ4DG1{S?Aw3*oQg>_{?U|`sd`ayuAW_W8Zq0Pi0TeG)H zEPoQ6nLKHnOMjPV&d=F1>z}!)%X+4rRNVx@@6C%su_JnuM#=Q9oejPDL1hdfO}&Yo zv11FlkctsC{_K&|mXI4Ts|lL?4wzlDAYCN zATN&j&pRBOI!B^h&HFZnM^yzaU(CL{sgN6$(4uf(vfN@%RN7TkOIQxm%%Xxa8L(xt z|AIYd8j=B9{d&BD35)=8vvHG2Q7g-BM$XGPw(!XUDXs!{T6L>E8{LLP>{N_%}ZksGZ3a-Dm9j{%R0I7QM<)|&IOP6d#D3XlOR=RWPvkNxRnPs@b#p!IlwmY zqCcmfugwsjR||`cG+8bNX-kC4f!>WEVLf#yj$z1*lBIT|Ny|E$gh%Wxme39tW^1+= zyR;M&Zr93GhZ3a{2Te9D4^0eowtr3>>=tS5qi!=zaH1qPQtX&k+-hU=W6$N)(PLOP zC2Z(gD_uh8c_qM5^xf;q)`kRy>0C}bU7OAZAmfOmZWG>=4=Fd`9Fx?R=wXzI~pxn0B*sWOb$}Mshq#>MxQqa*v_>2(}T;xl* zbem2Ng-#~k9|rIr#i*&E49n?t>hVUk=N)`~(nTsW2^ z-#cHn7oJM0_+F^K8n-#Ul%wg)TU>ew{#=Iukwp>CHOis0>nZ+1CcCZw8J)4&$8v3o zi)R}N_IsO^361PfXKq_Fh)xWnbR`Pnd$GM@;`B)#N-MQ?sohE|&Eq@`W{s7n1|zdr zg6`IZ0!Ed0%%g?jdC7YJE?r*5nUrI*K!3_O1LJp+BGyR$6&w6YH$8aVve@W2t(7N<8ev7jyo76#nxfEyoh-!b4W z`wA#PB$eY|1~r<+gclo+TG&Qn!vQLn z8^@L4fa~GtPHGq-6*t>nWDVS8in-rR2K!DyB=}KQig&BZ z`4BInIMohD8;nF_c-)%^JvD7YM*FGkPRz_+o|ry87%k-Y5!#MTcHAnTHr+Kuj(0Kk z+iGm>XfQfoTd!psh~!PSLe(XWM%Lh?oj&Q{fJEbS2fDsIY+oMk`f^2IuDrMF%X2SA z=bJdlOtN2@nO&HenZAl3H9-`FZr`3ou1MOBxGUn4VGko$uU_4&()@0j{+#0Sb4-4S z>5DGnLuS#nRc1Mmy785jq|t)^Q+x(zVxE)AfIAsq=kno9yqPoy`sO(JNmk;Os8sMI zdUl_rkp*3S4R*IV$4=OE^RUxu&-aDZtcs^@GHYN4c8y^nYb>s1_!Cbf#wxIq?GxYq zRJ?R9slAZ039gm)aV?ZPxM03)v6)qpR&vy3^ySjlUPan)6fG<{HA2Duj%T~WAvhr9 z)f7+4D=mhL7AqNo-rV4DvHv8;xSmW(A$-_kQr-+4e(th)BOIJECqq61u#-xcCwyy( zg2z!>x;&9k(L-LY$E0^&6!a>xs8B7vgI=oEN8R|$DG4ZvY7Ua-!IX$(w}e|F6RM%d zt^(eiMP=%u)E8~`v|yHKk&}~PGvb=-mhm#H!v?N7ErQ)D1Ou4OZBnkx&5ceh!BZJ? z6%Zp(2K$o5J*!iovbBIDg`F!yACzhARHl)xthQXIP$+|goon6VGtJ9ovb|B-%rmyM z)EvEK9^R<6Of~BAw79A8C)>X3qqkh}C(~VvJU@ENvuzHteG&4x5kpzKRPigboGxck zS~IR{rHfrl(&1aY#O$VZiXlXCqk9QA3TLy#>}y$EuC-YguS-=(Z+xdd-b9T$h7D_l z0`YvYtqPu&WCNEYO@}Kp)RpyUyQxV9KMIbWb}`$Mu}3g!s2$rjh3 zWzOVM48P`JGix`N61LJxGFVGmPxVbrOpSMD zJUlqmhu>3HWN88Fjba1dXdSFq;D&fy0B*<)!lD;+uV_!Ff=oxW*;XP1ph#zVVum7h31RZqMu4bzSq-RxwM8NTr@YrAqADwRTp=F)Y#16{7^nh*2Wn zXRNo;^6Twt?AEh#=DMPjcId>1C#Bh%ODgW<%>2ao+)Ph^Qg2pIh?26_GggL4AcFJS zPLm2RU7<>oV{OPvEm6NJ!#1Fd!parBW30zc+`3QgLPu=r(* z@UL!~hSB?Z7g0%`qWwNFsUH&o)9h=mzdJ6;hb8%fKB_|{yjCD?iKZrW&6bJ}Mc%cV zn*u zQr-4C213dypY}#Ek#t<-15qeheTkkdYzb?{=bA$7$;v~KRJPxTEn#N+R$$dUVkxWj z7DV`ag4Qc|n{l+nHX+|PJ=_JQO`hVA-8(#~wRKsHC{!u4kp<%}gc(fFAk|KDP)?m5y%@B;&35*h0I5T`(mI|ZO$Be1p4Cw> zcV%X5i&#oIIw7;McM*MoL@}xhq2cL-=w&9fLYF&5o%JrOD4>?om3)Nak9<{kk6Sty z;+AfHI3ZfejaO1w#J_RI#zHc`Y25Hs+$o9)7J`g~vSA}iKIZ&jbdyuhzNSsV*W=o& zNh>hR4uMRkkh}CBR09JzG3Q>9lQLZ~+UL;`v{Os$q_>`3Z=|n= zwnY_BlP$qbz6C$KP-wvBhFroaunr}~XYy%a*S%nzwReh}gb?YIy(OV3@SpI$59-(&z(G0)zW zGNH)wqc8&TLL}7q!o)eYL>>thUM08nn3NGonDJcEB8U-k9dX2BV-xm>iWrrd>Z2Va# zhRV0uiJ`jbHWAA3MsK6V7BIf|mdo}X(8d0`O5Qn^${Q25{;Z)pp)jj;*^S<$WNo}O z?GC2eC6+4KC2TzO#hN*{;6jtWCW_m=46;L9)hzcj7>^B18?g|Q04&5mox6%?(y>F405p8JWkl2f&t z1hT)d`$VK*%LR#ZjBla;u2WsH2}BXT=f((443AFl6kTQCcZ#bDTu^Hh+7W9R%i76U zPOQFytF(>@&)yT^bu)wA9$;lg5<|gSqYf>&ennTwE>CLp_*LbO4Z>Cj+(cAYfd6gAH+IuZ^%s^6|vMrqAb;T`ws5#odapRF z-Sj-MSYFM9SS-ExemX3)MSod1mU$u>16*nQk?wa0$I3?xPwisa-*8_ZGt)ee$+Fj6 z+T~}aos0zv%2J@?9YVBx#}bRuASOfB@(8Uzo%u>V_Qq-XKEF93X03elOl9F(i1FM2 zl8a1Y9q8S2eGwAD{I@+D$}aeQ1uN0(u?YGXvFZP&Q_PhM7WrrLUUNmgW5KSCl-o-> z4AG(&MuQQ8N6zTn-P<4D3Fh({1a!#*>EF(uoyjwJ^jSqtUc+L(I(23gx=<9tg?ZBR zQ-@4)HJ01#`t2Egd1<3+4{=Q*?2(@fyuN5Yfk`^fABNWP{rH8F$ZEv{cJ4E2S>X@% zR*;?Ooj`}P1jZCEVSW3#iKjI?h|66n2Nt5Ba8Q^sM$he3agXBDNpOAg7g7Y2gy^s= zD!$84qoLXMU+0|Kl}B7ex)SavIyDNrR@E#rtZ2**EOCg-Vq(a%YFB%5f~(RBf8o$+ z&tKaWr7b87%d_%I(x|7ercFxL(pb8mOXev#D*S2QTEl0Ow;Gl_FS5&6q)R&CVbffJ z$*Y59oj0>(ICB;pmX9th7NiV*plHsNP1{8G60@~?m0jb+E|><>9f;i>$+y=`*01Yu zFT$|k_KG2iJ1HYRX@!j7l3Uv)K+JKOq(r!k8+HVUxgtO;&+^#>h&ckp906j^0>rcj zS~62{W;3L1F=E^Xs0gN?XKmxh{6-~MAkJHsa*2tsIx2*P7>vG{ELXH%Its}#)a4%J zdM$UBC`wGu{4DySIWr-p{k>?09;}6<|Md9u#F#rhrbw}g8Tg&8!f5ct(P(hmvxbmx zt&KU;cOi9+cujXsonSE>!ko+s3s8R3qN~2pAcxm-`ikGIwEwaX6^nhW7!#SJQB2N? z&4ioP!M<6@#yL>Ol3b4)FPLK%n#4>KM*xva-If&ozC2*8|G9p7{^(5{NWfxtz0Hk8 zCtOSmv!#bY_5?$f$DTV7!o{%g8ro74`*uz|AYnqdSl6eA?bE~EpRVW=0b^aI6fyP! zRLvvCPE5>Lz*rDnxyYUwA;@dba#unPV#na4E7KurY>zr;cWH9hurcnq*X@sw`E%me z95yBnpM-Nm*jQJabFgd?HrDmMCv2?y`?jz#wY@EDEZi0O;ITrv>(=uqQV$8-)`=$C zt62L5Sfq#@lj`tV$2PHeC9BAf%Z5x>aK;#U5}-&J@^9U;hALr!kz`&aW; z>K4jmmM@;tJ?BoG&qbMNTM?gS7Xh48bvGt@=%G_KKb_#Eq;ePdC89&_S{AKTzR+5@0Szbjh|rvc0N= zeI!qc*kWrh%k8gQvp$T=>ofJI&4o|D7)0PfV|o}dM3wE4-|L_06y!j(q6=y^5A77D zSEqnYHw@>fmQ@>+xH7^H2+8rm2iYFQU&ZYlOg!oDU^UqZaJO2;EagBeX_{!XrKr?4dzV%B5qafu(liqBvvi;8P5re#*29X4z$+s@|RwPGTL__7YuG$W$J z%`>FGA?Uh$@mHlmVP;Y8DKyQAx$RYGu(#Eo-FM|8G0HQ%6v!gQmqGR{^83Jtm+1{B zqsbD;x=uiQ$5PB&@QlUjt*~=!dFe3^YEZ;jZzdCIv@5zt+A%M9St9j@A>zl#{}*7L m+YsIVuSNX9fs9-Wf+G%sAUN*Sh<9T@W8oK*(rvjX#Qz7k6I#&# literal 0 HcmV?d00001 diff --git a/src/apps/bin/diffutils-2.8.1/po/eo.po b/src/apps/bin/diffutils-2.8.1/po/eo.po new file mode 100644 index 0000000000..f3de52c061 --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/po/eo.po @@ -0,0 +1,923 @@ +# Esperantaj mesaøoj por GNU diffutils. +# Copyright (C) 1996 Free Software Foundation, Inc. +# Edmund GRIMLEY EVANS , 2001-2002. +# +msgid "" +msgstr "" +"Project-Id-Version: GNU diffutils 2.7.10\n" +"POT-Creation-Date: 2002-04-05 14:10-0800\n" +"PO-Revision-Date: 2002-03-13 21:19+0000\n" +"Last-Translator: Edmund GRIMLEY EVANS \n" +"Language-Team: Esperanto \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=iso-8859-3\n" +"Content-Transfer-Encoding: 8-bit\n" + +#: lib/c-stack.c:188 +msgid "program error" +msgstr "programeraro" + +#: lib/c-stack.c:189 +msgid "stack overflow" +msgstr "stako tro granda" + +#: lib/error.c:128 lib/error.c:156 +msgid "Unknown system error" +msgstr "Nekonata sistemeraro" + +#: lib/freesoft.c:27 +msgid "" +"This program comes with NO WARRANTY, to the extent permitted by law.\n" +"You may redistribute copies of this program\n" +"under the terms of the GNU General Public License.\n" +"For more information about these matters, see the file named COPYING." +msgstr "" +"Æi tiu programo venas kun NENIA GARANTIO, laý la grado permesata de juro.\n" +"Vi rajtas redistribui kopiojn de æi tiu programo\n" +"laý la kondiæoj de la Øenerala Publika Rajtigilo de GNU.\n" +"Por pli da informoj pri æi tiaj afero, vidu la dosieron COPYING." + +#: lib/getopt.c:693 +#, c-format +msgid "%s: option `%s' is ambiguous\n" +msgstr "%s: opcio '%s' estas plursenca\n" + +#: lib/getopt.c:718 +#, c-format +msgid "%s: option `--%s' doesn't allow an argument\n" +msgstr "%s: opcio '--%s' ne permesas argumenton\n" + +#: lib/getopt.c:723 +#, c-format +msgid "%s: option `%c%s' doesn't allow an argument\n" +msgstr "%s: opcio '%c%s' ne permesas argumenton\n" + +#: lib/getopt.c:741 lib/getopt.c:914 +#, c-format +msgid "%s: option `%s' requires an argument\n" +msgstr "%s opcio '%s' postulas argumenton\n" + +#: lib/getopt.c:770 +#, c-format +msgid "%s: unrecognized option `--%s'\n" +msgstr "%s: nekonata opcio '--%s'\n" + +#: lib/getopt.c:774 +#, c-format +msgid "%s: unrecognized option `%c%s'\n" +msgstr "%s: nekonata opcio '%c%s'\n" + +#: lib/getopt.c:800 +#, c-format +msgid "%s: illegal option -- %c\n" +msgstr "%s: nepermesita opcio -- %c.\n" + +#: lib/getopt.c:803 +#, c-format +msgid "%s: invalid option -- %c\n" +msgstr "%s: nevalida opcio -- %c\n" + +#: lib/getopt.c:833 lib/getopt.c:963 +#, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "%s: opcio postulas argumenton -- %c\n" + +#: lib/getopt.c:880 +#, c-format +msgid "%s: option `-W %s' is ambiguous\n" +msgstr "%s: opcio '-W %s' estas plursenca\n" + +#: lib/getopt.c:898 +#, c-format +msgid "%s: option `-W %s' doesn't allow an argument\n" +msgstr "%s: opcio '-W %s' ne permesas argumenton\n" + +#: lib/regex.c:1367 +msgid "Success" +msgstr "Sukceso" + +#: lib/regex.c:1370 +msgid "No match" +msgstr "Nenia trafo" + +#: lib/regex.c:1373 +msgid "Invalid regular expression" +msgstr "Nevalida regula esprimo" + +#: lib/regex.c:1376 +msgid "Invalid collation character" +msgstr "Nevalida ordiga signo" + +#: lib/regex.c:1379 +msgid "Invalid character class name" +msgstr "Nevalida nomo de signoklaso" + +#: lib/regex.c:1382 +msgid "Trailing backslash" +msgstr "'\\' æe la fino" + +#: lib/regex.c:1385 +msgid "Invalid back reference" +msgstr "Nevalida retroreferenco" + +#: lib/regex.c:1388 +msgid "Unmatched [ or [^" +msgstr "Neparigita [ aý [^" + +#: lib/regex.c:1391 +msgid "Unmatched ( or \\(" +msgstr "Neparigita ( aý \\(" + +#: lib/regex.c:1394 +msgid "Unmatched \\{" +msgstr "Neparigita \\{" + +#: lib/regex.c:1397 +msgid "Invalid content of \\{\\}" +msgstr "Nevalida kunteksto de \\{\\}" + +#: lib/regex.c:1400 +msgid "Invalid range end" +msgstr "Nevalida fino de gamo" + +#: lib/regex.c:1403 +msgid "Memory exhausted" +msgstr "Memoro elæerpiøis" + +#: lib/regex.c:1406 +msgid "Invalid preceding regular expression" +msgstr "Nevalida antaýa regula esprimo" + +#: lib/regex.c:1409 +msgid "Premature end of regular expression" +msgstr "Neatendita fino de regula esprimo" + +#: lib/regex.c:1412 +msgid "Regular expression too big" +msgstr "Regula esprimo estas tro granda" + +#: lib/regex.c:1415 +msgid "Unmatched ) or \\)" +msgstr "Neparigita ) aý \\)" + +#: lib/regex.c:8034 +msgid "No previous regular expression" +msgstr "Mankas antaýa regula esprimo" + +#: lib/xmalloc.c:63 +msgid "memory exhausted" +msgstr "memoro elæerpiøis" + +#: src/analyze.c:809 src/diff.c:1283 +#, c-format +msgid "Files %s and %s differ\n" +msgstr "Dosieroj %s kaj %s estas malsamaj\n" + +#: src/analyze.c:812 +#, c-format +msgid "Binary files %s and %s differ\n" +msgstr "Binaraj dosieroj %s kaj %s estas malsamaj\n" + +#: src/analyze.c:1058 src/diff3.c:1413 src/util.c:526 +msgid "No newline at end of file" +msgstr "Mankas linifino æe fino de dosiero" + +#: src/cmp.c:43 +msgid "Written by Torbjorn Granlund and David MacKenzie." +msgstr "Verkite de Torbjorn Granlund kaj David MacKenzie." + +#: src/cmp.c:118 src/diff.c:817 src/diff3.c:427 src/sdiff.c:168 +#, c-format +msgid "Try `%s --help' for more information." +msgstr "Provu '%s --help' por pli da informoj." + +#: src/cmp.c:137 +#, c-format +msgid "invalid --ignore-initial value `%s'" +msgstr "nevalida valoro '%s' de --ignore-initial" + +#: src/cmp.c:146 +msgid "options -l and -s are incompatible" +msgstr "opcioj -l kaj -s malkongruas" + +#: src/cmp.c:154 src/diff.c:826 src/diff3.c:435 src/sdiff.c:177 +#: src/sdiff.c:313 src/sdiff.c:320 src/sdiff.c:910 src/util.c:194 +#: src/util.c:286 src/util.c:293 +msgid "write failed" +msgstr "skriberaro" + +#: src/cmp.c:156 src/diff.c:828 src/diff.c:1354 src/diff3.c:437 +#: src/sdiff.c:179 +msgid "standard output" +msgstr "normala eligo" + +#: src/cmp.c:160 +msgid "-b --print-bytes Print differing bytes." +msgstr "-b --print-bytes Eligi diferencajn bitokojn." + +#: src/cmp.c:161 +msgid "-i SKIP --ignore-initial=SKIP Skip the first SKIP bytes of input." +msgstr "-i N --ignore-initial=N Ignori la unuajn N bitokojn de la enigo." + +#: src/cmp.c:162 +msgid "-i SKIP1:SKIP2 --ignore-initial=SKIP1:SKIP2" +msgstr "-i N1:N2 --ignore-initial=N1:N2" + +#: src/cmp.c:163 +msgid "" +" Skip the first SKIP1 bytes of FILE1 and the first SKIP2 bytes of FILE2." +msgstr "" +" Ignori la unuajn N1 bitokojn de DOSIERO1 kaj la unuajn N2 bitokojn de " +"DOSIERO2." + +#: src/cmp.c:164 +msgid "-l --verbose Output byte numbers and values of all differing bytes." +msgstr "-l --verbose Eligi indeksojn kaj kodojn de æiuj diferencaj bitokoj." + +#: src/cmp.c:165 +msgid "-n LIMIT --bytes=LIMIT Compare at most LIMIT bytes." +msgstr "-n LIMO --bytes=LIMO Kompari maksimume LIMO bitokojn." + +#: src/cmp.c:166 +msgid "-s --quiet --silent Output nothing; yield exit status only." +msgstr "-s --quiet --silent Eligi nenion; doni nur elig-valoron." + +#: src/cmp.c:167 src/diff.c:904 src/diff3.c:455 src/sdiff.c:204 +msgid "-v --version Output version info." +msgstr "-v --version Eligi informojn pri la versio." + +#: src/cmp.c:168 src/diff.c:905 src/diff3.c:456 src/sdiff.c:205 +msgid "--help Output this help." +msgstr "--help Montri æi tiun helpon." + +#: src/cmp.c:177 +#, c-format +msgid "Usage: %s [OPTION]... FILE1 [FILE2 [SKIP1 [SKIP2]]]\n" +msgstr "Uzado: %s [OPCIO]... DOSIERO1 [DOSIERO2 [N1 [N2]]]\n" + +#: src/cmp.c:179 +msgid "Compare two files byte by byte." +msgstr "Kompari du dosierojn bitokon post bitoko." + +#: src/cmp.c:183 +msgid "SKIP1 and SKIP2 are the number of bytes to skip in each file." +msgstr "N1 kaj N2 estas la nombro de bitokoj ignorendaj en æiu dosiero." + +#: src/cmp.c:184 +msgid "" +"SKIP values may be followed by the following multiplicative suffixes:\n" +"kB 1000, K 1024, MB 1,000,000, M 1,048,576,\n" +"GB 1,000,000,000, G 1,073,741,824, and so on for T, P, E, Z, Y." +msgstr "" +"Valoroj povas esti sekvataj de la sekvaj multobligaj sufiksoj:\n" +"kB 1000, K 1024, MB 1 000 000, M 1 048 576,\n" +"GB 1 000 000 000, G 1 073 741 824, kaj tiel plu por T, P, E, Z, Y." + +#: src/cmp.c:187 +msgid "If a FILE is `-' or missing, read standard input." +msgstr "Se DOSIERO estas '-' aý mankas, legi la normalan enigon." + +#: src/cmp.c:188 src/diff.c:911 src/diff3.c:475 src/sdiff.c:223 +msgid "Report bugs to ." +msgstr "Raportu pri cimoj al ." + +#: src/cmp.c:231 +#, c-format +msgid "invalid --bytes value `%s'" +msgstr "nevalida valoro '%s' de --bytes" + +#: src/cmp.c:258 src/diff.c:734 src/diff3.c:333 src/sdiff.c:558 +#, c-format +msgid "missing operand after `%s'" +msgstr "argumento mankas post '%s'" + +#: src/cmp.c:270 src/diff.c:736 src/diff3.c:335 src/sdiff.c:560 +#, c-format +msgid "extra operand `%s'" +msgstr "kroma argumento '%s'" + +#: src/cmp.c:477 +#, c-format +msgid "%s %s differ: byte %s, line %s\n" +msgstr "%s %s malsamaj: bitoko %s, linio %s\n" + +#: src/cmp.c:495 +#, c-format +msgid "%s %s differ: byte %s, line %s is %3o %s %3o %s\n" +msgstr "%s %s malsamaj: bitoko %s, linio %s estas %3o %s %3o %s\n" + +#: src/cmp.c:543 +#, c-format +msgid "cmp: EOF on %s\n" +msgstr "cmp: EOF æe %s\n" + +#: src/diff.c:41 +msgid "" +"Written by Paul Eggert, Mike Haertel, David Hayes,\n" +"Richard Stallman, and Len Tower." +msgstr "" +"Verkite de Paul Eggert, Mike Haertel, David Hayes,\n" +"Richard Stallman, kaj Len Tower." + +#: src/diff.c:322 +#, c-format +msgid "invalid context length `%s'" +msgstr "nevalida longo '%s' de kunteksto" + +#: src/diff.c:405 +msgid "pagination not supported on this host" +msgstr "dispaøigo ne eblas kun æi tiu sistemo" + +#: src/diff.c:420 src/diff3.c:315 +msgid "too many file label options" +msgstr "tro da dosieretikedopcioj" + +#: src/diff.c:498 +#, c-format +msgid "invalid width `%s'" +msgstr "nevalida larøo '%s'" + +#: src/diff.c:502 +msgid "conflicting width options" +msgstr "malkongruaj opcioj pri larøo" + +#: src/diff.c:526 +#, c-format +msgid "invalid horizon length `%s'" +msgstr "nevalida horizonta longo '%s'" + +#: src/diff.c:629 +#, c-format +msgid "`-%ld' option is obsolete; use `-%c %ld'" +msgstr "opcio '-%ld' estas malnova; uzu '-%c %ld'" + +#: src/diff.c:641 +#, c-format +msgid "`-%ld' option is obsolete; omit it" +msgstr "opcio '-%ld' estas malnova; ellasu øin" + +#: src/diff.c:709 +msgid "--from-file and --to-file both specified" +msgstr "--from-file kaj --to-file ambaý specifitaj" + +#: src/diff.c:832 +msgid "Compare files line by line." +msgstr "Kompari dosierojn linion post linio." + +#: src/diff.c:834 +msgid "-i --ignore-case Ignore case differences in file contents." +msgstr "-i --ignore-case Ignori diferencojn en uskleco en dosierenhavo." + +#: src/diff.c:835 +msgid "--ignore-file-name-case Ignore case when comparing file names." +msgstr "--ignore-file-name-case Ignori usklecon en komparado de dosiernomoj." + +#: src/diff.c:836 +msgid "--no-ignore-file-name-case Consider case when comparing file names." +msgstr "" +"--no-ignore-file-name-case Konsideri usklecon en komparado de dosiernomoj." + +#: src/diff.c:837 src/sdiff.c:186 +msgid "-E --ignore-tab-expansion Ignore changes due to tab expansion." +msgstr "-E --ignore-tab-expansion Ignori þanøojn kaýzatajn de TAB-oj." + +#: src/diff.c:838 src/sdiff.c:187 +msgid "-b --ignore-space-change Ignore changes in the amount of white space." +msgstr "-b --ignore-space-change Ignori þanøojn en blanka spaco." + +#: src/diff.c:839 +msgid "-w --ignore-all-space Ignore all white space." +msgstr "-w --ignore-all-space Ignori æian blankan spacon." + +#: src/diff.c:840 src/sdiff.c:189 +msgid "-B --ignore-blank-lines Ignore changes whose lines are all blank." +msgstr "-B --ignore-blank-lines Ignori þanøojn, kies linioj estas malplenaj." + +#: src/diff.c:841 src/sdiff.c:190 +msgid "" +"-I RE --ignore-matching-lines=RE Ignore changes whose lines all match RE." +msgstr "" +"-I RE --ignore-matching-lines=RE Ignori þanøojn, kies linioj æiuj kongruas " +"kun RE." + +#: src/diff.c:842 src/sdiff.c:191 +msgid "--strip-trailing-cr Strip trailing carriage return on input." +msgstr "--strip-trailing-cr Forigi linifinan CR æe enigo." + +#: src/diff.c:844 +msgid "--binary Read and write data in binary mode." +msgstr "--binary Legi kaj skribi datenojn binare." + +#: src/diff.c:846 src/diff3.c:451 src/sdiff.c:192 +msgid "-a --text Treat all files as text." +msgstr "-a --text Trakti æiujn dosierojn kiel tekstajn." + +#: src/diff.c:848 +msgid "" +"-c -C NUM --context[=NUM] Output NUM (default 3) lines of copied " +"context.\n" +"-u -U NUM --unified[=NUM] Output NUM (default 3) lines of unified " +"context.\n" +" --label LABEL Use LABEL instead of file name.\n" +" -p --show-c-function Show which C function each change is in.\n" +" -F RE --show-function-line=RE Show the most recent line matching RE." +msgstr "" +"-c -C NOM --context[=NOM] Eligi NOM (implicite 3) liniojn da kopiita " +"kunteksto.\n" +"-u -U NOM --unified[=NOM] Eligi NOM (implicite 3) liniojn da unuigita " +"kunteksto.\n" +" --label ETIK Uzi ETIKedon anstataý dosiernomo.\n" +" -p --show-c-function Montri, en kiu C-funkcio estas æiu þanøo.\n" +" -F RE -show-function-line=RE Montri la plej lastan linion, kiu kongruas " +"kun RE." + +#: src/diff.c:853 +msgid "-q --brief Output only whether files differ." +msgstr "-q --brief Eligi nur, æu la dosieroj estas malsamaj." + +#: src/diff.c:854 +msgid "-e --ed Output an ed script." +msgstr "-e --ed Eligi ed-programeton." + +#: src/diff.c:855 +msgid "--normal Output a normal diff." +msgstr "--normal Eligi normalan diferencaron." + +#: src/diff.c:856 +msgid "-n --rcs Output an RCS format diff." +msgstr "-n --rcs Eligi diferencaron en RCS-formo." + +#: src/diff.c:857 +msgid "" +"-y --side-by-side Output in two columns.\n" +" -W NUM --width=NUM Output at most NUM (default 130) print columns.\n" +" --left-column Output only the left column of common lines.\n" +" --suppress-common-lines Do not output common lines." +msgstr "" +"-y --side-by-side Eligi en du kolumnoj.\n" +" -W NOM --width=NOM Eligi maksimume NOM (implicite 130) signojn en " +"linio.\n" +" --left-column Eligi nur la maldekstran kolumnon de komunaj linioj.\n" +" --suppress-common-lines Ne eligi komunajn liniojn." + +#: src/diff.c:861 +msgid "-D NAME --ifdef=NAME Output merged file to show `#ifdef NAME' diffs." +msgstr "" +"-D NOMO --ifdef=NOMO Eligi kunfanditan dosieron por montri '#ifdef NOMO'-" +"diferencojn." + +#: src/diff.c:862 +msgid "" +"--GTYPE-group-format=GFMT Similar, but format GTYPE input groups with GFMT." +msgstr "" +"--GTYPE-group-format=GFMT Simile, sed montri GTYPE-enig-grupojn per GFMT." + +#: src/diff.c:863 +msgid "--line-format=LFMT Similar, but format all input lines with LFMT." +msgstr "--line-format=LFMT Simile, sed montri æiujn enigliniojn per LFMT." + +#: src/diff.c:864 +msgid "" +"--LTYPE-line-format=LFMT Similar, but format LTYPE input lines with LFMT." +msgstr "" +"--LTYPE-line-format=LFMT Simile, sed montri LTYPE-enig-grupojn per LFMT." + +#: src/diff.c:865 +msgid " LTYPE is `old', `new', or `unchanged'. GTYPE is LTYPE or `changed'." +msgstr "" +" LTYPE estas 'old', 'new' aý 'unchanged'. GTYPE estas LTYPE aý 'changed'." + +#: src/diff.c:866 +msgid "" +" GFMT may contain:\n" +" %< lines from FILE1\n" +" %> lines from FILE2\n" +" %= lines common to FILE1 and FILE2\n" +" %[-][WIDTH][.[PREC]]{doxX}LETTER printf-style spec for LETTER\n" +" LETTERs are as follows for new group, lower case for old group:\n" +" F first line number\n" +" L last line number\n" +" N number of lines = L-F+1\n" +" E F-1\n" +" M L+1" +msgstr "" +" GFMT povas enhavi:\n" +" %< linioj el DOSIERO1\n" +" %> linioj el DOSIERO2\n" +" %= linioj komunaj al DOSIERO1 kaj DOSIERO2\n" +" %[-][LARØO][.[PREC]]{doxX}LITERO printf-stila specifo por LITERO\n" +" LITEROJ estas jenaj por nova grupo, minuskle por malnova grupo:\n" +" F unua lininumero\n" +" L lasta lininumero\n" +" N nombro de linioj = L-F+1\n" +" E F-1\n" +" M L+1" + +#: src/diff.c:877 +msgid "" +" LFMT may contain:\n" +" %L contents of line\n" +" %l contents of line, excluding any trailing newline\n" +" %[-][WIDTH][.[PREC]]{doxX}n printf-style spec for input line number" +msgstr "" +" LFMT povas enhavi:\n" +" %L enhavo de linio\n" +" %l enhavo linio, sen eventuala linifino\n" +" %[-][LARØO][.[PREC]]{doxX}n printf-stila specifo de lininumero" + +#: src/diff.c:881 +msgid "" +" Either GFMT or LFMT may contain:\n" +" %% %\n" +" %c'C' the single character C\n" +" %c'\\OOO' the character with octal code OOO" +msgstr "" +" Kaj GFMT kaj LFMT povas enhavi:\n" +" %% %\n" +" %c'C' la unuopa signo C\n" +" %c'\\000' la signo kun okuma kodo OOO" + +#: src/diff.c:886 +msgid "-l --paginate Pass the output through `pr' to paginate it." +msgstr "-l --paginate Pasigi la eligon tra 'pr' por enpaøigi øin." + +#: src/diff.c:887 src/sdiff.c:198 +msgid "-t --expand-tabs Expand tabs to spaces in output." +msgstr "-t --expand-tabs Konverti TABojn al spacetoj en la eligo." + +#: src/diff.c:888 src/diff3.c:452 +msgid "-T --initial-tab Make tabs line up by prepending a tab." +msgstr "-T --initial-tab Øustigi TABojn per antaýmetado de spaceto." + +#: src/diff.c:890 +msgid "-r --recursive Recursively compare any subdirectories found." +msgstr "-r --recursive Rekurse kompari trovitajn subdosierujojn." + +#: src/diff.c:891 +msgid "-N --new-file Treat absent files as empty." +msgstr "-N --new-file Trakti mankantajn dosierojn kiel malplenajn." + +#: src/diff.c:892 +msgid "--unidirectional-new-file Treat absent first files as empty." +msgstr "" +"--unidirectional-new-file Trakti mankantajn unuajn dosierojn kiel " +"malplenajn." + +#: src/diff.c:893 +msgid "-s --report-identical-files Report when two files are the same." +msgstr "-s --report-identical-files Raporti, kiam du dosieroj estas samaj." + +#: src/diff.c:894 +msgid "-x PAT --exclude=PAT Exclude files that match PAT." +msgstr "-x ÞAB --exclude=ÞAB Ignori dosierojn, kiuj kongruas kun ÞABlono." + +#: src/diff.c:895 +msgid "" +"-X FILE --exclude-from=FILE Exclude files that match any pattern in FILE." +msgstr "" +"-X DOS --exclude-from=DOS Ignori dosierojn, kiuj kongruas kun iu þablono " +"en DOSiero." + +#: src/diff.c:896 +msgid "" +"-S FILE --starting-file=FILE Start with FILE when comparing directories." +msgstr "" +"-S DOS --starting-file=DOS Komenci per DOSiero, komparante dosierujojn." + +#: src/diff.c:897 +msgid "" +"--from-file=FILE1 Compare FILE1 to all operands. FILE1 can be a directory." +msgstr "" +"--from-file=DOS1 Kompari DOS1 kun æiuj argumentoj. DOS1 povas esti " +"dosierujo." + +#: src/diff.c:898 +msgid "" +"--to-file=FILE2 Compare all operands to FILE2. FILE2 can be a directory." +msgstr "" +"--to-file=DOS2 Kompari æiujn argumentoj kun DOS2. DOS2 povas esti " +"dosierujo." + +#: src/diff.c:900 +msgid "--horizon-lines=NUM Keep NUM lines of the common prefix and suffix." +msgstr "" +"--horizon-lines=NOM Gardi NOM liniojn de la komuna prefikso kaj sufikso." + +#: src/diff.c:901 src/sdiff.c:200 +msgid "-d --minimal Try hard to find a smaller set of changes." +msgstr "-d --minimal Pene seræi malpli grandan aron da þanøoj." + +#: src/diff.c:902 +msgid "" +"--speed-large-files Assume large files and many scattered small changes." +msgstr "" +"--speed-large-files Atendi grandajn dosierojn kaj multajn disajn þanøetojn." + +#: src/diff.c:907 +msgid "" +"FILES are `FILE1 FILE2' or `DIR1 DIR2' or `DIR FILE...' or `FILE... DIR'." +msgstr "" +"DOSIEROJ estas 'DOSIERO1 DOSIERO2' aý 'DOSIERUJO1 DOSIERUJO2' aý DOSIERUJO " +"DOSIERO...' aý 'DOSIERO... DOSIERUJO'." + +#: src/diff.c:908 +msgid "" +"If --from-file or --to-file is given, there are no restrictions on FILES." +msgstr "" +"Se --from-file aý --to-file estas donita, ne estas limigoj de DOSIEROJ." + +#: src/diff.c:909 src/diff3.c:474 src/sdiff.c:222 +msgid "If a FILE is `-', read standard input." +msgstr "Se DOSIERO estas '-', legi la normalan enigon." + +#: src/diff.c:920 +#, c-format +msgid "Usage: %s [OPTION]... FILES\n" +msgstr "Uzado: %s [OPCIO]... DOSIEROJ\n" + +#: src/diff.c:949 +#, c-format +msgid "conflicting %s option value `%s'" +msgstr "malkongrua valoro de opcio %s: '%s'" + +#: src/diff.c:962 +msgid "conflicting output style options" +msgstr "malkongruaj opcioj pri eligostilo" + +#: src/diff.c:976 +msgid "regular empty file" +msgstr "normala malplena dosiero" + +#: src/diff.c:976 +msgid "regular file" +msgstr "normala dosiero" + +#: src/diff.c:978 +msgid "directory" +msgstr "dosierujo" + +#: src/diff.c:981 +msgid "block special file" +msgstr "blokaparatdosiero" + +#: src/diff.c:984 +msgid "character special file" +msgstr "signoaparatdosiero" + +#: src/diff.c:987 +msgid "fifo" +msgstr "fifo" + +#: src/diff.c:991 +msgid "socket" +msgstr "konektilo" + +#: src/diff.c:994 +msgid "message queue" +msgstr "mesaøovico" + +#: src/diff.c:997 +msgid "semaphore" +msgstr "semaforo" + +#: src/diff.c:1000 +msgid "shared memory object" +msgstr "komuna memoro" + +#: src/diff.c:1003 +msgid "typed memory object" +msgstr "tipita memora objekto" + +#: src/diff.c:1006 +msgid "weird file" +msgstr "stranga dosiero" + +#: src/diff.c:1070 src/diff.c:1256 +#, c-format +msgid "Only in %s: %s\n" +msgstr "Nur en %s: %s\n" + +#: src/diff.c:1193 +msgid "cannot compare `-' to a directory" +msgstr "ne povas kompari '-' kun dosierujo" + +#: src/diff.c:1220 +msgid "-D option not supported with directories" +msgstr "opcio -D ne eblas kun dosierujoj" + +#: src/diff.c:1229 +#, c-format +msgid "Common subdirectories: %s and %s\n" +msgstr "Komunaj subdosierujoj: %s kaj %s\n" + +#: src/diff.c:1266 +#, c-format +msgid "File %s is a %s while file %s is a %s\n" +msgstr "Dosiero %s estas %s, dum dosiero %s estas %s\n" + +#: src/diff.c:1345 +#, c-format +msgid "Files %s and %s are identical\n" +msgstr "Dosieroj %s kaj %s estas samaj\n" + +#: src/diff3.c:26 +msgid "Written by Randy Smith." +msgstr "Verkite de Randy Smith." + +#: src/diff3.c:328 +msgid "incompatible options" +msgstr "malkongruaj opcioj" + +#: src/diff3.c:368 +msgid "`-' specified for more than one input file" +msgstr "'-' donita por pli ol unu enigdosiero" + +#: src/diff3.c:408 src/diff3.c:1232 src/diff3.c:1645 src/diff3.c:1700 +#: src/sdiff.c:305 src/sdiff.c:879 src/sdiff.c:890 +msgid "read failed" +msgstr "legeraro" + +#: src/diff3.c:441 +msgid "-e --ed Output unmerged changes from OLDFILE to YOURFILE into MYFILE." +msgstr "" +"-e --ed Eligi nekunfanditajn þanøojn de OLDFILE al YOURFILE en MYFILE." + +#: src/diff3.c:442 +msgid "-E --show-overlap Output unmerged changes, bracketing conflicts." +msgstr "" +"-E --show-overlap Eligi nekunfanditajn þanøojn, kun konfliktoj en " +"parentezoj." + +#: src/diff3.c:443 +msgid "-A --show-all Output all changes, bracketing conflicts." +msgstr "-A --show-all Eligi æiujn þanøojn, kun konfliktoj en parentezoj." + +#: src/diff3.c:444 +msgid "-x --overlap-only Output overlapping changes." +msgstr "-x --overlap-only Eligi interkovriøantajn þanøojn." + +#: src/diff3.c:445 +msgid "-X Output overlapping changes, bracketing them." +msgstr "-X Eligi interkovriøantajn þanøojn, en parentezoj." + +#: src/diff3.c:446 +msgid "-3 --easy-only Output unmerged nonoverlapping changes." +msgstr "-3 --easy-only Eligi nekunfanditajn neinterkovriøantajn þanøojn." + +#: src/diff3.c:448 +msgid "-m --merge Output merged file instead of ed script (default -A)." +msgstr "" +"-m --merge Eligi kunfanditan dosieron anstataý ed-programeto (implicite -" +"A)." + +#: src/diff3.c:449 +msgid "-L LABEL --label=LABEL Use LABEL instead of file name." +msgstr "-L ETIK --label=ETIK Uzi ETIKedon anstataý la dosiernomo." + +#: src/diff3.c:450 +msgid "-i Append `w' and `q' commands to ed scripts." +msgstr "-i Aldoni la komandojn 'w' kaj 'q' al ed-programetoj." + +#: src/diff3.c:453 src/sdiff.c:202 +msgid "--diff-program=PROGRAM Use PROGRAM to compare files." +msgstr "--diff-program=PROGRAMO Uzi PROGRAMOn por kompari dosierojn." + +#: src/diff3.c:465 +#, c-format +msgid "Usage: %s [OPTION]... MYFILE OLDFILE YOURFILE\n" +msgstr "Uzado: %s [OPCIO]... MYFILE OLDFILE YOURFILE\n" + +#: src/diff3.c:467 +msgid "Compare three files line by line." +msgstr "Kompari tri dosierojn linion post linio." + +#: src/diff3.c:673 +msgid "internal error: screwup in format of diff blocks" +msgstr "interna eraro: fuþo en formato de diff-blokoj" + +#: src/diff3.c:971 +#, c-format +msgid "%s: diff failed: " +msgstr "%s: diff malsukcesis: " + +#: src/diff3.c:993 +msgid "internal error: invalid diff type in process_diff" +msgstr "interna eraro: nevalida diff-speco en process_diff" + +#: src/diff3.c:1018 +msgid "invalid diff format; invalid change separator" +msgstr "nevalida diff-formato; nevalida þanø-apartigilo" + +#: src/diff3.c:1242 +msgid "invalid diff format; incomplete last line" +msgstr "nevalida diff-formato; malkompleta lasta linio" + +#: src/diff3.c:1265 src/sdiff.c:273 +#, c-format +msgid "subsidiary program `%s' not executable" +msgstr "subprogramo '%s' ne rulebla" + +#: src/diff3.c:1268 src/sdiff.c:276 src/util.c:298 +#, c-format +msgid "subsidiary program `%s' not found" +msgstr "subprogramo '%s' ne trovita" + +#: src/diff3.c:1272 src/sdiff.c:268 src/util.c:301 +#, c-format +msgid "subsidiary program `%s' failed" +msgstr "subprogramo '%s' malsukcesis" + +#: src/diff3.c:1294 +msgid "invalid diff format; incorrect leading line chars" +msgstr "nevalida diff-formato; maløusta signo en antaýa linio" + +#: src/diff3.c:1370 +msgid "internal error: invalid diff type passed to output" +msgstr "interna eraro: nevalida diff-speco donita al eligo" + +#: src/diff3.c:1647 src/diff3.c:1704 +msgid "input file shrank" +msgstr "enigdosiero þrumpis" + +#: src/dir.c:162 +#, c-format +msgid "cannot compare file names `%s' and `%s'" +msgstr "ne povas kompari dosiernomojn '%s' kaj '%s'" + +#: src/sdiff.c:35 +msgid "Written by Thomas Lord." +msgstr "Verkite de Thomas Lord." + +#: src/sdiff.c:183 +msgid "-o FILE --output=FILE Operate interactively, sending output to FILE." +msgstr "-o DOS --output=DOS Funkcii interage, sendante eligon al DOSiero." + +#: src/sdiff.c:185 +msgid "-i --ignore-case Consider upper- and lower-case to be the same." +msgstr "-i --ignore-case Trakti majusklojn kaj minusklojn kiel samajn." + +#: src/sdiff.c:188 +msgid "-W --ignore-all-space Ignore all white space." +msgstr "-W --ignore-all-space Ignori æian blankan spacon." + +#: src/sdiff.c:194 +msgid "-w NUM --width=NUM Output at most NUM (default 130) columns per line." +msgstr "" +"-w NOM --width=NOM Eligi maksimume NOM (implicite 130) signojn en linio." + +#: src/sdiff.c:195 +msgid "-l --left-column Output only the left column of common lines." +msgstr "" +"-l --left-column Montri nur la maldekstran kolumnon de komunaj linioj." + +#: src/sdiff.c:196 +msgid "-s --suppress-common-lines Do not output common lines." +msgstr "-s --suppress-common-lines Ne eligi komunajn liniojn." + +#: src/sdiff.c:201 +msgid "" +"-H --speed-large-files Assume large files and many scattered small changes." +msgstr "" +"-H --speed-large-files Atendi grandajn dosierojn kaj multajn disajn " +"þanøetojn." + +#: src/sdiff.c:214 +#, c-format +msgid "Usage: %s [OPTION]... FILE1 FILE2\n" +msgstr "Uzado: %s [OPCIO]... DOSIERO1 DOSIERO2\n" + +#: src/sdiff.c:215 +msgid "Side-by-side merge of file differences." +msgstr "Æeflanka kunfando de dosierodiferencoj." + +#: src/sdiff.c:327 +msgid "cannot interactively merge standard input" +msgstr "ne povas interage kunfandi la normalan enigon" + +#: src/sdiff.c:588 +msgid "both files to be compared are directories" +msgstr "ambaý komparendaj dosieroj estas dosierujoj" + +#: src/sdiff.c:853 +msgid "" +"ed:\tEdit then use both versions, each decorated with a header.\n" +"eb:\tEdit then use both versions.\n" +"el:\tEdit then use the left version.\n" +"er:\tEdit then use the right version.\n" +"e:\tEdit a new version.\n" +"l:\tUse the left version.\n" +"r:\tUse the right version.\n" +"s:\tSilently include common lines.\n" +"v:\tVerbosely include common lines.\n" +"q:\tQuit.\n" +msgstr "" +"ed:\tredakti kaj uzi ambaý versiojn, æiu kun æapa¼o\n" +"eb:\tredakti kaj uzi ambaý versiojn\n" +"el:\tredakti kaj uzi maldekstran version\n" +"er:\tredakti kaj uzi dekstran version\n" +"e:\tredakti novan version\n" +"l:\tuzi maldekstran version\n" +"r:\tuzi dekstran version\n" +"s:\tsilente transpreni komunajn liniojn\n" +"v:\tlaýte transpreni komunajn liniojn\n" +"q:\tfini\n" diff --git a/src/apps/bin/diffutils-2.8.1/po/es.gmo b/src/apps/bin/diffutils-2.8.1/po/es.gmo new file mode 100644 index 0000000000000000000000000000000000000000..6035981d85ef2334d40b4a49c69e1d7e1e7fc141 GIT binary patch literal 25106 zcmb`P4RBo7b>E+AJF#FVwq;wE?byDOO@WlKAV5hL1&OvG5F}yYg91QNG)V~$yAQyV z7W<%myCfmii9eFIaT2?3<2Y_o*Kuk)P3$&b?j%i{CT*rkGvhj)G;Jo+WUNl()@|Ly zRi^EzpTGaP_q~0)Sdf$_JG}Vsd-wa?bIv{Y+_U`nOK^Hz~M$s#p z{`IRS!0(QtS4~FI4Ljh^^89zB=ry;3C&1qU=c4GQH-K*gV~{#GeE@t7`19Z!LA5JX ze`DbP1m6-xuRQ>gUOVI8zcvMHJpTyjK-Ie){9};zU-!y@v=PnoOp4wEeiEeK>;64> zPZYiWCh#D53Z%^Ip9bmw^}h-p2Y(-YcNE>s7@~*3i~jx1p9bmYX7$Is-taQ;7`Oz| z&l`RyJgffED7xil@IFxa%;A>r2cgR?Uk2&_jjsbA1ZhM4yb)SP3*fJV4@c3PUIo(5 zo6dvG=}kWj($AZePrGk^C3qO5P0{tumq6;h`SajAz~{k}EZr^OA#ja#dKCOH&(wd* zbKqO~_hyiCZ=C|C!4HBDfTHg>Q@#OY{BNTVjpJ<{5c<6BCqT-*P3_FGB($Y@xCVFt z)HtBG(|j4@tuFy-?^fmzy$jq8_)8%D-ugd4=6f4si|zv3;M>8^fz0!^-v$}yZ7=xe zx6@a2H$_zLYoPjL4Da{|cq{ltkh#6%E8+P+gRI|y?*Li912yn=@G?lf1D^un)dT-1 zFz1x2agzmS06@#UF11$%|eM9syqt zLQC=6=sZZjqZ{C>!0!W@@94)t)%#^|lz;yU{5kM{gYe2hWK8c5{ul7uS=!fuUk4de z1aIH*Z6Nf&gFYhi?qIDno;y|psy{tz90Z3bS{0Yc<-AS2f1-u_* zE_Z6)LeYB?{Kp{m@BAhRUyo@#cYxw+#xu4B!hd7Wf~?EfXF{})K#hXKv+@asXwcbL8+Xn*(|NZW^h z5QM&mwa(D{@b81H<6+U4aZcOU0eE!5|K>C~bRgm?Z_?IBOH1Y31+MD=O z@HVQx0)+mP&`$Z2t03<{FvUZbS1iusfMG$&S{! znfzVwcJRM}w=yNsi*X;hAABu%790Ve0%`vU`rroS@5qOE-bJK-nddLC#K_hSw0qB2 zdC%P5sc~P3qI(k%THX6kKI39MyU<&!gxN(edchAmcjv84$W1{q^u( zat8hGgNHQE`xZg?;l3Tvfj<`TAA)V3{}3c^>NI!+R6DcapMi|^{weS>D7rEK`@aUB zMD;-1=wsj+5S{bDe*iySsX4KKELXHs>Az zq0`(~K<4+Jmw=4rJKB4PI$H>!8+wb$M9yfrsWMS@4z8_S+=&9#l z0uO>;1@DZaGdF_24c-G%=TSg(eDnl30)8*Znm_tc@Rle#``sY*&wc`AZfAcDd>tsd z37-d{&0{YIUk$z$oCFVpwEtKPQvb2fhv(k`m!s(1%^>ZcO9P6(;Hh(3Z^nJ@Ux2i8 z?!SXaqv*Y~q4~a7?J@TEz7Mv&%Dhfe4Jna{s) z1ITv4_a z9iZyn2L2fczdfPxoB~NI|HQ{Y%02O0ApJd|c4>1>Vs{4T((9>V9Q zfbRvDikAW34Sr$Z-QVK*G14mOF4DuKpCPT0evy=s=13nQ{biCquOMxc#LN18k@P*J zcaYvg(&s4;(Feenlg3C1>7}F*lK6X$p?lcd{Dlioslg!CPx1EdX-KIlKmnDnT0Q}hd@;&X&Ahe)3z-AF*`sn6Q`}I5y$7i0h0e#ADtO>jyf(+Tbs?q)wkkyT<_4vOi|*(($Z2W)XTk0M=q;( z;wEi35=WWH`F{8I_keTFw3Xy;qn&NL6La&klfLnH?a4UeGmaG*^=x}PYq?J5tGT$< zuy3K<`P#+vXXlQup1OE`{QT+V*_n$MpKWAU9(&*X?CR?5vU5A_wAI6axi$I#p!8a|1#`7Flg8*cd{mV46_j7*(#*5eh2r}xUkbEhZW`fdjf zgM!9i#wg1M!K<)w5KeWXO@~-^JU~3`I^UpyD~N5K^3N~Iky1~ zlg5;@H)*q(Y$7PxPA7$zYc+SE?#rgFOK~%849N*)*ACPVUC3$PK<6^NUQ-fDG zyW1?UZ>B6vQ3e%nucw>ctZOrvDjHu?L+#}0ZrX-U`?gW5y@(ELXPNzV4=W2cvwPA*TQ49=jHiU(9BN^?irYy&3DRZDuerYGy5 zR_kQ`X+1-WODm=uY0{_`Jm#gy&4i}>BW=Tia8%Mp5$8y%e_w~4)@dB(XNfvldsn?~ zCCwe@mbx7&g3cD}t~ZvGwbN&^mJu*Nws?jqJe(vuPTxdSlVeG5Q2#saWFx&|gU`Dg zd{raqW-Dt$f2LJy#oI~El(U<&*IrX!-bz}58q#P+0Tnf(T;J+xzCBeouy(C%zfsI& ztvqcMJH}PV!7R4X4h5lN7hY(oHBZ(jY1H7*O+VS(x#>Jd{Mk`>=U3Tivn~Cd*W(WR zHzJbLEZeiGRhx0%X{S52Lc!PSZB(gV^>ltcZnx8zM%ziJ+ip43l}%pb2ux#~am1CJ zQDul?pFR>e;|R+zj5E5e)N=~@FmBe^1w22x)pio2=GJp`TTtD`#M+pX?VXPJ>MrMM zwIt4WYgwy_-~{8Nh#ydM&^xpiZRWaYnF4r{XqF#kYr~r(gr;?7< z%UT=FwB8Zr9#YM~Z|lvt^_1saS2CNYvAevLA&H)Y&77bgD^DB8-Qx5D`#244G?I;D z{wWMT4BZ$MA=4n;+S{$5RYS+Z4I0YvLZ7#?j?23{J6XHKq)j^&(w8QARP$YV8R^99 zwdBf93{SG6gQISA6D=HtFa<&(da?$LT!EY=$x2cO+U`rYQ%3PWFaDi#%hgGt!RuSB zRL~;ID`bDzaqo**OQV~V*krq+HveX$|da3YAJsfVJh3F0xy zp*1DSZ)co&FbSm2r563#i?Sw#4Gm-)uC@(u6*GwAXG6+pBjunM`z?%JG*4{#!n(2` zFfi;!{h&bEW_Zf$>}KMS!R$eeF?aqnPvOV`e$z8oW9des&0bf_vS^p zv7>sEcFp!(I~#iQgUT2}ntG0%F|>t3NyVrdfA&aPb@T?zYKo>fx%tY|bOR~YE{|GQ zYfq1wQ6%$AbSfvUy&-iv3RQ+2^u;m%ddRV_5*yC~e3 zY;=%`W_O#dB`k;S%%Xxa8L(v{f5D!!9g+cC{hfFd6Bq^LPRBWuqE=SejGVnUx7^xJ zdsLGxOQu?5tIS5fu06NtSOObP(>mld90#nfw?i*62XpZx%s(;IaA}NRgQ(n!orqfl(hKQh2rsk4|U*a z613`)EO2HDxAFx6zLYd~#}E^*`V0E`+6?h&wXoh!lZ|qawnS_>(7PQptfvmeF$|ee zQt!5NTGrVle8t{k3GHxUwq|#|vP&`HZmU6cC{e3%&_rnYl4GDF{snQcTeNH6?{?D! zCrWZ9#g6I3oi0W{_FPe&eGJQ{h7H~7q;>W@zX>oDz4v=%=du)q?YW$GDne%ika5IO zH-|UnLn=(R;~5qr+QhTi07Ke<%?N5}lck+mSwyHLJ-~vt-I%QU1{m%oO%guzw$+kv zw|Gul8yRITt4z=%*Ruy-c6KPL)h?%v&XzwRg_a9G>DzB6@0vIi#4LC4hACV6y`p}@ zHr{V8582zT{OM_9(Xf*rv&Vh+aB``H4X#ygB1eF1*GF2`=(FF5TS8q0r03dmNiRRTit{nM+o7=!Iu5ysvzZmZ~Ra zvbU4XE{A#@!=$-5td)guxNs~-zxUqkExeFy<9ng{R@~+E(ufu_Z*l2M@aH-dh%Ab5 zu2Bx1T}ts6GTA--FX@bp9Lu#SEd+!>%_wLED zqpB@V&oi;0E(cb}-03klJLcXy=Fa&MPg)UgI*EBTOn(s|a@(G6n~40^(9~>e2^O`h z>eHJeVS%bPBIUYuY{fiUl{+o?0ktJ3!85hEc3JjDDiOm0Dwi9_mEeHu^)bTE&bFfFusF6$2i?iVGwx*4!U$=) z)7^E}z|E(a`*|`xasnd3kFrv{TUE}7c%6+??O?RQNHm7WJxA%OX;U(ir-qwZI(=?# z@#J{4THHrS9CIXYi&wjD4VB|vjH9+1gB^`WXIf9SvdgICT|{BqCGB?B=B1rJ>ENJL zt%b zOC~)Wxp?v7)hey*m+8+bt~kdOhnSJ*EIwowU7~WD1F4(c+)UaX_&>#Ga4P0|(j0Tg z<4asVoQijod~9TygP(LIUWsNCPoih{c^X;O)z^5n&1EEE*R8-#TYc|Wx3XW8FU8?w%*+@6CC~X;6b<*|9lJxi%FEP^e6va@YxY50an}V}hV&qyD zm+S2Ah}X4MXy153FR!D<4u%bD#RlT}Vow!3Ey-nEjx-&v%-F81N0X+U3VswEJMCh& z!gjr^a3Tu61%Foe1SrY`UmNS)+C(HxP>MY3&i8&l0}-*LEP5C1@aC%5zaKe@zsxn9voFm#}`>zIg;V<9tE<}aN;CDl_lKowERN8U6X7O6E zcx5Uv$L`xOlZ-ECk;&{YCG1Y}q9n`fQ&5`ZW;cbUV}R zYIBVm@+^aV%E{yrdzi`Uj*QsVaWcDu#b zN@X~A|PpQW$t$uD^W?y+(IVd%Do=f)90m|QQ;eSH`xVzpHVYo}UDEJS2TeyE6AB4(-e0yahl zP0*Vf3Qw^olvTITrM@yRaM;@JFT$l*rHCh1e+biTHGrutsf4)-7oU zYPoBC2I!=rA$je%5hFG}RD=Ore3UyF*6UD+lyV1cnK`FaNU9E)P%FcWV16r$vl63VnJRh*;Aq`f4k0azLUg#(I6x(t+WwJO&F1qV@G9Fe z`NC9F_*EtDs>o>N9rr>n_A2vHN7V}KWDL#6U&TYS zEyhW{t?tzt@FeHLEH6&#`F5sWKa9Vb%$*Y^oR;Bw~Rtey^vm|M|C(D+%=Db1HYW^Cpk=NCd7B~ zSL!-LS6P%-s+)qL5nk*WXHYrmGjS2-HSM)O0xtcIzn{i7IKe|PZUQ;aY{hivBfIKI zIu{t)k*ls(Qx2u`m7YtlESF4vb1b5KDjS|=*I~#|h7=Ah^tlf~%9gyA*A@on7pF%* zV;?8Bz%`xDLHvzfyxWDDWQL-tnYIWMjO-BZvG@n}N;_FP0p}mP5x>WyNd9s>x|#TAKE&)2+;EXfMp$KJ_lf zei41><@G9)F2de0u^U|iQj9G)vHJH~s3C!GD;PU0H|M23BHGqLNF+W=ExPC%_Cw_i zA2fbh2}_2DVuz^M8jb_Nvg^+0=K(A<_ zr*6WcV&-xBX=}YRzu3W%MXM&QLq?7J3GGOTIQ{G!&ezicv{Z0Vy}R2JIN2y(3N`Uq ztr6I_wD8dKEYlB>ef}}{#l_e`GfN>z(=%#Oc{^yl!cq@nGyqjqB*qvm!UCtAYPr9kQ32Vqy z_xf21EU+l8aG2|laNMIU`c;Iux}paZ^Jq%Wm}4O9F=Wi(&d2A^d6WBaQA3s{f^#_;H*jNd-r$B=TQ3yBjv%h2#h{SQZcB#P zK4Fu+MHFu;9E4Ms6u#no>#9inN=g%WmJ@0tuUg;N=iWgfk?_gHw(nr9oYLc zwLX@(E{2Mmn_c!Xf72{4MB(g%7s84#roM1Y@j*`)7uKdXWN+4eFKiXhMzFYu~7JRr1~ zI0SyW`*jNm6{E~ZaM*xxLCIcc1o|WIgAL?FsgX4?mSl#|G(-kq+MmK4rf0!CGVd->+VxzY6rMKtIor1Z7JxUVv{4?I}A+*B;KS)@Od-}PPXO{XHeAlg>sTE3*0WQoHPxP~Y zKq|i$!tpB$ZXeryXzi;=z7K+9m7Y;#WE-KWm;vl~;dr_?Bvu89CN@VE3b-9#`nnxC))WDYerFERQKc z{1JM1aCUoiwnZ11kEZC8{;Q$6bA<2KS!{7lp7tNn{FY^I3HzZdwi~qvBXzN?j3v;b z7QE{RTv^^~fTA6`h6n2|Lat!Sb6$xF(b1S-T9jnCb%ARzcH*@0bvFHaZ#dXW763O8x?364P}$ipdUvnshvu)CZl!!Nlm2MlIUl*C z9f3j?Gr$hm=aJJzSx){F?RokY{OUE$dG0jb1`-T-? zgKy`n@(?`1b|JF6=T>Bd0Ki_zy^+njw{SESFT#xDo`iYRsyF8lY^<$>{kIgveT(&p ztL+?WOJ5XqY^rmm;)hxb?-UGYnTk4gYs41M&a5si&vCER`+j5;y7lE2wR~{0D_T>C zU9TEZ%Cm~p^1AeZ1WbyFFFIGUMS3?D%DIv^67><99HXyn#Zm$7Q>O2@z#8DW(l4}G z@zQ6`EJ`=unEWtX7FcPK%N!A9>cBV!y%g}N5r=1u-y)cU0|$L!zsatnc$-`uz=t+1 zy2Mw85{$^=o$;fN!m-V+=5N2Enc}(~EvJxX1(sM=)|bV31Kn3gI> zo6e5MjA^V119ta`TOnMh}Cp+!3}apa0!qH7Eb?(%!>@2Oo5*utDsZV5Is_T5+^ z%%ZmL=X9nGhhYr+v@eglJ9LAOETF&Yjj-*^ejFuV4K};?sLXUQ1EQ5+C z3F?+t>wBt4^Q`8cNkYB`74uYHLhsU+z(Rb+&OH%Zf*f-D22P8|3%kyn$mR{SOKTd) z3C%X2p6LV1Dwe>`TYU9*B_q9XYV(u$FzWFlj(WTdq}D6{nn3Dt0;$K#Kf^WiX=J-$D~;>g{kzAtK$oK{pf5Ts!bAwg~=e zHEJi)pd9R{71F786U+^V=}i3`P2LB86zO+D=-5*zMb##h*+>@65=P7wx&7A**a8rZ zPC3~v5~h4+aoU}nR@n8Ir^jGM-C;E{t|LO!wTW;u*&QF@^cfbU7j>P=PrIYLCMqD{ zm2TGKC%uci^L3)P!(~G=9^|j2YOkWOm2T7PiH5W!&{c+-S)3#psbkM)z5E8^?fe?NqUbC>E)q;m*;tT{_*~od352~{x{Kr zE>cB6g#l(ofcA{SZ+w8Z?MA(AY2>;@e6}Ws5intc-yVbv}8(nf~~f&7Q`Vk5!g41SAM(oyAa{4n8A4@ zySUHtk#VeD#ygtA#jZCD*wwfR#19;?|1lbW|AJ+xArQgIU}R-5h@P*yT2zkwP*&Ym zE=`LOB5dX+QJi?SkHV`octW-QhFA?lr`$7`BMTu%%q2%f--Uw==|Z{6#Oy5*I>2AR zBjmR0sAC^=ehITq!_`TxXU_yvNJ@eAR}>XJ1?Pr{*{dGsk@&?dC(7Vl=P=ZlT_L9a zuO)pHh_1K+?!FX;L)Ug@QzK)3Uyy;|gVE7xepNvJ3kWV0V+%*WRznt&zNZj0DUOGw zhsOfbuU3)>_=Kn|%K71k@oS9UItfjVk2FI8UE~b!iV#uz43sFlAo9vSb1eeab$aWM zX|!MI>Mp~348{pzziN3##t*NH!cT|7E4Zl$>SyKTClbe4Y`ZbSnu6L#dy86)Ue2S+ zR@9SF$u%Aq{F>|y7P8ESq-b~4yInU>)I36k)hG^Si|&QGUsolf-L>^q9BqT0ZSb2I zV}A|P0+NhzC9OeW*f=6D14YbxIVzifk=O6XEDhcuEm>1Majdg`$X}s}QJ4 z|9x}6KRD5Cm!^(%3i0r$x!!;WD)c1Z%3D-CQ$iC`83X4TKT8NBX1Pj3J|rGahRB1Vh^AmJ5Dj*4gS$W z`;=+~=jg6t=cQ-{xKBn`VWps8L&TqVtjcr>3?aQ$n1E7)O*DTOGfDjMe5qWEt2B#^ z7xtnWRW80*~o1|{Ctgx`fUJnD~r~AK>cXMjMn)*Rct3)E4@R&cNBD{Hc=f1 zB|pW$Fyup&ed={^7~WNjFlmk+3DNE$$lh-=LHR!~Q*qz+8KXb3pl?fJGcEojC3Z`h f!sTu, 1996. +# Santiago Vila Doncel , 2001, 2002. +# +msgid "" +msgstr "" +"Project-Id-Version: GNU diffutils 2.7.10\n" +"POT-Creation-Date: 2002-04-05 14:10-0800\n" +"PO-Revision-Date: 2002-03-17 19:06+0100\n" +"Last-Translator: Santiago Vila Doncel \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/c-stack.c:188 +msgid "program error" +msgstr "error del programa" + +#: lib/c-stack.c:189 +msgid "stack overflow" +msgstr "desbordamiento de pila" + +#: lib/error.c:128 lib/error.c:156 +msgid "Unknown system error" +msgstr "Error del sistema desconocido" + +#: lib/freesoft.c:27 +msgid "" +"This program comes with NO WARRANTY, to the extent permitted by law.\n" +"You may redistribute copies of this program\n" +"under the terms of the GNU General Public License.\n" +"For more information about these matters, see the file named COPYING." +msgstr "" +"Este programa viene sin NINGUNA GARANTÍA, hasta donde permite la ley.\n" +"Se pueden redistribuir copias de este programa bajo los términos de la\n" +"Licencia Pública General de GNU.\n" +"Para más información sobre esto, vea el fichero llamado COPYING." + +#: lib/getopt.c:693 +#, c-format +msgid "%s: option `%s' is ambiguous\n" +msgstr "%s: la opción `%s' es ambigua\n" + +#: lib/getopt.c:718 +#, 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:723 +#, 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:741 lib/getopt.c:914 +#, c-format +msgid "%s: option `%s' requires an argument\n" +msgstr "%s: la opción `%s' requiere un argumento\n" + +#: lib/getopt.c:770 +#, c-format +msgid "%s: unrecognized option `--%s'\n" +msgstr "%s: opción no reconocida `--%s'\n" + +#: lib/getopt.c:774 +#, c-format +msgid "%s: unrecognized option `%c%s'\n" +msgstr "%s: opción no reconocida `%c%s'\n" + +#: lib/getopt.c:800 +#, c-format +msgid "%s: illegal option -- %c\n" +msgstr "%s: opción ilegal -- %c\n" + +#: lib/getopt.c:803 +#, c-format +msgid "%s: invalid option -- %c\n" +msgstr "%s: opción inválida -- %c\n" + +#: lib/getopt.c:833 lib/getopt.c:963 +#, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "%s: la opción requiere un argumento -- %c\n" + +#: lib/getopt.c:880 +#, c-format +msgid "%s: option `-W %s' is ambiguous\n" +msgstr "%s: la opción `-W %s' es ambigua\n" + +#: lib/getopt.c:898 +#, 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/regex.c:1367 +msgid "Success" +msgstr "Conseguido" + +#: lib/regex.c:1370 +msgid "No match" +msgstr "No hay ninguna coincidencia" + +#: lib/regex.c:1373 +msgid "Invalid regular expression" +msgstr "Expresión regular inválida" + +# Se refiere probablemente a cosas tales como que la c con la h es "ch", +# aunque este ejemplo ya no es válido, pues la Real Academia dice +# que para propósitos de ordenación son letras independientes. +#: lib/regex.c:1376 +msgid "Invalid collation character" +msgstr "Carácter de unión inválido" + +#: lib/regex.c:1379 +msgid "Invalid character class name" +msgstr "Carácter de clase inválido" + +#: lib/regex.c:1382 +msgid "Trailing backslash" +msgstr "Barra invertida al final" + +# FIXME +# Retro-referencia es lo mejor que se me ocurre ... claro, que acepto +# sugerencias ;) +# ¿Referencia hacia atrás? sv +# Me suena a cangrejo ;) ... no se ... a ver que opinan Enrique y el resto de +# la gente ... La verdad es que prefiero Retro-referencia a referencia hacia +# atrás (más que nada es por que es la traducción que se hace, como por +# ejemplo en backfeed -- retroalimentación) IPG +# En glibc.1.10.1 : +# # posix/regex.c:946 +# msgid "Invalid back reference" +# msgstr "Referencia hacia atrás no válida" em +# Si no fuese porque has traducido tu la glibc, te preguntaría quien ha sido +# el asesino que ha puesto eso :) Momento que voy a mirar la enciclopedia +# esa que tenemos decorando la estantería ;) ... ¡¡Ja jaaaa!! :) ¡Palidecerás +# ante esta cita! "Diccionario Enciclopédico Espasa-Calpe". Edición de Dios +# sabe cuando (la décima, creo), volumen 15, página 8846, tercera columna, +# tal que a la mitad: +# +# retrocontrol. (De retro- y control.) m. Biol. Fenómeno de autocontrol por +# el cual la excesiva acumulación de una hormona en la sangre actúa sobre +# la glándula corespondiente e inhibe automáticamente su producción. Se +# utiliza mucho internacionalmente la voz inglesa --feed-back-- para expre- +# sar esta idea. +# +# Y mejor ... para rematar :). Misma página, primera columna, cuarta entrada: +# +# retro-. (del lat. retro, --hacia atrás--) pref. que lleva a lugar o tiempo +# anterior a la significación de las voces simples a que se halla unida: +# retro-traer, retro-vender ... +# +# ¡¡Quiyos!! Hay dos páginas de retro-"algo" ... :) ¡no me digáis después +# de esto que preferís "hacia atrás"! y máxime cuando está aceptado preponer +# retro- para ello :) Si no os importa, y a no ser que venga alguno de la +# RALE y me castre por ello, dejaré retro-referencia. +# ipg +# Un comentario: No serán los de la RALE los que hagan eso, sino los +# que no lo entiendan. Aún después de ver tus acertadas referencias, pienso +# que referencia hacia atrás se puede entender mejor, pero por supuesto, +# no estoy dispuesto a matar por ello... sv +# :) Gracias, pero por ahora dejaré retro-referencia, me parece más clara +# en cuanto al significado preciso de la frase. ipg +#: lib/regex.c:1385 +msgid "Invalid back reference" +msgstr "Retro-referencia inválida" + +#: lib/regex.c:1388 +msgid "Unmatched [ or [^" +msgstr "[ ó [^ desemparejados" + +#: lib/regex.c:1391 +msgid "Unmatched ( or \\(" +msgstr "( ó \\( desemparejado" + +#: lib/regex.c:1394 +msgid "Unmatched \\{" +msgstr "\\{ desemparejado" + +#: lib/regex.c:1397 +msgid "Invalid content of \\{\\}" +msgstr "El contenido de \\{\\} no es válido" + +#: lib/regex.c:1400 +msgid "Invalid range end" +msgstr "Final de rango inválido" + +#: lib/regex.c:1403 +msgid "Memory exhausted" +msgstr "Memoria agotada" + +#: lib/regex.c:1406 +msgid "Invalid preceding regular expression" +msgstr "Expresión regular precedente inválida" + +#: lib/regex.c:1409 +msgid "Premature end of regular expression" +msgstr "Final prematuro de la expresión regular" + +#: lib/regex.c:1412 +msgid "Regular expression too big" +msgstr "La expresión regular es demasiado grande" + +#: lib/regex.c:1415 +msgid "Unmatched ) or \\)" +msgstr ") ó \\) desemparejado" + +#: lib/regex.c:8034 +msgid "No previous regular expression" +msgstr "No hay ninguna expresión regular previa" + +#: lib/xmalloc.c:63 +msgid "memory exhausted" +msgstr "memoria agotada" + +#: src/analyze.c:809 src/diff.c:1283 +#, c-format +msgid "Files %s and %s differ\n" +msgstr "Los ficheros %s y %s son distintos\n" + +#: src/analyze.c:812 +#, c-format +msgid "Binary files %s and %s differ\n" +msgstr "Los ficheros binarios %s y %s son distintos\n" + +#: src/analyze.c:1058 src/diff3.c:1413 src/util.c:526 +msgid "No newline at end of file" +msgstr "No hay ningún carácter de nueva línea al final del fichero" + +#: src/cmp.c:43 +msgid "Written by Torbjorn Granlund and David MacKenzie." +msgstr "Escrito por Torbjorn Granlund and David MacKenzie." + +#: src/cmp.c:118 src/diff.c:817 src/diff3.c:427 src/sdiff.c:168 +#, c-format +msgid "Try `%s --help' for more information." +msgstr "Pruebe `%s --help' para más información." + +#: src/cmp.c:137 +#, c-format +msgid "invalid --ignore-initial value `%s'" +msgstr "valor --ignore-initial inválido `%s'" + +#: src/cmp.c:146 +msgid "options -l and -s are incompatible" +msgstr "las opciones -l y -s son incompatibles" + +#: src/cmp.c:154 src/diff.c:826 src/diff3.c:435 src/sdiff.c:177 +#: src/sdiff.c:313 src/sdiff.c:320 src/sdiff.c:910 src/util.c:194 +#: src/util.c:286 src/util.c:293 +msgid "write failed" +msgstr "la escritura falló" + +#: src/cmp.c:156 src/diff.c:828 src/diff.c:1354 src/diff3.c:437 +#: src/sdiff.c:179 +msgid "standard output" +msgstr "salida estándar" + +# Muestra como caracteres los bytes que difieran +# queda más claro, creo yo em +# Yo no le veo diferencia (¿será por qué lo parí yo? ;) ipg +#: src/cmp.c:160 +msgid "-b --print-bytes Print differing bytes." +msgstr "-b --print-bytes Muestra los bytes que son distintos." + +#: src/cmp.c:161 +msgid "-i SKIP --ignore-initial=SKIP Skip the first SKIP bytes of input." +msgstr "" +"-i SALTO --ignore-initial=SALTO Salta los primeros SALTO bytes de\n" +" la entrada." + +#: src/cmp.c:162 +msgid "-i SKIP1:SKIP2 --ignore-initial=SKIP1:SKIP2" +msgstr "-i SALTO1:SALTO2 --ignore-initial=SALTO1:SALTO2" + +#: src/cmp.c:163 +msgid "" +" Skip the first SKIP1 bytes of FILE1 and the first SKIP2 bytes of FILE2." +msgstr "" +" Salta los primeros SALTO1 bytes del FICHERO1 y los primeros SALTO2 bytes\n" +" del FICHERO2." + +#: src/cmp.c:164 +msgid "-l --verbose Output byte numbers and values of all differing bytes." +msgstr "" +"-l --verbose Muestra los números de byte y valores de todos los bytes que\n" +" difieran." + +#: src/cmp.c:165 +msgid "-n LIMIT --bytes=LIMIT Compare at most LIMIT bytes." +msgstr "-n LÍMITE --bytes=LÍMITE Compara como máximo LÍMITE bytes." + +#: src/cmp.c:166 +msgid "-s --quiet --silent Output nothing; yield exit status only." +msgstr "-s --quiet --silent No muestra nada, sólo da un código de salida." + +#: src/cmp.c:167 src/diff.c:904 src/diff3.c:455 src/sdiff.c:204 +msgid "-v --version Output version info." +msgstr "-v --version Informa de la versión y finaliza." + +#: src/cmp.c:168 src/diff.c:905 src/diff3.c:456 src/sdiff.c:205 +msgid "--help Output this help." +msgstr "--help Muestra esta ayuda y finaliza." + +#: src/cmp.c:177 +#, c-format +msgid "Usage: %s [OPTION]... FILE1 [FILE2 [SKIP1 [SKIP2]]]\n" +msgstr "Modo de empleo: %s [OPCIÓN]... FICHERO1 [FICHERO2 [SALTO1 [SALTO2]]]\n" + +#: src/cmp.c:179 +msgid "Compare two files byte by byte." +msgstr "Compara dos ficheros byte por byte." + +#: src/cmp.c:183 +msgid "SKIP1 and SKIP2 are the number of bytes to skip in each file." +msgstr "SALTO1 y SALTO2 son el número de bytes que se saltan en cada fichero." + +#: src/cmp.c:184 +msgid "" +"SKIP values may be followed by the following multiplicative suffixes:\n" +"kB 1000, K 1024, MB 1,000,000, M 1,048,576,\n" +"GB 1,000,000,000, G 1,073,741,824, and so on for T, P, E, Z, Y." +msgstr "" +"Los valores SALTO pueden estar seguidos por los siguientes sufijos\n" +"multiplicadores:\n" +"kB 1.000, K 1.024, MB 1.000.000, M 1.048.576,\n" +"GB 1.000.000.000, G 1.073.741.824, y así en adelante para T, P, E, Z, Y." + +#: src/cmp.c:187 +msgid "If a FILE is `-' or missing, read standard input." +msgstr "Si un FICHERO es `-' o no se especifica, lee la entrada estándar." + +# Véase "A bug's life". +#: src/cmp.c:188 src/diff.c:911 src/diff3.c:475 src/sdiff.c:223 +msgid "Report bugs to ." +msgstr "Comunicar bichos a ." + +#: src/cmp.c:231 +#, c-format +msgid "invalid --bytes value `%s'" +msgstr "valor --bytes inválido `%s'" + +#: src/cmp.c:258 src/diff.c:734 src/diff3.c:333 src/sdiff.c:558 +#, c-format +msgid "missing operand after `%s'" +msgstr "falta un operando después de `%s'" + +#: src/cmp.c:270 src/diff.c:736 src/diff3.c:335 src/sdiff.c:560 +#, c-format +msgid "extra operand `%s'" +msgstr "operando extra `%s'" + +#: src/cmp.c:477 +#, c-format +msgid "%s %s differ: byte %s, line %s\n" +msgstr "%s %s son distintos: byte %s, línea %s\n" + +#: src/cmp.c:495 +#, c-format +msgid "%s %s differ: byte %s, line %s is %3o %s %3o %s\n" +msgstr "%s %s son distintos: el byte %s, en la línea %s es %3o %s %3o %s\n" + +#: src/cmp.c:543 +#, c-format +msgid "cmp: EOF on %s\n" +msgstr "cmp: fin de fichero encontrado en %s\n" + +#: src/diff.c:41 +msgid "" +"Written by Paul Eggert, Mike Haertel, David Hayes,\n" +"Richard Stallman, and Len Tower." +msgstr "" +"Escrito por Paul Eggert, Mike Haertel, David Hayes,\n" +"Richard Stallman, y Len Tower." + +#: src/diff.c:322 +#, c-format +msgid "invalid context length `%s'" +msgstr "longitud de contexto inválida `%s'" + +#: src/diff.c:405 +msgid "pagination not supported on this host" +msgstr "este sistema no admite paginación" + +# FIXME +# me sace a mi que esto no se parece ni un ápice a lo que +# se quiere decir en realidad. He mirado los docs y no consigo +# encontrarle un buen significado, así que pido ayuda ;) +# Ni p... idea em +# La opción -L LABEL puedes usarla, una o dos veces, pero no más. A eso +# se refiere. la opción de etiqueta de fichero se ha especificado demasiadas +# veces. O más cortito, dejarlo como está :) em+ +# Me parece que así está bien ... +#: src/diff.c:420 src/diff3.c:315 +msgid "too many file label options" +msgstr "demasiadas opciones de etiqueta de fichero" + +#: src/diff.c:498 +#, c-format +msgid "invalid width `%s'" +msgstr "ancho inválido `%s'" + +#: src/diff.c:502 +msgid "conflicting width options" +msgstr "opciones de ancho conflictivas" + +#: src/diff.c:526 +#, c-format +msgid "invalid horizon length `%s'" +msgstr "longitud del horizonte inválida `%s'" + +#: src/diff.c:629 +#, c-format +msgid "`-%ld' option is obsolete; use `-%c %ld'" +msgstr "la opción `-%ld' está obsoleta; utilice `-%c %ld'" + +#: src/diff.c:641 +#, c-format +msgid "`-%ld' option is obsolete; omit it" +msgstr "la opción `-%ld' está obsoleta; omítala" + +#: src/diff.c:709 +msgid "--from-file and --to-file both specified" +msgstr "se ha especificado tanto --from-file como --to-file" + +#: src/diff.c:832 +msgid "Compare files line by line." +msgstr "Compara ficheros línea por línea." + +#: src/diff.c:834 +msgid "-i --ignore-case Ignore case differences in file contents." +msgstr "" +"-i --ignore-case Descarta las diferencias entre mayúsculas y minúsculas\n" +" en el contenido de los ficheros." + +#: src/diff.c:835 +msgid "--ignore-file-name-case Ignore case when comparing file names." +msgstr "" +"--ignore-file-name-case Descarta las diferencias entre mayúsculas y\n" +" minúsculas al comparar los nombres de los ficheros." + +#: src/diff.c:836 +msgid "--no-ignore-file-name-case Consider case when comparing file names." +msgstr "" +"--no-ignore-file-name-case Considera distintas mayúsculas y minúsculas\n" +" cuando compara los nombres de los ficheros." + +#: src/diff.c:837 src/sdiff.c:186 +msgid "-E --ignore-tab-expansion Ignore changes due to tab expansion." +msgstr "" +"-E --ignore-tab-expansion Descarta cambios debidos a expansiones de tabs." + +#: src/diff.c:838 src/sdiff.c:187 +msgid "-b --ignore-space-change Ignore changes in the amount of white space." +msgstr "" +"-b --ignore-space-change Descarta las diferencias en la cantidad de " +"espacios\n" +" en blanco." + +#: src/diff.c:839 +msgid "-w --ignore-all-space Ignore all white space." +msgstr "-w --ignore-all-space Descarta los espacios en blanco." + +#: src/diff.c:840 src/sdiff.c:189 +msgid "-B --ignore-blank-lines Ignore changes whose lines are all blank." +msgstr "" +"-B --ignore-blank-lines Descarta los cambios cuyas líneas son todas vacías." + +#: src/diff.c:841 src/sdiff.c:190 +msgid "" +"-I RE --ignore-matching-lines=RE Ignore changes whose lines all match RE." +msgstr "" +"-I EXPR-REG --ignore-matching-lines=EXPR-REG Descarta las líneas que\n" +" coincidan con EXPR-REG." + +#: src/diff.c:842 src/sdiff.c:191 +msgid "--strip-trailing-cr Strip trailing carriage return on input." +msgstr "" +"--strip-trailing-cr Elimina los retornos de carro finales en la entrada." + +#: src/diff.c:844 +msgid "--binary Read and write data in binary mode." +msgstr "--binary Lee y escribe los datos en modo binario." + +#: src/diff.c:846 src/diff3.c:451 src/sdiff.c:192 +msgid "-a --text Treat all files as text." +msgstr "-a --text Trata todos los ficheros como de tipo texto." + +#: src/diff.c:848 +msgid "" +"-c -C NUM --context[=NUM] Output NUM (default 3) lines of copied " +"context.\n" +"-u -U NUM --unified[=NUM] Output NUM (default 3) lines of unified " +"context.\n" +" --label LABEL Use LABEL instead of file name.\n" +" -p --show-c-function Show which C function each change is in.\n" +" -F RE --show-function-line=RE Show the most recent line matching RE." +msgstr "" +"-c -C NÚM --context[=NÚM] Muestra NÚM (3 por omisión) líneas de contexto\n" +"-u -U NÚM --unified[=NÚM] Muestra NÚM (3 por omisión) líneas de contexto\n" +" unificado.\n" +" --label NOMBRE Usa NOMBRE en lugar del nombre de fichero.\n" +" -p --show-c-function Muestra en qué función C se encuentra cada cambio.\n" +" -F EXPR-REG --show-function-line=EXPR-REG Muestra la línea más reciente\n" +" que coincida con EXPR-REG." + +#: src/diff.c:853 +msgid "-q --brief Output only whether files differ." +msgstr "-q --brief Indica sólo si los ficheros son diferentes o no." + +#: src/diff.c:854 +msgid "-e --ed Output an ed script." +msgstr "-e --ed Produce un script ed." + +#: src/diff.c:855 +msgid "--normal Output a normal diff." +msgstr "--normal Produce un diff normal." + +#: src/diff.c:856 +msgid "-n --rcs Output an RCS format diff." +msgstr "-n --rcs Produce un diff en formato RCS." + +#: src/diff.c:857 +msgid "" +"-y --side-by-side Output in two columns.\n" +" -W NUM --width=NUM Output at most NUM (default 130) print columns.\n" +" --left-column Output only the left column of common lines.\n" +" --suppress-common-lines Do not output common lines." +msgstr "" +"-y --side-by-side Genera salida en dos columnas.\n" +" -W NÚM --width=NÚM Genera como máximo NÚM (130 por omisión) caracteres\n" +" por línea.\n" +" --left-column Muestra sólo la columna izquierda en las líneas comunes.\n" +" --suppress-common-lines No muestra las líneas comunes." + +#: src/diff.c:861 +msgid "-D NAME --ifdef=NAME Output merged file to show `#ifdef NAME' diffs." +msgstr "" +"-D NOMBRE --ifdef=NOMBRE Genera un fichero combinado que muestra las\n" +" diferencias con '#ifdef NOMBRE'" + +# Propongo similar -> parecida. Ver gettext. sv +# Hmmm ... prefiero similar. Antes estaba puesto `parecida' y la verdad, +# no quedaba tan bien. ipg +#: src/diff.c:862 +msgid "" +"--GTYPE-group-format=GFMT Similar, but format GTYPE input groups with GFMT." +msgstr "" +"--GTYPE-group-format=GFMT Similar, pero formatea los grupos de entrada " +"GTYPE\n" +" con GFMT." + +#: src/diff.c:863 +msgid "--line-format=LFMT Similar, but format all input lines with LFMT." +msgstr "" +"--line-format=LFMT Similar, pero formatea todas las líneas de entrada\n" +" con LFMT." + +# ídem. sv +#: src/diff.c:864 +msgid "" +"--LTYPE-line-format=LFMT Similar, but format LTYPE input lines with LFMT." +msgstr "" +"--LTYPE-line-format=LFMT Similar, pero formatea las líneas de entrada " +"LTYPE\n" +" con LFMT." + +#: src/diff.c:865 +msgid " LTYPE is `old', `new', or `unchanged'. GTYPE is LTYPE or `changed'." +msgstr "" +" LTYPE es `old' (antiguo), `new' (nuevo) o `unchanged' (sin cambios).\n" +" GTYPE es como LTYPE o `changed' (cambiado)." + +#: src/diff.c:866 +msgid "" +" GFMT may contain:\n" +" %< lines from FILE1\n" +" %> lines from FILE2\n" +" %= lines common to FILE1 and FILE2\n" +" %[-][WIDTH][.[PREC]]{doxX}LETTER printf-style spec for LETTER\n" +" LETTERs are as follows for new group, lower case for old group:\n" +" F first line number\n" +" L last line number\n" +" N number of lines = L-F+1\n" +" E F-1\n" +" M L+1" +msgstr "" +" GFMT puede contener:\n" +" %< líneas del FICHERO1\n" +" %> líneas del FICHERO2\n" +" %= líneas comunes a FICHERO1 y FICHERO2\n" +" %[-][ANCHO][.[PRECISIÓN]]{doxX}LETRA especificación printf para LETRA\n" +" Las LETRAs pueden ser como siguen para grupos nuevos (en minúsculas\n" +" para grupos antiguos):\n" +" F número de la primera línea\n" +" L número de la última línea\n" +" N número de líneas = L-F+1\n" +" E F-1\n" +" M L+1" + +#: src/diff.c:877 +msgid "" +" LFMT may contain:\n" +" %L contents of line\n" +" %l contents of line, excluding any trailing newline\n" +" %[-][WIDTH][.[PREC]]{doxX}n printf-style spec for input line number" +msgstr "" +" LFMT puede contener:\n" +" %L contenido de la línea\n" +" %l contenido de la línea, excluyendo caracteres de nueva línea finales\n" +" %[-][ANCHO][.[PRECISIÓN]]{doxX}n especificación en estilo printf para " +"el\n" +" número de línea de entrada" + +#: src/diff.c:881 +msgid "" +" Either GFMT or LFMT may contain:\n" +" %% %\n" +" %c'C' the single character C\n" +" %c'\\OOO' the character with octal code OOO" +msgstr "" +" Tanto GFMT como LFMT pueden contener:\n" +" %% %\n" +" %c'C' el carácter C\n" +" %c'\\OOO' el carácter con código octal OOO" + +# Sugerencia: la salida -> el resultado. +# (y paginarla -> paginarlo, en su caso). sv +# Yo personalmente prefiero `la salida'; si traducimos literalmente el +# inglés es eso, no cabe duda, pero poner `el resultado' no me cuadra. +# Lo digo porque tenemos una entrada y una salida (por un lado entran +# los cerdos a la máquina de hacer chorizos, y por otro salen). Creo +# que con esto me guiaré por lo que haya hecho el resto de la gente. +# Si sabes qué han hecho ... :). ipg +# Te mandaré el gettext, para que veas lo que vale un peine... sv +# X'D ... no soy tan malo ... ipg +# Medita de nuevo si no usas resultado em +#: src/diff.c:886 +msgid "-l --paginate Pass the output through `pr' to paginate it." +msgstr "-l --paginate Pasa la salida a través de `pr' para paginarla." + +# Aquí a lo mejor también: la salida -> el resultado. sv +#: src/diff.c:887 src/sdiff.c:198 +msgid "-t --expand-tabs Expand tabs to spaces in output." +msgstr "-t --expand-tabs Expande los tabuladores a espacios en la salida." + +#: src/diff.c:888 src/diff3.c:452 +msgid "-T --initial-tab Make tabs line up by prepending a tab." +msgstr "" +"-T --initial-tab Hace que los tabuladores se alineen anteponiendo uno." + +#: src/diff.c:890 +msgid "-r --recursive Recursively compare any subdirectories found." +msgstr "-r --recursive Compara recursivamente todos los subdirectorios." + +#: src/diff.c:891 +msgid "-N --new-file Treat absent files as empty." +msgstr "-N --new-file Trata los ficheros que no existan como vacíos." + +#: src/diff.c:892 +msgid "--unidirectional-new-file Treat absent first files as empty." +msgstr "" +"--unidirectional-new-file Trata los ficheros originales que no existan\n" +" como vacíos." + +#: src/diff.c:893 +msgid "-s --report-identical-files Report when two files are the same." +msgstr "" +"-s --report-identical-files Notifica cuándo dos ficheros son idénticos." + +#: src/diff.c:894 +msgid "-x PAT --exclude=PAT Exclude files that match PAT." +msgstr "-x PAT --exclude=PAT Excluye los ficheros que coincidan con PAT." + +#: src/diff.c:895 +msgid "" +"-X FILE --exclude-from=FILE Exclude files that match any pattern in FILE." +msgstr "" +"-X FICHERO --exclude-from=FICHERO Excluye los ficheros que coincidan con\n" +" alguna expresión regular de FICHERO." + +#: src/diff.c:896 +msgid "" +"-S FILE --starting-file=FILE Start with FILE when comparing directories." +msgstr "" +"-S FICHERO --starting-file=FICHERO Comienza por FICHERO cuando se " +"comparan\n" +" directorios." + +#: src/diff.c:897 +msgid "" +"--from-file=FILE1 Compare FILE1 to all operands. FILE1 can be a directory." +msgstr "" +"--from-file=FICHERO1 Compara FICHERO1 con todos los operandos.\n" +" FICHERO1 puede ser un directorio." + +#: src/diff.c:898 +msgid "" +"--to-file=FILE2 Compare all operands to FILE2. FILE2 can be a directory." +msgstr "" +"--to-file=FICHERO2 Compara todos los operandos con FICHERO2.\n" +" FICHERO2 puede ser un directorio." + +#: src/diff.c:900 +msgid "--horizon-lines=NUM Keep NUM lines of the common prefix and suffix." +msgstr "" +"--horizon-lines=NÚM Mantiene NÚM líneas de prefijos y sufijos comunes." + +#: src/diff.c:901 src/sdiff.c:200 +msgid "-d --minimal Try hard to find a smaller set of changes." +msgstr "-d --minimal Se esfuerza en encontrar un grupo de cambios menor." + +#: src/diff.c:902 +msgid "" +"--speed-large-files Assume large files and many scattered small changes." +msgstr "" +"--speed-large-files Supone que los ficheros son grandes y los cambios son\n" +" numerosos, pequeños y dispersos." + +#: src/diff.c:907 +msgid "" +"FILES are `FILE1 FILE2' or `DIR1 DIR2' or `DIR FILE...' or `FILE... DIR'." +msgstr "" +"FICHEROS puede ser `FICHERO1 FICHERO2' o `DIRECTORIO1 DIRECTORIO2'\n" +" o `DIRECTORIO FICHERO...' o `FICHERO... DIRECTORIO'." + +#: src/diff.c:908 +msgid "" +"If --from-file or --to-file is given, there are no restrictions on FILES." +msgstr "Si se da --from-file o --to-file, no hay restricciones en FICHEROS." + +#: src/diff.c:909 src/diff3.c:474 src/sdiff.c:222 +msgid "If a FILE is `-', read standard input." +msgstr "Si un FICHERO es `-', lee la entrada estándar." + +#: src/diff.c:920 +#, c-format +msgid "Usage: %s [OPTION]... FILES\n" +msgstr "Modo de empleo: %s [OPCIÓN]... FICHEROS\n" + +#: src/diff.c:949 +#, c-format +msgid "conflicting %s option value `%s'" +msgstr "la opción %s tiene el valor conflictivo `%s'" + +#: src/diff.c:962 +msgid "conflicting output style options" +msgstr "las especificaciones del estilo de salida son conflictivas" + +#: src/diff.c:976 +msgid "regular empty file" +msgstr "fichero regular vacío" + +#: src/diff.c:976 +msgid "regular file" +msgstr "fichero regular" + +#: src/diff.c:978 +msgid "directory" +msgstr "directorio" + +#: src/diff.c:981 +msgid "block special file" +msgstr "fichero especial de bloques" + +#: src/diff.c:984 +msgid "character special file" +msgstr "fichero especial de caracteres" + +#: src/diff.c:987 +msgid "fifo" +msgstr "`fifo'" + +#: src/diff.c:991 +msgid "socket" +msgstr "`socket'" + +#: src/diff.c:994 +msgid "message queue" +msgstr "cola de mensajes" + +#: src/diff.c:997 +msgid "semaphore" +msgstr "semáforo" + +#: src/diff.c:1000 +msgid "shared memory object" +msgstr "objeto de memoria compartido" + +# ¿Alguien sabe lo que es esto? +#: src/diff.c:1003 +msgid "typed memory object" +msgstr "objeto de memoria `typed'" + +# FIXME +# se podría decir algo más decente para "weird" ... pero ¿qué? +# ¿ no habitual ? em +# ¡Nchts! Prefiero extraño ... no habitual me suena muy difuso +# siempre podemos poner escachifollado ;) ipg +#: src/diff.c:1006 +msgid "weird file" +msgstr "fichero extraño" + +#: src/diff.c:1070 src/diff.c:1256 +#, c-format +msgid "Only in %s: %s\n" +msgstr "Sólo en %s: %s\n" + +#: src/diff.c:1193 +msgid "cannot compare `-' to a directory" +msgstr "no se puede comparar `-' con un directorio" + +#: src/diff.c:1220 +msgid "-D option not supported with directories" +msgstr "la opción -D no se puede usar con directorios" + +#: src/diff.c:1229 +#, c-format +msgid "Common subdirectories: %s and %s\n" +msgstr "Subdirectorios comunes: %s y %s\n" + +# Nota: El segundo y el cuarto `%s' son tipos de fichero. +# Por ejemplo, "texto C", "texto FORTRAN", etc. +#: src/diff.c:1266 +#, c-format +msgid "File %s is a %s while file %s is a %s\n" +msgstr "El fichero %s es un %s mientras que el %s es un %s\n" + +#: src/diff.c:1345 +#, c-format +msgid "Files %s and %s are identical\n" +msgstr "Los ficheros %s y %s con idénticos\n" + +#: src/diff3.c:26 +msgid "Written by Randy Smith." +msgstr "Escrito por Randy Smith." + +#: src/diff3.c:328 +msgid "incompatible options" +msgstr "opciones incompatibles" + +#: src/diff3.c:368 +msgid "`-' specified for more than one input file" +msgstr "se ha especificado `-' para más de un fichero de entrada" + +#: src/diff3.c:408 src/diff3.c:1232 src/diff3.c:1645 src/diff3.c:1700 +#: src/sdiff.c:305 src/sdiff.c:879 src/sdiff.c:890 +msgid "read failed" +msgstr "la lectura falló" + +# Sería ideal traducir OLDFILE y YOURFILE. sv +# Sí, eso pensé yo, pero no sé como ponerlo para que quede bien ... +# Esto no hay quien lo entienda, piénsalo 3 minutos más si te apetece :) em+ +# +# OLDFILE FICHERO-ANTIGUO +# YOURFILE TU-FICHERO +# MYFILE MI-FICHERO +# +# Pongo eso por ahora, pero espero una sugerencia mejor ;) +#: src/diff3.c:441 +msgid "-e --ed Output unmerged changes from OLDFILE to YOURFILE into MYFILE." +msgstr "" +"-e --ed Muestra los cambios sin mezclar entre FICHERO-ANTIGUO\n" +" y TU-FICHERO en MI-FICHERO." + +#: src/diff3.c:442 +msgid "-E --show-overlap Output unmerged changes, bracketing conflicts." +msgstr "" +"-E --show-overlap Muestra los cambios no mezclados, encerrando los\n" +" conflictos entre corchetes." + +#: src/diff3.c:443 +msgid "-A --show-all Output all changes, bracketing conflicts." +msgstr "" +"-A --show-all Muestra todos los cambios, encerrando los conflictos entre\n" +" corchetes." + +#: src/diff3.c:444 +msgid "-x --overlap-only Output overlapping changes." +msgstr "-x --overlap-only Muestra los cambios que se solapen." + +#: src/diff3.c:445 +msgid "-X Output overlapping changes, bracketing them." +msgstr "-X Muestra los cambios superpuestos (entre corchetes)." + +#: src/diff3.c:446 +msgid "-3 --easy-only Output unmerged nonoverlapping changes." +msgstr "-3 --easy-only Muestra los cambios no mezclados ni superpuestos." + +#: src/diff3.c:448 +msgid "-m --merge Output merged file instead of ed script (default -A)." +msgstr "" +"-m --merge Produce un fichero mezclado en lugar de un\n" +" script ed (por omisión -A)." + +#: src/diff3.c:449 +msgid "-L LABEL --label=LABEL Use LABEL instead of file name." +msgstr "-L NOMBRE --label=NOMBRE Usa NOMBRE en lugar del nombre de fichero." + +#: src/diff3.c:450 +msgid "-i Append `w' and `q' commands to ed scripts." +msgstr "-i Añade las órdenes `w' y `q' a los `scripts' ed." + +#: src/diff3.c:453 src/sdiff.c:202 +msgid "--diff-program=PROGRAM Use PROGRAM to compare files." +msgstr "--diff-program=PROGRAMA Utiliza PROGRAMA para comparar los ficheros." + +#: src/diff3.c:465 +#, c-format +msgid "Usage: %s [OPTION]... MYFILE OLDFILE YOURFILE\n" +msgstr "Modo de empleo: %s [OPCIÓN]... MI-FICHERO FICHERO-ANTIGUO TU-FICHERO\n" + +#: src/diff3.c:467 +msgid "Compare three files line by line." +msgstr "Compara tres ficheros línea por línea." + +#: src/diff3.c:673 +msgid "internal error: screwup in format of diff blocks" +msgstr "error interno: fallo en el formato de los bloques diff" + +#: src/diff3.c:971 +#, c-format +msgid "%s: diff failed: " +msgstr "%s: diff falló: " + +#: src/diff3.c:993 +msgid "internal error: invalid diff type in process_diff" +msgstr "error interno: tipo de diff inválido en process_diff" + +#: src/diff3.c:1018 +msgid "invalid diff format; invalid change separator" +msgstr "formato de diff inválido; separador de cambio inválido" + +#: src/diff3.c:1242 +msgid "invalid diff format; incomplete last line" +msgstr "formato de diff inválido; línea final incompleta" + +#: src/diff3.c:1265 src/sdiff.c:273 +#, c-format +msgid "subsidiary program `%s' not executable" +msgstr "el programa subsidiario `%s' no es ejecutable" + +#: src/diff3.c:1268 src/sdiff.c:276 src/util.c:298 +#, c-format +msgid "subsidiary program `%s' not found" +msgstr "no se encontró el programa subsidiario `%s'" + +#: src/diff3.c:1272 src/sdiff.c:268 src/util.c:301 +#, c-format +msgid "subsidiary program `%s' failed" +msgstr "el programa subsidiario `%s' falló" + +#: src/diff3.c:1294 +msgid "invalid diff format; incorrect leading line chars" +msgstr "" +"formato de diff inválido; caracteres incorrectos al comienzo de la línea" + +#: src/diff3.c:1370 +msgid "internal error: invalid diff type passed to output" +msgstr "error interno: tipo de diff inválido pasado a la salida" + +#: src/diff3.c:1647 src/diff3.c:1704 +msgid "input file shrank" +msgstr "el fichero de entrada ha menguado" + +#: src/dir.c:162 +#, c-format +msgid "cannot compare file names `%s' and `%s'" +msgstr "no se pueden comparar los nombres de fichero `%s' y `%s'" + +#: src/sdiff.c:35 +msgid "Written by Thomas Lord." +msgstr "Escrito por Thomas Lord." + +#: src/sdiff.c:183 +msgid "-o FILE --output=FILE Operate interactively, sending output to FILE." +msgstr "" +"-o FICHERO --output=FICHERO Opera interactivamente, enviando el resultado\n" +" al fichero FICHERO." + +#: src/sdiff.c:185 +msgid "-i --ignore-case Consider upper- and lower-case to be the same." +msgstr "-i --ignore-case Considera iguales mayúsculas y minúsculas." + +#: src/sdiff.c:188 +msgid "-W --ignore-all-space Ignore all white space." +msgstr "-W --ignore-all-space Descarta los espacios en blanco." + +#: src/sdiff.c:194 +msgid "-w NUM --width=NUM Output at most NUM (default 130) columns per line." +msgstr "" +"-w NÚM --width=NÚM Muestra como mucho NÚM caracteres por línea\n" +" (por omisión 130)." + +#: src/sdiff.c:195 +msgid "-l --left-column Output only the left column of common lines." +msgstr "" +"-l --left-column Muestra sólo en la columna izquierda las líneas comunes." + +#: src/sdiff.c:196 +msgid "-s --suppress-common-lines Do not output common lines." +msgstr "-s --suppress-common-lines No muestra las líneas comunes." + +#: src/sdiff.c:201 +msgid "" +"-H --speed-large-files Assume large files and many scattered small changes." +msgstr "" +"-H --speed-large-files Supone que los ficheros son grandes y los cambios " +"son\n" +" numerosos, pequeños y dispersos." + +#: src/sdiff.c:214 +#, c-format +msgid "Usage: %s [OPTION]... FILE1 FILE2\n" +msgstr "Modo de empleo: %s [OPCIÓN]... FICHERO1 FICHERO2\n" + +# Se admiten sugerencias. +#: src/sdiff.c:215 +msgid "Side-by-side merge of file differences." +msgstr "Combinación a dos columnas de las diferencias entre ficheros." + +#: src/sdiff.c:327 +msgid "cannot interactively merge standard input" +msgstr "no se puede mezclar interactivamente con la entrada estándar" + +#: src/sdiff.c:588 +msgid "both files to be compared are directories" +msgstr "los dos ficheros que hay que comparar son directorios" + +# FIXME +# ¿sugerencias para traducir mejor "verbosely"? +# ¿ Con verborrea ?, ;) +# era una broma, ¿ qué tal prolijamente ? em +# Huy ... mi famosa enciclopedia no dice en prolijo nada que se +# parezca a dar mucho la lata ... casi que lo dejamos, ¿no? ipg +# Sugerencia -> `verbosamente' -> con detalle. sv +# Hfff ... es que `con detalle' suena más a dar detalles de lo +# que es cada cosa, que no a que se está haciendo ipg +# Federico ha usado "prolijamente" en tar. Algo habrá que hacer, porque +# verbosamente no me suena a español. ¿Existe eso? sv +# A mi tampoco ... voy a ver si conecto con el diccionario de Anaya +# y lo miro ... a veeeeerrr ... ya ta: +# prolijo, -a: Del lat. prolixus = fluyente. +# 1. (adjetivo, -a). Largo, muy extenso. +# 2. (adjetivo, -a). Cuidadoso o esmerado con exceso. +# 3. (adjetivo, -a). Cargante, molesto. +# FAM: Prolijamente, prolijidad. +# SIN. 1. Amplio. 3. Impertinente, pesado. +# ANT. 1. Lacónico, conciso. 2. Descuidado. 3. Ameno. +# (Referencia: http://www.anaya.es/dict/Buscar) +# +# Pues está claro que es castellano (o español), pero yo no lo había +# oído hasta ahora, y me imagino que mucha gente estará igual. Yo +# voto por buscar algo más común (y creo que verbosamente vale, +# momento que lo bujco). ipg +# +# ¿ Lo encontraste ? , yo no lo he oído en mi vida, y me suena a verborrea, que +# es más bien despectivo. ¿ qué tal `con detalle' ? em+ +# Dejo verbosamente, que al menos el alma precavida lo asociará con que hay +# mucho verbo :) ipg +# +# Pero vamos a ver, ¿la palabra "verbosamente" existe? +# A mí me parece completamente un "palabro". sv +# ## ¿Por qué no la buscas en algún diccionario? sv +# ## Momeneto ... en la Espasa Calpe viene: +# ## verbosamente: adverbio, con verbosidad. +# ## En Anaya (http://www.anaya.es/dict): +# ## verbosidad +# ## I. De verbo. +# ## 1. (sustantivo femenino). Verborrea. +#: src/sdiff.c:853 +msgid "" +"ed:\tEdit then use both versions, each decorated with a header.\n" +"eb:\tEdit then use both versions.\n" +"el:\tEdit then use the left version.\n" +"er:\tEdit then use the right version.\n" +"e:\tEdit a new version.\n" +"l:\tUse the left version.\n" +"r:\tUse the right version.\n" +"s:\tSilently include common lines.\n" +"v:\tVerbosely include common lines.\n" +"q:\tQuit.\n" +msgstr "" +"ed: Edita y usa ambas versiones, cada una decorada con una cabecera.\n" +"eb: Edita y usa ambas versiones.\n" +"el: Edita y usa la versión izquierda.\n" +"er: Edita y usa la versión derecha.\n" +"e: Edita una nueva versión.\n" +"l: Usa la versión izquierda.\n" +"r: Usa la versión derecha.\n" +"s: Incluye líneas comunes silenciosamente.\n" +"v: Incluye líneas comunes verbosamente.\n" +"q: Salir.\n" + +# Creo que es suficientemente decente, pero se admiten sugerencias. +#~ msgid "--inhibit-hunk-merge Do not merge hunks." +#~ msgstr "--inhibit-hunk-merge No junta los trozos." + +#~ msgid "context length specified twice" +#~ msgstr "la longitud del contexto se ha especificado dos veces" + +#~ msgid "multiple `--from-file' options" +#~ msgstr "se han dado varias opciones `--from-file'" + +#~ msgid "multiple `--to-file' options" +#~ msgstr "se han dado varias opciones `--to-file'" + +#~ msgid "regular empty executable file" +#~ msgstr "fichero regular ejecutable vacío" + +#~ msgid "regular executable file" +#~ msgstr "fichero regular vacío" + +#~ msgid ": not found\n" +#~ msgstr ": no encontrado\n" + +#~ msgid "-D%s: conflicting #ifdef format" +#~ msgstr "-D%s: formato #ifdef conflictivo" + +#~ msgid "%s: conflicting line format" +#~ msgstr "%s: formato de línea conflictivo" + +#~ msgid "conflicting group format" +#~ msgstr "formato de grupo conflictivo" + +#~ msgid "--ignore-initial value must be a nonnegative integer" +#~ msgstr "el valor de --ignore-initial debe ser un entero no negativo" + +#~ msgid "column width must be a positive integer" +#~ msgstr "el ancho de la columna debe ser un entero positivo" + +#~ msgid "context length must be a nonnegative integer" +#~ msgstr "la longitud del contexto ha de ser un entero no negativo" + +#~ msgid "horizon must be a nonnegative integer" +#~ msgstr "el horizonte (horizon) ha de ser un entero no negativo" diff --git a/src/apps/bin/diffutils-2.8.1/po/fr.gmo b/src/apps/bin/diffutils-2.8.1/po/fr.gmo new file mode 100644 index 0000000000000000000000000000000000000000..eeeea833960395872ddc8ff71544854b9feb8628 GIT binary patch literal 25082 zcmb`P4RB@WS>I0}Use*FIJV`K3fhItKG$bvMK!DPaLZECyASDc~r^&Q1g>;62wzLhGb!1-uIk)u5=|kE_eLy|K4-n&*y!<-sgSfkH7M|KZ*S3i@)rz10>&V1uKOVPCh!a3TS4_J)Oh3I z-+*tAqBoC%ls6yu&)=MaC4PSbbfDTD0KW#(|MjmANFUJxzbVoCz)ym-yZ(QG?~bAy zt^*H(4}#RW;c1ZZZ}<{;0{klY-YB|}IYbYD7yR=ZKLs+*jT(=2z2#NlF>ncFoVWaN z_^tLwqv)m^!Mj1dXAL*~5C~mv`dyIm-+DcGKS&=M=dI8(It~77@S!NW`C5>EZaxpP zrkj5ZWSpDzo_^o`#n#;f9s<|dr$@jK^PBc>|8L+s z`0s5X_1-Z9&VnBT?*&EQ36}f{kon)j7@Ef|9T585^0OfIZc#sTYzcj79j*e7f|>{P zc3LlUy!G2b`n#1iME8ML0{#ZbxVQc_$a-&MZqX621-=vf49Gff`*$GoyzPJc-|u9s z=uWDr-q%5m#~j}EQSesqb0BMb*YAbje+IIDqi+D&ztIwS0K5d!ZuDnBcy;t&h4=pn zgtrgSM)eLn46>&OE`!L!fscXof8etq?GF472;C1n55nJL;*Xm_-bHT&r@_~P&{F(1 zwg58j*d}-_`28U39s4+_cK-q#cAiQ!A8PoHF{}X%-TYEj&1DR6UJr^NZUcWDyc7JFAbs8b=OFua2X&%V@E(x0+@W;~ zMeix_%OLIV_$CNnk83`+gW_xEGrkSNf8)=B?92GigUo;Yx5IOd16@m+FLWr0&m4Gv zz!>CR=|kW(;7`NHv*2g=P5%=wfUgAq7G&(hfYx{T29Wt3W~>O>A3g`t_u-F#(D$(R z8G0Z7D#$(_7JZrLZr>HX9i$g`;pkoHq`5SmVX5M(`59|f8B)K7ry-PGs6?*M-dgdS7B3Bo5+{}DU@ z{snj|OA@`9_w+sBo58c-2>298|I_G$SHNr2-^*{x5$OGGN7>?sc+UR3=lgihT<-cj z_!y$c7}~d^SHSmxKL@hUNBD767O#RQF2k!>OH}o_Ar{FYA zH9z+HeWC;7zV9mdIH+~4@JjRK`9oS4^M2^RfYe`jJ9s~s`sWM31fJu!*3J9V%t?Cw zwAR6Rr~eRyuNL0{vd%@#ll@r~-RXbvPe5q9#6G@)c`vco;-BTufb7$<#$_!JzXoKT z50}6LAbYF*d-%J+8SuaQ_bYD+_+F5GS=j=a$I6#L_IdT&!P`LAq;XaQf39ksj^Dop zGVbcvK=^v?2Jl@VbC+DNK_ki2S`9o1eh_3%Yof!A;8(#zp!kXQXWk03Z)YTjzYS`A zOH2)#Xq-oW5PUWG8{qGOUj}c9qO%_ZncvyZgRJT7^WgR1-++w&=oifF3OKlKoaMn6pX4$9{#uc3&J&^5ZB@(Id6 zqUfW2JWp|yGnDM}o#9IptWz#feui?Ka+31%ly^`LQhu4D4{~N7@!ESR-$sGP(qHzu zm48KNeSXBlz`x(mFL>5IkMQp&Dc?)^80FIx?fFM2#m^V`ahCEA!oyi`Dtuo64^tkb zz)SXdoPW2%_Y+{3Ql_j>PEqvv1rOre=$}#GOZy-%(T6A%|I_}xE_{CsTq-=**Y{FB zyW`nE;rFAIHOdhRIy<^bS*QFOr9qjee3bG76n$PtsZn07AACMX`5wxZ#`4r_JQf{N@Q}Q5PBe}It zJK!X^K}jjgl($nJro4eNO4+37BiX)|ay?~+^3N&RXPPgED4(HRLpe$rqkJFb?^Ax3 z(xKcy(dQ>9_fT%6yr1$$O7?kxFCVra&dsHr?WE;Sojkqf8ZEaVti@Mcxl!-LX?RyA?u?YI?}JM?iptMT~K(o(3@e|w36T%+8HtMpw-9Cae+ z$K5^Nz0OtBdeU~AtwznAoL`um@}1we>&3KxaV&dLZq#axy6ZH2GZ)t@_AS&qU%GJq z?EHzf2QQqTIKR9ycl^SIXDf}%kA7fbZf$LD#kpoHt#>v{?ambz*KQ_dw<)^VTN}!S zA8i-65*IVaMzz|wBy72Qa>;GA8r|l&;~7LL$L+-4G^!Q<#*@C09YF5pckr#Qdb&MWqs0$BjFk{`hO=y@@W}H1q ztJP!+L1{EQDZE@NxzVz(o7OMJ)wD9?O{lv*S{`kWxk@8x*T*_87HhIJcy+5=V|#r! zd1b0HskpY0Zgm@7Tft1$`MNr4B~N$L7IfOPk5cJd7_fAf)xYHFh1z@0aMlukkCF7}*NplI=uEm{WrY7BLT1%^OYus(Xul`NOfX2es zr0q=Osl^1H8DEyfC|O@7i9`DeOrMKG=t>RL)ka#6TUVT0N#cre?WI=QNn9oF#4fG7 z@VbVQRc$eAso835wc^^b<&~vVE3+trGiask2dWaK*_1ZhgbCYfCB0kHFB_m#>NNbX zjRsm=S~1;BlS;ATF)u~#c<9Riq;FUdj!If6;x>}%pO;~$4LXPU*`iLPbw#6YC)K8N zOWlqXL1&wN*AsiwXr<3I>PEo!vBfhi;h`jHI(-vSO^zkKLH##d$!2=lCg1LE@>QLr zTlGc@`m?N3J+37sQ_gPQ9(zrFX*;P0YDl9Q1yt3D^3rxs>+P$u9eY=A>@|zyje0w+ zWENxJd9aEa+94xU?7{BYSmWU?zGZoDO2#Jatl?eM}3`Nj$5rXrqfo^>9*<)b!Cg!JOa}gXH2`CGl~q6 z+3D%P8PjaTFwW@KQ_m^r!?;?)3V42WYpoJ#njhjtvdVl@1YS`XxTqq5ny)oNnB2HT8aHHZOh`=bLu~u@AD8b8rW(ybj=#r^qHUc zBvDh?o3O|^b1pM2)!9b8{WeHfHBD7X#~7jLE7oK?$>omAbOH0rRe)YliN)vQXtOSP zM$8u#_)`7Kio~@>7k$D`4zAStu@gecdyj5e$A#b#N(tCwMl3VpaWhYhY_9d?&UqQG z3puf5yAC4QaktuWM-KJvSh>-}xO#`2>5r7Ubap1|3{@!G`%*g#)%(4P6vn|BL%#?I zh8x83vm#}*nR3vJy$QpLwiDaFu&-(P=!;|i@sMLv|45XXdEdv>jGAEO^VJu-3U8wlRut|_Hao~f zwOhlqgzYfPEGpyT4%9I(3HpOmKa^e#$vO-nHIoA*&P#sw>ole#bFrP)JF zgk_gXtulUDpBYzC1m(xx`=xhRVjyUSJ;Z4Pm zGMDW{0}l~x;#q75L)wJR3987*($AbcB2`+uHT}msRZGS=vJ!gC}U~i_5Odbki)^_lQDO<+9tZ{=GA9R<8 z*mkSGJZmf(Ecr3}xu*^1EsgNOwab+RD{7eUwd^l@Y|MGi$UZaZ7-RV_s2HaH8? z5y3$j=x9DX#t8`_@-iXawo^c%|B~o&Z2nYUt?Jk<-}a}R28?xef&)k0P9F^oGGM zro;bbjC)G71|URFSio>_bxjVIvLVtWmh+-P8_3jD+=m+qq}A5^j^M{w(8wd zx06=e_w#L{(b~FiA~KI9*lt}Y;8gj*JXRQ0+-Z};I+Vv;`4Cako*8-S z0XH={IXUhg0;lgBcc*zUt|#{Nw0_)qbo||Sy=Q#nRPmL)KBd=p9T~st&Z+UEYAsH0 zH^hRv99SE7%j0ft+&wn#&iNTnSrzX(iFq|me-R*Zn@u+(qWCp5HQ!o-MeCya^zKO5 zprVgRy>1y_u^p``oEGAMGRaAZOf4?Cv$HEJvx{rzkRlHC%z#6a3@~P)mJ%8=0#@To z6C>vuUD)Fa+g?c}Vgx`Ha^tuX0&x8?MzHLd6?KQlQOg5#rxwq+Q%M~sr0SNt8|;Bw zNOAYu$;8M>hy*{%OYvb<1s~!K45#|RX@imIjEH+1rKhe<$w;0m?)cL3x%tIY6VY0B zA0csUBXQe2y5iPRIX=WVX1lR-po!>A{i%B65-Rx$qEK^5tJP@n&`zHWa8Ro8@q>jY zhwRCr!jtoQa{h_JlgFQp&a?@TnPxw~w7fRIw0HqUYKkZ*-I0B(oR_wpcIU+w+cIL4?JJnZq$g>Ei_uVfrUA& zHCh|*ZxByBg&M2EN+u_M_|tLup``vyiV&=qM!6Qs0$ea(W24=uCY|IS*I+D{cJ`~% zg`?=9?9>Sr$NG`&K8Fy1P*hVqsi?FVF50LzQ1liChl~9q1;+Kwv=qt*5tH#|;_!39 z=Zy$(%AE}FnSh;C3X$-gHF6%uXzB7qN=09?dIK)K^QvIbkVUy^8Ju*v)|_#3ODCnE zq^dbcS_D%n5@`vyM5a{3h=mH?oyBD8qSRMy5Au50Eh><$84ciIHI zRR|6+!fjfv!p)6NEFn@Ea}^MyP$ou_jeVO_p}MnzG=-fj!x+?Q4Xe{ix3)X3Un$ff zz|OU9{+R9+GTGfJeP%Cq^wgfYW)KS!C5-Mh+zgz}79-d4xLoH- zQ@k!yA-nOU9=?PYO&lBc3IpQ#VpkI)Ey*Q9j&vQa%rI9rqDfPm27VSCJMCh&z;^vt z;Y1W-3;wL`36RwZu{QR*zJ*Adpk(iCI6wM5Ohm+zvglv5=abk~vxUn=L<%01aG0kp zq3Tb2M+?6es>lgzC#Zs$TdutSZGWFNbe3LjY~r<@?iprV#>73{O}a@GoY$Na;!QTz zFF6RLBj_Q0!3kS>sK_8u2#(0c4qgrLz+b)*U5GN5!COP~lKowEl>2eIX7O4udt@rH zjo;T~p-I$+QZPqYO=IKz&@yVHLldAQr&))~O`>A@={@kkMjVegD5kpb%w{6Wg!}Sn zuh&{oa+x3m$8Z$(e$^}n5y{=O+c49%K0cZ$HHpN|*f}AX}t_?^DO+fz@U(-DR#%-AZF4C6$Mi0(WmK ze7}EwWohEfX)->TL3QHz?0qz^Z*^g<(pnPNX52{~VYc19D4I&Qe7^^CwMS0RpPuV4 zZfat3gb=43#?l&un!(+>+&SE=#%cW?#erLdVvo(QE|rcRefQm@q~w(~RgOxfIRsHs zHRFzQw@rqEPe$tcT$N_h<$x!9sWH-)(q~3TeLm7?`6`j;=SX)USq6=2$E+9NbN{&7 zO-r?J)Rd4iS{_qY(sP5=D)ebjl#t|elQ=nAYLd-?v3CqiVp6lw#Y>G_h#*lD?0prb z1XQ}XbjKf@pIcGd%_x~lFJ4ngNu#7L?N!qsj~R)}Ozl-Zf+JEEMzcPYZL=`Da%%3( z%CN+y6%HMmYP;Ff&ApC2TsJ#bt;D94Ii}$_s6dUvh|i-Jr5XI`lu5Yi7^;DbUV^Ng znkwucl=cZz2M@XDtd~I3HXBx9#Abt2DI!=H%m%W$nEzV*{%*V6W%rB*U|pTZU7swK zjJv#MTK6^8DO*q-i|gf-E-c+5$V^QB# ziHo~>qqad)_2f5sFwJVNm}C`FtSqf#H{)<|xX&kByJzxln0hwjQ3BWdeD-O~odSEr z)kwYs2r#-2vk;kvW&>;@#x4*`bO==3XHJzd@oP_}uL{qwt-Xa$>+&Ew4b@7EW=T(2M-) zE+N&S){u=9L$1!AS)20wfu@%HCuF}B#8^U>Rh-_Z;&e1>aV--dDf%80>k$61E}hR1 zgKT_L-VtEt0H&;WhE-yooneV$J@k25>$~b5r{_Yt7-CsS6tmW-`yLr&oT(XbMuNMm zhIhAi)wqhTWP;B@eG33UgScDn_A|(Kc1Z(O*PMMG*`MuE!?LwFNU~!%BR(B%cU7fd zeM_TTlGw{?vCot(!Mh48X*QzW>0@mXO zR@ym1D4<#oM5n73kEt(t8pvNWts_?|Z5stFkB#Iu(wj^ZhJ&@2actc-JE*(PLJXN< z`!Qr$yAk{`nN^;0&vO_eJcfTjX*7GdJE$pLY3%xB zeIsx<9HtAAkyeibUZ(*WG<%;LH_$XDu?>}ArclwqTCb+ssyvu3M=PwhyeGGqS+e*_ z%)-q?w|XSViSEh|QnDQ1`+fl3g;STj-D2XLf6VYPt{2BYQl7p3)dLHEz^rJ04T2># z)tqezz3LD(m<+im(-kNg3~|n3Mc&#wyUs6Olj681bN=$CoMql|6sagJR;nyh#$wxG z0IoIE$_NIeNz4K1+Up%aj0ap)7*ALl_!9&m7VH zcpLk1MgTflYR0EM^4RM*yYab1nloq=q|@S@Vw z4U)GYg9c-mncSh4_*q~w<6jmN1|63FNRSgR+-t_bMqbIn`J5)-k9KpFF;sg0rPO89 z+s8fgBC|b|&|2~?J~|Gbk|w3GEkANku9V&xP&$JO1krgkTM}g4kuDjiXitL=mG45% zL9)Crg_;8_R!+K?QLYNPpgJ=Zkkhu1beVBSu4D5Vc-<`4P(;X5==aXU%!nu^D~gpL zdVrj}lQ0LU8_sbetR%`#S$RIDSg4qfNj4^*ynXH+vF)~c=Ist1@w%}`re^0*o{g!7 zrBXi|bI-22{jRKbZ)cC{$44B!$g1c5XQ%*s+M3|%64abr%a$Qi(>{ot^45##n%<=& zchux<6OH224s4fY5um#?LSGMAk0*mNEAmk2eK3#H>$GCE{vz^kIjJ#GCXN=P!QVla zmGr65b}E9Ix_hzCbdafz4cCT)siN&P4@LF28+9R93)ciMD|h=P^L-k~dXdoPb4Ry& z^$TnnwERoDB1Ev|a*e$Kh zpPFBsUGSla{PF3f6Z0qMzfvHVZmXo*vxcl`b!la7er{Nb>PF0MkR7M;aGae6a3n*> zZCIh~WFu=38D`sQvgaxK7_f-L)8HIt!TlJq^om!B{*BO?*ns2n%Q#$t$@4_2` z2wTKW?BX#G5f=|tJ2F{YNtIi5lgu{hifMwKS8P@5&*FCkGh;Gelh)2u)_fMyo<3Fw z@yCKDgphh(h>zvEdbqAEX1Er*&Uq>Gn)_~qjOM@|xq~TpYj~Q8BjvT2@mdg}j5kFr zyLQZ7%>Ge|v{<#a9M?Ja-0lW_ChQ!<4hIv4M;BVCHd}R&tvEDAij~`%J0#d@uJf}~ zJtkm_!!Z}59Mdg1R+gKD1}T`ZA8lgJxdAMu$9k8Vy=y1LvDJ{jjW&{JyxuoN3TC1M zb|=i{OF<3#BwFi88`tLaQX24dT0Q-_6OQKayjj?f#9e}HAwDn;ABFR3e~OR{vBWR4 zBcZVvo;HKaD1@H(N~!Iy*srr9Zy{goj(ddA*B%L!%vB+?Y^p}K;PV!xWp|owkF1lR zIr{FJ&R-}2xn7y}A)0OS1Op7_-4=#44_IOnXSe+FhpUaPlnaLHp2@hG0^HN_BPmyE zB~QxL4;{~g%bN@OVx~6yDa_l&gQVyd9gm^8xrIfr;KFHcr(dboB;T4L^M7FDGj(6w zcNCjsXAhGHtO`A~#3e%#d9_A9{fT88fPK>e)BH-)k@8B(bKXrNwcmqG*$v-*gi^PI z*}m$~fAVSd1%XZ9t+d0P$`H+Mz5jnP^8&n?3rh%e+NA&-I4W^Rfn;0B9}|v5YOqTQ zP_t0KFDukPo~cD?k9;K0RXXL{w|*_I^AuAKk<#Fm4XHOM<^FC%)$CgoRO70j|J6)Y zD#Oi`?lhLnZgN(>LKYkU6dz=jlo#i#g;sh%U6PC!`o4^oPN*FX#<$plj^QL57NO^P z4Nt#(d3x2S^8nojHfFHiz<#WzFjyfYxy#S&52Q6L83kM?60A?Fu0D2!q+_W#j9eiv z*`z`HlhI8Xo!O5(7HzAz>Pns{xJMSc(f@D&e~}KeNM4?}tWJ>6(CM&#JiYep07A#O z;&z3_AN}dCdv$rLWrZvnqS5Sy9X(|BvtYTVlV8Al@((n~-+4m#TMM&syZY|CidmGpB+OE?{TowX&+p7y=FIU_aMTu z-_xKS3C#7MWeyt#LVg??#-8LMmWgOFzX9^|?pff0i49pAoRK>g=4NJ@)h8`Yt4C<5 ztE*Pe4?{bc8}gKZU8Ct^(9C>=KYqqeVo_zy;LDgD=1{=5=iMGj*HOWxl%K2+ujOj^ z+gy$_YAzK4pC}HH-!2sLuPp)-jy`|)3D}4_c__GJ5Qjk&`cm$|&P;5(38t<;3t;Ww zuV#b$8dNdIkDb2d^Dt0$lWaQ@PR>EeL?!5kb z(+=O1xNYoZuz%vVjq$DLZhwUIulMyg%WL{(2#Os#1{em*Ld0!(+O+@>}YKG7lY!b4#3Bq`586?Mq-SeevRpuUK zmxodIz!F~glR>4Tw$0xfbaoKp%%}418FEuNk)h8KU7su#PNaSs<}WjFziy-h&p=H% z0Vo&~#B4rUPK81sNWgP>|KaGZgHN7e6EY@oH!yyMfY*L~W&hV?avW8)u^) zBo+LSIVMU}@yb0+K!*TJ4euthpJr-8O37$D3W<`YWGx+B+SW%g2HIsct-bzNBnb0B zg{VL%rHS`Q6W3ZHk!^@Hh%(p46{{pE1(#zxZjvq5k^N(f(VO*B=Np~G(!@h^S?t0+ z$j;6zVSISi!g(-@=UD3aOQ>DJtJXB~MQC!C+a>~rg^Z9(-jDAN8;zXuJt~9&NG(SX zR`vH)BGaz3GqDI#p*hErXfJn5ndbX9KxUa?8|NkFggrvqIfqI8-3>>JERO*$X*R1p zb*Mazj7_g1Vw(;4HRFh4!m$Kvmk8n%4==hV1|xfRnF%`OssLzzbVHtVYc zYho$xa?&gc>5q#Qk}NT*{4wLcJ+*cFNe;6XVKNB;&9~2%5%m{2mgT-@?{Yc>jj;21 zNNdSF?+9l?w-o#}m`{e6R`J<2%HXyW5(k%N>jiDqsI+IsjU>av+(gZMhzj=sZEb%o z0dI!rs?T=K-E;9dnvC=y=_D@|UP5-wXmB*r`HCDB#puiSZ7#s#Xbg^kuwgbQer z-M!|`GU=lpQE09ty9MWxsw7Wc66KQ@VF%xFhLwTV8P*2~Ev0_n2Dux?U*2)Z zAQWxshd8A^bcrmPX~ypH_e!R?0)22B{lc?VqXc?6nKsgApF literal 0 HcmV?d00001 diff --git a/src/apps/bin/diffutils-2.8.1/po/fr.po b/src/apps/bin/diffutils-2.8.1/po/fr.po new file mode 100644 index 0000000000..43cd5df4ca --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/po/fr.po @@ -0,0 +1,1033 @@ +# Messages français pour GNU concernant diffutils. +# Copyright (C) 1996 Free Software Foundation, Inc. +# Michel Robitaille , 1996. +# +msgid "" +msgstr "" +"Project-Id-Version: GNU diffutils 2.7.10\n" +"POT-Creation-Date: 2002-04-05 14:10-0800\n" +"PO-Revision-Date: 2002-03-17 20: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" + +#: lib/c-stack.c:188 +msgid "program error" +msgstr "erreur du programme" + +#: lib/c-stack.c:189 +msgid "stack overflow" +msgstr "débordement de pile" + +#: lib/error.c:128 lib/error.c:156 +msgid "Unknown system error" +msgstr "Erreur système inconnue" + +#: lib/freesoft.c:27 +msgid "" +"This program comes with NO WARRANTY, to the extent permitted by law.\n" +"You may redistribute copies of this program\n" +"under the terms of the GNU General Public License.\n" +"For more information about these matters, see the file named COPYING." +msgstr "" +"Ce programme est fourni sans AUCUNE GARANTIE, tel que permis par la loi.\n" +"Vous pouvez le redistribuer selon les termes de « GNU General Public License " +"»,\n" +"lire le texte du fichier COPYING pour plus de détails." + +#: lib/getopt.c:693 +#, c-format +msgid "%s: option `%s' is ambiguous\n" +msgstr "%s: l'option « %s » est ambiguë.\n" + +#: lib/getopt.c:718 +#, c-format +msgid "%s: option `--%s' doesn't allow an argument\n" +msgstr "%s: l'option « --%s » ne permet aucun argument.\n" + +#: lib/getopt.c:723 +#, c-format +msgid "%s: option `%c%s' doesn't allow an argument\n" +msgstr "%s: l'option « %c%s » ne permet aucun argument.\n" + +#: lib/getopt.c:741 lib/getopt.c:914 +#, c-format +msgid "%s: option `%s' requires an argument\n" +msgstr "%s: l'option « %s » requiert un argument.\n" + +#: lib/getopt.c:770 +#, c-format +msgid "%s: unrecognized option `--%s'\n" +msgstr "%s: l'option « --%s » n'est pas reconnue.\n" + +#: lib/getopt.c:774 +#, c-format +msgid "%s: unrecognized option `%c%s'\n" +msgstr "%s: l'option « %c%s » n'est pas reconnue.\n" + +#: lib/getopt.c:800 +#, c-format +msgid "%s: illegal option -- %c\n" +msgstr "%s: l'option -- %c est illégale.\n" + +#: lib/getopt.c:803 +#, c-format +msgid "%s: invalid option -- %c\n" +msgstr "%s: l'option -- %c est invalide.\n" + +#: lib/getopt.c:833 lib/getopt.c:963 +#, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "%s: l'option -- %c requiert un argument.\n" + +#: lib/getopt.c:880 +#, c-format +msgid "%s: option `-W %s' is ambiguous\n" +msgstr "%s: l'option « -W %s » est ambiguë.\n" + +#: lib/getopt.c:898 +#, c-format +msgid "%s: option `-W %s' doesn't allow an argument\n" +msgstr "%s: l'option « -W %s » ne permet aucun argument.\n" + +#: lib/regex.c:1367 +msgid "Success" +msgstr "Succès" + +#: lib/regex.c:1370 +msgid "No match" +msgstr "Pas de concordance." + +#: lib/regex.c:1373 +msgid "Invalid regular expression" +msgstr "L'expression régulière est invalide." + +#: lib/regex.c:1376 +msgid "Invalid collation character" +msgstr "Le caractère de regroupement est invalide." + +#: lib/regex.c:1379 +msgid "Invalid character class name" +msgstr "Le nom d'un ensemble de caractères est invalide." + +#: lib/regex.c:1382 +msgid "Trailing backslash" +msgstr "Barre oblique inverse à la fin." + +#: lib/regex.c:1385 +msgid "Invalid back reference" +msgstr "La référence arrière est invalide." + +#: lib/regex.c:1388 +msgid "Unmatched [ or [^" +msgstr "[ or [^ non repéré." + +#: lib/regex.c:1391 +msgid "Unmatched ( or \\(" +msgstr " ( ou \\( non repéré." + +#: lib/regex.c:1394 +msgid "Unmatched \\{" +msgstr "\\{ non repéré." + +#: lib/regex.c:1397 +msgid "Invalid content of \\{\\}" +msgstr "Le contenu de \\{\\} est invalide." + +#: lib/regex.c:1400 +msgid "Invalid range end" +msgstr "La fin d'intervalle est invalide." + +#: lib/regex.c:1403 +msgid "Memory exhausted" +msgstr "Mémoire épuisée." + +#: lib/regex.c:1406 +msgid "Invalid preceding regular expression" +msgstr "L'expression régulière précédente est invalide." + +#: lib/regex.c:1409 +msgid "Premature end of regular expression" +msgstr "Fin prématurée de l'expression régulière." + +#: lib/regex.c:1412 +msgid "Regular expression too big" +msgstr "Expression régulière trop grande." + +#: lib/regex.c:1415 +msgid "Unmatched ) or \\)" +msgstr ") or \\) non repéré." + +#: lib/regex.c:8034 +msgid "No previous regular expression" +msgstr "N'est pas précédé d'une expression régulière." + +#: lib/xmalloc.c:63 +msgid "memory exhausted" +msgstr "mémoire épuisée" + +#: src/analyze.c:809 src/diff.c:1283 +#, c-format +msgid "Files %s and %s differ\n" +msgstr "Les fichiers %s et %s sont différents.\n" + +#: src/analyze.c:812 +#, c-format +msgid "Binary files %s and %s differ\n" +msgstr "Les fichiers binaires %s et %s sont différents.\n" + +#: src/analyze.c:1058 src/diff3.c:1413 src/util.c:526 +msgid "No newline at end of file" +msgstr "Pas de fin de ligne à la fin du fichier." + +#: src/cmp.c:43 +msgid "Written by Torbjorn Granlund and David MacKenzie." +msgstr "Écrit par Torbjorn Granlund et David MacKenzie." + +#: src/cmp.c:118 src/diff.c:817 src/diff3.c:427 src/sdiff.c:168 +#, c-format +msgid "Try `%s --help' for more information." +msgstr "Pour en savoir davantage, faites: « %s --help »." + +#: src/cmp.c:137 +#, c-format +msgid "invalid --ignore-initial value `%s'" +msgstr "valeur invalide --ignore-initial « %s »" + +#: src/cmp.c:146 +msgid "options -l and -s are incompatible" +msgstr "options -l et -s sont incompatibles" + +#: src/cmp.c:154 src/diff.c:826 src/diff3.c:435 src/sdiff.c:177 +#: src/sdiff.c:313 src/sdiff.c:320 src/sdiff.c:910 src/util.c:194 +#: src/util.c:286 src/util.c:293 +msgid "write failed" +msgstr "échec d'écriture" + +#: src/cmp.c:156 src/diff.c:828 src/diff.c:1354 src/diff3.c:437 +#: src/sdiff.c:179 +msgid "standard output" +msgstr "sortie standard" + +#: src/cmp.c:160 +msgid "-b --print-bytes Print differing bytes." +msgstr "-b --print-bytes afficher les octets qui diffèrent" + +#: src/cmp.c:161 +msgid "-i SKIP --ignore-initial=SKIP Skip the first SKIP bytes of input." +msgstr "-i N --ignore-initial=N escamoter les N premiers octets à l'entrée" + +#: src/cmp.c:162 +msgid "-i SKIP1:SKIP2 --ignore-initial=SKIP1:SKIP2" +msgstr "-i SAUT1:SAUT2 --ignore-initial=SAUT1:SAUT2" + +#: src/cmp.c:163 +msgid "" +" Skip the first SKIP1 bytes of FILE1 and the first SKIP2 bytes of FILE2." +msgstr "" +" escamoter les SAUT1 premiers octets du FICHIER1 et les SAUT2 premiers " +"octets du FICHIER2" + +#: src/cmp.c:164 +msgid "-l --verbose Output byte numbers and values of all differing bytes." +msgstr "" +"-l --verbose afficher les numéros d'octets et les valeurs de tous les " +"octets qui diffèrent" + +#: src/cmp.c:165 +msgid "-n LIMIT --bytes=LIMIT Compare at most LIMIT bytes." +msgstr "-n LIMITE --bytes=LIMITE comparer un nombre d'octets selon la LIMITE." + +#: src/cmp.c:166 +msgid "-s --quiet --silent Output nothing; yield exit status only." +msgstr "" +"-s --quiet --silent ne rien afficher, produire seulement un constat de " +"fin d'exécution" + +#: src/cmp.c:167 src/diff.c:904 src/diff3.c:455 src/sdiff.c:204 +msgid "-v --version Output version info." +msgstr "-v --version afficher le nom et la version du logiciel" + +#: src/cmp.c:168 src/diff.c:905 src/diff3.c:456 src/sdiff.c:205 +msgid "--help Output this help." +msgstr "--help afficher l'aide-mémoire" + +#: src/cmp.c:177 +#, c-format +msgid "Usage: %s [OPTION]... FILE1 [FILE2 [SKIP1 [SKIP2]]]\n" +msgstr "Usage: %s [OPTION]... FICHIER1 [FICHIER2 [SAUT1 [SAUT2]]]\n" + +#: src/cmp.c:179 +msgid "Compare two files byte by byte." +msgstr "Comparer deux fichiers octet par octet" + +#: src/cmp.c:183 +msgid "SKIP1 and SKIP2 are the number of bytes to skip in each file." +msgstr "" +"SAUT1 et SAUT2 correspondent au nombre d'octets à escamoter dans chaque " +"fichier" + +#: src/cmp.c:184 +msgid "" +"SKIP values may be followed by the following multiplicative suffixes:\n" +"kB 1000, K 1024, MB 1,000,000, M 1,048,576,\n" +"GB 1,000,000,000, G 1,073,741,824, and so on for T, P, E, Z, Y." +msgstr "" +"valeurs de SAUT peuvent être suivies par un des suffixes multiplicateurs " +"suivants:\n" +"kB 1000, K 1024, MB 1,000,000, M 1,048,576,\n" +"GB 1,000,000,000, G 1,073,741,824, et ainsi de suite pour T, P, E, Z, Y." + +#: src/cmp.c:187 +msgid "If a FILE is `-' or missing, read standard input." +msgstr "Si FICHIER spécifié est « - » ou manquant, lire de l'entrée standard" + +#: src/cmp.c:188 src/diff.c:911 src/diff3.c:475 src/sdiff.c:223 +msgid "Report bugs to ." +msgstr "Rapporter toutes anomalies à " + +#: src/cmp.c:231 +#, c-format +msgid "invalid --bytes value `%s'" +msgstr "valeur invalide --bytes « %s »" + +#: src/cmp.c:258 src/diff.c:734 src/diff3.c:333 src/sdiff.c:558 +#, c-format +msgid "missing operand after `%s'" +msgstr "opérande manquante après « %s »" + +#: src/cmp.c:270 src/diff.c:736 src/diff3.c:335 src/sdiff.c:560 +#, c-format +msgid "extra operand `%s'" +msgstr "opérande supplémentaire « %s »" + +#: src/cmp.c:477 +#, c-format +msgid "%s %s differ: byte %s, line %s\n" +msgstr "%s %s sont différents: octet %s, ligne %s\n" + +#: src/cmp.c:495 +#, c-format +msgid "%s %s differ: byte %s, line %s is %3o %s %3o %s\n" +msgstr "%s %s diffèrent: octet %s, ligne %s est %3o %s %3o %s\n" + +#: src/cmp.c:543 +#, c-format +msgid "cmp: EOF on %s\n" +msgstr "cmp: Fin-de-fichier (EOF) sur %s\n" + +#: src/diff.c:41 +msgid "" +"Written by Paul Eggert, Mike Haertel, David Hayes,\n" +"Richard Stallman, and Len Tower." +msgstr "" +"Écrit par Paul Eggert, Mike Haertel, David Hayes,\n" +"Richard Stallman et Len Tower." + +#: src/diff.c:322 +#, c-format +msgid "invalid context length `%s'" +msgstr "longueur du contexte invalide « %s »" + +#: src/diff.c:405 +msgid "pagination not supported on this host" +msgstr "La pagination 'est pas supporté sur cette machine hôte." + +#: src/diff.c:420 src/diff3.c:315 +msgid "too many file label options" +msgstr "Trop d'options présentes pour nommer les fichiers." + +#: src/diff.c:498 +#, c-format +msgid "invalid width `%s'" +msgstr "largeur invalide « %s »" + +#: src/diff.c:502 +msgid "conflicting width options" +msgstr "option de largeur conflictuelle" + +#: src/diff.c:526 +#, c-format +msgid "invalid horizon length `%s'" +msgstr "longueur d'horizon invalide « %s »" + +#: src/diff.c:629 +#, c-format +msgid "`-%ld' option is obsolete; use `-%c %ld'" +msgstr "l'option « -%ld » est obsolète; utilise « -%c %ld »" + +#: src/diff.c:641 +#, c-format +msgid "`-%ld' option is obsolete; omit it" +msgstr "l'option « -%ld » est obsolète; l'omettre" + +#: src/diff.c:709 +msgid "--from-file and --to-file both specified" +msgstr "--from-file et --to-file ont été spécifiés ensemble" + +#: src/diff.c:832 +msgid "Compare files line by line." +msgstr "Comparer les fichiers ligne par ligne" + +#: src/diff.c:834 +msgid "-i --ignore-case Ignore case differences in file contents." +msgstr "" +"-i --ignore-case ignorer les différences de casses dans le contenu des " +"fichiers" + +#: src/diff.c:835 +msgid "--ignore-file-name-case Ignore case when comparing file names." +msgstr "" +"--ignore-file-name-case ignorer la casse lors de la comparaison des noms de " +"fichiers" + +#: src/diff.c:836 +msgid "--no-ignore-file-name-case Consider case when comparing file names." +msgstr "" +"--no-ignore-file-name-case tenir compte de la casse lors de la comparaison " +"des noms de fichiers" + +#: src/diff.c:837 src/sdiff.c:186 +msgid "-E --ignore-tab-expansion Ignore changes due to tab expansion." +msgstr "" +"-E --ignore-tab-expansion ignorer les changements liés à l'expansion des " +"tabulations" + +#: src/diff.c:838 src/sdiff.c:187 +msgid "-b --ignore-space-change Ignore changes in the amount of white space." +msgstr "-b --ignore-space-change ignorer les changements dans l'espacement" + +#: src/diff.c:839 +msgid "-w --ignore-all-space Ignore all white space." +msgstr "-w --ignore-all-space ignorer tout blanc d'espacement" + +#: src/diff.c:840 src/sdiff.c:189 +msgid "-B --ignore-blank-lines Ignore changes whose lines are all blank." +msgstr "" +"-B --ignore-blank-lines ignorer les changements dont toutes les lignes " +"sont blanches" + +#: src/diff.c:841 src/sdiff.c:190 +msgid "" +"-I RE --ignore-matching-lines=RE Ignore changes whose lines all match RE." +msgstr "" +"-I EXPREG --ignore-matching-lines=EXPREG ignorer les différences dont les " +"lignes concordent à l'EXPression RÉGulière" + +#: src/diff.c:842 src/sdiff.c:191 +msgid "--strip-trailing-cr Strip trailing carriage return on input." +msgstr "--strip-trailing-cr éliminer les retours de chariot de l'entrée." + +#: src/diff.c:844 +msgid "--binary Read and write data in binary mode." +msgstr "--binary lire et écrire les données en binaire" + +#: src/diff.c:846 src/diff3.c:451 src/sdiff.c:192 +msgid "-a --text Treat all files as text." +msgstr "-a --text traiter tous les fichiers comme des textes." + +#: src/diff.c:848 +msgid "" +"-c -C NUM --context[=NUM] Output NUM (default 3) lines of copied " +"context.\n" +"-u -U NUM --unified[=NUM] Output NUM (default 3) lines of unified " +"context.\n" +" --label LABEL Use LABEL instead of file name.\n" +" -p --show-c-function Show which C function each change is in.\n" +" -F RE --show-function-line=RE Show the most recent line matching RE." +msgstr "" +"-c -C N --context[=N] afficher N lignes de contexte (3 par défaut)\n" +"-u -U N --unified[=N] afficher N lignes du contexte unifié (3 par " +"défaut)\n" +" --label ÉTIQ utiliser l'ÉTIQuette comme nom de fichier.\n" +" -p --show-c-function identifier la fonction contenant chaque " +"différence.\n" +" -F EXPREG\n" +" --show-function-line=EXPREG\n" +" afficher la ligne la plus récente qui " +"concorde\n" +" avec l'EXPression RÉGulière" + +#: src/diff.c:853 +msgid "-q --brief Output only whether files differ." +msgstr "-q --brief indiquer seulement si les fichiers diffèrent ou non" + +#: src/diff.c:854 +msgid "-e --ed Output an ed script." +msgstr "-e --ed générer un script pour « ed »" + +#: src/diff.c:855 +msgid "--normal Output a normal diff." +msgstr "--normal produire un « diff » en format normal" + +#: src/diff.c:856 +msgid "-n --rcs Output an RCS format diff." +msgstr "-n --rcs générer un fichier de type « diff » en format RCS" + +#: src/diff.c:857 +msgid "" +"-y --side-by-side Output in two columns.\n" +" -W NUM --width=NUM Output at most NUM (default 130) print columns.\n" +" --left-column Output only the left column of common lines.\n" +" --suppress-common-lines Do not output common lines." +msgstr "" +"-y --side-by-side afficher la sortie sur deux colonnes\n" +" -w N --width=N limiter la sortie à N caractères par ligne (130 " +"par défaut)\n" +" --left-column afficher seulement la colonne de gauche pour les " +"lignes identiques\n" +" --suppress-common-lines ne pas afficher les lignes identiques" + +#: src/diff.c:861 +msgid "-D NAME --ifdef=NAME Output merged file to show `#ifdef NAME' diffs." +msgstr "" +"-D NOM --ifdef=NOM afficher la fusion des fichiers en indiquant les " +"différences par des « #ifdef NAME » dans le « diff » produit" + +#: src/diff.c:862 +msgid "" +"--GTYPE-group-format=GFMT Similar, but format GTYPE input groups with GFMT." +msgstr "" +"--GTYPE-group-format=GFMT similaire, mais formater les groupes\n" +" d'entrée GTYPE avec GFMT" + +#: src/diff.c:863 +msgid "--line-format=LFMT Similar, but format all input lines with LFMT." +msgstr "" +"--line-format=LFMT similaire, mais formater toutes les lignes d'entrée avec " +"LFMT" + +#: src/diff.c:864 +msgid "" +"--LTYPE-line-format=LFMT Similar, but format LTYPE input lines with LFMT." +msgstr "" +"--LTYPE-line-format=LFMT similaire, mais formater les lignes\n" +" d'entrée LTYPE avec LFMT" + +#: src/diff.c:865 +msgid " LTYPE is `old', `new', or `unchanged'. GTYPE is LTYPE or `changed'." +msgstr "" +"LTYPE peut être soit « old », « new », ou « unchanged ». GTYPE prend une " +"des valeurs de LTYPE ou « changed »." + +#: src/diff.c:866 +msgid "" +" GFMT may contain:\n" +" %< lines from FILE1\n" +" %> lines from FILE2\n" +" %= lines common to FILE1 and FILE2\n" +" %[-][WIDTH][.[PREC]]{doxX}LETTER printf-style spec for LETTER\n" +" LETTERs are as follows for new group, lower case for old group:\n" +" F first line number\n" +" L last line number\n" +" N number of lines = L-F+1\n" +" E F-1\n" +" M L+1" +msgstr "" +"GFMT peut contenir:\n" +" %< pour marquer les lignes du FICHIER1\n" +" %> pour marquer les lignes du FICHIER2\n" +" %= pour marquer les lignes identiques entre FICHIER1 et FICHIER2\n" +" %[-][LARGEUR][.[PREC]]{doxX}LETTRE, les spécifications de LETTRE\n" +" sont identiques à la notation que l'on retrouve dans « printf() »\n" +" dont les codes possibles de LETTRE sont\n" +" en majuscule pour le nouveau groupe, \n" +" en minuscules pour l'ancien groupe:\n" +" F numéro de la première ligne\n" +" L numéro de la dernière ligne\n" +" N nombre de lignes = L-F+1\n" +" E F-1\n" +" M L+1" + +#: src/diff.c:877 +msgid "" +" LFMT may contain:\n" +" %L contents of line\n" +" %l contents of line, excluding any trailing newline\n" +" %[-][WIDTH][.[PREC]]{doxX}n printf-style spec for input line number" +msgstr "" +"LFMT peut contenir:\n" +" %L pour le contenu de la ligne\n" +" %l pour le contenu de la ligne sans fin de " +"ligne\n" +" %[-][LARGEUR][.[PREC]]{doxX}n la spécification du numéro de ligne\n" +" d'entrée selon le format de printf()" + +#: src/diff.c:881 +msgid "" +" Either GFMT or LFMT may contain:\n" +" %% %\n" +" %c'C' the single character C\n" +" %c'\\OOO' the character with octal code OOO" +msgstr "" +"GFMT ou LFMT peuvent contenir:\n" +" %% %\n" +" %c« C » le caractère « C » lui-même\n" +" %c'\\OOO» le caractère dont le code octal est OOO" + +#: src/diff.c:886 +msgid "-l --paginate Pass the output through `pr' to paginate it." +msgstr "-l --paginate relayer la sortie à « pr » afin de la paginer" + +#: src/diff.c:887 src/sdiff.c:198 +msgid "-t --expand-tabs Expand tabs to spaces in output." +msgstr "-t --expand-tabs étaler les tabulateurs en espaces dans la sortie." + +#: src/diff.c:888 src/diff3.c:452 +msgid "-T --initial-tab Make tabs line up by prepending a tab." +msgstr "" +"-T --initial-tab aligner les tabulateurs par l'ajout d'un tabulateur de " +"préfixe" + +#: src/diff.c:890 +msgid "-r --recursive Recursively compare any subdirectories found." +msgstr "-r --recursive comparer récursivement les sous-répertoires présents" + +#: src/diff.c:891 +msgid "-N --new-file Treat absent files as empty." +msgstr "-N --new-file traiter les fichiers absents comme des fichiers vides" + +#: src/diff.c:892 +msgid "--unidirectional-new-file Treat absent first files as empty." +msgstr "" +"--unidirectional-new-file traiter les fichiers absents comme vides" + +#: src/diff.c:893 +msgid "-s --report-identical-files Report when two files are the same." +msgstr "" +"-s --report-identical-files indiquer si les deux fichiers sont identiques" + +#: src/diff.c:894 +msgid "-x PAT --exclude=PAT Exclude files that match PAT." +msgstr "" +"-x PAT --exclude=PAT exclure les fichiers dont les noms concordent avec le " +"PATron" + +#: src/diff.c:895 +msgid "" +"-X FILE --exclude-from=FILE Exclude files that match any pattern in FILE." +msgstr "" +"-X FICHIER --exclude-from=FICHIER exclure les fichiers dont les noms\n" +" concordent à ceux contenus dans le FICHIER" + +#: src/diff.c:896 +msgid "" +"-S FILE --starting-file=FILE Start with FILE when comparing directories." +msgstr "" +"-S FICHIER --starting-file=FICHIER débuter la comparaison des\n" +" répertoires par le FICHIER" + +#: src/diff.c:897 +msgid "" +"--from-file=FILE1 Compare FILE1 to all operands. FILE1 can be a directory." +msgstr "" +"--from-file=FICHIER1\n" +" comparer le FICHIER1 à toutes les opérandes.\n" +" FICHIER1 peut être un répertoire." + +#: src/diff.c:898 +msgid "" +"--to-file=FILE2 Compare all operands to FILE2. FILE2 can be a directory." +msgstr "" +"--to-file=FICHIER2\n" +" comparer toutes les opérandes à FICHIER2.\n" +" FICHIER2 peut être un répertoire." + +#: src/diff.c:900 +msgid "--horizon-lines=NUM Keep NUM lines of the common prefix and suffix." +msgstr "" +"--horizon-lines=N retenir N lignes ayant des préfixes et suffixes " +"identiques" + +#: src/diff.c:901 src/sdiff.c:200 +msgid "-d --minimal Try hard to find a smaller set of changes." +msgstr "" +"-d --minimal si possible afficher le plus petit ensemble de différences." + +#: src/diff.c:902 +msgid "" +"--speed-large-files Assume large files and many scattered small changes." +msgstr "" +"--speed-large-files traiter de grands fichiers et ayant plusieurs petits " +"changements dispersés" + +#: src/diff.c:907 +msgid "" +"FILES are `FILE1 FILE2' or `DIR1 DIR2' or `DIR FILE...' or `FILE... DIR'." +msgstr "" +"FICHIERS sont « FICHIER1 FICHIER2 » ou « RÉP1 RÉP2 » ou « RÉP FICHIER... » " +"ou «FICHIER... RÉP'." + +#: src/diff.c:908 +msgid "" +"If --from-file or --to-file is given, there are no restrictions on FILES." +msgstr "" +"Si --from-file ou --to-file est fournie, il n'y a pas de restriction sur les " +"FICHIERS." + +#: src/diff.c:909 src/diff3.c:474 src/sdiff.c:222 +msgid "If a FILE is `-', read standard input." +msgstr "Si le FICHIER spécifié est « - » alors lire de l'entrée standard." + +#: src/diff.c:920 +#, c-format +msgid "Usage: %s [OPTION]... FILES\n" +msgstr "Usage: %s [OPTION]... FICHIERS\n" + +#: src/diff.c:949 +#, c-format +msgid "conflicting %s option value `%s'" +msgstr "valeur « %s » conflictuelle de l'option %s" + +#: src/diff.c:962 +msgid "conflicting output style options" +msgstr "options de style de sortie conflictuelles" + +#: src/diff.c:976 +msgid "regular empty file" +msgstr "fichier régulier vide" + +#: src/diff.c:976 +msgid "regular file" +msgstr "fichier régulier" + +#: src/diff.c:978 +msgid "directory" +msgstr "répertoire" + +#: src/diff.c:981 +msgid "block special file" +msgstr "fichier spécial-blocs" + +#: src/diff.c:984 +msgid "character special file" +msgstr "fichier spécial-caractères" + +#: src/diff.c:987 +msgid "fifo" +msgstr "« fifo »" + +#: src/diff.c:991 +msgid "socket" +msgstr "« socket »" + +#: src/diff.c:994 +msgid "message queue" +msgstr "queue de messages" + +#: src/diff.c:997 +msgid "semaphore" +msgstr "sémaphore" + +#: src/diff.c:1000 +msgid "shared memory object" +msgstr "objet en mémoire partagée" + +#: src/diff.c:1003 +msgid "typed memory object" +msgstr "objet mémoire typé" + +#: src/diff.c:1006 +msgid "weird file" +msgstr "fichier bizarre" + +#: src/diff.c:1070 src/diff.c:1256 +#, c-format +msgid "Only in %s: %s\n" +msgstr "Seulement dans %s: %s\n" + +#: src/diff.c:1193 +msgid "cannot compare `-' to a directory" +msgstr "Ne peut comparer « - » avec un répertoire" + +#: src/diff.c:1220 +msgid "-D option not supported with directories" +msgstr "L'option -D ne traite pas les répertoires." + +#: src/diff.c:1229 +#, c-format +msgid "Common subdirectories: %s and %s\n" +msgstr "Les sous-répertoires %s et %s sont identiques.\n" + +#: src/diff.c:1266 +#, c-format +msgid "File %s is a %s while file %s is a %s\n" +msgstr "Le fichier %s est un %s alors que le fichier %s est un %s\n" + +#: src/diff.c:1345 +#, c-format +msgid "Files %s and %s are identical\n" +msgstr "Les fichiers %s et %s sont identiques.\n" + +#: src/diff3.c:26 +msgid "Written by Randy Smith." +msgstr "Écrit par Randy Smith." + +#: src/diff3.c:328 +msgid "incompatible options" +msgstr "options incompatibles" + +#: src/diff3.c:368 +msgid "`-' specified for more than one input file" +msgstr "« - » fourni pour plus d'un fichier d'entrée" + +#: src/diff3.c:408 src/diff3.c:1232 src/diff3.c:1645 src/diff3.c:1700 +#: src/sdiff.c:305 src/sdiff.c:879 src/sdiff.c:890 +msgid "read failed" +msgstr "lecture non-réussie" + +#: src/diff3.c:441 +msgid "-e --ed Output unmerged changes from OLDFILE to YOURFILE into MYFILE." +msgstr "" +"-e --ed afficher les différences non fusionnés selon l'ordre suivant:\n" +" entre le fichier ORIGINAL et le fichier MODIFIÉ\n" +" vers le fichier de SORTIE" + +#: src/diff3.c:442 +msgid "-E --show-overlap Output unmerged changes, bracketing conflicts." +msgstr "-E --show-overlap afficher les différences entre crochets" + +#: src/diff3.c:443 +msgid "-A --show-all Output all changes, bracketing conflicts." +msgstr "-A --show-all afficher toutes les différences entre crochets" + +#: src/diff3.c:444 +msgid "-x --overlap-only Output overlapping changes." +msgstr "-x --overlap-only afficher les différences qui se recoupent" + +#: src/diff3.c:445 +msgid "-X Output overlapping changes, bracketing them." +msgstr "-X afficher les différences qui se recoupent entre crochets." + +#: src/diff3.c:446 +msgid "-3 --easy-only Output unmerged nonoverlapping changes." +msgstr "" +"-3 --easy-only afficher tous les changements non fusionnés qui ne se " +"recoupent pas" + +#: src/diff3.c:448 +msgid "-m --merge Output merged file instead of ed script (default -A)." +msgstr "" +"-m --merge afficher le fichier fusionné plutôt qu'un script « ed " +"» (implique -A)" + +#: src/diff3.c:449 +msgid "-L LABEL --label=LABEL Use LABEL instead of file name." +msgstr "" +"-L ÉTIQ --label=ÉTIQ utiliser l'ÉTIQuette plutôt que le nom du fichier" + +#: src/diff3.c:450 +msgid "-i Append `w' and `q' commands to ed scripts." +msgstr "-i ajouter les commandes « w » et « q » au script « ed »" + +#: src/diff3.c:453 src/sdiff.c:202 +msgid "--diff-program=PROGRAM Use PROGRAM to compare files." +msgstr "" +"--diff-program=PROG utiliser le PROGramme pour comparer les fichiers." + +#: src/diff3.c:465 +#, c-format +msgid "Usage: %s [OPTION]... MYFILE OLDFILE YOURFILE\n" +msgstr "Usage: %s [OPTION]... MYFILE OLDFILE YOURFILE\n" + +#: src/diff3.c:467 +msgid "Compare three files line by line." +msgstr "Comparer trois fichiers ligne par ligne" + +#: src/diff3.c:673 +msgid "internal error: screwup in format of diff blocks" +msgstr "Erreur interne: mélange dans le format des blocs « diff »" + +#: src/diff3.c:971 +#, c-format +msgid "%s: diff failed: " +msgstr "%s: échec de « diff »: " + +#: src/diff3.c:993 +msgid "internal error: invalid diff type in process_diff" +msgstr "Erreur interne: type de « diff » invalide dans process_diff" + +#: src/diff3.c:1018 +msgid "invalid diff format; invalid change separator" +msgstr "format de « diff » invalide; séparateur de changement invalide" + +#: src/diff3.c:1242 +msgid "invalid diff format; incomplete last line" +msgstr "format de « diff » invalide; dernière ligne incomplète" + +#: src/diff3.c:1265 src/sdiff.c:273 +#, c-format +msgid "subsidiary program `%s' not executable" +msgstr "programme de service « %s » n'est pas exécutable" + +#: src/diff3.c:1268 src/sdiff.c:276 src/util.c:298 +#, c-format +msgid "subsidiary program `%s' not found" +msgstr "programme de service « %s » non repéré" + +#: src/diff3.c:1272 src/sdiff.c:268 src/util.c:301 +#, c-format +msgid "subsidiary program `%s' failed" +msgstr "échec du programme de service « %s »" + +#: src/diff3.c:1294 +msgid "invalid diff format; incorrect leading line chars" +msgstr "" +"format de « diff » invalide; caractères incorrects sur la ligne d'annonce" + +#: src/diff3.c:1370 +msgid "internal error: invalid diff type passed to output" +msgstr "Erreur interne: type de « diff » invalide fourni à output" + +#: src/diff3.c:1647 src/diff3.c:1704 +msgid "input file shrank" +msgstr "Le fichier d'entrée a rétréci." + +#: src/dir.c:162 +#, c-format +msgid "cannot compare file names `%s' and `%s'" +msgstr "ne peut comparer les noms de fichier « %s » et « %s »" + +#: src/sdiff.c:35 +msgid "Written by Thomas Lord." +msgstr "Écrit par Thomas Lord." + +#: src/sdiff.c:183 +msgid "-o FILE --output=FILE Operate interactively, sending output to FILE." +msgstr "" +"-o FICHIER --output=FICHIER agir intéractivement, avec sortie sur FICHIER" + +#: src/sdiff.c:185 +msgid "-i --ignore-case Consider upper- and lower-case to be the same." +msgstr "-i --ignore-case banaliser majuscules et minuscules" + +#: src/sdiff.c:188 +msgid "-W --ignore-all-space Ignore all white space." +msgstr "-W --ignore-all-space ignorer tout blanc d'espacement" + +#: src/sdiff.c:194 +msgid "-w NUM --width=NUM Output at most NUM (default 130) columns per line." +msgstr "" +"-w N --width=N limiter la sortie à N colonnes par ligne (130 par " +"défaut)" + +#: src/sdiff.c:195 +msgid "-l --left-column Output only the left column of common lines." +msgstr "" +"-l --left-column afficher dans la colonne de gauche les lignes identiques" + +#: src/sdiff.c:196 +msgid "-s --suppress-common-lines Do not output common lines." +msgstr "-s --suppress-common-lines ne pas afficher les lignes identiques" + +#: src/sdiff.c:201 +msgid "" +"-H --speed-large-files Assume large files and many scattered small changes." +msgstr "" +"-H --speed-large-files traiter de grands fichiers ayant plusieurs " +"changements éparpillés" + +#: src/sdiff.c:214 +#, c-format +msgid "Usage: %s [OPTION]... FILE1 FILE2\n" +msgstr "Usage: %s [OPTION]... FICHIER1 FICHIER2\n" + +#: src/sdiff.c:215 +msgid "Side-by-side merge of file differences." +msgstr "Fusion côte à côte des différences des fichiers" + +#: src/sdiff.c:327 +msgid "cannot interactively merge standard input" +msgstr "Ne peut fusionner l'entrée standard, interactivement." + +#: src/sdiff.c:588 +msgid "both files to be compared are directories" +msgstr "Les deux fichiers à comparer sont des répertoires." + +#: src/sdiff.c:853 +msgid "" +"ed:\tEdit then use both versions, each decorated with a header.\n" +"eb:\tEdit then use both versions.\n" +"el:\tEdit then use the left version.\n" +"er:\tEdit then use the right version.\n" +"e:\tEdit a new version.\n" +"l:\tUse the left version.\n" +"r:\tUse the right version.\n" +"s:\tSilently include common lines.\n" +"v:\tVerbosely include common lines.\n" +"q:\tQuit.\n" +msgstr "" +"ed:\téditer les deux versions, chacune chapeautée d'une en-tête\n" +"eb:\téditer puis utiliser les deux versions\n" +"el:\téditer puis utiliser la version de gauche\n" +"er:\téditer puis utiliser la version de droite\n" +"e:\téditer une nouvelle version\n" +"l:\tutiliser la version de gauche\n" +"r:\tutiliser la version de droite\n" +"s:\tinclure les lignes identiques silencieusement\n" +"v:\tinclure les lignes identiques et le signaler\n" +"q:\tquitter.\n" + +# src/diff.c:882 MRO +#~ msgid "--inhibit-hunk-merge Do not merge hunks." +#~ msgstr "--inhibit-hunk-merge ne pas faire la fusion des hunks" + +#~ msgid "context length specified twice" +#~ msgstr "La longueur du contexte a été spécifié deux fois." + +#~ msgid "multiple `--from-file' options" +#~ msgstr "options multiples de `--from-file'" + +#~ msgid "multiple `--to-file' options" +#~ msgstr "options multiples de `--to-file'" + +#~ msgid "regular empty executable file" +#~ msgstr "fichier régulier exécutable vide" + +#~ msgid "regular executable file" +#~ msgstr "fichier régulier exécutable" + +#~ msgid "" +#~ "SKIP values may be followed by the following multiplicative suffixes:\n" +#~ msgstr "" +#~ "Les valeurs de SAUT peuvent être suivies par un des facteurs " +#~ "multiplicatifs suivants:\n" + +#~ msgid "kB 1000, K 1024, MB 1,000,000, M 1,048,576,\n" +#~ msgstr "kB 1000, K 1024, MB 1,000,000, M 1,048,576,\n" + +#~ msgid "GB 1,000,000,000, G 1,073,741,824, and so on for T, P, E, Z, Y.\n" +#~ msgstr "" +#~ "GB 1,000,000,000, G 1,073,741,824, et ainsi de suite pour T, P, E, Z, Y.\n" + +#~ msgid "Report bugs to .\n" +#~ msgstr "Rapporter toutes anomalies à \n" + +#~ msgid "If a FILE is `-', read standard input.\n" +#~ msgstr "Si FICHIER spécifié est `-', alors lire de l'entrée standard.\n" + +#~ msgid ": not found\n" +#~ msgstr ": introuvable\n" + +#~ msgid "-D%s: conflicting #ifdef format" +#~ msgstr "-D%s: format #ifdef conflictuels" + +#~ msgid "%s: conflicting line format" +#~ msgstr "%s: format de ligne conflictuel" + +#~ msgid "conflicting group format" +#~ msgstr "formats de groupes conflictuels" + +#~ msgid "--ignore-initial value must be a nonnegative integer" +#~ msgstr "La valeur de --ignore-initial doit être un entier non-négatif" + +#~ msgid "column width must be a positive integer" +#~ msgstr "Le nombre de colonnes doit être un entier positif." + +#~ msgid "context length must be a nonnegative integer" +#~ msgstr "La longueur du contexte doit être un entier non négatif." + +#~ msgid "horizon must be a nonnegative integer" +#~ msgstr "L'horizon doit être un entier non négatif." diff --git a/src/apps/bin/diffutils-2.8.1/po/gl.gmo b/src/apps/bin/diffutils-2.8.1/po/gl.gmo new file mode 100644 index 0000000000000000000000000000000000000000..d1243f6234df3d015b77a0ae36c4e2cbd344c925 GIT binary patch literal 23855 zcmb`Pdyr(;UEi;Q4c6F3wj|rKgwc_#-PKCdy)!GxTF+|b9nH?}jH)o1HLPYZrKM?Zkh4VZ%M%l_dgCgP~Ytb{}iPCTi+CrHlj1!Q=-Sgp9J~t*8c=P z6h&{l8N3%f4N~WA&w=#+w%-6xfPVGmH3>F0L6r`S3U z8u*?3cLzwl@0fk<5 z8eG5o?cQJ?PQSfTOe+bg=UH=AeOXHfkyhI>8<-UWUUWN!ETUbz3SAnUj9%^>TyuLAA|FN1uy?`J@Gb>BY@ z@BbYLZ|~tMaJ~}-v0)E8%ujD_yWk7 zB6$10Zv~p+5v!$3vnoa1c zgLm`k8$swl3GMWLauwv+j2N9{?<(|1e_+IY6glPU2 zm_^Zh#0PVr=m@PIhE~zT{P%wFt>BM<$iTxt2f`N*e-#`Dulf5Uj8*G?-cjQ+<=z8S$K*oLKFFd}Nu}3+oNPN-;8Iu-o3K~YI!DaA0;7@_`;2(g{`KSY@ zLCyOK@WUYQkNysb3_SvGY8@W=X^{Cp@|)lSqQe>(YF<1)_KP60aqNG9r%*```uC51 zw}1cWzXGdNfj8Cu`)2+7_x)(VKLP3c_#}7&)I1r}aka;|rs1{dBcR&j`Ly`!I4bf8 z_&j(OWWJC6Pmum+;2HHd(`21K0e+VI$55@}U-)#EHPpCgKM6vg*?;fxBy*MAo_rRh zos*vf9jNtWT&HdX9|EC)=yvM+K)yev^}nCXo4`jv(UUr-#SbUJ-v;OS@7uu{@EMTr z<}@yNXzouz==V5lEctr;10ZcYE`Fi@VX%Vf{Q;0~&-^;b z9L{Jy_kf}kI1jJLKF>22wKFfeLx=f)9o|dcpvQvb{5W_Kgq{nZ2WfBN_rd+3*26{7 z;vL}aAafO;FG^nEmBo*M-vNFGd<*y$kTw_pIjDO7!Q;}mfNzeXC1|Ghm!N^#T{;gw z2Z|5*cInSR#{1;Yf%Ns{e*|A2Ma%RZeFJphZK%{6KzL+D&l%f_=yMCW8Swdlp8{Ef zmA?Zz@XH|bxAJumy|4<1Z&tMqPl5{|?XP|=py*3KtA7A8?z5T)_0K{Z+1ayaLFRw< zfz)4IWjYab2oe= zZ=yU;(Qkorj`DHJ-=Z*Qt+#Ytbcv$*#FS4{eu|=>cu>E;LHQwy<{-L#8|4woyD7&h zKTi3Z6#ZD+XpQ11XDP)`^VY9TX;Cgv;1}r*t!wo26!=57Mf(c-!5{X!!oTo9q_tqp z<$v1mF8=+|aQ!0z%kcf&+!r1^1^y)Ednuoy{4C|Olpmy&e_!V2Y03|ThtuF>xIP0O zqMW8Y9G;yAH^cP_ut%v;mMNzw`u&0j`N7dIQji<_{TTm#j8gZv_V3N%`u*Ty>A5c7 zNBQM#&m;$u2`L8TTec|rdz6cmuTV0|9OaXgzfRHbjg%$@zP8^N`S&A~dno8w`#l@* zqu?7TS&0m}DL{u<@; zlrH6M6#agJa+LCR$_FWLp%lNzxcG$KI5(Siw~~%Kb#i{yWgT}$*o?2bTGr~uX=`fC z@!PkL;;(84W)3*VH!e?Gn~lWPw&G4)>(a(dQRDpL;$o;Yczc9dlsGd6Q``!rY5gd^B?X?=+~;$2YoPQ&AAO|nAE47JxLpl zWD`Nj+T9dhu2kH}$<*N0&0dq`_09Av zQs*jp0?u7Rp*wIxNcl~xs!GiSC6}~OIt3y zZlYvWTg+N%ce2e++&s3lym)GP8f9=6tyJ8gDp8tkX|oNOFxOYoyA|D82bD@U^LOhR zT3lK&-AI#qx#BS|MQ$cEsHceJGa>D zN)dFoSa&_KH(4kBP}VX6=EoM!GKD9Sr0sMiqM95_dV~6Jcan|tiVZ&RZE&eZ(#=-Z zf&NUZ(u$i&#gwy~v&UXjU*1Yuff~|iMgdhdqFmqVX}$whwr%ZN*>0nl$y#|@FD%BM z<6ss|v_nCt*o6mLYR!}NN$M3ibkk2ZcWye*5q~TS&-^MIZJN^Gc`fc@zY&p~W--sE zR&B<4x0ALjg@UitI;c`T8tD95-07q-jdqf5uhVjXoWlEnGdO4e#1 zIDx@>t!4r_>X5IMT}nEQxZT#G59U9u5A&_;az$eoc3DvAevLA&H)Y&7Ghht4|vz+`{xccASPb>dD42e-{QHhHeas zkZF+a;=8S)eTI&O8#I&?g+6a(U6=RT?X1&f(x#mX=}VJ5s`#$FjCAAmN^+$g!;`G& z_EFb+i58AZxB{UPJy`=ru0YN{$@-)YwB40%r;XzOzxa2~Ete;S2Cr?gQbCL8T_O9U zmV>3RFKC3xopEQTADhKbsvueGN#j_!l_vFxQg&ho#rXgTdcT z+DXehb9%{_PurKC5ny)oNnA_%v=aMY-jcrb^Td@Y)O|EoZp$iyaUj^s|m6&{A9BtGU&xrj= z1-?|fvLbOa>!D9r$>Et=JGMipc<<3IX}b_SLMZ`zOpi5soH6r6&*oZR>8{CeUFZ`_ zw(DL5JMJ~Q?ty~?J66lu7+3F*GyJhikH*dxjiCx zs~i+zt+IjRZEmSskSx5$K-?!sUTwoNCTZ(fg#aCJ3GqU&I+;SJ&odcR|zh$15;#}e4Eo7N_$?$}`Uygw;T=jmOR?53t*=C|KQ*%+6sK%dkDF|SM?WFSnt zQt8z2%LdH2JhM{lC4wK8Ryh`K3lCe0QPScc7mCNnJ=B4xNzkf`^1zuX z+{y(4d?{&M9Y;*O>M!W$zh;QfsfG1Unr!q3X-kC3f!>{MetO+1TjV@MmYIYD(9S=yPEM}$h!4J>Hp#$?quz;G{VlJKGTtrmT|#eLe^$f$E! zb%Gwb9vghw*`}ycxt!L!TYiTWS}yox$lgpoFmW)5S?=HsQ?~SbMg0adKI|@!uZ7Eg#{7YnAH>R@AV+*0R5>k(dA6EXUKYWoBlhhnjiqT1V!q@)~&K zF~3ju{I<_47r@KRScDiWP?--!EX(?W_SQDd+x_tp@HO{%ckf7jjWB!#bJ_Ht*9 zKF^z~|VBCt+ z2yqE`pm~>`j#)K}pGiD4O+>IStvg>Abeh|M{DXJ|p}qdjQax^>Z(8G$Wkq8ttqlJ` z8&~sEq$6zXE7gdWV!PIN7b`ZEW|}LIJYkT@FPsZri`uty+l6t+N-TA%cT4 z(9v9Yj1v+<rftZh#(+jKTkRmqqjDSs(3@~P)nGzZ@0yg5y)vM*~+F&FaBjTQ;^whK|8Oc-K%`7gRn_D5xPT%xMHH0o*q&9^q-_toHF3$Lhr<^xT-fWQ zmEB(YeTpmgF~ufkEP9$4GK(%zSz<%#W;ZvJP8a@9i5Z-ZxlS76?nHcv!-v!H)g&Ju zTV~@YT}f1;(IArO+5HTStm^2iT5fY0Nx14(V5hC2=c`*;lSti}tb-d^8pCSVS^r>0 zJnq99*aIvzFW1%9z1@mR=dDcj}$x)ZlmrJ{QRq4S|v`}+u zgo+0Sk?jG85P(orQ#`4tv=}a0Z)7NX3xmVO{*eOXx-u<=@6vvpPn0d6@hf}JV^2N>Zt zEm!B{Mmv@esf;-ah*2ojv1EPE&#BPZUO}3|_LZRz>U2ic>7<)mT{ox{>JVV(ShxR} z<`pv8*(hxmFSfOmPu;izZ?w8*8g+QuKdJCL+p$YiH$LTern^>oZtBJ-du(LKBJ^`7 zhO&03;#X!P-N>S}Wn9%w*Go$>;9H`^NYk@aLx~bb_Zn^r&Sr^`Yk6F*d$lcIm#L85 z_<$Z>#}{oJ8`cT~;`w67Cq!D3%Y+V#Mu>)qN!Bu!9?ch;Tn{U`$wv7{^p2kreq?5Nqnl4@x-9)0R*ThP~|z zKNqUV3Cj~yLCh&vzx^$Lo;7lmUT$pQ&F$_PW?RO@J=aTmNfeydJ}1N*EUce$5J*SR zL;8Xpw)9Y$L81^Gk&PWb8sLFHd?UIL6)uCfhUO*vv+Aht$LW~GYr*1?sl*(=ugyf0 zD2GxoN0?2v{y}IN<>=4^=*nr<=5m9mm~OoX9@vQO5gWx+2cE@9M45129_{v86H2ZS zgkT$v!rrTz#ULWNn|2yz+SbQM3#BHJ*gpEpNs8&SdHUnmK$N9UrrA~I>J{W!4!J+z zH+R(?u0C9yoETeLT&>LL;ELCk6DYYUcX(praAo4b%EUu%^1-ReiOR&03015t<7umz zp?VKgCJ(#Gho&AneE$Ug>ev}FMJo6`E!-X0Y|1?z*Ru7@t#Uf|V&)zL7;okt`5-3< zoisbn)|6l)0`Mr`wl;h4RAn`Zn^W!-s-Tu)^B&o3_c%D{#C1GK25`KV^r{k45RpALx3X9{a^#`+l9|%4 ztWmRLs>~vf60RwCgd=Ve6+(6p$1BQNX>*>fqgm;$U9ysh8^oP!BXf~TucUfkuBV%5 zD$7PHB_gSh;Vvu@=_Ndrx*}sUr^{(brN`wYBt3?(ue7uqwr^ZwSjs?}UYI$(I3fdS znG?q(9Iw~nTKY0Bf6hinJ1(^L1_4bJf9yy{TAsE%8y)TX+nk+-om~@iVmp=ix{6(0 z%E&zGwKFVh%Mm<(C9kn*WH+G3G7K9@B12h8tyl0OGBOI(Z4=Ik(ReS#p+n0}8dSk3 z!y`K@aqd-A(g~-?@=YZv?OY5F-?aWIYr)X^Bict?ciZ!jqV!^msu_fd8(o0K)kjEe zD^7Ep%|4|mja&_4v|%Nx+tz?Ki;4MB^z)Qn@M%i!UL)zjkgnwJ)e^8*=#`U}+`YtJ zVOUacvizVTT|S5Dg^=^4+TMKN;NHvp26gFg5$`swG?-LaA+8pRlqTj`@ZE5QBB3c% z=qEIZaj;(sTaXepl-LBh28m6tR?oe#M}8Ab)(iPfS=(5fbN8^vOj*xTmQ#2yYh`wK z=%pMV`#hvNsg<}6JrdWWJv2Zw>2@-o;Zv%N(Rd+bI>n=2DyWj?_~CoC;**`Ov&)da z^v%`YZHyy_H-c#DjhSRGF&n5_PIoGiyTrAZ)EPV_+Ry>udfHL;6tW`ym?7VmLzOBH zKQey`Ej`<0K{iE%B9Cg?>r?Z#>a44z?&S`tE60t6~H1S3rw=^dR?SE^#=k zR$g~aNG=08!2=E;2_)og;UnTx!E|UE+cx+Yn)b-ltzMJ5{gy~9Zf%NJ(Vc7qT3iMz zLSua2$;EFpwKI2Xwn64%%kw7rTEtiQ7(P)FSLUwCFd_&$X{qK0$y_t1`^j9a>JHwM zE%yFSi3@F}+Cs7KF|pbsp^H4m@^sCX;!6=IkaZHFW49hRf?!o1(D6(uyDKnvK@;gi zVnT5{)_Ul802zn#duS^olqHZ@T7u4dUHH71R%m9NZq>DqkEkKkoqWX(63(cg(B3Iu zp6JD(ST_XxCA{om_JtEkD8uYo_SfS4EOQIVUv^`Ilg=r)VK5a9&bWyvQIQA6HyqDQ z7Y375FwLIHUxOq%6_vvF-xX_f9eH5GQ)xq6wpx}2hPw(kvE{{KPapS`SN>`IjZcQAoiN1$coW(gs-U-ytxHoH3aqzL3w z%KRPSV(y)8dI=gD4N1(9$ch}#ovIQ)dpN%g`7zsE@W>vrqja+wPg13pvHL30&GdAJ z&OU@JG5}SRz?C#z*|cb(?G!i!W_-TcNz%qTMk#bki7WI-n>luxFTsKMuy`xxs`v0A zMiX-IxrU(KP%Ukz{fz+q@0GPy(o;C~@TN&{kTt#~gRKy)fi~3=W2sGf=!lU~zQ8C) z3jZ^GLT<}w6CLd|d`N|>=~|{agiS59*nFimdg>(?iuAXRglw=N41OpB&Xi}NyapU# zN>e*>G|Q_b!)@br6a>tND~V+DUqL?l-I)wGprH@p4fYgN4;gWPMCx`qBkqrs5f_y1 z0x#DdxG=EgCN2ybVzpEB^&l6{H#5kEyS`?ue$5){OPvYY+1XW`x{~DCgFPjW#o8q= zF3biF*E%cNO&j?cuXyQQB-OU>dJ^LTN&QCCHLr2TfvT1zw8jf2dR5L56G_vL$fCm? zAz23z!3Az>^;Pi-`Hx7Kd;{B|`mTe=!D^D@gViOSuI$YCY&v5TW%cZ=Q#3ZD^65nC z<*C^-XBLTVtj?Y_r3Crr{UuH9OsktyeyS8D9*p0*616Jq^1#)^;t!n7JsR4>JrxsL z%wb@5eM7UYO~S#ZYb9Uk25c{BcbqDbbQg2y38GPvcV{1=t@-tRi`2(`@M(4yMQX=aa4Z|zNZ40|bA6Uw;9qFrVa5!_71XF6p|BGkw8<6 z7RniR#rLB;o`HDcUIyMXO1rhn^aUCsh7VBiqj06&uvC z;vO@oIm$O-U)Ic01S7n&ihS(#v3m1iYul?4rNJBLyTJh+L02SqT#@Fw_=UCb)WoJ0 zCYI*P$#8@nax&G`d=Xl!JuE4O4YImMmAzPM;; zM?RLFqdBKB#oFGQX4uBiyCv%(!*Kt=#Zct7Fmwn;e+t8idqJW?u7c_KJX>d15c{*j zmqod~^7vlOD4ei51OglFoOb5Nr8U%IAAY(l{cYuMnx7o=y*bHDAm= zT-q(M&#Sz_@`zgsL!_;=<4fEW8X1x37x;OgNW`|UK>nbVeA3@*o;nPdDm0U0a?QRD z=luopUB4ETmESG-Z!cb3Ec0&&Ct32F<-`pKQpZTr8KlJ`eylDU*fK`^-<1Z*-R9P7 ziD5Rs(tY7(Us~>abfs+qCOt+=f@;LjrHf|gmKRs-OyQz#m8!zdUw?x;$PV;3_QvN1 z60}w|<+u3Uz{S286GtWhi>3yp1~p7^&cLdcYK&OYZ-&HVLTR6C;-$YD;r|thS;vBB^ zpJ&m|@B1&~$TAR_Uy^TTibpV^7Jt-{4m67Vy8csHdY$HI%EsELXCJn*+fqHOrO%2i z58MKpY1WBWUY1i<xaiI$v8!nO*(y%VrOc zRfa%eVY_9mxU!Hf@>kA(%y!Frtdi8ILKc|geD}d4)qdV%@yfp@@3BhWW0kzes^vYR zO!60fJbaM!hzOJQ$SGCga9zDkFAmbk0kWhI&TDkCPl+bzqT!L4zbnbKJ9a z8sE`B=M{1_9@7K{Don5P+< zM&8tG&54B9O9_#-3Zcbilt(`!vixEwC35J+j-1HE?Z}Ai2YW+maxh<|jX^G^RcvJV1@tKLhHlJF3L%I=R_0!{ zNjFK-uEyZAGpTE%BgdlOYITep&AmDzQ*-C*>uZ@*&bbyDoPN(J7o_ml(Ul|}Dz@wy zq^hLO-Rf>Y@j3x43kX!l$n9K-Q?grGNz3ZYER7Et(0Ncdf!WCKELK_W6KrjHo~->S z5rom$P&JZXBwxfcZwu|npFNoGWI+(I{-tZAesY{^Tlqo8XZfoS?D`d1pRzyKJWFot ziYdacI6+0AMM52vfFczeK?>mQBIncOaxkiLg>9Li+iP+tiiuZVE#pzdPO)xJ!+v{l z)E^1elP47zFuZ7J ze&MJdXJ(iTaU|j2KJ6^B#LKde4Qt4xYaf=!SJ26<6}}I8w9kGR{B}mPnOf>3g3Sx| zBgDs&c?CVpicr7;fwsBO=uuiQNB^vm|4|FwG_Uceo~_uk3(HkF$r=SoLeQ~+vn!{& zZ%4w>c{ujn{yfT)<~7z930XHk+0Tu?@X*G|EP&jhD5RV+wRQGDCVQq(+x+i*BCl07 zVC~h4u?$9s^Bhu9Id(FV?D5Vx>xFU(s;GhWQb>&{?(u0<$KT31?I=;4Md1H2g7uU? e$W1|)(eve087UtSi5Mhz1#NNU_*)NA_x}MF8}3m6 literal 0 HcmV?d00001 diff --git a/src/apps/bin/diffutils-2.8.1/po/gl.po b/src/apps/bin/diffutils-2.8.1/po/gl.po new file mode 100644 index 0000000000..0e8fc51144 --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/po/gl.po @@ -0,0 +1,997 @@ +# Galician translation of GNU diffutils +# Copyright (C) 2000, 2001, 2002 Free Software Foundation, Inc. +# Jacobo Tarrío Barreiro , 2000, 2001, 2002. +# +msgid "" +msgstr "" +"Project-Id-Version: diffutils 2.7.10\n" +"POT-Creation-Date: 2002-04-05 14:10-0800\n" +"PO-Revision-Date: 2002-03-12 15:52+0100\n" +"Last-Translator: Jacobo Tarrío Barreiro \n" +"Language-Team: Galician \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=ISO-8859-1\n" +"Content-Transfer-Encoding: 8-bit\n" + +#: lib/c-stack.c:188 +msgid "program error" +msgstr "erro do programa" + +#: lib/c-stack.c:189 +msgid "stack overflow" +msgstr "desbordamento da pila" + +#: lib/error.c:128 lib/error.c:156 +msgid "Unknown system error" +msgstr "Erro do sistema descoñecido" + +#: lib/freesoft.c:27 +msgid "" +"This program comes with NO WARRANTY, to the extent permitted by law.\n" +"You may redistribute copies of this program\n" +"under the terms of the GNU General Public License.\n" +"For more information about these matters, see the file named COPYING." +msgstr "" +"Este programa ven SEN GARANTÍA, ata o permitido pola lei.\n" +"Pode redistribuír copias deste programa baixo os termos\n" +"da Licencia Pública Xeral de GNU.\n" +"Para máis información sobre estas materias, vexa o ficheiro chamado COPYING." + +#: lib/getopt.c:693 +#, c-format +msgid "%s: option `%s' is ambiguous\n" +msgstr "%s: a opción `%s' é ambigua\n" + +#: lib/getopt.c:718 +#, c-format +msgid "%s: option `--%s' doesn't allow an argument\n" +msgstr "%s: a opción `--%s' non admite un parámetro\n" + +#: lib/getopt.c:723 +#, c-format +msgid "%s: option `%c%s' doesn't allow an argument\n" +msgstr "%s: a opción `%c%s' non admite un parámetro\n" + +#: lib/getopt.c:741 lib/getopt.c:914 +#, c-format +msgid "%s: option `%s' requires an argument\n" +msgstr "%s: a opción `%s' precisa dun parámetro\n" + +#: lib/getopt.c:770 +#, c-format +msgid "%s: unrecognized option `--%s'\n" +msgstr "%s: opción non recoñecida `--%s'\n" + +#: lib/getopt.c:774 +#, c-format +msgid "%s: unrecognized option `%c%s'\n" +msgstr "%s: opción non recoñecida `%c%s'\n" + +#: lib/getopt.c:800 +#, c-format +msgid "%s: illegal option -- %c\n" +msgstr "%s: opción non permitida -- %c\n" + +#: lib/getopt.c:803 +#, c-format +msgid "%s: invalid option -- %c\n" +msgstr "%s: opción incorrecta -- %c\n" + +#: lib/getopt.c:833 lib/getopt.c:963 +#, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "%s: a opción precisa dun parámetro -- %c\n" + +#: lib/getopt.c:880 +#, c-format +msgid "%s: option `-W %s' is ambiguous\n" +msgstr "%s: a opción `-W %s' é ambigua\n" + +#: lib/getopt.c:898 +#, c-format +msgid "%s: option `-W %s' doesn't allow an argument\n" +msgstr "%s: a opción `-W %s' non admite un parámetro\n" + +#: lib/regex.c:1367 +msgid "Success" +msgstr "Éxito" + +#: lib/regex.c:1370 +msgid "No match" +msgstr "Non hai coincidencias" + +#: lib/regex.c:1373 +msgid "Invalid regular expression" +msgstr "Expresión regular incorrecta" + +#: lib/regex.c:1376 +msgid "Invalid collation character" +msgstr "Carácter de ordeación incorrecto" + +#: lib/regex.c:1379 +msgid "Invalid character class name" +msgstr "Nome de clase de caracteres incorrecto" + +#: lib/regex.c:1382 +msgid "Trailing backslash" +msgstr "Barra invertida ao final" + +#: lib/regex.c:1385 +msgid "Invalid back reference" +msgstr "Referencia cara a atrás incorrecta" + +#: lib/regex.c:1388 +msgid "Unmatched [ or [^" +msgstr "[ ou [^ sen parella" + +#: lib/regex.c:1391 +msgid "Unmatched ( or \\(" +msgstr "( ou \\( sen parella" + +#: lib/regex.c:1394 +msgid "Unmatched \\{" +msgstr "\\{ sen parella" + +#: lib/regex.c:1397 +msgid "Invalid content of \\{\\}" +msgstr "Contido de \\{\\} incorrecto" + +#: lib/regex.c:1400 +msgid "Invalid range end" +msgstr "Fin de rango incorrecto" + +#: lib/regex.c:1403 +msgid "Memory exhausted" +msgstr "Memoria esgotada" + +#: lib/regex.c:1406 +msgid "Invalid preceding regular expression" +msgstr "Expresión regular precedente incorrecta" + +#: lib/regex.c:1409 +msgid "Premature end of regular expression" +msgstr "Fin de expresión regular prematura" + +#: lib/regex.c:1412 +msgid "Regular expression too big" +msgstr "Expresión regular grande de máis" + +#: lib/regex.c:1415 +msgid "Unmatched ) or \\)" +msgstr ") ou \\) sen parella" + +#: lib/regex.c:8034 +msgid "No previous regular expression" +msgstr "Non hai unha expresión regular anterior" + +#: lib/xmalloc.c:63 +msgid "memory exhausted" +msgstr "memoria esgotada" + +#: src/analyze.c:809 src/diff.c:1283 +#, c-format +msgid "Files %s and %s differ\n" +msgstr "Os ficheiros %s e %s son diferentes\n" + +#: src/analyze.c:812 +#, c-format +msgid "Binary files %s and %s differ\n" +msgstr "Os ficheiros binarios %s e %s son diferentes\n" + +#: src/analyze.c:1058 src/diff3.c:1413 src/util.c:526 +msgid "No newline at end of file" +msgstr "Non hai un salto de liña na fin da liña" + +#: src/cmp.c:43 +msgid "Written by Torbjorn Granlund and David MacKenzie." +msgstr "Escrito por Torbjorn Granlund e David MacKenzie." + +#: src/cmp.c:118 src/diff.c:817 src/diff3.c:427 src/sdiff.c:168 +#, c-format +msgid "Try `%s --help' for more information." +msgstr "Escriba `%s --help' para obter máis información." + +#: src/cmp.c:137 +#, c-format +msgid "invalid --ignore-initial value `%s'" +msgstr "valor de --ignore-initial `%s' non válido" + +#: src/cmp.c:146 +msgid "options -l and -s are incompatible" +msgstr "as opcións -l e -s son incompatibles" + +#: src/cmp.c:154 src/diff.c:826 src/diff3.c:435 src/sdiff.c:177 +#: src/sdiff.c:313 src/sdiff.c:320 src/sdiff.c:910 src/util.c:194 +#: src/util.c:286 src/util.c:293 +msgid "write failed" +msgstr "fallou a escritura" + +#: src/cmp.c:156 src/diff.c:828 src/diff.c:1354 src/diff3.c:437 +#: src/sdiff.c:179 +msgid "standard output" +msgstr "saída estándar" + +#: src/cmp.c:160 +msgid "-b --print-bytes Print differing bytes." +msgstr "-b --print-bytes Amosa-los bytes diferentes." + +#: src/cmp.c:161 +msgid "-i SKIP --ignore-initial=SKIP Skip the first SKIP bytes of input." +msgstr "" +"-i N --ignore-initial=N Omiti-los primeiros N bytes de entrada." + +#: src/cmp.c:162 +msgid "-i SKIP1:SKIP2 --ignore-initial=SKIP1:SKIP2" +msgstr "-i N1:N2 --ignore-initial=N1:N2" + +#: src/cmp.c:163 +msgid "" +" Skip the first SKIP1 bytes of FILE1 and the first SKIP2 bytes of FILE2." +msgstr "" +" Omiti-los primeiros N1 bytes de FICH1 e os primeiros N2 bytes de FICH2." + +#: src/cmp.c:164 +msgid "-l --verbose Output byte numbers and values of all differing bytes." +msgstr "-l --verbose Amosa-los números e valores dos bytes que difiran." + +#: src/cmp.c:165 +msgid "-n LIMIT --bytes=LIMIT Compare at most LIMIT bytes." +msgstr "-n LÍMITE --bytes=LÍMITE Comparar como moito LÍMITE bytes." + +#: src/cmp.c:166 +msgid "-s --quiet --silent Output nothing; yield exit status only." +msgstr "-s --quiet --silent Non producir nada; só da-lo estado de saída." + +#: src/cmp.c:167 src/diff.c:904 src/diff3.c:455 src/sdiff.c:204 +msgid "-v --version Output version info." +msgstr "-v --version Amosar información sobre a versión." + +#: src/cmp.c:168 src/diff.c:905 src/diff3.c:456 src/sdiff.c:205 +msgid "--help Output this help." +msgstr "--help Amosar esta axuda." + +#: src/cmp.c:177 +#, c-format +msgid "Usage: %s [OPTION]... FILE1 [FILE2 [SKIP1 [SKIP2]]]\n" +msgstr "Uso: %s [OPCIÓN]... FICH1 [FICH2 [N1 [N2]]]\n" + +#: src/cmp.c:179 +msgid "Compare two files byte by byte." +msgstr "Comparar dous ficheiros byte a byte." + +#: src/cmp.c:183 +msgid "SKIP1 and SKIP2 are the number of bytes to skip in each file." +msgstr "N1 e N2 son o número de bytes a omitir en cada ficheiro." + +#: src/cmp.c:184 +msgid "" +"SKIP values may be followed by the following multiplicative suffixes:\n" +"kB 1000, K 1024, MB 1,000,000, M 1,048,576,\n" +"GB 1,000,000,000, G 1,073,741,824, and so on for T, P, E, Z, Y." +msgstr "" +"Os valores N poden estar seguidos polos seguintes sufixos multiplicativos:\n" +"kB 1000, K 1024, MB 1.000.000, M 1.048.576,\n" +"GB 1.000.000.000, G 1.073.741.824, e así para T, P, E, Z e Y." + +#: src/cmp.c:187 +msgid "If a FILE is `-' or missing, read standard input." +msgstr "Se un FICHEIRO é `-' ou non se indica, lese da entrada estándar." + +#: src/cmp.c:188 src/diff.c:911 src/diff3.c:475 src/sdiff.c:223 +msgid "Report bugs to ." +msgstr "" +"Informe dos erros no programa a .\n" +"Informe dos erros na traducción a ." + +#: src/cmp.c:231 +#, c-format +msgid "invalid --bytes value `%s'" +msgstr "valor de --bytes `%s' non válido" + +#: src/cmp.c:258 src/diff.c:734 src/diff3.c:333 src/sdiff.c:558 +#, c-format +msgid "missing operand after `%s'" +msgstr "falta un operando despois de `%s'" + +#: src/cmp.c:270 src/diff.c:736 src/diff3.c:335 src/sdiff.c:560 +#, c-format +msgid "extra operand `%s'" +msgstr "operando `%s' sobrante" + +#: src/cmp.c:477 +#, c-format +msgid "%s %s differ: byte %s, line %s\n" +msgstr "%s %s son diferentes: byte %s, liña %s\n" + +#: src/cmp.c:495 +#, c-format +msgid "%s %s differ: byte %s, line %s is %3o %s %3o %s\n" +msgstr "%s %s son diferentes: byte %s, liña %s é %3o %s %3o %s\n" + +#: src/cmp.c:543 +#, c-format +msgid "cmp: EOF on %s\n" +msgstr "cmp: Fin de Ficheiro en %s\n" + +#: src/diff.c:41 +msgid "" +"Written by Paul Eggert, Mike Haertel, David Hayes,\n" +"Richard Stallman, and Len Tower." +msgstr "" +"Escrito por Paul Eggert, Mike Haertel, David Hayes,\n" +"Richard Stallman e Len Tower." + +#: src/diff.c:322 +#, c-format +msgid "invalid context length `%s'" +msgstr "lonxitude do contexto `%s' non válida" + +#: src/diff.c:405 +msgid "pagination not supported on this host" +msgstr "a paxinación non está soportada nesta máquina" + +#: src/diff.c:420 src/diff3.c:315 +msgid "too many file label options" +msgstr "demasiadas opcións de etiquetas de ficheiro" + +#: src/diff.c:498 +#, c-format +msgid "invalid width `%s'" +msgstr "ancho `%s' non válido" + +#: src/diff.c:502 +msgid "conflicting width options" +msgstr "opcións de anchura conflictivas" + +#: src/diff.c:526 +#, c-format +msgid "invalid horizon length `%s'" +msgstr "lonxitude do horizonte `%s' non válida" + +#: src/diff.c:629 +#, c-format +msgid "`-%ld' option is obsolete; use `-%c %ld'" +msgstr "A opción `-%ld' é obsoleta; empregue `-%c %ld'" + +#: src/diff.c:641 +#, c-format +msgid "`-%ld' option is obsolete; omit it" +msgstr "A opción `-%ld' é obsoleta; omítaa" + +#: src/diff.c:709 +msgid "--from-file and --to-file both specified" +msgstr "Especificáronse --from-file e --to-file ao mesmo tempo" + +#: src/diff.c:832 +msgid "Compare files line by line." +msgstr "Compara-los ficheiros liña a liña." + +#: src/diff.c:834 +msgid "-i --ignore-case Ignore case differences in file contents." +msgstr "" +"-i --ignore-case Ignorar maiúsculas/minúsculas no contido do ficheiro." + +#: src/diff.c:835 +msgid "--ignore-file-name-case Ignore case when comparing file names." +msgstr "" +"--ignore-file-name-case Ignorar maiúsculas/minúsculas no nome do ficheiro." + +#: src/diff.c:836 +msgid "--no-ignore-file-name-case Consider case when comparing file names." +msgstr "" +"--no-ignore-file-name-case Ter en conta as maiúsculas/minúsculas\n" +" ao compara-los nomes dos ficheiros." + +#: src/diff.c:837 src/sdiff.c:186 +msgid "-E --ignore-tab-expansion Ignore changes due to tab expansion." +msgstr "" +"-E --ignore-tab-expansion Ignora-los cambios pola expansión de tabulacións." + +#: src/diff.c:838 src/sdiff.c:187 +msgid "-b --ignore-space-change Ignore changes in the amount of white space." +msgstr "" +"-b --ignore-space-change Ignora-los cambios na cantidade de espacios." + +#: src/diff.c:839 +msgid "-w --ignore-all-space Ignore all white space." +msgstr "-w --ignore-all-space Ignorar tódolos espacios en branco." + +#: src/diff.c:840 src/sdiff.c:189 +msgid "-B --ignore-blank-lines Ignore changes whose lines are all blank." +msgstr "" +"-B --ignore-blank-lines Ignora-los cambios que teñan tódalas liñas en " +"branco" + +#: src/diff.c:841 src/sdiff.c:190 +msgid "" +"-I RE --ignore-matching-lines=RE Ignore changes whose lines all match RE." +msgstr "" +"-I RE --ignore-matching-lines=RE Ignora-los cambios nos que tódalas liñas\n" +" conteñan RE." + +#: src/diff.c:842 src/sdiff.c:191 +msgid "--strip-trailing-cr Strip trailing carriage return on input." +msgstr "" +"--strip-trailing-cr Elimina-los retornos de carro á fin das liñas de " +"entrada." + +#: src/diff.c:844 +msgid "--binary Read and write data in binary mode." +msgstr "--binary Ler e escribir datos en modo binario." + +#: src/diff.c:846 src/diff3.c:451 src/sdiff.c:192 +msgid "-a --text Treat all files as text." +msgstr "-a --text Tratar tódolos ficheiros coma texto" + +#: src/diff.c:848 +msgid "" +"-c -C NUM --context[=NUM] Output NUM (default 3) lines of copied " +"context.\n" +"-u -U NUM --unified[=NUM] Output NUM (default 3) lines of unified " +"context.\n" +" --label LABEL Use LABEL instead of file name.\n" +" -p --show-c-function Show which C function each change is in.\n" +" -F RE --show-function-line=RE Show the most recent line matching RE." +msgstr "" +"-c -C NÚM --context[=NÚM] Amosar NÚM [3] liñas de contexto copiado.\n" +"-u -U NÚM --unified[=NÚM] Amosar NÚM [3] liñas de contexto unificado.\n" +" --label ETIQUETA Usa-la ETIQUETA no canto do nome do ficheiro.\n" +" -p --show-c-function Amosar en que función C está cada cambio.\n" +" -F RE --show-function-line=RE Amosa-la liña máis recente que coincide\n" +" con RE." + +#: src/diff.c:853 +msgid "-q --brief Output only whether files differ." +msgstr "-q --brief Producir unha saída só se os ficheiros teñen diferencias." + +#: src/diff.c:854 +msgid "-e --ed Output an ed script." +msgstr "-e --ed Producir un script de ed." + +#: src/diff.c:855 +msgid "--normal Output a normal diff." +msgstr "--normal Producir un diff normal." + +#: src/diff.c:856 +msgid "-n --rcs Output an RCS format diff." +msgstr "-n --rcs Producir un diff en formato RCS." + +#: src/diff.c:857 +msgid "" +"-y --side-by-side Output in two columns.\n" +" -W NUM --width=NUM Output at most NUM (default 130) print columns.\n" +" --left-column Output only the left column of common lines.\n" +" --suppress-common-lines Do not output common lines." +msgstr "" +"-y --side-by-side Produci-la saída en dúas columnas.\n" +" -w NÚM --width=NÚM Amosar como moito NÚM [130] columnas de impresión.\n" +" --left-column Amosar só a columna da esquerda nas liñas comúns.\n" +" --suppress-common-lines Non amosa-las liñas comúns." + +#: src/diff.c:861 +msgid "-D NAME --ifdef=NAME Output merged file to show `#ifdef NAME' diffs." +msgstr "" +"-D NOME -ifdef=NOME Amosa-lo ficheiro mesturado con diffs `#ifdef NOME'." + +#: src/diff.c:862 +msgid "" +"--GTYPE-group-format=GFMT Similar, but format GTYPE input groups with GFMT." +msgstr "" +"--GTYPE-group-format=GFMT Similar, pero formata-los grupos de entrada " +"GTYPE\n" +" con GFMT." + +#: src/diff.c:863 +msgid "--line-format=LFMT Similar, but format all input lines with LFMT." +msgstr "" +"--line-format=LFMT Similar, pero formatar tódalas liñas de entrada con LFMT." + +#: src/diff.c:864 +msgid "" +"--LTYPE-line-format=LFMT Similar, but format LTYPE input lines with LFMT." +msgstr "" +"--LTYPE-line-format=LFMT Similar, pero formata-las liñas de entrada LTYPE\n" +" con LFMT." + +#: src/diff.c:865 +msgid " LTYPE is `old', `new', or `unchanged'. GTYPE is LTYPE or `changed'." +msgstr "" +" LTYPE é `old' (vello), `new' (novo) ou `unchanged' (sen cambios).\n" +" GTYPE é LTYPE ou `changed' (con cambios)." + +#: src/diff.c:866 +msgid "" +" GFMT may contain:\n" +" %< lines from FILE1\n" +" %> lines from FILE2\n" +" %= lines common to FILE1 and FILE2\n" +" %[-][WIDTH][.[PREC]]{doxX}LETTER printf-style spec for LETTER\n" +" LETTERs are as follows for new group, lower case for old group:\n" +" F first line number\n" +" L last line number\n" +" N number of lines = L-F+1\n" +" E F-1\n" +" M L+1" +msgstr "" +" GFMT pode conter:\n" +" %< liñas do FICH1\n" +" %> liñas do FICH2\n" +" %= liñas comúns a FICH1 e FICH2\n" +" %[-][ANCHO][.[PREC]]{doxX}LETRA especificación estilo printf para a " +"LETRA\n" +" As LETRAs son como segue para o novo grupo, en minúsculas para o " +"vello:\n" +" F número da primeira liña\n" +" L número da derradeira liña\n" +" N número de liñas = L-F+1\n" +" E F-1\n" +" M L+1" + +#: src/diff.c:877 +msgid "" +" LFMT may contain:\n" +" %L contents of line\n" +" %l contents of line, excluding any trailing newline\n" +" %[-][WIDTH][.[PREC]]{doxX}n printf-style spec for input line number" +msgstr "" +" LFMT pode conter:\n" +" %L contido da liña\n" +" %l contido da liña, excluíndo os saltos de liña finais\n" +" %[-][ANCHO][.[PREC]]{doxX}n especif. estilo printf do número da liña" + +#: src/diff.c:881 +msgid "" +" Either GFMT or LFMT may contain:\n" +" %% %\n" +" %c'C' the single character C\n" +" %c'\\OOO' the character with octal code OOO" +msgstr "" +" GFMT e LFMT poden conter:\n" +" %% %\n" +" %c'C' o carácter C\n" +" %c'\\OOO' o carácter de código octal OOO" + +#: src/diff.c:886 +msgid "-l --paginate Pass the output through `pr' to paginate it." +msgstr "-l --paginate Pasa-la saída por `pr' para paxinala." + +#: src/diff.c:887 src/sdiff.c:198 +msgid "-t --expand-tabs Expand tabs to spaces in output." +msgstr "-t --expand-tabs Expandi-las tabulacións a espacios na saída." + +#: src/diff.c:888 src/diff3.c:452 +msgid "-T --initial-tab Make tabs line up by prepending a tab." +msgstr "" +"-T --initial-tab Facer que as tabulacións queden aliñadas poñendo outra\n" +" tabulación ao principio da liña." + +#: src/diff.c:890 +msgid "-r --recursive Recursively compare any subdirectories found." +msgstr "" +"-r --recursive Comparar recursivamente os subdirectorios que se atopen." + +#: src/diff.c:891 +msgid "-N --new-file Treat absent files as empty." +msgstr "-N --new-file Trata-los ficheiros ausentes coma baleiros." + +#: src/diff.c:892 +msgid "--unidirectional-new-file Treat absent first files as empty." +msgstr "" +"--unidirectional-new-file Tratar ficheiros vellos ausentes coma baleiros." + +#: src/diff.c:893 +msgid "-s --report-identical-files Report when two files are the same." +msgstr "" +"-s --report-identical-files Informar cando dous ficheiros son o mesmo." + +#: src/diff.c:894 +msgid "-x PAT --exclude=PAT Exclude files that match PAT." +msgstr "-x PAT --exclude=PAT Exclui-los ficheiros que coinciden co PATrón." + +#: src/diff.c:895 +msgid "" +"-X FILE --exclude-from=FILE Exclude files that match any pattern in FILE." +msgstr "" +"-X FICH --exclude-from=FICH Excluir ficheiros que coinciden con algún\n" +" patrón do FICHeiro." + +#: src/diff.c:896 +msgid "" +"-S FILE --starting-file=FILE Start with FILE when comparing directories." +msgstr "" +"-S FICH --starting-file=FICH Comezar no FICHeiro ao comparar directorios." + +#: src/diff.c:897 +msgid "" +"--from-file=FILE1 Compare FILE1 to all operands. FILE1 can be a directory." +msgstr "" +"--from-file=FICH1 Comparar FICH1 con tódolos operandos. Pode ser directorio." + +#: src/diff.c:898 +msgid "" +"--to-file=FILE2 Compare all operands to FILE2. FILE2 can be a directory." +msgstr "" +"--to-file=FICH2 Comparar tódolos operandos con FICH2. Pode ser un " +"directorio." + +#: src/diff.c:900 +msgid "--horizon-lines=NUM Keep NUM lines of the common prefix and suffix." +msgstr "--horizon-lines=NUM Manter NUM liñas do prefixo e sufixo comúns." + +#: src/diff.c:901 src/sdiff.c:200 +msgid "-d --minimal Try hard to find a smaller set of changes." +msgstr "-d --minimal Procurar atopa-lo conxunto de cambios máis pequeno." + +#: src/diff.c:902 +msgid "" +"--speed-large-files Assume large files and many scattered small changes." +msgstr "" +"--speed-large-files Asumir ficheiros longos e pequenos cambios dispersos." + +#: src/diff.c:907 +msgid "" +"FILES are `FILE1 FILE2' or `DIR1 DIR2' or `DIR FILE...' or `FILE... DIR'." +msgstr "" +"Os FICHEIROS son `FICH1 FICH2', `DIR1 DIR2', `DIR FICH...' ou `FICH... DIR'." + +#: src/diff.c:908 +msgid "" +"If --from-file or --to-file is given, there are no restrictions on FILES." +msgstr "" +"Se se indica --from-file ou --to-file, non hai restriccións nos FICHEIROS." + +#: src/diff.c:909 src/diff3.c:474 src/sdiff.c:222 +msgid "If a FILE is `-', read standard input." +msgstr "Se un FICHEIRO é `-', lese da entrada estándar." + +#: src/diff.c:920 +#, c-format +msgid "Usage: %s [OPTION]... FILES\n" +msgstr "Uso: %s [OPCIÓN]... FICHEIROS\n" + +#: src/diff.c:949 +#, c-format +msgid "conflicting %s option value `%s'" +msgstr "valor `%1$s' da opción %2$s conflictivo" + +#: src/diff.c:962 +msgid "conflicting output style options" +msgstr "opcións de estilo da saída conflictivas" + +#: src/diff.c:976 +msgid "regular empty file" +msgstr "ficheiro normal baleiro" + +#: src/diff.c:976 +msgid "regular file" +msgstr "ficheiro normal" + +#: src/diff.c:978 +msgid "directory" +msgstr "directorio" + +#: src/diff.c:981 +msgid "block special file" +msgstr "ficheiro especial de bloques" + +#: src/diff.c:984 +msgid "character special file" +msgstr "ficheiro especial de caracteres" + +#: src/diff.c:987 +msgid "fifo" +msgstr "fifo" + +#: src/diff.c:991 +msgid "socket" +msgstr "socket" + +#: src/diff.c:994 +msgid "message queue" +msgstr "cola de mensaxes" + +#: src/diff.c:997 +msgid "semaphore" +msgstr "semáforo" + +#: src/diff.c:1000 +msgid "shared memory object" +msgstr "obxecto de memoria compartida" + +#: src/diff.c:1003 +msgid "typed memory object" +msgstr "obxecto de memoria con tipo" + +#: src/diff.c:1006 +msgid "weird file" +msgstr "ficheiro raro" + +#: src/diff.c:1070 src/diff.c:1256 +#, c-format +msgid "Only in %s: %s\n" +msgstr "Só en %s: %s\n" + +#: src/diff.c:1193 +msgid "cannot compare `-' to a directory" +msgstr "non se pode comparar `-' cun directorio" + +#: src/diff.c:1220 +msgid "-D option not supported with directories" +msgstr "A opción -D non está soportada con directorios" + +#: src/diff.c:1229 +#, c-format +msgid "Common subdirectories: %s and %s\n" +msgstr "Subdirectorios comúns: %s e %s\n" + +#: src/diff.c:1266 +#, c-format +msgid "File %s is a %s while file %s is a %s\n" +msgstr "O ficheiro %s é un %s mentres que o ficheiro %s é un %s\n" + +#: src/diff.c:1345 +#, c-format +msgid "Files %s and %s are identical\n" +msgstr "Os ficheiros %s e %s son idénticos\n" + +#: src/diff3.c:26 +msgid "Written by Randy Smith." +msgstr "Escrito por Randy Smith." + +#: src/diff3.c:328 +msgid "incompatible options" +msgstr "opcións incompatibles" + +#: src/diff3.c:368 +msgid "`-' specified for more than one input file" +msgstr "Especificouse `-' para máis dun ficheiro de entrada" + +#: src/diff3.c:408 src/diff3.c:1232 src/diff3.c:1645 src/diff3.c:1700 +#: src/sdiff.c:305 src/sdiff.c:879 src/sdiff.c:890 +msgid "read failed" +msgstr "fallou a lectura" + +#: src/diff3.c:441 +msgid "-e --ed Output unmerged changes from OLDFILE to YOURFILE into MYFILE." +msgstr "" +"-e --ed Producir cambios sen mesturar de FICHVELLO a TEUFICH en MEUFICH." + +#: src/diff3.c:442 +msgid "-E --show-overlap Output unmerged changes, bracketing conflicts." +msgstr "" +"-E --show-overlap Amosar cambios sen mesturar cos conflictos entre " +"corchetes" + +#: src/diff3.c:443 +msgid "-A --show-all Output all changes, bracketing conflicts." +msgstr "" +"-a --show-all Amosar tódolos cambios, cos conflictos entre corchetes." + +#: src/diff3.c:444 +msgid "-x --overlap-only Output overlapping changes." +msgstr "-x --overlap-only Amosa-los cambios que se superpoñen." + +#: src/diff3.c:445 +msgid "-X Output overlapping changes, bracketing them." +msgstr "-X Amosa-los cambios que se solapen, poñéndoos entre corchetes." + +#: src/diff3.c:446 +msgid "-3 --easy-only Output unmerged nonoverlapping changes." +msgstr "-3 --easy-only Amosar cambios non solapados e non mesturados." + +#: src/diff3.c:448 +msgid "-m --merge Output merged file instead of ed script (default -A)." +msgstr "" +"-m --merge Amosa-lo ficheiro mesturado no canto dun script en ed [-A]." + +#: src/diff3.c:449 +msgid "-L LABEL --label=LABEL Use LABEL instead of file name." +msgstr "-L ETIQ --label=ETIQ Usa-la ETIQueta no canto do nome do ficheiro." + +#: src/diff3.c:450 +msgid "-i Append `w' and `q' commands to ed scripts." +msgstr "-i Engadi-los comandos `w' e `q' aos scripts en ed." + +#: src/diff3.c:453 src/sdiff.c:202 +msgid "--diff-program=PROGRAM Use PROGRAM to compare files." +msgstr "" +"--diff-program=PROGRAMA Emprega-lo PROGRAMA para compara-los ficheiros." + +#: src/diff3.c:465 +#, c-format +msgid "Usage: %s [OPTION]... MYFILE OLDFILE YOURFILE\n" +msgstr "Uso: %s [OPCIÓN]... MEUFICH VELLOFICH TEUFICH\n" + +#: src/diff3.c:467 +msgid "Compare three files line by line." +msgstr "Comparar tres ficheiros liña a liña." + +#: src/diff3.c:673 +msgid "internal error: screwup in format of diff blocks" +msgstr "erro interno: fallo no formato dos bloques diff" + +#: src/diff3.c:971 +#, c-format +msgid "%s: diff failed: " +msgstr "%s: diff fallou: " + +#: src/diff3.c:993 +msgid "internal error: invalid diff type in process_diff" +msgstr "erro interno: tipo de diff non válido en process_diff" + +#: src/diff3.c:1018 +msgid "invalid diff format; invalid change separator" +msgstr "formato de diff non válido; separador de cambios non válido" + +#: src/diff3.c:1242 +msgid "invalid diff format; incomplete last line" +msgstr "formato de diff non válido: derradeira liña incompleta" + +#: src/diff3.c:1265 src/sdiff.c:273 +#, c-format +msgid "subsidiary program `%s' not executable" +msgstr "o programa subsidiario `%s' non é executable" + +#: src/diff3.c:1268 src/sdiff.c:276 src/util.c:298 +#, c-format +msgid "subsidiary program `%s' not found" +msgstr "non se atopou o programa subsidiario `%s'" + +#: src/diff3.c:1272 src/sdiff.c:268 src/util.c:301 +#, c-format +msgid "subsidiary program `%s' failed" +msgstr "fallou o programa subsidiario `%s'" + +#: src/diff3.c:1294 +msgid "invalid diff format; incorrect leading line chars" +msgstr "formato de diff non válido: caracteres a principio de liña incorrectos" + +#: src/diff3.c:1370 +msgid "internal error: invalid diff type passed to output" +msgstr "erro interno_ tipo de diff non válido pasado á saída" + +#: src/diff3.c:1647 src/diff3.c:1704 +msgid "input file shrank" +msgstr "o ficheiro de entrada encolleu" + +#: src/dir.c:162 +#, c-format +msgid "cannot compare file names `%s' and `%s'" +msgstr "non se poden compara-los ficheiros `%s' e `%s'" + +#: src/sdiff.c:35 +msgid "Written by Thomas Lord." +msgstr "Escrito por Thomas Lord." + +#: src/sdiff.c:183 +msgid "-o FILE --output=FILE Operate interactively, sending output to FILE." +msgstr "" +"-o FICH --output=FICH Operar interactivamente, mandando a saída ao " +"FICHeiro." + +#: src/sdiff.c:185 +msgid "-i --ignore-case Consider upper- and lower-case to be the same." +msgstr "" +"-i --ignore-case Ignora-las diferencias entre maiúsculas e minúsculas." + +#: src/sdiff.c:188 +msgid "-W --ignore-all-space Ignore all white space." +msgstr "-W --ignore-all-space Ignorar tódolos espacios en branco." + +#: src/sdiff.c:194 +msgid "-w NUM --width=NUM Output at most NUM (default 130) columns per line." +msgstr "-w NÚM --width=NÚM Amosar como moito NÚM [130] columnas por liña." + +#: src/sdiff.c:195 +msgid "-l --left-column Output only the left column of common lines." +msgstr "-l --left-column Amosar só a columna da esquerda nas liñas comúns." + +#: src/sdiff.c:196 +msgid "-s --suppress-common-lines Do not output common lines." +msgstr "-s --suppress-common-llines Non amosa-las liñas comúns." + +#: src/sdiff.c:201 +msgid "" +"-H --speed-large-files Assume large files and many scattered small changes." +msgstr "" +"-H --speed-large-files Asumir ficheiros longos e pequenos cambios " +"dispersos." + +#: src/sdiff.c:214 +#, c-format +msgid "Usage: %s [OPTION]... FILE1 FILE2\n" +msgstr "Uso: %s [OPCIÓN]... FICH1 FICH2\n" + +#: src/sdiff.c:215 +msgid "Side-by-side merge of file differences." +msgstr "Mestura en dúas columnas das diferencias entre os ficheiros." + +#: src/sdiff.c:327 +msgid "cannot interactively merge standard input" +msgstr "non se pode mestura-la entrada estándar interactivamente" + +#: src/sdiff.c:588 +msgid "both files to be compared are directories" +msgstr "ámbolos dous ficheiros a ser comparados son directorios" + +#: src/sdiff.c:853 +msgid "" +"ed:\tEdit then use both versions, each decorated with a header.\n" +"eb:\tEdit then use both versions.\n" +"el:\tEdit then use the left version.\n" +"er:\tEdit then use the right version.\n" +"e:\tEdit a new version.\n" +"l:\tUse the left version.\n" +"r:\tUse the right version.\n" +"s:\tSilently include common lines.\n" +"v:\tVerbosely include common lines.\n" +"q:\tQuit.\n" +msgstr "" +"ed:\tEditar e usar ámbalas dúas versións, cada unha cunha cabeceira.\n" +"eb:\tEditar e usar ámbalas dúas versións.\n" +"el:\tEditar e logo usa-la versión da esquerda.\n" +"er:\tEditar e logo usa-la versión da dereita.\n" +"e:\tEditar unha nova versión.\n" +"l:\tusa-la versión da esquerda.\n" +"r:\tusa-la versión da dereita.\n" +"e:\tEditar unha nova versión.\n" +"s:\tInclui-las liñas comúns silenciosamente.\n" +"v:\tInclui-las liñas comúns faladoramente.\n" +"q:\tSair.\n" + +#~ msgid "" +#~ "SKIP values may be followed by the following multiplicative suffixes:\n" +#~ msgstr "" +#~ "Os valores de N poden ir seguidos polos seguintes sufixos " +#~ "multiplicativos:\n" + +#~ msgid "kB 1000, K 1024, MB 1,000,000, M 1,048,576,\n" +#~ msgstr "kB 1000, K 1024, MB 1.000.000, M 1.048.576,\n" + +#~ msgid "GB 1,000,000,000, G 1,073,741,824, and so on for T, P, E, Z, Y.\n" +#~ msgstr "GB 1.000.000.000, G 1.073.741.824 e así para T, P, E, Z e Y.\n" + +#~ msgid "Report bugs to .\n" +#~ msgstr "Informe dos erros a .\n" + +#~ msgid "context length specified twice" +#~ msgstr "a lonxitude do contexto especificouse dúas veces" + +#~ msgid "multiple `--from-file' options" +#~ msgstr "opcións `--from-file' múltiples" + +#~ msgid "multiple `--to-file' options" +#~ msgstr "opcións `--to-file' múltiples" + +#~ msgid "--inhibit-hunk-merge Do not merge hunks." +#~ msgstr "--inhibit-hunk-merge Non mesturar anacos" + +#~ msgid "regular empty executable file" +#~ msgstr "ficheiro normal executable baleiro" + +#~ msgid "regular executable file" +#~ msgstr "ficheiro normal executable" + +#~ msgid "If a FILE is `-', read standard input.\n" +#~ msgstr "Se un FICHEIRO é `-', lese da entrada estándar.\n" + +#~ msgid "--ignore-initial value must be a nonnegative integer" +#~ msgstr "O valor de --ignore-initial debe ser un enteiro non negativo" + +#~ msgid ": not found\n" +#~ msgstr ": non atopado\n" + +#~ msgid "column width must be a positive integer" +#~ msgstr "o ancho da columna debe ser un enteiro positivo" + +#~ msgid "conflicting group format" +#~ msgstr "formato de grupo con conflictos" + +#~ msgid "conflicting line format" +#~ msgstr "formato de liña con conflictos" + +#~ msgid "context length must be a nonnegative integer" +#~ msgstr "a lonxitude do contexto debe ser un enteiro non negativo" + +#~ msgid "horizon must be a nonnegative integer" +#~ msgstr "o horizonte debe ser un enteiro non negativo" diff --git a/src/apps/bin/diffutils-2.8.1/po/he.gmo b/src/apps/bin/diffutils-2.8.1/po/he.gmo new file mode 100644 index 0000000000000000000000000000000000000000..c9cc2f33eca2b9b2073f588f084cd764df00571d GIT binary patch literal 23365 zcmb`O4RBo7b>E*IE4Cmfwq;3{CEL291cDUzEdfw6DNvBa50Hce0u%t6A}QKf01v>L zz%H~O0x8u^?bJ;iJ9g5<`Di{GCym`UcH+3n^kZ6Q(x#JsOeaa3&Uo6Sg9Y{xTw$^J zFhnf2?M#2?-urgnE*2Ey=^I}B_q})Tx%ZxX?m6e4clgzJ-TS{BbNwOk5y!dfPr!A@ zxo6rueqTHIw;ktw9gg#kS@7H3|E}YF;8E}t_~&4+N7m)rxd>{Bc2o34y!|>8M3;r?qqT@XDJ`g$& zT?U!cLq8AF&qMMax(~k>JP1Nl`11XWe(1>;B|}t0;JzZw?O8*hp{<_z!dlx_;rwZ?)gt3@& z|4-0|!@DO~D;dud!xp7KxtDpo7ZiEe1O6iTB>1mDXg#qCvR((M;|zgELFRHm<}E1v z?g0M?r2T<)5V?-Xc%A@7t{G2c3Pk=QZ-A^z62pu8bExxFTl?eBNRV zg|F*SUv&^d|T&@PC8!eGriO9lRf8d=r0O4uJXF=xE@nw*4cl;8_+I4&j{88`^K={$|??B|F!42?H zrX>7g+?_|k4}urK7Vs(v{Z913J6Mm-ALkxkANr=_yz`wbvCQW$9p~e7;3>yB+y}DX z4*wj;d=JaIK=bfhAblKx7t+s>7eNJ1g3Rs6PlC`t^3N^Ko99n6Cs~B2kAMfjDUdz% z^v{E=#nUn`!M_4~9jA-6)7TF_&Asq}zPkP^2tSW9chP%CS##$w_$BZR_$S~=R1iEC zz4OcogkJZX=J~TvfhSN&uY*0HtS|JQlW{2!nnL$E znTO!FLHd2J44y@Wi=4y5=f4QTx97hHLjTx(An%TS3WWZ#UjrHcu^h;}kIVXTe|!vN z9ghDB_&m74y7BD9W88Pq)lYzo@#Mb+p?6aHeU_nq++r4lPLJ@FarG3z>yVUnqu#0C z0U6gRneQ`90T~kgeOmg3#_8X(&;JK_0u~9sj)0fV^E0w;@Z*fgJLB$^dBMltPlC|z z{RYT5dvAcWf8kLO`Y(7O{CYw5JMCXsVP5ZMY1xCa{(bb}JP3|}4}pwXqx1)F`hE|j zpT7SHeiT--cjWn5X|F(dEbq@=1&@I;f4RQ}KI}OCj6vx2%RFe?&wh}7(*FhUF;Lcn z{`>zJ`~WEPzXuflJph(L=nSw2o%_K9;QK-PlJN|PynPIu1)m1L0{(kY#!H=Za^DIH z-|hmpKz^V5zu@DJ^U|Mz`@v0+J_eyB{SLCXH1=2&xn+EVX>cF-d60D+{9TZF3@(Gn z#}G6ecsC^N81InGM{o^fUl0Ed z`5oXg{-JwO*5MJyxkQoqTzU?q{-u||_kdTxcYzZi^SN{tgzlwR!5;!Y z555=t0?0fr{Q`)5UXt-5H<$hhWIZqaPY}Lel5xX_%d)@V!)3-S{ar?O9N|HVGDrDG z6uAyipr@~C{?fPfE40P$7MXKCMfnUxu5VL@^e^-0Zvisa-=|Db{tkulI>J}E`Y9JF zGX8%+k#WI)(P_?Wlx|9lBJ27q6uExOfb)~!Pg9t;^LvzcQ=Xw956<%x;ll+3{e>(q!A~Gl!``7s#Wn6CTb+5%s;6U)uqR8ww8=n0`?q8-1 zQw~vHr2GzLgz^WJB&C<~Wy()bT2aZgdlQKsLW{XL`9 zbUfju)kG>eqfYhq^>i5G&+d59X(FUFEHGs%R?Buz6FON{GZw%%p;%H<2aCx_2m zxg5QGZm{RXl`C(IC$GKynZBOk;hsUIW>fJ*X2MNpt~0sxtT(16gfIH7?n>F4w2GxX z6=RIa>FMO0U`i#tIW?I|W@jUcXE0?fmiF|Ur-Nl=o^jo`O%i(s13sL5J=IW`D=Sv$b~}VY9)7xs^?% zys_kDBL2EpWtm}+VMEjRdOj_V>uQ;D^=@|A+cU9Dw^oyCC_WRPj-?`M6nQmo0s+(_ zted2j)_Bq)3NbC0t_Vs%OYg*{w5-rqw}T}m4TRKaJP}J>S8C9Ujcci$OT{yu8jodS zDxOgG^$bc@YKySCv#I1{DmK%7ZgAlA;4zfJd9+e+gQ`Sn&WbjhKnT;)O7yNPce(@D z%_Pm;Xc8?hS}{Hm_r}8&yUi|ACoCy*3vEOYiSkk?;xs$eJRd`xMj?*yvqYI>>bmqg zF)mXOyNb(n^p2ln5y@&>|U$>XH(up{F)wo zIy=EnArhZVBvbI8X}O8mjOS|Qta|lhqp9bnyoBY3Xf(|Msj8WBXR9akt*NqxwM!&- z8^wuaA{`$OEXHle!7OIb4gsTL%07^#mU*&1-nff|PMXQ4l{%JAv;DCsJTt4Tc{3yW zJ3SW5V87WSX~<%pwOZ9PPG?f_SvOGd?pO*{DvxS9e=L?t#bXdnd6{e~p-@+P@-hx9 zG+Ht`RaG*=0uk8hPAeImEJHKN$R^@OQqYI7X%{PCvYvs#^=O7-nx~ zHY0L%NGaF#V(IH{GBM4@u>zJ&%y_V49QGxWuX(BI*zBw^VCz2VJ&d$yzQyC_$wNtSB z;$GTuO;=`*WMZSPcWpL?OtPYlqaM$CvT#(w6|j})NfXfQvh1v~tjcQ3+g3xEg-_=`c&Vs<30FEE<0<~o9?!^qDjrqcp{w< zm5fJG)f+VImnORkEc!MqszX{oY9?f2DG@6z=Xwjt-s72BIZ>lXPo1_3ttR~r3zc{x zo{6(zWU18I*j3hzy?|G({;oIcC5$sCFKKx}w={x)u%l06V_ub4BK~tzVsZ3y z>c3oF=O){zZmH4GGrEBuKI1c~uyQ+F!F{W64>Jt8vH~ev6xh z*!h4Ms!(k2of5OvYt)1lT7m! z96!fJ8BN4F=*5f)!-}Roy?l0ESr7ymaihIepqLr%(qmXNk&wpMjT+0GL5Zcsm@-M-_VImH&*c*_o8apQN3Qu)pl2(4UPLjV;muwdKy2YDTP2u#ZWco z?BONG&>IM=Ry4uM%``qnH?U%4u1$9}@@kuQip2dAK2;|zwjr+MC=?p9)fe67ag$?H z?MM`uc|)V4OPXNitFsT2vTq$1D~j}a6B+izban>QVwXc(X5oUoWWf3*`_KAw+Cnm5 z-F`MUi3^MZQs-i6CPk}c;4^aeo}5x6v#Bt>j(2t7E4LX($Yfsa1$Qf50 zu(HOV6isLN9p2e9G6ijZt2DyKIAjH?tgdZy_t<_0!n9pCHHKeS6UM<4L%~_X`f&-> z*L${Ct8uMWy6tV?VT)pv-C`aGipRt~qyxhft5pZY181g4D?ix4uX)qgBWx3+`UC!% z)(r7gp)i_?dlS_`>LtSD!0(jRu!cKS$1!9^-dHx3hO(SZ>`(kHmQWuqw6B>R4OuBB zoK1|=98S0{2Te9DKhikpZ2y2c_$^|!kE-i&k06S7Esh_PiDj}l{rGc1bL<$Njf)SR z$i&C6dBzAZ6nSoJWoAwkg|@kzc0!v@4?vtFj=E`NQ({Pg%XTt}hln;YBGw>~dcfKV z8W$rAogVRsP)Txw2x@bq_o^Yla9@*2B8SGe8ZdN&`*>m^Nu4>VWA(_L*x)&(4@Is! z7az||nG=$w9LPzXz3DjAzTa-Mv_dwtvZdc^(yuk+_3m;L+pg=MJEld{TJmmvyQ>Z7 zEsgNOWtGQ0tfITjDf=xCA_qd5501 z=xRECCfh@%$rh~c)}5~dKJ`w({#rbO&|dXqDLqc2ZxRvN%My*HB$D_Ka&XmNis%SE z_MxZ)rI`LL?M7TZm6>>20@)GT;JTw$664}fSmV~%Vz+8GDmThm5JCh8#Xvi~_AyR~ z4Uvx#(oHJ~DAZmOJ&tLAs#-1dPKRX04}Im0S3XmHj+Pqpw9B6ICbJys>d?lbw~%dNagcXg(Foa(Wqe`jf`vk{>pnt56`~QP^{hyrHw#;=~J??2i5i zbMsCmpN4N3)Y!oj$`4cQTQ6vzhpG`gwju zlc~vPqmK4itnHQ$3OH3JFpm{R=0(?=d$Hv+xZLqs4(o6pb7ewAUb?I0>T%W4-rgQj zFM^#(lc3@S(`zCp#iXq_s$TIw>M39|wjb z>Rd$iMAW5-x@bn+p{p3zNrYF1X+8u9yR}W%MnvM*@KpQOvax6#R-eWlu?rOT5vi9Q z!&gi@!xB!jaX>N2o{dcP52y>r1_zJz4_{;#aj0hm9Gb)cV-{xOgoZQ&r(<)`mW#HhQTw3omMnO5hrqpX4Ii{tL6 zy=coRn1novmtw-I5`2h_VmO5kP8)&*F(U41l%9~*N=Ek6xH>U#?qYBM>8LXte2<>M;EKe?fGW6t?H=Ofn0%TgVUmiF&+&j>J1x2bAkyW}ax2kezT{4IxfbbL$JqoUZY!UKf&dr7mmEzer@f4KR3+(4#WT07 zl0~ARFs6hE729f&?V5xTfRL!B$fQK2Mc|y#=_HC?hry9z^GE{Y@=I$eln+}>j5h;E zoRftdR6)HVbE>ALe$Znxvt6oZ z;FKsRQPmtIbp%sXB)i3aCDKaO_86*Q+*wSfd?+YrMvDPLN*c^Z5rj{Y4uBmIoYR__PQ~D?{-|PBW+Fb3bm9puRhjr`Xh~{vOO%-1bd_o-QNrj(!*wCq zEHV39JT8^FJ}a^=rb6t-r{v)sw3x-QVXZJAMlN|%4m+FV=%?YOlSYSnKt`NqIb2Q<6_Z=zfm<=+ zc*H?5E+0IDkqBq(_i|^q*D@jR8bJt-;VA6eRnsvDN8C;QHB4(;6CVwfnrw;2(a(8t zOrM^o`TS~`axRsW*}1*rF8f&=a`S;-yQ``*dN|tA-g0hW*gYX1u6XU9M9Foj&i3|B zxBW@C{VCP)WLHPK+kT{7D!PMs+CrwT-XXW+5KX$CeCj|uEnE7?6mju;61Y2v8A^RR zt}em!O!{g(uAcFx1QHBYF;ML(zf3biD?sh%czN~%!2 zxkZPI{+23kRBP%qC#NaNw|&@UW~ApMDFXF<2F>-k+%2h!U-q{d-7~va>kL(U)>PAO zqw5<-(=9?}v*K^psC84#W<8bt+y?s#!!V&%{k4VloT}XL%S$CX-8GS?E+>(d1V|nXebnrqg6c?S=G*XNI zxl*{5+sdoeLQd`~Km?SDmsD{nuL{VBB=X!@?YhjXYFkyl%vRiwCQ zZCOIQyX1K}QJtY>NEzu5k&>OYgOaXQpD`vhnktBBp*+8aNUv_97*)=%EcD_Sfpltm2v zP0_9el*_i-+N?6v-71t7lB)b-VSbr* z<@F{08plD;D5r{>H-pjal0qh93SZF$|3;yt=8Hw)&gP~MO?37)H-^7jU>kDEoG=CX zEgNR5P~2R@Wn3+-tB7r#XX~(ejnun!`DJx9q7`3ew~|LrQ8m@xOKPRKQDK>O%P@25 zlEB=WSS*&2i%700##79(mJ^c0cIKEl><-Za+KHov(brhUuP}q%*{@T}s#-&bh&kL;Gt26yrh+RfoJY5@p8i%TXEJbDq(E^uPcjP;+g0lE zl&rMZC!B@aG6=oNtT$#?8A~D>ytt&L>UQ~O4Wx_%T3FjOD~}tsQgB5E${YjKj`Xwo z)-o3H+*fl&wRCe^wwef0O=z0tpzWXm8LsGxD08-1ZO7K_)t4R7EwGs>>-AkJgx0sD zcNhG#?x!N3P3nu(?nqB_bcdlo(VOdAHcXL#*FPdq`H>&l*+mN`fGb$ zd~g>90o-dZwSl}bnphxyW-w2M=^JR`zl~Q55Y>a%6wC32aI&Wfri}TgYG>-iCI}fpe zoyxS@T1JY!!7uQUhOmFsOq(|*xH-&FOTC;t-`>yK(cJP$gG{*M6J}w>aQ||O8VPYl&^DjruU`JD*o2s@BGSm9&iPTYSaw9}Ky86w3Bx~}% z`JdduJ+FY%)TgIn}zMAIw89av8NQb07j@4d5Q!=;|6X^XOuZU_^etaI2t$k>ctfm6_nJGV*3wbd4mS zVlFEMvUg>hV0{+@63sK|oSH4p>WF{sCLh&+d+uktIsbrH&UM@-t^@p z<2Gj4?PzYt!$u+|!#-Ls7dYVsK6W_SZnvgz)|g`vqnZ!WGzX6}G7foB?IVLO*a0hg zy!u#Ll|^HLcc$g-K89c(!KtIphuM*r2c4+o+F6(N_AZSguTLtoDMERAbwi2zH`L;- zq5?$MmNrzO!ns+b>rKDBLDL;sdl*glCWk)FjF1CiH<)hVd>-kVc!hTBxzhO1&JD*u5=A zCQJZUS0%iN-yqt^VQToe61+5T^4qA|=C4AHM#KY^ED_1D)8SQqXtz}7;7Pod2SJXW z+)9IL4&O>%*Bz43BJt58f8<|9MpRU*$P6l@#R&{SUMht`t}VCYh#318Ct$a9J0uDO z&mp%^lH;K&+#tGEi#9R3x?q!urLOvzrj^FCWMPfytHc)GLgqMy6A+7V{`7Cz$f?Yf zgb4y2W`;W`*l{%gQRppHgZ2{MsuC7T5~r9&W68OFtJKwJN=3y*?Mdn%#)$9mMcM_uw`PpOhP|4{gsPEhfTMp zmlb~r9g2{cw&lfzyrX{>!c|xO^70L$aixVd$9Ss2C!75It&*&-V-A}{XRsODi%YI3 zF8NwOoW#yGL{J~>5rdp~A)10@gcKH0hl^XB7Z`p8r=V^O@;0}O*%JxXj$_^H=q|~6 zsv>@Y9J3|Xj_hdVTUf*h716BoYfi)Rg>Tt=#8n8Q_$6FKwX$LU3qxTU9fhQz!9={9 z>IM}F=kL{}_Nja=tC0C%+(PnOuc&poEI(J@I`+>0>?pN=tP2{5-zd zaP(lT^K0ymmH7%^OR5dkTZK(j%gS=aU%t_t`?88ro26%C5bR^T)`(x6XMSsiHG=jx z{c>Sbl`#m;$SZB)k22oX^<~scQyGkk`=@ecwXsOpu7cUc1xD8eseao9Ic(+E*(J4) z3i6T1;Yj4JG6f_?;(M>`6Di)e?fmiR=0iRMhwcfBmg=sr zxWQ-S5LIpTY6H~if(VrkA7fVZM>+d74|}D}*_)_gX1i|uC+-~aAazcGIiKs7vf1T} zszcCTDr?J>BY?|H%?mwSQU%3nQz~Df8u2yU46Q^ty7}|#W&BF*q?+*Qjd>(Td{t5e zO|zZCcKc@fn7y-+BC5hS*=;3V2Ep1;Z~D;Itl27Y#@(CILgu#nRlvBTx-i|kXYGf# z$a(zs&6*9jg)zQuvz^0j;S|@j*(wJ;)M}xalW%I_yb_{|`4$dcO`9oPbS~VkXY?i z@ljWGRamLDO^hL5^(*s*g>5aiI2HI4cT`=c{}nd)wq^qv`6ZUG8Q~zm(QX{0738p? zM$oiB$L4$ z=$hBI6%3_{{-R{lgqqgJ1c$%M+G!Bgs}9;65XJYgi!CFlDg!6%<5v8QMSS%#-nD73 z<$^DMfmBEwf+&u7N?ND5a-<=A6$nS(5oZNAk?$_(q&yK6LT0!@)z4bu0^zdLe`!hQ zfj9_aneQsvU6Ai_T2Jdgd~z+VJKxs{ReG3;k5`2p?BCehcA&IQPDW+BP+V}Vj@{H} z8oU~rz3xf^Kb2c$+^AI?-(?OGw>T!s2xRf<>M;`I)HggfUSUNa!p--(zCeX4@y=!A b;G>AAESYQdBP|oCGgHdv3fdzSx9I-?pex7& literal 0 HcmV?d00001 diff --git a/src/apps/bin/diffutils-2.8.1/po/he.po b/src/apps/bin/diffutils-2.8.1/po/he.po new file mode 100644 index 0000000000..1f1ed4a925 --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/po/he.po @@ -0,0 +1,907 @@ +# Hebrew messages for GNU Diffutils -*- coding: hebrew-iso-8bit -*- +# Copyright (C) 2001, 2002 Free Software Foundation, Inc. +# Eli Zaretskii , 2001, 2002. +# +msgid "" +msgstr "" +"Project-Id-Version: diffutils 2.7.10\n" +"POT-Creation-Date: 2002-04-05 14:10-0800\n" +"PO-Revision-Date: 2002-03-13 20:45+0200\n" +"Last-Translator: Eli Zaretskii \n" +"Language-Team: Hebrew \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=ISO-8859-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: lib/c-stack.c:188 +msgid "program error" +msgstr "úéðëúá äøåîç äì÷ú" + +#: lib/c-stack.c:189 +msgid "stack overflow" +msgstr "úéðñçî úùéìâ" + +#: lib/error.c:128 lib/error.c:156 +msgid "Unknown system error" +msgstr "ääåæî-éúìá äì÷ú" + +#: lib/freesoft.c:27 +msgid "" +"This program comes with NO WARRANTY, to the extent permitted by law.\n" +"You may redistribute copies of this program\n" +"under the terms of the GNU General Public License.\n" +"For more information about these matters, see the file named COPYING." +msgstr "" +" .úàæ øéúî ÷åçäù äîë ãò ,àåäùìë úåéøçà áúëá äååìî äðéà åæ úéðëåú\n" +".GNU General Public License ïåéùøä éàðúì íàúäá åæ úéðëåú õéôäì íëúåëæ\n" +" .COPYING õáå÷á åðééò ,åìà íéðéðòá èåøéô øúéì" + +#: lib/getopt.c:693 +#, c-format +msgid "%s: option `%s' is ambiguous\n" +msgstr "%s úéðëú øåáò éòîùî-ãç åðéà `%s' ïééôàî\n" + +#: lib/getopt.c:718 +#, c-format +msgid "%s: option `--%s' doesn't allow an argument\n" +msgstr "%s úéðëú øåáò èðîåâøà ìá÷î åðéà `--%s' ïééôàî\n" + +#: lib/getopt.c:723 +#, c-format +msgid "%s: option `%c%s' doesn't allow an argument\n" +msgstr "%s úéðëú øåáò èðîåâøà ìá÷î åðéà `%c%s' ïééôàî\n" + +#: lib/getopt.c:741 lib/getopt.c:914 +#, c-format +msgid "%s: option `%s' requires an argument\n" +msgstr "%s úéðëú øåáò èðîåâøà áééçî `%s' ïééôàî\n" + +#: lib/getopt.c:770 +#, c-format +msgid "%s: unrecognized option `--%s'\n" +msgstr "%s úéðëú øåáò `--%s' ääåæî-éúìá ïééôàî\n" + +#: lib/getopt.c:774 +#, c-format +msgid "%s: unrecognized option `%c%s'\n" +msgstr "%s úéðëú øåáò `%c%s' ääåæî-éúìá ïééôàî\n" + +#: lib/getopt.c:800 +#, c-format +msgid "%s: illegal option -- %c\n" +msgstr "%s: é÷åç-éúìá ïééôàî -- %c\n" + +#: lib/getopt.c:803 +#, c-format +msgid "%s: invalid option -- %c\n" +msgstr "%s úéðëú øåáò éåâù ïééôàî -- %c\n" + +#: lib/getopt.c:833 lib/getopt.c:963 +#, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "%s: èðîåâøà áééçî ïééôàî -- %c\n" + +#: lib/getopt.c:880 +#, c-format +msgid "%s: option `-W %s' is ambiguous\n" +msgstr "%s úéðëú øåáò éòîùî-ãç åðéà `-W %s' ïééôàî\n" + +#: lib/getopt.c:898 +#, c-format +msgid "%s: option `-W %s' doesn't allow an argument\n" +msgstr "%s úéðëú øåáò èðîåâøà ìá÷î åðéà `-W %s' ïééôàî\n" + +#: lib/regex.c:1367 +msgid "Success" +msgstr "äçìöä" + +#: lib/regex.c:1370 +msgid "No match" +msgstr "äîéàúî úæåøçî äàöîð àì" + +#: lib/regex.c:1373 +msgid "Invalid regular expression" +msgstr "éåâù éøìåâø éåèéá" + +#: lib/regex.c:1376 +msgid "Invalid collation character" +msgstr "òåãé-éúìá øåãéñ åú" + +#: lib/regex.c:1379 +msgid "Invalid character class name" +msgstr "íéåú úöåá÷ ìù øëåî-éúìá íù" + +#: lib/regex.c:1382 +msgid "Trailing backslash" +msgstr "`\\' éøåçà ïñëåìá íééúñî éøìåâø éåèéá" + +#: lib/regex.c:1385 +msgid "Invalid back reference" +msgstr "íãå÷ éåèéá-úúì äéåâù äééðôä" + +#: lib/regex.c:1388 +msgid "Unmatched [ or [^" +msgstr "âåæ-ïá åì ïéàù [^ åà [" + +#: lib/regex.c:1391 +msgid "Unmatched ( or \\(" +msgstr "âåæ-ïá åì ïéàù \\( åà (" + +#: lib/regex.c:1394 +msgid "Unmatched \\{" +msgstr "âåæ-ïá åì ïéàù \\{" + +#: lib/regex.c:1397 +msgid "Invalid content of \\{\\}" +msgstr "\\{\\} êåúá éåâù äðáî" + +#: lib/regex.c:1400 +msgid "Invalid range end" +msgstr "íéåú íåçú ìù äéåâù äøãâä" + +#: lib/regex.c:1403 +msgid "Memory exhausted" +msgstr "ïåøëæä øîâð" + +#: lib/regex.c:1406 +msgid "Invalid preceding regular expression" +msgstr "íéé÷ åðéà åà éåâù íãå÷ éøìåâø éåèéá" + +#: lib/regex.c:1409 +msgid "Premature end of regular expression" +msgstr "éãî íã÷åî íééúñî éøìåâø éåèéá" + +#: lib/regex.c:1412 +msgid "Regular expression too big" +msgstr "éãî áëøåî åà ìåãâ éøìåâø éåèéá" + +#: lib/regex.c:1415 +msgid "Unmatched ) or \\)" +msgstr "âåæ-ïá åì ïéàù \\) åà )" + +#: lib/regex.c:8034 +msgid "No previous regular expression" +msgstr "íãå÷ éøìåâø éåèéá ïéà" + +#: lib/xmalloc.c:63 +msgid "memory exhausted" +msgstr "ïåøëæä øîâð" + +#: src/analyze.c:809 src/diff.c:1283 +#, c-format +msgid "Files %s and %s differ\n" +msgstr "äæî äæ íéðåù `%s'-å `%s' íéöá÷ä\n" + +#: src/analyze.c:812 +#, c-format +msgid "Binary files %s and %s differ\n" +msgstr "äæî äæ íéðåù `%s'-å `%s' íééøðéá íéöá÷\n" + +#: src/analyze.c:1058 src/diff3.c:1413 src/util.c:526 +msgid "No newline at end of file" +msgstr "õáå÷ä óåñá äùãç-äøåù åú øñç" + +#: src/cmp.c:43 +msgid "Written by Torbjorn Granlund and David MacKenzie." +msgstr ".David MacKenzie-å Torbjorn Granlund é\"ò áúëð" + +#: src/cmp.c:118 src/diff.c:817 src/diff3.c:427 src/sdiff.c:168 +#, c-format +msgid "Try `%s --help' for more information." +msgstr ".øúåé áø òãéî úâöäì `%s --help' ùé÷äì äñð" + +#: src/cmp.c:137 +#, c-format +msgid "invalid --ignore-initial value `%s'" +msgstr "--ignore-initial ïééôàî øåáò `%s' éåâù êøò" + +#: src/cmp.c:146 +msgid "options -l and -s are incompatible" +msgstr "äæ úà äæ íéøúåñ -s-å -l íéðééôàîä" + +#: src/cmp.c:154 src/diff.c:826 src/diff3.c:435 src/sdiff.c:177 +#: src/sdiff.c:313 src/sdiff.c:320 src/sdiff.c:910 src/util.c:194 +#: src/util.c:286 src/util.c:293 +msgid "write failed" +msgstr "äáéúëá äì÷ú" + +#: src/cmp.c:156 src/diff.c:828 src/diff.c:1354 src/diff3.c:437 +#: src/sdiff.c:179 +msgid "standard output" +msgstr "éð÷ú èìô õåøòì" + +#: src/cmp.c:160 +msgid "-b --print-bytes Print differing bytes." +msgstr " .íéäæ íðéàù íéúá âöä -b --print-bytes" + +#: src/cmp.c:161 +msgid "-i SKIP --ignore-initial=SKIP Skip the first SKIP bytes of input." +msgstr " .èì÷ä ìù íéðåùàø íéúá N ìò âìã -i N --ignore-initial=N" + +#: src/cmp.c:162 +msgid "-i SKIP1:SKIP2 --ignore-initial=SKIP1:SKIP2" +msgstr "" +" -i N1:N2\n" +" --ignore-initial=N1:N2" + +#: src/cmp.c:163 +msgid "" +" Skip the first SKIP1 bytes of FILE1 and the first SKIP2 bytes of FILE2." +msgstr ".éðùä õáå÷á íéúá N2 ìòå ïåùàøä õáå÷á íéúá N1 ìò âìã" + +#: src/cmp.c:164 +msgid "-l --verbose Output byte numbers and values of all differing bytes." +msgstr ".íéäæ íðéàù íéúáä ìë ìù ãå÷å éøåãéñ 'ñî âöä -l --verbose" + +#: src/cmp.c:165 +msgid "-n LIMIT --bytes=LIMIT Compare at most LIMIT bytes." +msgstr " .íéúá N øúåéä ìëì äååùä -n N --bytes=N" + +#: src/cmp.c:166 +msgid "-s --quiet --silent Output nothing; yield exit status only." +msgstr " .ãáìá äàéöé ãå÷ ÷ôä ;èìô àìì -s --quiet --silent" + +#: src/cmp.c:167 src/diff.c:904 src/diff3.c:455 src/sdiff.c:204 +msgid "-v --version Output version info." +msgstr " .úéðëúä úñøéâ úà âöä -v --version" + +#: src/cmp.c:168 src/diff.c:905 src/diff3.c:456 src/sdiff.c:205 +msgid "--help Output this help." +msgstr " .äæ äøæò êñî âöä --help" + +#: src/cmp.c:177 +#, c-format +msgid "Usage: %s [OPTION]... FILE1 [FILE2 [SKIP1 [SKIP2]]]\n" +msgstr " %s [OPTION]... FILE1 [FILE2 [SKIP1 [SKIP2]]] :ùåîéù ïôåà\n" + +#: src/cmp.c:179 +msgid "Compare two files byte by byte." +msgstr ".úéáì úéá íéöá÷ éðù äååùä" + +#: src/cmp.c:183 +msgid "SKIP1 and SKIP2 are the number of bytes to skip in each file." +msgstr " .íéöá÷äî ãçà ìëá âìãì ùé íäéìò íéúáä éøôñî íä SKIP2-å SKIP1" + +#: src/cmp.c:184 +msgid "" +"SKIP values may be followed by the following multiplicative suffixes:\n" +"kB 1000, K 1024, MB 1,000,000, M 1,048,576,\n" +"GB 1,000,000,000, G 1,073,741,824, and so on for T, P, E, Z, Y." +msgstr "" +" :úåéìôë úåîåéñ íò SKIP éëøò ïééöì ïúéð\n" +" ,M 1,048,576, MB 1,000,000 ,K 1024 ,kB 1000,\n" +" .T, P, E, Z, Y øåáò äàìä ïëå ,G 1,073,741,824 ,GB 1,000,000,000" + +#: src/cmp.c:187 +msgid "If a FILE is `-' or missing, read standard input." +msgstr " .éð÷ú èì÷ õåøòî àø÷ ,ïééåöî åðéà åà `-' åðéä FILE íà" + +#: src/cmp.c:188 src/diff.c:911 src/diff3.c:475 src/sdiff.c:223 +msgid "Report bugs to ." +msgstr ". úáåúëì úåì÷ú ìò íéçååéã çåìùì àð" + +#: src/cmp.c:231 +#, c-format +msgid "invalid --bytes value `%s'" +msgstr "--bytes ïééôàî øåáò `%s' éåâù êøò" + +#: src/cmp.c:258 src/diff.c:734 src/diff3.c:333 src/sdiff.c:558 +#, c-format +msgid "missing operand after `%s'" +msgstr "`%s' éøçà øñç èðîåâøà" + +#: src/cmp.c:270 src/diff.c:736 src/diff3.c:335 src/sdiff.c:560 +#, c-format +msgid "extra operand `%s'" +msgstr "`%s' éøçà øúåéî èðîåâøà" + +#: src/cmp.c:477 +#, c-format +msgid "%s %s differ: byte %s, line %s\n" +msgstr "%s-å %s íéöá÷ä ïéá %s úéá ,%s äøåùî ìçä éðåù\n" + +#: src/cmp.c:495 +#, c-format +msgid "%s %s differ: byte %s, line %s is %3o %s %3o %s\n" +msgstr "%s-å %s íéöá÷ä ïéá %s úéá ,%s äøåùî ìçä %3o %s %3o %s éðåù\n" + +#: src/cmp.c:543 +#, c-format +msgid "cmp: EOF on %s\n" +msgstr "cmp: %s õáå÷ óåñ\n" + +#: src/diff.c:41 +msgid "" +"Written by Paul Eggert, Mike Haertel, David Hayes,\n" +"Richard Stallman, and Len Tower." +msgstr "" +" ,David Hayes ,Mike Haertel ,Paul Eggert é\"ò áúëð\n" +" .Len Tower-å ,Richard Stallman" + +#: src/diff.c:322 +#, c-format +msgid "invalid context length `%s'" +msgstr "`%s' éåâù øù÷ä êøåà" + +#: src/diff.c:405 +msgid "pagination not supported on this host" +msgstr "åæ úëøòîá èìôä ãåîéòá äëéîú ïéà" + +#: src/diff.c:420 src/diff3.c:315 +msgid "too many file label options" +msgstr "íéöá÷ úéååú øåáò -L éðééôàî éãî øúåé" + +#: src/diff.c:498 +#, c-format +msgid "invalid width `%s'" +msgstr "`%s' éåâù äøåù áçåø" + +#: src/diff.c:502 +msgid "conflicting width options" +msgstr "íéøúåñ äøåù áçåø éðééôàî" + +#: src/diff.c:526 +#, c-format +msgid "invalid horizon length `%s'" +msgstr "--horizon-lines ïééôàîá `%s' éåâù úåøåù øôñî" + +#: src/diff.c:629 +#, c-format +msgid "`-%ld' option is obsolete; use `-%c %ld'" +msgstr "ïùåéî åðéäù `-%ld' íå÷îá `-%c %ld'-á ùîúùäì õìîåî" + +#: src/diff.c:641 +#, c-format +msgid "`-%ld' option is obsolete; omit it" +msgstr "ïùåéî åðéäù `-%ld'-á ùîúùäì àì õìîåî" + +#: src/diff.c:709 +msgid "--from-file and --to-file both specified" +msgstr "--to-file ïäå --from-file ïä úðééö" + +#: src/diff.c:832 +msgid "Compare files line by line." +msgstr ".äøåù äøåù íéöá÷ éðù äååùä" + +#: src/diff.c:834 +msgid "-i --ignore-case Ignore case differences in file contents." +msgstr ".íéöá÷ä ïëåúá úåðè÷î úåìåãâ úåéúåà ìéãáú ìà -i --ignore-case" + +#: src/diff.c:835 +msgid "--ignore-file-name-case Ignore case when comparing file names." +msgstr ".íéöá÷ä úåîùá úåðè÷î úåìåãâ úåéúåà ìéãáú ìà --ignore-file-name-case" + +#: src/diff.c:836 +msgid "--no-ignore-file-name-case Consider case when comparing file names." +msgstr "" +" .íéöá÷ä úåîùá úåðè÷î úåìåãâ úåéúåà ìéãáú --no-ignore-file-name-case" + +#: src/diff.c:837 src/sdiff.c:186 +msgid "-E --ignore-tab-expansion Ignore changes due to tab expansion." +msgstr "" +" .íéçååøì TAB ïéá íéìãáäî íìòúä -E --ignore-tab-expansion" + +#: src/diff.c:838 src/sdiff.c:187 +msgid "-b --ignore-space-change Ignore changes in the amount of white space." +msgstr " .íéçååø úåîëá íéìãáäî íìòúä -b --ignore-space-change" + +#: src/diff.c:839 +msgid "-w --ignore-all-space Ignore all white space." +msgstr " .íéçååøä ìëî íìòúä -w --ignore-all-space" + +#: src/diff.c:840 src/sdiff.c:189 +msgid "-B --ignore-blank-lines Ignore changes whose lines are all blank." +msgstr " .úå÷éø íäéúåøåùù íééåðéùî íìòúä -B --ignore-blank-lines" + +#: src/diff.c:841 src/sdiff.c:190 +msgid "" +"-I RE --ignore-matching-lines=RE Ignore changes whose lines all match RE." +msgstr "" +".RE úéðáúì úåîéàúî íäéúåøåùù íééåðéùî íìòúä -I RE --ignore-matching-lines=RE" + +#: src/diff.c:842 src/sdiff.c:191 +msgid "--strip-trailing-cr Strip trailing carriage return on input." +msgstr " .èì÷ úøåù ìë óåñî CR éååú ÷ìñ --strip-trailing-cr" + +#: src/diff.c:844 +msgid "--binary Read and write data in binary mode." +msgstr " .éøàðéá ïôåàá áåúëå àø÷ --binary" + +#: src/diff.c:846 src/diff3.c:451 src/sdiff.c:192 +msgid "-a --text Treat all files as text." +msgstr " .èñ÷è éöá÷áë íéöá÷ä ìëá ìôè -a --text" + +#: src/diff.c:848 +msgid "" +"-c -C NUM --context[=NUM] Output NUM (default 3) lines of copied " +"context.\n" +"-u -U NUM --unified[=NUM] Output NUM (default 3) lines of unified " +"context.\n" +" --label LABEL Use LABEL instead of file name.\n" +" -p --show-c-function Show which C function each change is in.\n" +" -F RE --show-function-line=RE Show the most recent line matching RE." +msgstr "" +" .÷úòåî èñ÷èðå÷ úåøåù (3 :ç\"îøá) NUM äàøä -c -C NUM --context[=NUM]\n" +" .ãçåàî èñ÷èðå÷ úåøåù (3 :ç\"îøá) NUM äàøä -u -U NUM --unified[=NUM]\n" +" .íù íå÷îá LABEL-á ùîúùä --label LABEL\n" +" .éåðéù ìë ìù C úééö÷ðåô íù äàøä -p --show-c-function\n" +" .RE úéðáúì äîéàúîù äðåøçà äøåù äàøä -F RE --show-function-line=RE" + +#: src/diff.c:853 +msgid "-q --brief Output only whether files differ." +msgstr " .íéðåù íéöá÷ä íà øåîà ÷ø -q --brief" + +#: src/diff.c:854 +msgid "-e --ed Output an ed script." +msgstr " .ed êøåò øåáò úåàøåä úîéùø ÷ôä -e --ed" + +#: src/diff.c:855 +msgid "--normal Output a normal diff." +msgstr " .ìéâø èîøåôá íééåðéù ÷ôä --normal" + +#: src/diff.c:856 +msgid "-n --rcs Output an RCS format diff." +msgstr " .RCS èîøåôá íééåðéù ÷ôä -n --rcs" + +#: src/diff.c:857 +msgid "" +"-y --side-by-side Output in two columns.\n" +" -W NUM --width=NUM Output at most NUM (default 130) print columns.\n" +" --left-column Output only the left column of common lines.\n" +" --suppress-common-lines Do not output common lines." +msgstr "" +" .åæ ãöì åæ úåãåîò éúùá èìô êåøò -y --side-by-side\n" +" .íéååú (130 :ç\"îøá) NUM-ì èìô úåøåù ìáâä -W NUM --width=NUM\n" +" .úéìàîùä úà ÷ø âöä ,úåäæ úåøåùä íà --left-column\n" +" .úåäæ úåøåù ììë âéöú ìà --suppress-common-lines" + +#: src/diff.c:861 +msgid "-D NAME --ifdef=NAME Output merged file to show `#ifdef NAME' diffs." +msgstr "`#ifdef NAME'-á íééåðéù ãøôä ,áìåùî õáå÷ ÷ôä -D NAME --ifdef=NAME" + +#: src/diff.c:862 +msgid "" +"--GTYPE-group-format=GFMT Similar, but format GTYPE input groups with GFMT." +msgstr "" +"GFMT úøæòá GTYPE âåñî èì÷ úåöåá÷ èîøô êà ,ì\"ðë --GTYPE-group-format=GFMT" + +#: src/diff.c:863 +msgid "--line-format=LFMT Similar, but format all input lines with LFMT." +msgstr " .LFMT úøæòá úåøåù èîøô êà ,ì\"ðë --line-format=LFMT" + +#: src/diff.c:864 +msgid "" +"--LTYPE-line-format=LFMT Similar, but format LTYPE input lines with LFMT." +msgstr "" +".LFMT úøæòá LTYPE âåñî èì÷ úåøåù èîøô êà ,ì\"ðë --LTYPE-group-format=LFMT" + +#: src/diff.c:865 +msgid " LTYPE is `old', `new', or `unchanged'. GTYPE is LTYPE or `changed'." +msgstr " .`changed' åà LTYPE åîë GTYPE .`unchanged' åà `new' ,`old' àåä LTYPE" + +#: src/diff.c:866 +msgid "" +" GFMT may contain:\n" +" %< lines from FILE1\n" +" %> lines from FILE2\n" +" %= lines common to FILE1 and FILE2\n" +" %[-][WIDTH][.[PREC]]{doxX}LETTER printf-style spec for LETTER\n" +" LETTERs are as follows for new group, lower case for old group:\n" +" F first line number\n" +" L last line number\n" +" N number of lines = L-F+1\n" +" E F-1\n" +" M L+1" +msgstr "" +" :ìåìëì ìåëé GFMT\n" +" FILE1-î úåøåù %<\n" +" FILE2-î úåøåù %>\n" +" FILE2-å FILE1-ì úåôúåùî úåøåù %=\n" +" LETTER øåáò printf ïåðâñá úæåøçî %[-][WIDTH][.[PREC]]{doxX}LETTER\n" +" :(äðùé äöåá÷ øåáò úåðè÷ úåéúåà) úåàáä úåéúåàä úçà àéä LETTER\n" +" äðåùàø äøåù øôñî F\n" +" äðåøçà äøåù øôñî L\n" +" L-F+1 = úåøåùä øôñî N\n" +" F-1 E\n" +" M+1 M" + +#: src/diff.c:877 +msgid "" +" LFMT may contain:\n" +" %L contents of line\n" +" %l contents of line, excluding any trailing newline\n" +" %[-][WIDTH][.[PREC]]{doxX}n printf-style spec for input line number" +msgstr "" +" :ìåìëì ìåëé LFMT\n" +" äøåù ïëåú %L\n" +" äøåùä óåñ åú èòîì äøåù ïëåú %l\n" +"èì÷ úøåù øåáò printf ïåðâñá úæåøçî %[-][WIDTH][.[PREC]]{doxX}n" + +#: src/diff.c:881 +msgid "" +" Either GFMT or LFMT may contain:\n" +" %% %\n" +" %c'C' the single character C\n" +" %c'\\OOO' the character with octal code OOO" +msgstr "" +" :íâ ìåìëì íéìåëé LFMT åà GFMT\n" +" %% %\n" +" C ããåá åú %c'C'\n" +" OOO éìè÷åà ãå÷ ìòá åú %c'\\OOO'" + +#: src/diff.c:886 +msgid "-l --paginate Pass the output through `pr' to paginate it." +msgstr " .ãåîéò íùì `pr' êøã èìô áúð -l --paginate" + +#: src/diff.c:887 src/sdiff.c:198 +msgid "-t --expand-tabs Expand tabs to spaces in output." +msgstr " .èìôá íéçååøì TAB éååú êåôä -t --expand-tabs" + +#: src/diff.c:888 src/diff3.c:452 +msgid "-T --initial-tab Make tabs line up by prepending a tab." +msgstr " .äøåùä éðôì TAB \"ò íé-TAB øùé -T --initial-tab" + +#: src/diff.c:890 +msgid "-r --recursive Recursively compare any subdirectories found." +msgstr " .éáéñøå÷ø ïôåàá úåé÷éú-úú äååùä -r --recursive" + +#: src/diff.c:891 +msgid "-N --new-file Treat absent files as empty." +msgstr " .íé÷éø åéä åìéàë íéøñç íéöá÷á ìôè -N --new-file" + +#: src/diff.c:892 +msgid "--unidirectional-new-file Treat absent first files as empty." +msgstr "" +" .íé÷éø åéä åìéàë íéøñç íéðåùàø íéöá÷á ìôè --unidirectional-new-file" + +#: src/diff.c:893 +msgid "-s --report-identical-files Report when two files are the same." +msgstr "" +" .íéäæ íéöá÷ ìò çååã -s --report-identical-files" + +#: src/diff.c:894 +msgid "-x PAT --exclude=PAT Exclude files that match PAT." +msgstr " .PAT úéðáúì íéîéàúî íäéúåîùù íéöá÷ ìò âìã -x PAT --exclude=PAT" + +#: src/diff.c:895 +msgid "" +"-X FILE --exclude-from=FILE Exclude files that match any pattern in FILE." +msgstr "" +"FILE-á úåéðáúì íéîéàúî íäéúåîùù íéöá÷ ìò âìã -X FILE --exclude-from=FILE" + +#: src/diff.c:896 +msgid "" +"-S FILE --starting-file=FILE Start with FILE when comparing directories." +msgstr "" +" .FILE õáå÷á úåé÷éú úàååùä ìçúä -S FILE --starting-file=FILE" + +#: src/diff.c:897 +msgid "" +"--from-file=FILE1 Compare FILE1 to all operands. FILE1 can be a directory." +msgstr "" +".äé÷éú úåéäì ìåëé FILE1 .íéèðîåâøàä øàù ìëì FILE1 äååùä --from-file=FILE1" + +#: src/diff.c:898 +msgid "" +"--to-file=FILE2 Compare all operands to FILE2. FILE2 can be a directory." +msgstr "" +" .äé÷éú úåéäì ìåëé FILE2 .FILE2-ì íéèðîåâøàä ìë äååùä --to-file=FILE2" + +#: src/diff.c:900 +msgid "--horizon-lines=NUM Keep NUM lines of the common prefix and suffix." +msgstr "" +".íéöá÷ä íåéñå äìéçúá úåôúåùî úåøåù NUM øàùä --horizon-lines=NUM" + +#: src/diff.c:901 src/sdiff.c:200 +msgid "-d --minimal Try hard to find a smaller set of changes." +msgstr " .íééåðéùä úöåá÷ úà ïéè÷äì ìãúùä -d --minimal" + +#: src/diff.c:902 +msgid "" +"--speed-large-files Assume large files and many scattered small changes." +msgstr " .íé÷çåøîå íéðè÷ íééåðéùå íéìåãâ íéöá÷ çðä --speed-large-files" + +#: src/diff.c:907 +msgid "" +"FILES are `FILE1 FILE2' or `DIR1 DIR2' or `DIR FILE...' or `FILE... DIR'." +msgstr "" +".`FILE... DIR' åà `DIR FILE...' åà `DIR1 DIR2' åà `FILE1 FILE2' íä FILES" + +#: src/diff.c:908 +msgid "" +"If --from-file or --to-file is given, there are no restrictions on FILES." +msgstr "" +" .FILES ìò úåìáâî ïéà éæà ,--to-file åà --from-file ïééôàî ïåúð íà" + +#: src/diff.c:909 src/diff3.c:474 src/sdiff.c:222 +msgid "If a FILE is `-', read standard input." +msgstr "" +" .éð÷úä èì÷ä õøòî àø÷ ,`-' àåä FILE íà" + +#: src/diff.c:920 +#, c-format +msgid "Usage: %s [OPTION]... FILES\n" +msgstr "%s [OPTION]... FILES :ùåîéù ïôåà\n" + +#: src/diff.c:949 +#, c-format +msgid "conflicting %s option value `%s'" +msgstr "%s ïééôàî ìù íãå÷ êøò øúåñ `%s' êøò" + +#: src/diff.c:962 +msgid "conflicting output style options" +msgstr "èìô ïåðâñ ìù íéøúåñ íéðééôàî" + +#: src/diff.c:976 +msgid "regular empty file" +msgstr "÷éø õáå÷" + +#: src/diff.c:976 +msgid "regular file" +msgstr "õáå÷" + +#: src/diff.c:978 +msgid "directory" +msgstr "äé÷éú" + +#: src/diff.c:981 +msgid "block special file" +msgstr "íé÷åìá ï÷úä õáå÷" + +#: src/diff.c:984 +msgid "character special file" +msgstr "íéåú ï÷úä õáå÷" + +#: src/diff.c:987 +msgid "fifo" +msgstr "fifo õáå÷" + +#: src/diff.c:991 +msgid "socket" +msgstr "ò÷ù" + +#: src/diff.c:994 +msgid "message queue" +msgstr "úåòãåä øåú" + +#: src/diff.c:997 +msgid "semaphore" +msgstr "øåôîñ" + +#: src/diff.c:1000 +msgid "shared memory object" +msgstr "óúåùî ïåøëæ è÷ééáåà" + +#: src/diff.c:1003 +msgid "typed memory object" +msgstr "âååéñ ìòá ïåøëæ è÷ééáåà" + +#: src/diff.c:1006 +msgid "weird file" +msgstr "øæåî õáå÷" + +#: src/diff.c:1070 src/diff.c:1256 +#, c-format +msgid "Only in %s: %s\n" +msgstr "%s-á ÷ø àöîð %s\n" + +#: src/diff.c:1193 +msgid "cannot compare `-' to a directory" +msgstr "äé÷éúì `-' úååùäì úåøùôà ïéà" + +#: src/diff.c:1220 +msgid "-D option not supported with directories" +msgstr "úåé÷éú øåáò -D ïééôàîá äëéîú ïéà" + +#: src/diff.c:1229 +#, c-format +msgid "Common subdirectories: %s and %s\n" +msgstr "%s-å %s :úåäæ úåé÷éú-úú\n" + +#: src/diff.c:1266 +#, c-format +msgid "File %s is a %s while file %s is a %s\n" +msgstr "%s %s-ì %s %s úååùäì ïúéð àì\n" + +#: src/diff.c:1345 +#, c-format +msgid "Files %s and %s are identical\n" +msgstr "íéäæ íðéä %s-å %s íéöá÷ä\n" + +#: src/diff3.c:26 +msgid "Written by Randy Smith." +msgstr ".Randy Smith é\"ò áúëð" + +#: src/diff3.c:328 +msgid "incompatible options" +msgstr "íéøúåñ íéðééôàî" + +#: src/diff3.c:368 +msgid "`-' specified for more than one input file" +msgstr "ãçà èì÷ õáå÷î øúåé øåáò `-' úðééö" + +#: src/diff3.c:408 src/diff3.c:1232 src/diff3.c:1645 src/diff3.c:1700 +#: src/sdiff.c:305 src/sdiff.c:879 src/sdiff.c:890 +msgid "read failed" +msgstr "äàéø÷á äì÷ú" + +#: src/diff3.c:441 +msgid "-e --ed Output unmerged changes from OLDFILE to YOURFILE into MYFILE." +msgstr "MYFILE êåú ìà YOURFILE-ì OLDFILE-î âåæéî àìì íééåðéù -e --ed" + +#: src/diff3.c:442 +msgid "-E --show-overlap Output unmerged changes, bracketing conflicts." +msgstr "" +" .íéè÷éìôðå÷ ïîñ ,âåæéî àìì íééåðéù âöä -E --show-overlap" + +#: src/diff3.c:443 +msgid "-A --show-all Output all changes, bracketing conflicts." +msgstr " .íéè÷éìôðå÷ ïîñ ,íééåðéùä ìë úà âöä -A --show-all" + +#: src/diff3.c:444 +msgid "-x --overlap-only Output overlapping changes." +msgstr "" +" .íéôôåç íééåðéù âöä -x --overlap-only" + +#: src/diff3.c:445 +msgid "-X Output overlapping changes, bracketing them." +msgstr " .íúåà ïîñå íéôôåç íééåðéù âöä -X" + +#: src/diff3.c:446 +msgid "-3 --easy-only Output unmerged nonoverlapping changes." +msgstr " .âåæéî àììå íéôôåç íðéàù íééåðéù âöä -3 --easy-only" + +#: src/diff3.c:448 +msgid "-m --merge Output merged file instead of ed script (default -A)." +msgstr " .(-A ç\"îøá) ed úåàøåä íå÷îá âæåîî õáå÷ áåúë -m --merge" + +#: src/diff3.c:449 +msgid "-L LABEL --label=LABEL Use LABEL instead of file name." +msgstr "" +" .õáå÷ä íù íå÷îá LABEL-á ùîúùä -L LABEL --label=LABEL" + +#: src/diff3.c:450 +msgid "-i Append `w' and `q' commands to ed scripts." +msgstr " .ed úåãå÷ô íåéñá `q'-å `w' úåãå÷ô áåúë -i" + +#: src/diff3.c:453 src/sdiff.c:202 +msgid "--diff-program=PROGRAM Use PROGRAM to compare files." +msgstr "" +" .íéöá÷ úàåùäì PROGRAM úéðëúá ùîúùä --diff-program=PROGRAM" + +#: src/diff3.c:465 +#, c-format +msgid "Usage: %s [OPTION]... MYFILE OLDFILE YOURFILE\n" +msgstr "%s [OPTION]... MYFILE OLDFILE YOURFILE :ùåîéù ïôåà\n" + +#: src/diff3.c:467 +msgid "Compare three files line by line." +msgstr ".úéáì úéá íéöá÷ äùìù äååùä" + +#: src/diff3.c:673 +msgid "internal error: screwup in format of diff blocks" +msgstr "diff éòè÷ èîøåôá äçéøî :úéîéðô äðëú úàéâù" + +#: src/diff3.c:971 +#, c-format +msgid "%s: diff failed: " +msgstr "%s é\"ò diff úìòôäá äì÷ú :" + +#: src/diff3.c:993 +msgid "internal error: invalid diff type in process_diff" +msgstr "process_diff úééö÷ðåôá éåðéù ìù éåâù âåñ :úéîéðô äðëú úàéâù" + +#: src/diff3.c:1018 +msgid "invalid diff format; invalid change separator" +msgstr "äéåâù íééåðéù úãøôä úæåøçî :éåðéù ìù éåâù èîøåô" + +#: src/diff3.c:1242 +msgid "invalid diff format; incomplete last line" +msgstr "äîìù äðéà äðåøçà äøåù :éåðéù ìù éåâù èîøåô" + +#: src/diff3.c:1265 src/sdiff.c:273 +#, c-format +msgid "subsidiary program `%s' not executable" +msgstr "òåöéá úá äðéà `%s' úéðëú-úú" + +#: src/diff3.c:1268 src/sdiff.c:276 src/util.c:298 +#, c-format +msgid "subsidiary program `%s' not found" +msgstr "äàöîð àì `%s' úéðëú-úú" + +#: src/diff3.c:1272 src/sdiff.c:268 src/util.c:301 +#, c-format +msgid "subsidiary program `%s' failed" +msgstr "`%s' úéðëú-úú úöøäá ïåìùë" + +#: src/diff3.c:1294 +msgid "invalid diff format; incorrect leading line chars" +msgstr "äøåù úìéçúá íééåâù íéååú :éåðéù ìù éåâù èîøåô" + +#: src/diff3.c:1370 +msgid "internal error: invalid diff type passed to output" +msgstr "èìô éëøöì éåðéù ìù éåâù âåñ :úéîéðô äðëú úàéâù" + +#: src/diff3.c:1647 src/diff3.c:1704 +msgid "input file shrank" +msgstr "÷îèöä èì÷ õáå÷" + +#: src/dir.c:162 +#, c-format +msgid "cannot compare file names `%s' and `%s'" +msgstr "`%s'-å `%s' íéöá÷ úåîù úååùäì ïúéð àì" + +#: src/sdiff.c:35 +msgid "Written by Thomas Lord." +msgstr ".Thomas Lord é\"ò áúëð" + +#: src/sdiff.c:183 +msgid "-o FILE --output=FILE Operate interactively, sending output to FILE." +msgstr " .FILE-ì èìô ,úéáéè÷àøèðéà äìåòô -o FILE --output=FILE" + +#: src/sdiff.c:185 +msgid "-i --ignore-case Consider upper- and lower-case to be the same." +msgstr " .úåðè÷å úåìåãâ úåéúåà ïéá íéìãáäî íìòúä -i --ignore-case" + +#: src/sdiff.c:188 +msgid "-W --ignore-all-space Ignore all white space." +msgstr " .øçà ïáì çèùå íéçååøî íìòúä -W --ignore-all-space" + +#: src/sdiff.c:194 +msgid "-w NUM --width=NUM Output at most NUM (default 130) columns per line." +msgstr ".äøåùì (130 ç\"îøá) íéååú NUM øúåéä ìëì âöä -w NUM --width=NUM" + +#: src/sdiff.c:195 +msgid "-l --left-column Output only the left column of common lines." +msgstr " .úéìàîùä úà ÷ø âöä ,úåäæ úåøåùä íà -l --left-column" + +#: src/sdiff.c:196 +msgid "-s --suppress-common-lines Do not output common lines." +msgstr "" +" .úåäæ úåøåù ììë âéöú ìà -s --suppress-common-lines" + +#: src/sdiff.c:201 +msgid "" +"-H --speed-large-files Assume large files and many scattered small changes." +msgstr " .íé÷çåøîå íéðè÷ íééåðéùå íéìåãâ íéöá÷ çðä -H --speed-large-files" + +#: src/sdiff.c:214 +#, c-format +msgid "Usage: %s [OPTION]... FILE1 FILE2\n" +msgstr "%s [OPTION]... FILE1 FILE2 :ùåîéù ïôåà\n" + +#: src/sdiff.c:215 +msgid "Side-by-side merge of file differences." +msgstr ".äæ ãöá äæ íéöá÷ ïéá íééåðéù ìù âåæéî" + +#: src/sdiff.c:327 +msgid "cannot interactively merge standard input" +msgstr "éáéè÷àøèðéà ïôåàá éð÷ú èì÷ õåøò âæîì úåøùôà ïéà" + +#: src/sdiff.c:588 +msgid "both files to be compared are directories" +msgstr "úåé÷éú íðéä äàååùäì íéöá÷ä éðù" + +#: src/sdiff.c:853 +msgid "" +"ed:\tEdit then use both versions, each decorated with a header.\n" +"eb:\tEdit then use both versions.\n" +"el:\tEdit then use the left version.\n" +"er:\tEdit then use the right version.\n" +"e:\tEdit a new version.\n" +"l:\tUse the left version.\n" +"r:\tUse the right version.\n" +"s:\tSilently include common lines.\n" +"v:\tVerbosely include common lines.\n" +"q:\tQuit.\n" +msgstr "" +"ed -- äúøúåë íò úçà ìë ,úåàñøâä éúùá ùîúùä æàå ,êåøò\n" +"eb -- úåàñøâä éúùá ùîúùä æàå ,êåøò\n" +"el -- ìàîùîù àñøâá ùîúùä æàå ,êåøò\n" +"er -- ïéîéîù àñøâá ùîúùä æàå ,êåøò\n" +"e -- éøîâì äùãç àñøâ êåøò\n" +"l -- ìàîùîù àñøâá ùîúùä\n" +"r -- ïéîéîù àñøâá ùîúùä\n" +"s -- ïâéöäì éìáî úåôúåùî úåøåù ÷úòä\n" +"v -- ïúâöä êåú úåôúåùî úåøåù ÷úòä\n" +"q -- äàéöé\n" diff --git a/src/apps/bin/diffutils-2.8.1/po/id.gmo b/src/apps/bin/diffutils-2.8.1/po/id.gmo new file mode 100644 index 0000000000000000000000000000000000000000..9fda1b8a9870639cfffa863bfc50b8b6f9b8e727 GIT binary patch literal 22711 zcmd^{dvqMvecwm5l|--|*|H?dl5JhdB0)-+B>+ky1&R_u5F{Z21PFixX_7H!cL$5n z?#`}uW(dNHo!F_<+I5_#W2Z^;wv#q?>$ver(uZ^0Hm8qsn)I2tr#VU5)ATe=kJGe0 zX;1n%{rrCS&g?9JB`G!kb&oE;yEFIsyT8}{-5>O+H{SQ#p8b3oc$eqh{rA8>^1L^- z?BjdK!4G-fy%U~yR~P&uzyGS|z3nmZH26=zInTTA9pIy20Mh2Z4})(5zXZM$lzs(e zyfN^9fbaIax9=g4B876_D{C_zHLm{2KV8=RL?Ayp!N{`~1Nl2N~x<8IN_n<8JUcxCk=N zJHE^Pmi9+I@1Y05=RkSS8Xo!>2wfif#~|as^M3FINFOrJJE5hw0Dcub=Xnp`3)0WS zS3%bF@DG5D^RT?9-$&jI9s=o8==#VFkamy!4EO~2U%@kM-9z9(aGia+1b&>~w14-% z0pG)akAT#B&lETfegu3T6#7_j_!#&FkhMMW>+bg-fb8GCw}9;5J|Elg~S(vZwoRg2==E?*{3A|K~y4?f(ZLbl?BGApAWl{P8fzJMXRFB=}7r zv=n|Dod+3rbOXE>{3ytJM?VEhyI%%J`R`wVKM(#d5MDWejLGu@{|Wp?w)TGT_d(|5 z!P`%M0|@<}WDJjYPqJ4spC?xx%6Rfy*70Ug_~CKz)8NzK-vH_B$v*_yucxTvt$@cs z*7B6BTTtjd0saa|`=|a0gs;bBK2L(e*UV>Z6NLZ9UIp2gvCo3cf9&tO=Q0j-^<}=$ z!52O=;0cET$UFZd;631vz{k_z=lD(kmHz;~5&WMZV;=%!eTN6<|4KLPFJ{lqHBvxzE5`-vEYrV}3qSj1$>Mp3B8#2pk*y`}``@m`Nt045BdIPu$vL|8}roI!L z0e{+|>_5McF^2SatP4`_nCvfeIQFkW*7rPX^Dcn_cozI6@EJtvF7On11e^lD6wVx)@%u2Z{tx&#OPmB3!HXbuXFdzk@67Lj(CO6uAnQCu zUqbIw9|2zg{~AdBQ(p(6)9e9L`aSpi;CmqX zJ>Y|&tRFhhzX;Ob{08_g@I&C6!5;?Mv-zI|naBL!0-4vmjLY+dH-hxL@DND93r9h8 z%)%P@bKtju@Y8wW7uI)P`0*P+p%ZgC|0xg}E=oQ2X;J7)Ka0NtJ^;!%ftjFdHD zfNzD=kAU#eGIJ9By$lZuA1r?qgs#iK2(mZJUkBfYNq7VJUXVEoy;qo%ykC*=p!G@w zA0yK%3BRG+>Q_K$xBAaO=)U@!?)e{r@YzM_?*;G#I1UPZpx?zWg3$NkuYm^qW03V; zq7RYRON=4>bxG!FKpBU9zVtgF`*}&~zs2*`r2qGT%w6cV#u!3}wPlcJYd1lu_i>Q< zu6+ii{o3b2WOVJ9LDskSRq$@`H$e7f?YA5X9iidcpMcQtGINmrFVBDmgdWoVvh)vq zF8>(Fc$fb&co(Hd*`oY3MLxnm?4N#G{L7p?S%d7;hbTht_ftMdk&n=6MZej9z7=?d z^7E8U%C}QkkM}A?KIbV{C?BKzMT*d~LRp~Ppd6nm~x%+qZFanY076Q?3d^$IalcCX@{~` z&r<#j1(^^%ub;>G_xs)V?{ip&kMiS5_uvxvLzM5Jd^bhp;zuZ-pp-vf;>Q~0FSv)( z;Dq}=4h8C|eeV1F zz(w~xhZp(s`TU1N;j7D(Rmx$?Im*vb)+xV0=}_h!G2JXY9DU$9vwGRuqSc+30oJ=JeeB?1b(7g-x>r zyXs%Rx;A%e_3ZVlm8(n3voqJPzgq9yy!^rW+11tAWn;R%C{8#0B;96lNjI#S4WWy^ z)uD|0k(i(tnt(ZWTCL8OV9&(imTB}lS$E9v45HM6B-A&ZR^7g_Bo(rrHfAI0C8@5} z#96x<_S_H*!h(V!@6H=n+jKS@p^lq*|MXLqO49c%-TVEY3v~F@gvY;oZ!n|Dj)!rY zXoHg6D4LH z`i+j6b;bao^m-P$a@e~s1O@$_8np)=fTa%E~|aWAZO z8gcZ2uppTwkR`*O?{z&Rp6@G9`6|smvfU2S8L2t}d;aB@6XFz3PZIT$( zc+#RmXUdnpFiPH+O5&b>V?227YpE77~Y{L%q@Kke9G)ec%* zv|_Xoh4pg9<5r5yjO)t&q;FUdjtYAy;si;x&ug$#mCj*)wkYlNwq?}Ku+=qYF-t`e zq?_!!Jkd9uUi5)ZtOQJspTEcw&V^yu$TuOX%CShVQ~%vwxDnmd$tT$cU!{|%5qEmf zpJn-R&<=f7&Sp*@TTQ*S8ODwpqS2HBQdNm^XS*ls?W?jKdlz?x&0?k#Cs94O7`L1U zt7xMgazX{hJ&>)Ib+SKU-G@UPcCm>u(@BE(V^Mf!cUfuE7X6*nf)x9Wh$M82c~-Tm zD^Aj0)b(=(@7H>$QhC(Z`L&?eivl|Bg=yA{4eCl4FY|Crqnt5m3eG4qL~f@i9cN6k z4SR7$7Dtv-(1$_G#|l_}G^@QZK+RPXbemJ%%EV%r!*(|nzB+7-?}tIM?RVl9g5wx0 zi`yaOs6)QEb0h4vf^Jtfy}$lxX_#zwwtSg$-mXL=Q~=ITGfcHzC*Ej9wNxl~Qd&BG ztG0r;X*t&v%w}n9wl+IRqUB(9Cm2WT)5j@uetH2rPDdN{aO1fBA%JCv1?G^qOF&29isvZFg^UC%<< zI4a=^xJrzq9VodRISY~%q;|9&O1HC0@jos8oioejMWMlKo9vX+BJwVm{k^t>t1$4ZC4%ojG|) z%QbCj83ATTp9HnApp~%y)}~k-eNO$$#Xj#LMgv=ohHh&Eoj&uko+N4td*c>4tIlPv zrP58r+irvCs;;Uk(J@LW`U+&SX?Qa=xh`OSg$j@tRATXkIO?o@%ZSCI9A8SmVnu>> zCqtjGlY=YOe)NRkTkp{<$#KDXgrWrWF(cL(aYoG(BdcqDGrcN?>v};fv0Voc>>z8U z=J3J39jkS^7+33%GyM@iqqB>7XQ)E4y?5G~tKRQTNTD2@GxTjZ7o>u;j|M)RS$Vx6~yBrhuW1;zTM%>gG(UlT-2i7 zd!ejKVO=KDhO5;8uHpu9{H%*I+K4#l1=fUNMUzms&+RK40t3Ttw08;=GsCZ>hBXro z+4*{>#+?9Ll`B+i7FWg9xiB{Iew7Bh1%Pdro zmrPh+B7e@GQwzz2wS6~e-~yw7%u z`kGm_WTjYe7T0MGC48TQCPK@X1P2}Q&xwQIB3ApD*^WYjDB;ZrKPC;*45uG|E^m$< z!?W@6q2n~FVe_mJU@G$5+RAiG6ouMcPCF%`(+P-k#8EeaHzkIYyKJXAc!+2d%VIki zQYWlVP+g2H{mhC-gi4Yhu%Mb7l~vmT)4d^!gb%H6wP^dze@F2~hdNtQ$LWzfvB6tL z4@JJe71h&CdqQ$O=X^3?Zzc|pA9P}t7NMR-KDkVKQH(La@2Yly=ps<2YLOE-IA?klOi++CyKc~y117p!<< zuvRpNxh`KP)S;Rj)!5ppx#bDNKmDKjwo<9s_iF4a6{#{xPZB3!-V&z~#3kT?th@Ad zM5}51OvFQ$i3k?by8Crbr@0Nt-;YNS+AB_$GGYUL6OV~3OEi`eckmzN;HqAV=m?$r zO2wn6K)*}7bzhg#juHuEkI@F#9kmkI#i4MQ5EbO7AozD}Ly;SFe4rc#f8;h3c~R!bZlSUXEd+xj3v9l?b?S zEJwfhpX{!@5VncE(0nt{6P8_4C;W_nP%^IpspXZC;h%-M+qgHZ)Z^Ev;|Z-|T_<5)nWnu65OS+cS0f_vYiO#zwFnli%j(m*BW{DrJ|gw98opxUtx7n} z#R0`6hb}U8e$lK=FE3A@U%i49aj0ho9Gb)cV;0&Gp&=z;E7+=xT zfJ(@XD^n=p|BheWV_XMRUU8|B2d8(V4#ic8A=g(BU)%-p}#4$nQHhHvd)=@b& z#5k(Ev2&n`cQJ0poh?-IHlolrVXxQe@la2n3~)eH>u|+evd(xMae@k;y!3{1S&Ia3IGB&cz!B2E0QHfTI zNTOx;c{*8@tFKDA&t)WG+pNG&n*+~RH#==2b@QDbZeVE+tDRo;c zhhGS4=fd~{5kj!;@8eo14{*VJoodo)g=u)qbQsG->8+|{a1=e%jC4Z9(SBsR&mjaL zB&sPqDN$)*IIr63py)LW4j0=;5*U|ns-;jqh?p2}CJsNBd|rP9S8uYf#NBTm&c%H?TsQ(;fGBR8h*xnxhKL#w* z9WRQNtJ0`i+LAus5+z2Onp8uH5=OTgZVJw3i;-*bxJF!nPIMUM3tt526h%4JN06=#CH8x?nLBb3-+vT36R%uu{QQQ zZXl8>DET`b&W?VJi3qVoS@bX3i%ION*~8@`A_WhMaHyv(Le-!4juv(;R1qgE2~h zTyR8e?BLY^5A5X|(FHGe8LTx_FWKHzdxak-*DO{G=8se*Cis0_78-g9l!7_jYC6@I zp{19gLqi}Hr&$h{8$`wAr}e-c8*x11pcu)8XFe05jJq%QhP{>rg*OR8a12Lb->RC% zAUtt5^)^hkt&NZ7N=-y!=j^w_2-BzQwAZhWC`-MLtj?dS`^d96zf= znT6G-#*a{So@5ap*C)o~fzzhUDn6Py8}_2@Kq8dSqe`RqZ=PthZ&uN~29ss&oqy2g^7)K_57J(G$nleYLQ95$jw{D^? z=G;lSb1~zU=PJ*PkkFwQ@mzRkHld{+a4}#=pMg}(U|7~t6CrGhgrr&Ako=0B8B0Y4 zVn_`L(Ue4`PE&H0O6f}F!CZb6`AXG*!MTL*Mb@*kSuo@)?Re48SF$gdG=X1xE}fvg zJ*~d}Y$fh3vZmQPU#T9n0t!3J$t8cQ{4&jg zf!w9IgA47Jhbc-~g)Z9g;hwDg8lnfy&8VN<#HHBFSzBgfsqmW8m-g5I#$)SkXO{8= zdy6L=Y=XEOxUpoBw$5wIQL=O@FH21;+-MUv0!!Y(OeN*fy>gXYZP!#ddEHtI@|mQ| za0~UI;dz^>B&RVUu{$>iqu67kMs>Bd5dKwepM=R$m zIjZfbaNC5Xl@QquLzEp3hVyzf&Xu{H7eOa!uJz9RIqaE2w zCxaSC9G0JESQ4A8B=XYcz>kt8X-Q6u!_t+`WN{$0%Tt!DC<;~a7BCs|PHeIC&<_>L zaQ#?eGpuJ^LC8T%wjiZVxwhVuOc-;r-=htSa{k4W$qIkFlIJiLY6#-$39pH%iew6! z$Fv%>yHQJK#w5|5a%pYf?#g9a64Az0l*$sNw*)1~wh=XjRuUy9iHYx7J8R1b&JUI~ zms6RhtAW@*l4v-fB!NW!2WUj3Bq#_aPV7K3+FpB`ge|N=uBPoCmv(n}K9j5|lKs)m zxuXf~$ZNWjtfs8324B~NK}!gQ3b`0|8;yci%&J0IYs`djdt@}74Z1`!@p)_(>&}d( zu86xXT-xu*X)1Bc0FxN!L1^g4am*xBb8gBmjv1QYG%cP=*RIdXy-X)p_qi!=c9Krq zV19??uA-mnv}o^^ip%UiLHapQv>MEFa*gtxFWQXZ4@rEW$vQ-E)l)Z3*h7aNn(}0F zt}J?T3|`FomYGiKklUz+6??3p6Rg`LJmq?_o;8`Gfo&xSp;CIwY^UAx4VqC^qTo$# z^GJ!3%RR_8s~1C(9_H@GifgR?N*(D-v}^4o-0+;ITXVN;KBi_5F28-=)9xi&ox@py z1h`HOlK{DHnfR3JWSjg{%|!2%^$RXuIqzvn66~5*tz-wq0hWsi=FM91K1hQOHf0%NAMhdUE)U6u$|;zO z$zY;TKP9Tq3XVxgh~k{GlL;={iz$&_oBvc!iOR=Pl9ji}9#guVme^L2Nzpe0IZ-9D z=QAB3dSbSDW> z{hpjNAgku@E#wqsJ9AQMSzwRkC~h4#)oFsWv1w6BPjDR5(;eGEuEt`t!ATgo}d zdOcPSN$SwpR^vM^=jgsCaH%i<)O#-uvy-h|`=~!kNn?A8eeFx$HF&pZv zdZ_g1EL^jLgKnA;+gDQ15-?z8n$J|EIGK|yPqdefoXNu0B@N0N&3feLHS?B)+y*kC z+{sq*p@cXwf8!82*H>j&<*zTuYbf3>QBw3O9hI}9`fJ9)@W);9hq@&BH1JR)i%M3#cUsh{o|eUg+MPZ|4x~(gL0OAUjN)LI z1#+O$E{3H>%?G4L3ClPu$^prlWy@gNcu3~UOLz*j?6c}_{@f!ss^mbahdq;}ESK%l zNU)viBe9CZ(xe=-Y_i+#L@dG5yroSb(hz{*+EJ7b;ACio3Q%a}HR6>t zfE7KB!xnp0exF7S$KTGT_BXWDOCbb#U`-XhCmMisDWNw8M1B<+Q#Qs|%9$!2s6VDz zQ}&UnkzILHu2a^`8IsVsC?j19Pl|UoL8?R_n>y9p^}L|lNfbC+(vOGe9Eu|>s+Fo@ zF^CKmDurWCkgx&PYUrXX-b>-59vdfccR2&ibzM99aE*$q zA9vU$WK_zga&y#sHSfHb+#*_!vLlDU&cVJvmq+?ZBy`zT<=1m4ooi%NUHjlbt68)Y zSyYkDYLa_`uvZT@vsN}x?WB;%d1B>WcQ;q6+8Lqu3HzX_s}Z?41-Ws<BO3 z339JQYY)l6^3JQrpov&E(ov5hE*K)CQPVtxg=jW0)$o|IUzYxRT?z-;eQ!@TEjnbwp*mB=f47 zg#Vu>Ud?o>fmuh7<(XG@GhBWbqSgwloUL9CGV+4X5x+yb%I9%&t-&|D61HT3+azoemg{ich}y7G z;v{%E*paX$RgM`Uzxb(x*;>Q`x~OXcXR?BuhNK z4zN#LV1biEewW~^ZV^ZF94Bi0b}*zaHgF)aIJ{~R9TSOgCs4`b8f+l}->Sqb2aITb zI_Mu#yu$veO?AsEQo7W7$W5Qs%I@k2Ni2f6HgX_S@!Z=+fV#|&k2cnuzk;;H)?Hh# zPnaT^OYKFzPnNhGFq3GEa9xv3F1tf6EWRt3Ygp@2HrGHE?OIQ1rChGPY6NjWuqbqy zT(%i2$tokHapj?&a&IJY?RadvkQ6RC>kFS*_Yw1@H}~%NNRmpMzqSwB6-nm0bzKIO zqjzP5oUU{Bs5SznZ9W%vTGG38V>GR6;M%V#d4*(ng)L9_-ExWCoyvVZY@O@SJj;t5 zjEIyj%}=tNW^?ZDD=1zF-Sg)ce)A4MG!6tk; zWpC%EYcEf>xbfN}^NW!D%QkGy0iM4DEw{5o)c<+IE(#oT`)FM(+e)&=nnBldQ{73l zV|}M{AQj9uPD%4hhc_*r|p}1P!a)jK~BC%6q7u$JVQ((9JQwBv{Zh?$aBMNq8Fpc z#v7eQk-;|j&MinadObqs2)iWFtt<0K&uzKE@bE2F*|=bn6HuEqroOu5xRn(r!z5ffX, 2002 +# +msgid "" +msgstr "" +"Project-Id-Version: diffutils 2.7.10\n" +"POT-Creation-Date: 2002-04-05 14:10-0800\n" +"PO-Revision-Date: 2002-04-02 09:35GMT+0700\n" +"Last-Translator: Tedi Heriyanto \n" +"Language-Team: Indonesian \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 0.9.5\n" + +#: lib/c-stack.c:188 +msgid "program error" +msgstr "kesalahan program" + +#: lib/c-stack.c:189 +msgid "stack overflow" +msgstr "overflow stack" + +#: lib/error.c:128 lib/error.c:156 +msgid "Unknown system error" +msgstr "Kesalahan sistem tidak dikenal" + +#: lib/freesoft.c:27 +msgid "" +"This program comes with NO WARRANTY, to the extent permitted by law.\n" +"You may redistribute copies of this program\n" +"under the terms of the GNU General Public License.\n" +"For more information about these matters, see the file named COPYING." +msgstr "" +"This program comes with NO WARRANTY, to the extent permitted by law.\n" +"You may redistribute copies of this program\n" +"under the terms of the GNU General Public License.\n" +"For more information about these matters, see the file named COPYING." + +#: lib/getopt.c:693 +#, c-format +msgid "%s: option `%s' is ambiguous\n" +msgstr "%s: option `%s' rancu\n" + +#: lib/getopt.c:718 +#, c-format +msgid "%s: option `--%s' doesn't allow an argument\n" +msgstr "%s: option `--%s' tidak mengijinkan ada argumen\n" + +#: lib/getopt.c:723 +#, c-format +msgid "%s: option `%c%s' doesn't allow an argument\n" +msgstr "%s: option `%c%s' tidak mengijinkan ada argumen\n" + +#: lib/getopt.c:741 lib/getopt.c:914 +#, c-format +msgid "%s: option `%s' requires an argument\n" +msgstr "%s: option `%s' butuh sebuah argumen\n" + +#: lib/getopt.c:770 +#, c-format +msgid "%s: unrecognized option `--%s'\n" +msgstr "%s: option tidak dikenal `--%s'\n" + +#: lib/getopt.c:774 +#, c-format +msgid "%s: unrecognized option `%c%s'\n" +msgstr "%s: option tidak dikenal `%c%s'\n" + +#: lib/getopt.c:800 +#, c-format +msgid "%s: illegal option -- %c\n" +msgstr "%s: option ilegal -- %c\n" + +#: lib/getopt.c:803 +#, c-format +msgid "%s: invalid option -- %c\n" +msgstr "%s: option invalid -- %c\n" + +#: lib/getopt.c:833 lib/getopt.c:963 +#, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "%s: option membutuhkan sebuah argumen -- %c\n" + +#: lib/getopt.c:880 +#, c-format +msgid "%s: option `-W %s' is ambiguous\n" +msgstr "%s: option `-W %s' rancu\n" + +#: lib/getopt.c:898 +#, c-format +msgid "%s: option `-W %s' doesn't allow an argument\n" +msgstr "%s: option `-W %s' tidak memboleh ada argumen\n" + +#: lib/regex.c:1367 +msgid "Success" +msgstr "Sukses" + +#: lib/regex.c:1370 +msgid "No match" +msgstr "Tidak ada kecocokan" + +#: lib/regex.c:1373 +msgid "Invalid regular expression" +msgstr "Ekspresi reguler tidak valid" + +#: lib/regex.c:1376 +msgid "Invalid collation character" +msgstr "Karakter collation tidak valid" + +#: lib/regex.c:1379 +msgid "Invalid character class name" +msgstr "Nama karakter kelas tidak valid" + +#: lib/regex.c:1382 +msgid "Trailing backslash" +msgstr "Trailing backslash" + +#: lib/regex.c:1385 +msgid "Invalid back reference" +msgstr "Back reference tidak valid" + +#: lib/regex.c:1388 +msgid "Unmatched [ or [^" +msgstr "Tidak cocok [ atau [^" + +#: lib/regex.c:1391 +msgid "Unmatched ( or \\(" +msgstr "Tidak cocok ( atau \\(" + +#: lib/regex.c:1394 +msgid "Unmatched \\{" +msgstr "Tidak cocok \\{" + +#: lib/regex.c:1397 +msgid "Invalid content of \\{\\}" +msgstr "Isi \\\\{\\\\} tidak valid" + +#: lib/regex.c:1400 +msgid "Invalid range end" +msgstr "Batas akhir tidak valid" + +#: lib/regex.c:1403 +msgid "Memory exhausted" +msgstr "Memori habis" + +#: lib/regex.c:1406 +msgid "Invalid preceding regular expression" +msgstr "Ekspresi reguler terdahulu tidak valid" + +#: lib/regex.c:1409 +msgid "Premature end of regular expression" +msgstr "Akhir ekspresi reguler prematur" + +#: lib/regex.c:1412 +msgid "Regular expression too big" +msgstr "Ekspresi reguler terlalu besar" + +#: lib/regex.c:1415 +msgid "Unmatched ) or \\)" +msgstr "Tidak cocok ) atau \\)" + +#: lib/regex.c:8034 +msgid "No previous regular expression" +msgstr "Tidak ada ekspresi reguler sebelumnya" + +#: lib/xmalloc.c:63 +msgid "memory exhausted" +msgstr "memori habis" + +#: src/analyze.c:809 src/diff.c:1283 +#, c-format +msgid "Files %s and %s differ\n" +msgstr "File %s dan %s berbeda\n" + +#: src/analyze.c:812 +#, c-format +msgid "Binary files %s and %s differ\n" +msgstr "File biner %s dan %s berbeda\n" + +#: src/analyze.c:1058 src/diff3.c:1413 src/util.c:526 +msgid "No newline at end of file" +msgstr "Tidak ada newline pada akhir file" + +#: src/cmp.c:43 +msgid "Written by Torbjorn Granlund and David MacKenzie." +msgstr "Ditulis oleh Torbjorn Granlund dan David MacKenzie." + +#: src/cmp.c:118 src/diff.c:817 src/diff3.c:427 src/sdiff.c:168 +#, c-format +msgid "Try `%s --help' for more information." +msgstr "Coba `%s --help' untuk informasi lebih jauh." + +#: src/cmp.c:137 +#, c-format +msgid "invalid --ignore-initial value `%s'" +msgstr "tidak valid --ignore-initial value `%s'" + +#: src/cmp.c:146 +msgid "options -l and -s are incompatible" +msgstr "option -l dan -s tidak kompatibel" + +#: src/cmp.c:154 src/diff.c:826 src/diff3.c:435 src/sdiff.c:177 +#: src/sdiff.c:313 src/sdiff.c:320 src/sdiff.c:910 src/util.c:194 +#: src/util.c:286 src/util.c:293 +msgid "write failed" +msgstr "gagal menulis" + +#: src/cmp.c:156 src/diff.c:828 src/diff.c:1354 src/diff3.c:437 +#: src/sdiff.c:179 +msgid "standard output" +msgstr "output standar" + +#: src/cmp.c:160 +msgid "-b --print-bytes Print differing bytes." +msgstr "-b --print-bytes Cetak byte berbeda." + +#: src/cmp.c:161 +msgid "-i SKIP --ignore-initial=SKIP Skip the first SKIP bytes of input." +msgstr "-i SKIP --ignore-initial=SKIP Lewati SKIP byte pertama input." + +#: src/cmp.c:162 +msgid "-i SKIP1:SKIP2 --ignore-initial=SKIP1:SKIP2" +msgstr "-i SKIP1:SKIP2 --ignore-initial=SKIP1:SKIP2" + +#: src/cmp.c:163 +msgid "" +" Skip the first SKIP1 bytes of FILE1 and the first SKIP2 bytes of FILE2." +msgstr " Lewati SKIP1 byte pertama FILE1 dan SKIP2 byte pertama FILE2." + +#: src/cmp.c:164 +msgid "-l --verbose Output byte numbers and values of all differing bytes." +msgstr "-l --verbose Output nomor byte dan nilai semua byte yang berbeda." + +#: src/cmp.c:165 +msgid "-n LIMIT --bytes=LIMIT Compare at most LIMIT bytes." +msgstr "-n LIMIT --bytes=LIMIT Bandingkan paling banyak LIMIT byte." + +#: src/cmp.c:166 +msgid "-s --quiet --silent Output nothing; yield exit status only." +msgstr "-s --quiet --silent Tidak ada output; hanya beri status keluar." + +#: src/cmp.c:167 src/diff.c:904 src/diff3.c:455 src/sdiff.c:204 +msgid "-v --version Output version info." +msgstr "-v --version Tampilkan info versi." + +#: src/cmp.c:168 src/diff.c:905 src/diff3.c:456 src/sdiff.c:205 +msgid "--help Output this help." +msgstr "--help Tampilkan bantuan ini." + +#: src/cmp.c:177 +#, c-format +msgid "Usage: %s [OPTION]... FILE1 [FILE2 [SKIP1 [SKIP2]]]\n" +msgstr "Penggunaan: %s [OPTION]... FILE1 [FILE2 [SKIP1 [SKIP2]]]\n" + +#: src/cmp.c:179 +msgid "Compare two files byte by byte." +msgstr "Bandingkan dua file byte per byte" + +#: src/cmp.c:183 +msgid "SKIP1 and SKIP2 are the number of bytes to skip in each file." +msgstr "SKIP1 dan SKIP2 adalah jumlah byte yang harus dilewati di tiap file." + +#: src/cmp.c:184 +msgid "" +"SKIP values may be followed by the following multiplicative suffixes:\n" +"kB 1000, K 1024, MB 1,000,000, M 1,048,576,\n" +"GB 1,000,000,000, G 1,073,741,824, and so on for T, P, E, Z, Y." +msgstr "" +"Nilai SKIP dapat diikuti oleh suffiks perkalian berikut:\n" +"kB 1000, K 1024, MB 1,000,000, M 1,048,576,\n" +"GB 1,000,000,000, G 1,073,741,824, dan seterusnya untuk T, P, E, Z, Y." + +#: src/cmp.c:187 +msgid "If a FILE is `-' or missing, read standard input." +msgstr "Jika sebuah FILE adalah `-' atau tidak ada, baca input standar" + +#: src/cmp.c:188 src/diff.c:911 src/diff3.c:475 src/sdiff.c:223 +msgid "Report bugs to ." +msgstr "Laporkan bug ke " + +#: src/cmp.c:231 +#, c-format +msgid "invalid --bytes value `%s'" +msgstr "nilai --byte tidak valid `%s'" + +#: src/cmp.c:258 src/diff.c:734 src/diff3.c:333 src/sdiff.c:558 +#, c-format +msgid "missing operand after `%s'" +msgstr "tidak ada operand setelah `%s'" + +#: src/cmp.c:270 src/diff.c:736 src/diff3.c:335 src/sdiff.c:560 +#, c-format +msgid "extra operand `%s'" +msgstr "operand ekstra `%s'" + +#: src/cmp.c:477 +#, c-format +msgid "%s %s differ: byte %s, line %s\n" +msgstr "%s %s berbeda: byte %s, baris %s\n" + +#: src/cmp.c:495 +#, c-format +msgid "%s %s differ: byte %s, line %s is %3o %s %3o %s\n" +msgstr "%s %s berbeda: byte %s, baris %s adalah %3o %s %3o %s\n" + +#: src/cmp.c:543 +#, c-format +msgid "cmp: EOF on %s\n" +msgstr "cmp: EOF pada %s\n" + +#: src/diff.c:41 +msgid "" +"Written by Paul Eggert, Mike Haertel, David Hayes,\n" +"Richard Stallman, and Len Tower." +msgstr "" +"Ditulis oleh Paul Eggert, Mike Haertel, David Hayes,\n" +"Richard Stallman, dan Len Tower." + +#: src/diff.c:322 +#, c-format +msgid "invalid context length `%s'" +msgstr "panjang context tidak valid `%s'" + +#: src/diff.c:405 +msgid "pagination not supported on this host" +msgstr "paginasi tidak didukung pada host ini" + +#: src/diff.c:420 src/diff3.c:315 +msgid "too many file label options" +msgstr "terlalu banyak option label file" + +#: src/diff.c:498 +#, c-format +msgid "invalid width `%s'" +msgstr "lebar tidak valid `%s'" + +#: src/diff.c:502 +msgid "conflicting width options" +msgstr "option lebar konflik" + +#: src/diff.c:526 +#, c-format +msgid "invalid horizon length `%s'" +msgstr "panjang horizon tidak valid `%s'" + +#: src/diff.c:629 +#, c-format +msgid "`-%ld' option is obsolete; use `-%c %ld'" +msgstr "`-%ld' option kuno; gunakan `-%c %ld'" + +#: src/diff.c:641 +#, c-format +msgid "`-%ld' option is obsolete; omit it" +msgstr "`-%ld' option kuno, hilangkan saja" + +#: src/diff.c:709 +msgid "--from-file and --to-file both specified" +msgstr "--from-file dan --to-file keduanya disebutkan" + +#: src/diff.c:832 +msgid "Compare files line by line." +msgstr "Bandingkan file baris per baris" + +#: src/diff.c:834 +msgid "-i --ignore-case Ignore case differences in file contents." +msgstr "-i --ignore-case Abaikan beda case dalam isi file." + +#: src/diff.c:835 +msgid "--ignore-file-name-case Ignore case when comparing file names." +msgstr "--ignore-file-name-case Abaikan case saat membandingkan nama file." + +#: src/diff.c:836 +msgid "--no-ignore-file-name-case Consider case when comparing file names." +msgstr "" +"--no-ignore-file-name-case Pertimbangkan case saat membandingkan nama file." + +#: src/diff.c:837 src/sdiff.c:186 +msgid "-E --ignore-tab-expansion Ignore changes due to tab expansion." +msgstr "-E --ignore-tab-expansion Abaikan perubahan akibat ekspansi tab." + +#: src/diff.c:838 src/sdiff.c:187 +msgid "-b --ignore-space-change Ignore changes in the amount of white space." +msgstr "-b --ignore-space-change Abaikan perubahan sejumlah white space." + +#: src/diff.c:839 +msgid "-w --ignore-all-space Ignore all white space." +msgstr "-w --ignore-all-space Abaikan seluruh white space." + +#: src/diff.c:840 src/sdiff.c:189 +msgid "-B --ignore-blank-lines Ignore changes whose lines are all blank." +msgstr "-B --ignore-blank-lines Abaikan perubahan baris kosong." + +#: src/diff.c:841 src/sdiff.c:190 +msgid "" +"-I RE --ignore-matching-lines=RE Ignore changes whose lines all match RE." +msgstr "" +"-I RE --ignore-matching-lines=RE Abaikan perubahan baris yang cocok dg RE." + +#: src/diff.c:842 src/sdiff.c:191 +msgid "--strip-trailing-cr Strip trailing carriage return on input." +msgstr "--strip-trailing-cr Hapus trailing carriage return pada input." + +#: src/diff.c:844 +msgid "--binary Read and write data in binary mode." +msgstr "--binary Baca dan tulis data dalam mode biner." + +#: src/diff.c:846 src/diff3.c:451 src/sdiff.c:192 +msgid "-a --text Treat all files as text." +msgstr "-a --text Perlakukan seluruh file sebagai teks." + +#: src/diff.c:848 +msgid "" +"-c -C NUM --context[=NUM] Output NUM (default 3) lines of copied " +"context.\n" +"-u -U NUM --unified[=NUM] Output NUM (default 3) lines of unified " +"context.\n" +" --label LABEL Use LABEL instead of file name.\n" +" -p --show-c-function Show which C function each change is in.\n" +" -F RE --show-function-line=RE Show the most recent line matching RE." +msgstr "" +"-c -C NUM --context[=NUM] Output NUM (baku 3) baris isi yang disalin.\n" +"-u -U NUM --unified[=NUM] Output NUM (baku 3) baris unified context.\n" +" --label LABEL Gunakan LABEL alih-alih nama file.\n" +" -p --show-c-function Tampilkan setiap fungsi C yang berubah.\n" +" -F RE --show-function-line=RE Tampilkan baris paling akhir yang cocok " +"dengan RE." + +#: src/diff.c:853 +msgid "-q --brief Output only whether files differ." +msgstr "-q --brief Tampilkan hanya apakah file berbeda." + +#: src/diff.c:854 +msgid "-e --ed Output an ed script." +msgstr "-e --ed Output adalah script ed." + +#: src/diff.c:855 +msgid "--normal Output a normal diff." +msgstr "--normal Output normal diff." + +#: src/diff.c:856 +msgid "-n --rcs Output an RCS format diff." +msgstr "-n --rcs Output dalam format RCS diff." + +#: src/diff.c:857 +msgid "" +"-y --side-by-side Output in two columns.\n" +" -W NUM --width=NUM Output at most NUM (default 130) print columns.\n" +" --left-column Output only the left column of common lines.\n" +" --suppress-common-lines Do not output common lines." +msgstr "" +"-y --side-by-side Output dalam dua kolom.\n" +" -W NUM --width=NUM Output paling banyak NUM (baku 130) kolom.\n" +" --left-column Output hanya kolom kiri baris bersama.\n" +" --suppress-common-lines Jangan hasilkan baris bersama." + +#: src/diff.c:861 +msgid "-D NAME --ifdef=NAME Output merged file to show `#ifdef NAME' diffs." +msgstr "" +"-D NAME --ifdef=NAME Output file merge untuk tampilkan `#ifdef NAME' diffs." + +#: src/diff.c:862 +msgid "" +"--GTYPE-group-format=GFMT Similar, but format GTYPE input groups with GFMT." +msgstr "" +"--GTYPE-group-format=GFMT Serupa, tapi format input kelompok GTYPE dg GFMT. " + +#: src/diff.c:863 +msgid "--line-format=LFMT Similar, but format all input lines with LFMT." +msgstr "--line-format=LFMT Serupa, tapi format seluruh baris input dg LFMT." + +#: src/diff.c:864 +msgid "" +"--LTYPE-line-format=LFMT Similar, but format LTYPE input lines with LFMT." +msgstr "" +"--LTYPE-line-format=LFMT Serupa, tapi format baris input LTYPE dg LFMT." + +#: src/diff.c:865 +msgid " LTYPE is `old', `new', or `unchanged'. GTYPE is LTYPE or `changed'." +msgstr "" +" LTYPE adalah `old', `new', atau `unchanged'. GTYPE adalah LTYPE atau " +"`changed'." + +#: src/diff.c:866 +msgid "" +" GFMT may contain:\n" +" %< lines from FILE1\n" +" %> lines from FILE2\n" +" %= lines common to FILE1 and FILE2\n" +" %[-][WIDTH][.[PREC]]{doxX}LETTER printf-style spec for LETTER\n" +" LETTERs are as follows for new group, lower case for old group:\n" +" F first line number\n" +" L last line number\n" +" N number of lines = L-F+1\n" +" E F-1\n" +" M L+1" +msgstr "" +" GFMT dapat berisi:\n" +" %< baris dari FILE1\n" +" %> baris dari FILE2\n" +" %= baris bersama FILE1 dan FILE2\n" +" %[-][WIDTH][.[PREC]]{doxX}LETTER printf-style spec untuk LETTER\n" +" LETTERs adalah sebagai berikut untuk grup baru, huruf kecil untuk grup " +"tua:\n" +" F nomor baris pertama\n" +" L nomor baris terakhir\n" +" N jumlah baris = L-F+1\n" +" E F-1\n" +" M L+1" + +#: src/diff.c:877 +msgid "" +" LFMT may contain:\n" +" %L contents of line\n" +" %l contents of line, excluding any trailing newline\n" +" %[-][WIDTH][.[PREC]]{doxX}n printf-style spec for input line number" +msgstr "" +" LFMT dapat berisi:\n" +" %L isi baris\n" +" %l isi baris, tanpa baris baru\n" +" %[-][WIDTH][.[PREC]]{doxX}n printf-style spec untuk nomor baris input" + +#: src/diff.c:881 +msgid "" +" Either GFMT or LFMT may contain:\n" +" %% %\n" +" %c'C' the single character C\n" +" %c'\\OOO' the character with octal code OOO" +msgstr "" +" GFMT atau LFMT dapat berisikan:\n" +" %% %\n" +" %c'C' karakter tunggal C\n" +" %c'\\OOO' karakter dengan kode oktal OOO" + +#: src/diff.c:886 +msgid "-l --paginate Pass the output through `pr' to paginate it." +msgstr "-l --paginate Berikan output ke `pr' untuk di-paginate." + +#: src/diff.c:887 src/sdiff.c:198 +msgid "-t --expand-tabs Expand tabs to spaces in output." +msgstr "-t --expand-tabs Ekspansi tab ke spasi dalam output." + +#: src/diff.c:888 src/diff3.c:452 +msgid "-T --initial-tab Make tabs line up by prepending a tab." +msgstr "-T --initial-tab Buat tab beraturan dg menambahkan sebuah tab." + +#: src/diff.c:890 +msgid "-r --recursive Recursively compare any subdirectories found." +msgstr "-r --recursive Membandingkan subdirektori secara rekursif." + +#: src/diff.c:891 +msgid "-N --new-file Treat absent files as empty." +msgstr "-N --new-file Perlakukan tiada file sebagai kosong." + +#: src/diff.c:892 +msgid "--unidirectional-new-file Treat absent first files as empty." +msgstr "" +"--unidirectional-new-file Anggap file tidak ada pertama sebagai kosong." + +#: src/diff.c:893 +msgid "-s --report-identical-files Report when two files are the same." +msgstr "-s --report-identical-files Laporkan ketika dua file sama." + +#: src/diff.c:894 +msgid "-x PAT --exclude=PAT Exclude files that match PAT." +msgstr "-x PAT --exclude=PAT Tanpa file yang cocok dengan PAT." + +#: src/diff.c:895 +msgid "" +"-X FILE --exclude-from=FILE Exclude files that match any pattern in FILE." +msgstr "" +"-X FILE --exclude-from=FILE Abaikan file yang cocok dengan pola dalam FILE" + +#: src/diff.c:896 +msgid "" +"-S FILE --starting-file=FILE Start with FILE when comparing directories." +msgstr "" +"-S FILE --starting-file=FILE Mulai dengan FILE ketika membandingkan " +"direktori." + +#: src/diff.c:897 +msgid "" +"--from-file=FILE1 Compare FILE1 to all operands. FILE1 can be a directory." +msgstr "" +"--from-file=FILE1 Bandingkan FILE1 ke semua operand. FILE1 dapat berupa " +"direktori." + +#: src/diff.c:898 +msgid "" +"--to-file=FILE2 Compare all operands to FILE2. FILE2 can be a directory." +msgstr "" +"--to-file=FILE2 Bandingkan semua operand dengan FILE2. FILE2 dapat berupa " +"direktori." + +#: src/diff.c:900 +msgid "--horizon-lines=NUM Keep NUM lines of the common prefix and suffix." +msgstr "--horizon-lines=NUM Pertahankan NUM baris prefiks dan suffiks umum." + +#: src/diff.c:901 src/sdiff.c:200 +msgid "-d --minimal Try hard to find a smaller set of changes." +msgstr "-d --minimal Usahakan mencari perubahan terkecil." + +#: src/diff.c:902 +msgid "" +"--speed-large-files Assume large files and many scattered small changes." +msgstr "--speed-large-files Asumsikan file besar dan banyak perubahan kecil." + +#: src/diff.c:907 +msgid "" +"FILES are `FILE1 FILE2' or `DIR1 DIR2' or `DIR FILE...' or `FILE... DIR'." +msgstr "" +"FILES adalah `FILE1 FILE2' atau `DIR1 DIR2' atau `DIR FILE...' atau `FILE... " +"DIR'." + +#: src/diff.c:908 +msgid "" +"If --from-file or --to-file is given, there are no restrictions on FILES." +msgstr "" +"Bila --from-file atau --to-file diberikan, tidak ada batasan untuk FILES." + +#: src/diff.c:909 src/diff3.c:474 src/sdiff.c:222 +msgid "If a FILE is `-', read standard input." +msgstr "Jika sebuah file FILE adalah `-', baca standard input." + +#: src/diff.c:920 +#, c-format +msgid "Usage: %s [OPTION]... FILES\n" +msgstr "Penggunaan: %s [OPTION]... FILES\n" + +#: src/diff.c:949 +#, c-format +msgid "conflicting %s option value `%s'" +msgstr "Nilai option %s konflik dengan `%s'" + +#: src/diff.c:962 +msgid "conflicting output style options" +msgstr "option gaya output konflik" + +#: src/diff.c:976 +msgid "regular empty file" +msgstr "file reguler kosong" + +#: src/diff.c:976 +msgid "regular file" +msgstr "file reguler" + +#: src/diff.c:978 +msgid "directory" +msgstr "direktori" + +#: src/diff.c:981 +msgid "block special file" +msgstr "blok file khusus" + +#: src/diff.c:984 +msgid "character special file" +msgstr "karakter file khusus" + +#: src/diff.c:987 +msgid "fifo" +msgstr "fifo" + +#: src/diff.c:991 +msgid "socket" +msgstr "soket" + +#: src/diff.c:994 +msgid "message queue" +msgstr "antrian pesan" + +#: src/diff.c:997 +msgid "semaphore" +msgstr "semafor" + +#: src/diff.c:1000 +msgid "shared memory object" +msgstr "obyek memori bersama" + +#: src/diff.c:1003 +msgid "typed memory object" +msgstr "objek memori bertipe" + +#: src/diff.c:1006 +msgid "weird file" +msgstr "file aneh" + +#: src/diff.c:1070 src/diff.c:1256 +#, c-format +msgid "Only in %s: %s\n" +msgstr "Hanya dalam %s: %s\n" + +#: src/diff.c:1193 +msgid "cannot compare `-' to a directory" +msgstr "tidak dapat membandingkan `-' dg direktori" + +#: src/diff.c:1220 +msgid "-D option not supported with directories" +msgstr "-D option tidak didukung dg direktori" + +#: src/diff.c:1229 +#, c-format +msgid "Common subdirectories: %s and %s\n" +msgstr "Subdirektori sama: %s dan %s\n" + +#: src/diff.c:1266 +#, c-format +msgid "File %s is a %s while file %s is a %s\n" +msgstr "File %s adalah %s sementara file %s adalah %s\n" + +#: src/diff.c:1345 +#, c-format +msgid "Files %s and %s are identical\n" +msgstr "File %s dan %s identik\n" + +#: src/diff3.c:26 +msgid "Written by Randy Smith." +msgstr "Ditulis oleh Randy Smith" + +#: src/diff3.c:328 +msgid "incompatible options" +msgstr "option tidak kompatibel" + +#: src/diff3.c:368 +msgid "`-' specified for more than one input file" +msgstr "`-' dispesifikasikan lebih dari satu file input" + +#: src/diff3.c:408 src/diff3.c:1232 src/diff3.c:1645 src/diff3.c:1700 +#: src/sdiff.c:305 src/sdiff.c:879 src/sdiff.c:890 +msgid "read failed" +msgstr "gagal membaca" + +#: src/diff3.c:441 +msgid "-e --ed Output unmerged changes from OLDFILE to YOURFILE into MYFILE." +msgstr "" +"-e --ed Output perubahan tanpa dimerge dari OLDFILE ke YOURFILE ke dl " +"MYFILE." + +#: src/diff3.c:442 +msgid "-E --show-overlap Output unmerged changes, bracketing conflicts." +msgstr "-E --show-overlap Output perubahan unmerge, konflik dl tanda kurung." + +#: src/diff3.c:443 +msgid "-A --show-all Output all changes, bracketing conflicts." +msgstr "-A --show-all Output seluruh perubahan, konflik dalam tanda kurung." + +#: src/diff3.c:444 +msgid "-x --overlap-only Output overlapping changes." +msgstr "-x --overlap-only Tampilkan perubahan yang overlap." + +#: src/diff3.c:445 +msgid "-X Output overlapping changes, bracketing them." +msgstr "-X Output perubahan overlap, beri tanda kurung." + +#: src/diff3.c:446 +msgid "-3 --easy-only Output unmerged nonoverlapping changes." +msgstr "-3 --easy-only Output unmerged perubahan nonoverlap." + +#: src/diff3.c:448 +msgid "-m --merge Output merged file instead of ed script (default -A)." +msgstr "-m --merge Tampilkan file yang dimerge bukan script ed (baku -A)." + +#: src/diff3.c:449 +msgid "-L LABEL --label=LABEL Use LABEL instead of file name." +msgstr "-L LABEL --label=LABEL Gunakan LABEL bukan nama file." + +#: src/diff3.c:450 +msgid "-i Append `w' and `q' commands to ed scripts." +msgstr "-i Tambah perintah `w' dan `q' ke script ed." + +#: src/diff3.c:453 src/sdiff.c:202 +msgid "--diff-program=PROGRAM Use PROGRAM to compare files." +msgstr "--diff-program=PROGRAM Gunakan PROGRAM untuk membandingkan file." + +#: src/diff3.c:465 +#, c-format +msgid "Usage: %s [OPTION]... MYFILE OLDFILE YOURFILE\n" +msgstr "Pemakaian: %s [OPTION]... MYFILE OLDFILE YOURFILE\n" + +#: src/diff3.c:467 +msgid "Compare three files line by line." +msgstr "Bandingkan tiga file baris per baris." + +#: src/diff3.c:673 +msgid "internal error: screwup in format of diff blocks" +msgstr "kesalahan internal: kacau dalam format blok diff" + +#: src/diff3.c:971 +#, c-format +msgid "%s: diff failed: " +msgstr "%s: diff gagal: " + +#: src/diff3.c:993 +msgid "internal error: invalid diff type in process_diff" +msgstr "kesalahan internal: tipe diff tidak valid dalam process_diff" + +#: src/diff3.c:1018 +msgid "invalid diff format; invalid change separator" +msgstr "format diff tidak valid; separator perubahan tidak valid" + +#: src/diff3.c:1242 +msgid "invalid diff format; incomplete last line" +msgstr "format diff tidak valid; baris akhir tidak lengkap" + +#: src/diff3.c:1265 src/sdiff.c:273 +#, c-format +msgid "subsidiary program `%s' not executable" +msgstr "program subsider `%s' tidak dapat dieksekusi" + +#: src/diff3.c:1268 src/sdiff.c:276 src/util.c:298 +#, c-format +msgid "subsidiary program `%s' not found" +msgstr "program subsider `%s' tidak ditemukan" + +#: src/diff3.c:1272 src/sdiff.c:268 src/util.c:301 +#, c-format +msgid "subsidiary program `%s' failed" +msgstr "program subsider `%s' gagal" + +#: src/diff3.c:1294 +msgid "invalid diff format; incorrect leading line chars" +msgstr "format diff tidak valid; karakter leading line tidak tepat" + +#: src/diff3.c:1370 +msgid "internal error: invalid diff type passed to output" +msgstr "kesalahan internal: tipe diff tidak valid dimasukkan ke output" + +#: src/diff3.c:1647 src/diff3.c:1704 +msgid "input file shrank" +msgstr "file input mengecil" + +#: src/dir.c:162 +#, c-format +msgid "cannot compare file names `%s' and `%s'" +msgstr "tidak dapat membandingkan nama file `%s' dan `%s'" + +#: src/sdiff.c:35 +msgid "Written by Thomas Lord." +msgstr "Ditulis oleh Thomas Lord." + +#: src/sdiff.c:183 +msgid "-o FILE --output=FILE Operate interactively, sending output to FILE." +msgstr "" +"-o FILE --output=FILE Operasi secara interaktif, kirim output ke FILE." + +#: src/sdiff.c:185 +msgid "-i --ignore-case Consider upper- and lower-case to be the same." +msgstr "-i --ignore-case Abaikan huruf kapital dan huruf kecil." + +#: src/sdiff.c:188 +msgid "-W --ignore-all-space Ignore all white space." +msgstr "-W --ignore-all-space Abaikan seluruh white space." + +#: src/sdiff.c:194 +msgid "-w NUM --width=NUM Output at most NUM (default 130) columns per line." +msgstr "" +"-w NUM --width=NUM Output paling banyak NUM (baku 130) kolom per baris." + +#: src/sdiff.c:195 +msgid "-l --left-column Output only the left column of common lines." +msgstr "-l --left-column Hanya tampilkan kolom kiri baris yang sama." + +#: src/sdiff.c:196 +msgid "-s --suppress-common-lines Do not output common lines." +msgstr "-s --suppress-common-lines Jangan tampilkan baris yang sama." + +#: src/sdiff.c:201 +msgid "" +"-H --speed-large-files Assume large files and many scattered small changes." +msgstr "" +"-H --speed-large-files Asumsikan file besar dan banyak sebaran perubahan " +"kecil." + +#: src/sdiff.c:214 +#, c-format +msgid "Usage: %s [OPTION]... FILE1 FILE2\n" +msgstr "Pemakaian: %s [OPTION]... FILE1 FILE2\n" + +#: src/sdiff.c:215 +msgid "Side-by-side merge of file differences." +msgstr "Merge side-by-side beda file." + +#: src/sdiff.c:327 +msgid "cannot interactively merge standard input" +msgstr "tidak dapat menggabung input standar secara interaktif" + +#: src/sdiff.c:588 +msgid "both files to be compared are directories" +msgstr "kedua file yang dibandingkan adalah direktori" + +#: src/sdiff.c:853 +msgid "" +"ed:\tEdit then use both versions, each decorated with a header.\n" +"eb:\tEdit then use both versions.\n" +"el:\tEdit then use the left version.\n" +"er:\tEdit then use the right version.\n" +"e:\tEdit a new version.\n" +"l:\tUse the left version.\n" +"r:\tUse the right version.\n" +"s:\tSilently include common lines.\n" +"v:\tVerbosely include common lines.\n" +"q:\tQuit.\n" +msgstr "" +"ed:\tEdit lalu gunakan kedua versi, dekorasikan dengan header.\n" +"eb:\tEdit lalu gunakan kedua versi.\n" +"el:\tEdit lalu gunakan versi kiri.\n" +"er:\tEdit lalu gunakan versi kanan.\n" +"e:\tEdit versi baru.\n" +"l:\tGunakan versi kiri.\n" +"r:\tGunakan versi kanan.\n" +"s:\tSertakan baris bersama secara diam-diam.\n" +"v:\tSertakan baris bersama secara verbose.\n" +"q:\tKeluar.\n" diff --git a/src/apps/bin/diffutils-2.8.1/po/insert-header.sin b/src/apps/bin/diffutils-2.8.1/po/insert-header.sin new file mode 100644 index 0000000000..b26de01f6c --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/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/src/apps/bin/diffutils-2.8.1/po/ja.gmo b/src/apps/bin/diffutils-2.8.1/po/ja.gmo new file mode 100644 index 0000000000000000000000000000000000000000..0ad1cef514d8ad497a100f055d62ad384ece8f8b GIT binary patch literal 22004 zcmd^_dwg8gb?*;tk_Ls`B)mePDF=dW9vWGa9Wb&D*s^R3Y)eRTh+~|1BppeEr5P~~ zY(taYq_@4dX_DUFHtFN`_IBhm4j38a7nW>G@(W3p>=Crah7ev31Z>j)GEhnapMKZg z`<$7PG{)r9|2p>8@0|VKYp=c5+Uu+zf8xUDE&ba8{Jv#<@*wz@WqqbqXMe63{ElUP zuEes=YX`e{f5fuBa22=^d;+YrtP8&gUI_+4+FbZu@C)Ep@JpcdD=6a?g71M}wycY$ zfTWAcb^b*mFu?myKpT{HQ^8k2`oH)BgY;o7;hkjN4*nfTyNh22ziL^RTnJtZE(WP{ z$-N-sU(yFI0G|eLwX92-gEb#qrSmWSCy;S2mGM~D7e5Kk1*<^D`Qi`FyR@HWS(jZ3 z-V91PYq;#sKk}bTN1vNFOrJm!PG!6x;{iVOf`d4y2#USAwkR^1lWd=W;2h z-zzQvr-SqGjOJ`ZI6S2BjoS`52lTdOz0C2d-v#OK zD%N1#0ra4kr?DgOwOdpdO; z$a$Fh7a;vl?F4BzbqIv+Q(pw(?`gsxmxGj9p9f39PlM1>_-)z}ka4Fqfu95a1Z2I_ zehf;x9&j4}kAhpk-+=JSwVW}@zxH+T_t@Ht!IL0!vf%COKLtYn>lwqM?0WV}=5u|W zK^afpWgQoQ!Vg!2e*?}0cY*YE{Tm?rbpv&*T5vYVT5gba3ktnUzp|gb=2O@L!heMifb2_Q3S|C;gC<|bfvy3WFLVe9pV{DT27@4Ff$xFmgZ}^@&jUB| zPX9%(fu8_>4Knt0K-M??5|H^#XDkcaPhSDj_w*lt(097*GxVPRG{`$qV z6$^jCBgJuDUfcmPUU47DeilCo!b`;`K>90w6TF(Hp8=tN3AB^)k~)yQl6sK#C1DVn zmV6gvJtaQ^nRm(Gg6v(%X7Im(+d=42asY%+O8y0$3XXwSu_U1v^DdnYUIg9+7JzF& z`Y%NuoVO7CW8NK(6zAu>o7iHZ@1JutWnUJ7Z-X-}>&7`C^tka}koDgve8@a*lzrk1 z+<463yC8JAi9M72n-+l3_$E2`k}vdSjGKgypvO(8b@?p%l6tdlH26*MHs1dfgjZ(C zIPlNSp9Gob%|#%5baN9}3H~L>-rW2wI17|{-)vcBj4AUkYX(_E8T=viDtiWm_siY` z>3=qDWWBTR1L2?9vX5U?O<+b)<^`Y3X#k6GS;#a z;3bw-Rbo)+Tgdw=uoV102;HiBLHMKU*C4!I&7N2`$R5l7RIdctzv}Or{7oS1t{yQc zEtmaf zeamIN%x8HI$b6O`0~v4mN$@<9%wsJH9#X#>_zRz_Un_qvA_)&%LHZ8qX41Dv-zLeg zizI9Ee!^Em`z@pv(tjsiKze{AKX}DjLHaY&-;;!oi%3gJ_mSq3f}|gl{x3;>8#Gw| z3;ZDoI$MvDevdSV^cB)=q@R%fk|aNP+!9{0Ny|yz4_c^SJAcEZRV3NVa?(PQ@CExM zw3B;<`pq=B4!n^hdjPM9oKU~3`1@Dp`TrQqhCkuudXw=r@b5@}O!^B_2k9S3KOklQ zgdgrA{kh4U2bP%UB_L-~@NfYDjVx<@Zw!Vh39fk*+lFe+_<* z)M(xXE;P^I0ISTi2eAe^fKK?pM7=H%o4${M<)uipD2uaS;k4XQMB)`v)+DM<0 z7k-;be?+>5bUR6YYcyEj1wTzHBsru{klg|q{iN*QH_gj~;NOt` zi6m#^YLff{8sw~rJXF7!!D6tU6e3lVzD&B4^jXprQWHsjoJ+BtL|%x_vbK@DUnvjQ zkv5XfC(R;FBmEE3pOTWKIO!6S{Qj0Sn{+AZ9@6JY-fun+-&ZfTT@i}6I8l4i!liX~ zBx)}aYzwZp8zSL&FcdB;u=!1yLeftS)5@pWHf`)!DBRrY*bObgXs{tpALU++yQ`|I zOr=ceS_ZNs4e?+reK$Hbbu3$tJ8`@@w%r;EJ2AT{8fmi^RxYV1(VgEip`cV3%=HQy zB5iGvupN)+W_B>#sGdx{m4Q_&@2Xr-w|LdcqLtM(73Hf|J=~sIl$# zXebc!Q>r z^j$&sfz0btI=rF8;_u`e%xJRXPB5Xc z{ZhKAT@z|oOsnZ#dq-t;iCw=w4u?TO#b1h1gs(GIN^`4}7FknbHvbz#O-)X;OqKG^ zRk1=52E>?fe(=)a6&Tz8HWm78=jyesI=5XkK$0wO4kS4>VMSDi&5vVz!ca(xQmY6ki5}QM|s? zNu0DV!}R`fFkMLl>8d^y4o278c8wEkR9w3@8j3r1V=x}HLt)z#w;^PuwlHg;JsN3_ z2HWOV*HkU4nTIe~j#Tnq5S0kcc9CXHFkwtuiQEmyn;IYxh)48WeFP~kQZdvNavHNM z&ef;LE;n82SNetp;V37HAdYcTb$$cvR8QwHKU)-!MAyrxElz8@ZC54YA_(Fw?7QTs zl1MakeyXyU&x7B0X>vHBk^E; zz**NGgeTe2@w0ABII?k6!W1x-7)f=Y$YsdslguZzp>1BeEmjo&&*I-oyC!>4NbrUh zcFIT*Df7<$WZS`3s1|g>;+EJ;=FP9bP6}|c>YdiP=2axAehh_UaS_Q_6u#V`;WBBG zmtm2&*{oWtg%6SqC&D`inArDgBBT3ARNN$P;!lccrQybwdbf>(Q>3>w>WeMF^;DMr>fj za;2UaS((=B;wwdQt@4Q_y6ajFb}-Qzw`W|J(PIsfc9g3&$eDgYAVFu#z0MGYqI=J^ zGgCd&n~*|ru*c9J!NHjG0kpCagbjfv3~yzY+O;BdAW%b#U2gl?PLOv)UNm?pTqHd# zG)Ga12d}O=h;!u}s;-3cZ4vG~m;@ruMJ(#Q7s{$r*eDZegR7MStiufA`q?PLs42un zFQ`=*S~TXU?KAtzhQPqE8|{q%Ma}RQYe1U`hm0>CFR}DZv}(x$#kq{PqH1}KdS?G4 z_Rp*BBgj3FdTk6~v_+Jh&gf`}S@_i(}u$PJiP z2^#O_rW?;=7)Y^t?KCyi>U*atqe#pzp_9L8(G4M6u0mN;Hu7Sw&YtAjl(`alYF_tI zQYKB%^8V_xyE3I#04)mlIZbiSL~EiA)nc|oX=b5<6f$8|$oVt&oYIg?Sha5tHe&)K zfb8mEj78BZ;@OPcy_;L?)$P$~vRJ=nNcLDYM$y-c&h-YC18Z*6a>;45xnL!k- z(>wcQx5*Ne`t|$BR>oOcz$bO)mIiXM2K2`#od;O%o$ktHc6lrEn_`9N_z$*7b!P6D|5Z`svn8@m}en zJ{oeG{7I@ULghg3sFARmI#kCnWJOLxA{wJ-xto|r>@BuXT`rWZnW)dwQY<(TZlpPs z2n4uja%g#oVW4yTJ>p=uh}NEMuMasmQJi%l?3j2kp1|nGp7WZc$FOVy*wEp4r~#d) zl>k$be61_vYei5foy%<}>(HqQh;hVKHwJHt56Lsx7DTWRktUkO#xbOturh)gMaj}n zg;+$0Bzb`amAX-9Rd>L2?~_HshuXHP(*1hxp>R`#I%}nlkt64#gV);XQWOZR4K>DF z^bN`M?D0vCzA2eee4ROFF&o}c!j^H@$+$+1=bFot=yp}VdY)oYqsiy0*StEMQW{}{ z%Pu!MXi!Xm#c-V${@TS@85i8XwlSE7z`!6Hi(R;}`3 zu9n9VWl)t)Q@*tYl{F%I?yxmR+)0iiXD3Q19yMh&qqo%ILc&?I?V|#^>Pgp$;D;OuY|*e zYdP{glQXgMQl|~y3(Z@C32rZq*0PAUxa7h3b8Q5OSQO@7BP9%WUkHC8i=8ljmE5s8 z$Ku))F0PI`*zXB;#&j}Co0vz%RZJ6Alb}s8s9(AQ%L{6-%V9k8Hq`0`a(7ppK zomprvC8JPsRPIuFnK`TQt2fBv4a&9=sh4QL zR*YG7;!ZPuKvBt#@k}kNvhSK#Q!{T_-3m?-mwINvrAZVpYN0KJYe*5WHMq8@U_~SW zd#q>M8$)u$aDa--jq8eWz-7iLK(nJ(q&qB*Hs3+FXxVamkrT!UX|<~p_3VMYB!syi zbBYQULL~T6tQ75573V{+9>ppBV6?$VbcV-0hR~C)m5`D1)M%GiRj;UAwy212#R?bSvS^3SZoVy>emd9|ADapRFs=BVSYS}6TsS-p+=oXx{%1V*8rS?kUk`fK2 zt5&T#Tcg^1h5DXid-oXc5>sH^g%6ocm!ne6h19NSZg!$^_&t5WJ6% z4~v8AomgQ(4HrL=m3SpuTk#}nc3(m#b@J(}D7()ZPQrS-7ItdM$**gPwBe~+5{Y64 zX3e2460N@{f+~hmnS8q5I!6+ zQQk}(e$KLaEgYO;PMUHipl&Kzp78NCd>%(>$;T5BD)Qjf%Q5L~EediKndPgN+(|dI zwU^lyRSQKxiKylxsXUk>A~`MQE0GeaX2h%t+MGpY%7;>2HI~zZvPAt7j|A&2K69O4 z(a7#_fWx+Ig8Hgp3}6nol5&lFxse--@l*!+6c9w96csr2XKhY}*6|fYQmA{S8G|~} z$?8Ny%`I^|Q_0l9!Omx0Kb!8wWiqi-`t%CM^%N^RzZTvI$CYZ7kEi~Z3VpLJxUcN| zuj!j<-YWN&oquP7i)?{~e2xa8too>;ccv-S6tO~K#Z~c8eb$y__!ciQr)dq<5Tdxz zwS+5!v)N+KwOCwse0{s{x~K}#8{d-5b7;|yVZ&abKr~-WXo9E3S&Pe&uFWSi)Rh`h zou(KK^enh`st>bSY?moAHzMO((06rB0I!bmwXxsfW{#vfC|;QwPLDpDi3qVoSY$r5 z`;(YZGm6QDM+zR4!=Wr~IaHZxk87dVLKQK>Vh*Ap$X71E{}%l{YtmWjbE78SHr_l# zZHqFo?@c%f$1=vN&k4aMHdZg$97r3dhsXR2%-1#_6yMC$K>mR1ZI>Hu*un&ooYgjY;n zwFPe2i0cs-#gKgP^kyQIG2hFre8sXLXB|!muHgvmvsF_*2usXO^)*aMTkRk9gqj?Q z@v~p+giw8Io%-{uAxd>LBC88jHU>D)Vvv{FV)6)kD3jGLExM_wq`08EsxDA2AFrqq zSb(4_vrCJMO9RC-1I1spOJ zI*`%$n$Z@xCwN;cwqC3#7D+@K98OQOQxtaMw-hX`Tw0M?WJytR0j^Fl90PR_tPHbn zU3_|bYcLd^E&kvrF4?&i%gY0|S7$29Xk3>96&yx6S!MRD`Vc`1Ix@(8S-yF@BkpL| z@YX%<*zTtfo^l7>&F=GVPoBu6;qKkc!idhgFAUUkbl}910ZlYquidZg-{$tXr?-CCbJQJk({7*Zy8YRe@{$UF zsSeA^P-)=9^r+03J#@G6Z%_qIK&WE`3MG#xkD;;!{3sz_HmHaWcT`t>IC)HqXQ{q{ ze#|~AGduM}%1sTq-iE3Rn#mhW^`thZ4y2?JMiT$Ko^^-aQ;I2VU5VUeN6%3}0!==u zPQIX^J-Y^vnuwr7NB8b8{)q4zC!vl>Q}(!|)H)KjS>+<)3l5B+l6zqlhNP6+WkbmU3Z&iBT- zL%uK0O{e>YKQJ;{=)2SHXC;1B^&O(bw)bs^zCTNyOr2pm>U@>BV=_>3gFb+xsln8S z)a$87Q$sR!_r%tNYET^<#8FT0J#l!iJJ$O|dQ=xoj1AiR+CZl}H1h7ydkCox_p}IP zcNhn_h@Nff;pbFCV@!$?&yEN3)_=IqP49nIt~Yvrqgsy( z^wC;yC}*d$wz$;Ix5as*eD-(mdV#rfIQMn!IqIhURgFIOjyvSOKuM3xWQMrvvm$-^ zjt?B6-2j?~w#g2dV0X`}Xn&!B&q3qDd{m<`_fh_xN_Onqo?Cgo3}HAYC$i_UcLv8e z+gn7py6Ii?@3G6|fjoK#lgF}xb`W@jdmeOqWRm_8{b?@92&M@X9E2u2QqQq3L+Dn$ zVkOYe8rGBQPaS)_d)vdg)2&e7J0$AKeDbmFT#`&q#eAVVABPV^CQ882S9#vB3bO)s zYAW23uGbG77fXWl40}6)-uXgxJd&z|{fherI(tNg?qoz8c2IV(PKNKiw(dBNJA1&+ zI8mk!fy{i@bIA@lC33!YkGe0pO01~wXy$6GBX(qi+(BwQ@1BOM(1!cE+!2*KcHkIX zJ+ObL`=D-}Cu(QkcEy-JGZL(my_=kiPWNQ8BbUj)u8bjdm~=Ewc7TpdeBgwe-ZqeW z(ujf~Z%ceKjrIO!TbCTktoR(gU#S74Nsky;!l%8j9r-}2<&V&j>0?^toT!O$ILZb) z?U`tYdiOjiy`C)!C$%kg6!n5c+}G9piqZ}CwcCHq4P%sG98Wr&J^1GF50EAw)q{{R zC*Z~-QeHm9X3i6Gvu!|c)b{7y7t7uB_NV*brk63jUTO9baW)(uf3FVqJ@%41Jf^u7 z$c?U1_Rwi1(mLHU?i20-cR+3&?he=0!mImX_aFjKF)tteb$pG}$nHLhmN+i5$kWn( zv2i^M=X>5~_h~n+9n)y*ez=+wGP#VI7+vGhQmz`~)%C!ZuGh7~{&?*?xlOB_#iY47 zjUuYhlQS3cFfqpLt76B!+k_Rjnb)Uu}Dzr)4795itIYJ2f5P-b3z2{))c$ zd3<~jj5;05d()ge21d)iz-iRg{1V%h}aX- zdv1_R>Iq>nxw-beIgIHj?W9(oFqiR4YqIE;o}-Vy>z2+hr4O3WQ1jduM4$;-94z*4uR^hBPOPnc4-z$!)VXN>SM zOq1>KmSSZnODF8@jB}_nt{-!9C-x<$vR2HWD^^`Y+l?kJZo zaTDQZfj;gDcc(WZHW>F47nf83ft;3en(UCPo>CZNa%neI&9wOFy4oqU|lfAbqeMUPH{VWMManqt!y*jV;;Dp-Id8oI$*JKTic8!Wy@@kk; z)$!K8eb1&|N}WiZ66@M^w;o2ddwv0BF3Jm}@X4;P>&iVS*Hc3&3yU}HjjQghUIE)E z;&)`|(e8(JsL7Gu?Z2VR!+!O&njQDx&FHa5+|yox1*dhnW5#~zcTeUCE78J|X%BE2 z+$)9;8|SHOH;n?s^Ofw_lXTNNyTzM^ixYbYC&dukYdqD-4PIDDvO|ZJBs;RhN_fkJ zl_WbR#FgMI%8e^Yc0jrQx@1RnvZEr|@r`813g&ST1{!crh$DhYCXad3EYaqQ_gcy; zQ^t7rJOjQ%Q|vB%1pD8Xb(#uF{iaI~4DTBf4Q}myr2F6h>x7dO;AK_5_tD*3dyX7_ zN0>XgVI(O|nBDL8yy#PYv=6uXj?KOQOb*%wR>fY>3#Q z=R?nCIFZg?clj((kTdmk-_Mz{t5h>1nn)UW*mXC0T%b-%)_N?@pTFa&Jx}cY5Qf9i zt>bINrexl)xu^PmzUvuxSgZVl+tqFTg>0f&hus5dmbX(3o79UqmmW-=EMfK z_gA^4BN?xCUncM-JLfubuFJ_;>ApF>78q?%j`sO=H|LX($1W&Y*lu+PmTi(xF;&qo*%6c zq@w6{Wjl|0*AR6%%2ZGu*ORE~{+xNLh#ha%D8RHRP5CI3MQGHL8MQOZ|A|p%$%sOY ztjgo79QuIcnAx=P#kuQOp*)IU>7haVQcpwIy>fi}KGe>FBkvt~Qtnp6M|-_0c!k8(?CQ=}NNmlPjrj`8&hOtTJ(`{-bi~jT+LK3AjPb+smEb6Kc}K%ppnN%u}faZW1>C* zPEt*>Jf_D^kt_8`YBYsQ(b#P!;zsNlZyl;H-_LD)k`pS3@~FHDN|wVhH)eMuV=M6F-8xh zcFQ#sHM2SON^+0VSsYUF>j=|(U!}6G&&, 2002. +# This file is distributed under the same license as the diffutils package. +# +msgid "" +msgstr "" +"Project-Id-Version: GNU diffutils 2.7.10\n" +"POT-Creation-Date: 2002-04-05 14:10-0800\n" +"PO-Revision-Date: 2002-03-14 12:16+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/c-stack.c:188 +msgid "program error" +msgstr "¥×¥í¥°¥é¥à¡¦¥¨¥é¡¼" + +#: lib/c-stack.c:189 +msgid "stack overflow" +msgstr "¥¹¥¿¥Ã¥¯¡¦¥ª¡¼¥Ð¡¼¥Õ¥í¡¼" + +#: lib/error.c:128 lib/error.c:156 +msgid "Unknown system error" +msgstr "̤ÃΤΥ·¥¹¥Æ¥à¡¦¥¨¥é¡¼¤Ç¤¹" + +#: lib/freesoft.c:27 +msgid "" +"This program comes with NO WARRANTY, to the extent permitted by law.\n" +"You may redistribute copies of this program\n" +"under the terms of the GNU General Public License.\n" +"For more information about these matters, see the file named COPYING." +msgstr "" +"This program comes with NO WARRANTY, to the extent permitted by law.\n" +"You may redistribute copies of this program\n" +"under the terms of the GNU General Public License.\n" +"For more information about these matters, see the file named COPYING.\n" +"-- °Ê²¼¤Ï»²¹ÍÌõ¤Ç¤¹¡£Ë¡Åª¤Ê»ö¹à¤Ë¤Ä¤¤¤Æ¤Ï¾å¤Îµ­½Ò¤Ë¤·¤¿¤¬¤Ã¤Æ¤¯¤À¤µ¤¤¡£\n" +"Ë¡¤Îµö¤¹ÈϰϤˤª¤¤¤Æ¡¢°ìÀÚ¤ÎÊݾڤϤ¢¤ê¤Þ¤»¤ó¡£¤¢¤Ê¤¿¤Ï¡¢¤³¤Î¥×¥í¥°¥é¥à\n" +"¤ÎÊ£À½¤ò¡¢GNU General Public License¤Ë´ð¤Å¤¤¤ÆºÆÈÒÉۤǤ­¤Þ¤¹¡£¤³¤ì¤é¤Î\n" +"»ö¹à¤Ë¤Ä¤¤¤Æ¤Î¾Ü¤·¤¤¾ðÊó¤Ï¡¢COPYING¤È¤¤¤¦¥Õ¥¡¥¤¥ë¤ò¸«¤Æ¤¯¤À¤µ¤¤¡£" + +#: lib/getopt.c:693 +#, c-format +msgid "%s: option `%s' is ambiguous\n" +msgstr "%s: ¥ª¥×¥·¥ç¥ó¡Ö%s¡×¤ÏÛ£Ëæ¤Ç¤¹\n" + +#: lib/getopt.c:718 +#, c-format +msgid "%s: option `--%s' doesn't allow an argument\n" +msgstr "%s: ¥ª¥×¥·¥ç¥ó¡Ö--%s¡×¤Ï°ú¿ô¤ò¼õ¤±ÉÕ¤±¤Þ¤»¤ó\n" + +#: lib/getopt.c:723 +#, c-format +msgid "%s: option `%c%s' doesn't allow an argument\n" +msgstr "%s: ¥ª¥×¥·¥ç¥ó¡Ö%c%s¡×¤Ï°ú¿ô¤ò¼õ¤±ÉÕ¤±¤Þ¤»¤ó\n" + +#: lib/getopt.c:741 lib/getopt.c:914 +#, c-format +msgid "%s: option `%s' requires an argument\n" +msgstr "%s: ¥ª¥×¥·¥ç¥ó¡Ö%s¡×¤Ë¤Ï°ú¿ô¤¬É¬ÍפǤ¹\n" + +#: lib/getopt.c:770 +#, c-format +msgid "%s: unrecognized option `--%s'\n" +msgstr "%s: ǧ¼±¤Ç¤­¤Ê¤¤¥ª¥×¥·¥ç¥ó¡Ö--%s¡×¤Ç¤¹\n" + +#: lib/getopt.c:774 +#, c-format +msgid "%s: unrecognized option `%c%s'\n" +msgstr "%s: ǧ¼±¤Ç¤­¤Ê¤¤¥ª¥×¥·¥ç¥ó¡Ö%c%s¡×¤Ç¤¹\n" + +#: lib/getopt.c:800 +#, c-format +msgid "%s: illegal option -- %c\n" +msgstr "%s: ÉÔÀµ¤Ê¥ª¥×¥·¥ç¥ó¤Ç¤¹ -- %c\n" + +#: lib/getopt.c:803 +#, c-format +msgid "%s: invalid option -- %c\n" +msgstr "%s: ̵¸ú¤Ê¥ª¥×¥·¥ç¥ó¤Ç¤¹ -- %c\n" + +#: lib/getopt.c:833 lib/getopt.c:963 +#, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "%s: ¥ª¥×¥·¥ç¥ó¤Ï°ú¿ô¤òÍ׵ᤷ¤Þ¤¹ -- %c\n" + +#: lib/getopt.c:880 +#, c-format +msgid "%s: option `-W %s' is ambiguous\n" +msgstr "%s: ¥ª¥×¥·¥ç¥ó¡Ö-W %s¡×¤ÏÛ£Ëæ¤Ç¤¹\n" + +#: lib/getopt.c:898 +#, c-format +msgid "%s: option `-W %s' doesn't allow an argument\n" +msgstr "%s: ¥ª¥×¥·¥ç¥ó¡Ö-W %s¡×¤Ï¡¢°ú¿ô¤ò¼õ¤±ÉÕ¤±¤Þ¤»¤ó\n" + +#: lib/regex.c:1367 +msgid "Success" +msgstr "À®¸ù" + +#: lib/regex.c:1370 +msgid "No match" +msgstr "°ìÃפ·¤Þ¤»¤ó" + +#: lib/regex.c:1373 +msgid "Invalid regular expression" +msgstr "̵¸ú¤ÊÀµµ¬É½¸½¤Ç¤¹" + +#: lib/regex.c:1376 +msgid "Invalid collation character" +msgstr "̵¸ú¤ÊÀ°Îóʸ»ú¤Ç¤¹" + +#: lib/regex.c:1379 +msgid "Invalid character class name" +msgstr "̵¸ú¤Êʸ»ú¥¯¥é¥¹Ì¾¤Ç¤¹" + +#: lib/regex.c:1382 +msgid "Trailing backslash" +msgstr "¸å³¤¹¤ëµÕ¼ÐÀþ" + +#: lib/regex.c:1385 +msgid "Invalid back reference" +msgstr "̵¸ú¤ÊµÕ»²¾È" + +#: lib/regex.c:1388 +msgid "Unmatched [ or [^" +msgstr "Äà¤ê¹ç¤ï¤Ê¤¤[¤ä[^" + +#: lib/regex.c:1391 +msgid "Unmatched ( or \\(" +msgstr "Äà¤ê¹ç¤ï¤Ê¤¤(¤ä\\(" + +#: lib/regex.c:1394 +msgid "Unmatched \\{" +msgstr "Äà¤ê¹ç¤ï¤Ê¤¤\\{" + +#: lib/regex.c:1397 +msgid "Invalid content of \\{\\}" +msgstr "̵¸ú¤Ê\\{\\}¤ÎÆâÍÆ" + +#: lib/regex.c:1400 +msgid "Invalid range end" +msgstr "̵¸ú¤ÊÈϰϽªÎ»" + +#: lib/regex.c:1403 +msgid "Memory exhausted" +msgstr "²¾ÁÛ¥á¥â¥ê¤ò»È¤¤²Ì¤¿¤·¤Þ¤·¤¿" + +#: lib/regex.c:1406 +msgid "Invalid preceding regular expression" +msgstr "̵¸ú¤ÊÀè¹ÔÀµµ¬É½¸½" + +#: lib/regex.c:1409 +msgid "Premature end of regular expression" +msgstr "ͽ´ü¤»¤ÌÀµµ¬É½¸½¤Î½ªÎ»" + +#: lib/regex.c:1412 +msgid "Regular expression too big" +msgstr "Â礭¤¹¤®¤ëÀµµ¬É½¸½" + +#: lib/regex.c:1415 +msgid "Unmatched ) or \\)" +msgstr "Äà¤ê¹ç¤ï¤Ê¤¤)¤ä\\)" + +#: lib/regex.c:8034 +msgid "No previous regular expression" +msgstr "Á°¤ÎÀµµ¬É½¸½¤¬¤¢¤ê¤Þ¤»¤ó" + +#: lib/xmalloc.c:63 +msgid "memory exhausted" +msgstr "²¾ÁÛ¥á¥â¥ê¤ò»È¤¤²Ì¤¿¤·¤Þ¤·¤¿" + +#: src/analyze.c:809 src/diff.c:1283 +#, c-format +msgid "Files %s and %s differ\n" +msgstr "¥Õ¥¡¥¤¥ë%s¤È%s¤Ï°ã¤¤¤Þ¤¹\n" + +#: src/analyze.c:812 +#, c-format +msgid "Binary files %s and %s differ\n" +msgstr "¥Ð¥¤¥Ê¥ê¡¼¡¦¥Õ¥¡¥¤¥ë%s¤È%s¤Ï°ã¤¤¤Þ¤¹\n" + +#: src/analyze.c:1058 src/diff3.c:1413 src/util.c:526 +msgid "No newline at end of file" +msgstr "¥Õ¥¡¥¤¥ëËöÈø¤Ë²þ¹Ô¤¬¤¢¤ê¤Þ¤»¤ó" + +#: src/cmp.c:43 +msgid "Written by Torbjorn Granlund and David MacKenzie." +msgstr "ºîÀ®¤Ï¡¢Torbjorn Granlund¤ÈDavid MacKenzie¡£" + +#: src/cmp.c:118 src/diff.c:817 src/diff3.c:427 src/sdiff.c:168 +#, c-format +msgid "Try `%s --help' for more information." +msgstr "¡Ö%s --help¡×¤Ç¡¢¤è¤ê¾ÜºÙ¤Ê¾ðÊó¤òÄ´¤Ù¤Æ¤ß¤Æ¤¯¤À¤µ¤¤¡£" + +#: src/cmp.c:137 +#, c-format +msgid "invalid --ignore-initial value `%s'" +msgstr "̵¸ú¤Ê--ignore-initial¤ÎÃÍ¡Ö%s¡×" + +#: src/cmp.c:146 +msgid "options -l and -s are incompatible" +msgstr "¥ª¥×¥·¥ç¥ó-l¤È-s¤ÏξΩ¤·¤Þ¤»¤ó" + +#: src/cmp.c:154 src/diff.c:826 src/diff3.c:435 src/sdiff.c:177 +#: src/sdiff.c:313 src/sdiff.c:320 src/sdiff.c:910 src/util.c:194 +#: src/util.c:286 src/util.c:293 +msgid "write failed" +msgstr "½ñ¹þ¤ß¼ºÇÔ" + +#: src/cmp.c:156 src/diff.c:828 src/diff.c:1354 src/diff3.c:437 +#: src/sdiff.c:179 +msgid "standard output" +msgstr "ɸ½à½ÐÎÏ" + +#: src/cmp.c:160 +msgid "-b --print-bytes Print differing bytes." +msgstr "-b --print-bytes °Û¤Ê¤ë¥Ð¥¤¥È¤òɽ¼¨¡£" + +#: src/cmp.c:161 +msgid "-i SKIP --ignore-initial=SKIP Skip the first SKIP bytes of input." +msgstr "-i SKIP --ignore-initial=SKIP ÆþÎϤÎÀèƬSKIP¥Ð¥¤¥È¤ò¥¹¥­¥Ã¥×¡£" + +#: src/cmp.c:162 +msgid "-i SKIP1:SKIP2 --ignore-initial=SKIP1:SKIP2" +msgstr "-i SKIP1:SKIP2 --ignore-initial=SKIP1:SKIP2" + +#: src/cmp.c:163 +msgid "" +" Skip the first SKIP1 bytes of FILE1 and the first SKIP2 bytes of FILE2." +msgstr " FILE1¤ÎSKIP1¥Ð¥¤¥È¤ÈFILE2¤ÎSKIP2¥Ð¥¤¥È¤ò¥¹¥­¥Ã¥×¡£" + +#: src/cmp.c:164 +msgid "-l --verbose Output byte numbers and values of all differing bytes." +msgstr "-l --verbose ¤¹¤Ù¤Æ¤Î°Û¤Ê¤ë¥Ð¥¤¥È¤Î»Ø¿ô¤ÈÃͤò½ÐÎÏ¡£" + +#: src/cmp.c:165 +msgid "-n LIMIT --bytes=LIMIT Compare at most LIMIT bytes." +msgstr "-n LIMIT --bytes=LIMIT ¹â¡¹LIMIT¥Ð¥¤¥È¤òÈæ³Ó¡£" + +#: src/cmp.c:166 +msgid "-s --quiet --silent Output nothing; yield exit status only." +msgstr "-s --quiet --silent ½ÐÎϤʤ·¡£½ªÎ»¥¹¥Æ¡¼¥¿¥¹¤Î¤ß¡£" + +#: src/cmp.c:167 src/diff.c:904 src/diff3.c:455 src/sdiff.c:204 +msgid "-v --version Output version info." +msgstr "-v --version ¥Ð¡¼¥¸¥ç¥ó¾ðÊó¤ò½ÐÎÏ¡£" + +#: src/cmp.c:168 src/diff.c:905 src/diff3.c:456 src/sdiff.c:205 +msgid "--help Output this help." +msgstr "--help ¤³¤ÎÀâÌÀ¤ò½ÐÎÏ¡£" + +#: src/cmp.c:177 +#, c-format +msgid "Usage: %s [OPTION]... FILE1 [FILE2 [SKIP1 [SKIP2]]]\n" +msgstr "" +"»ÈÍÑË¡: %s [¥ª¥×¥·¥ç¥ó]... ¥Õ¥¡¥¤¥ë1 [¥Õ¥¡¥¤¥ë2 [¥¹¥­¥Ã¥×1 [¥¹¥­¥Ã¥×2]]]\n" + +#: src/cmp.c:179 +msgid "Compare two files byte by byte." +msgstr "2¤Ä¤Î¥Õ¥¡¥¤¥ë¤ò¥Ð¥¤¥È¤´¤È¤ËÈæ³Ó¤·¤Þ¤¹¡£" + +#: src/cmp.c:183 +msgid "SKIP1 and SKIP2 are the number of bytes to skip in each file." +msgstr "¡Ö¥¹¥­¥Ã¥×1¡×¤È¡Ö¥¹¥­¥Ã¥×2¡×¤Ï¡¢³Æ¥Õ¥¡¥¤¥ë¤ò¥¹¥­¥Ã¥×¤¹¤ë¥Ð¥¤¥È¿ô¡£" + +#: src/cmp.c:184 +msgid "" +"SKIP values may be followed by the following multiplicative suffixes:\n" +"kB 1000, K 1024, MB 1,000,000, M 1,048,576,\n" +"GB 1,000,000,000, G 1,073,741,824, and so on for T, P, E, Z, Y." +msgstr "" +"¥¹¥­¥Ã¥×¤ÎÃͤˤϡ¢¼¡¤Î·¸¿ô¤ò³¤±¤ë¤³¤È¤â¤Ç¤­¤Þ¤¹¡£\n" +"kB 1000¡¢K 1024¡¢MB 1,000,000¡¢M 1,048,576¡¢\n" +"GB 1,000,000,000¡¢G 1,073,741,824¡¢¤Þ¤¿T¡¢P¡¢E¡¢Z¡¢Y¤Ë¤Ä¤¤¤Æ¤âƱÍÍ¡£" + +#: src/cmp.c:187 +msgid "If a FILE is `-' or missing, read standard input." +msgstr "¤â¤·¥Õ¥¡¥¤¥ë¤¬¤Ê¤¤¤«¡Ö-¡×¤Î¤È¤­¡¢É¸½àÆþÎϤòÆɤߤޤ¹¡£" + +#: src/cmp.c:188 src/diff.c:911 src/diff3.c:475 src/sdiff.c:223 +msgid "Report bugs to ." +msgstr "¥Ð¥°¤ò¸«¤Ä¤±¤¿¤é¤ËÊó¹ð¤·¤Æ¤¯¤À¤µ¤¤¡£" + +#: src/cmp.c:231 +#, c-format +msgid "invalid --bytes value `%s'" +msgstr "̵¸ú¤Ê--bytes¤ÎÃÍ¡Ö%s¡×" + +#: src/cmp.c:258 src/diff.c:734 src/diff3.c:333 src/sdiff.c:558 +#, c-format +msgid "missing operand after `%s'" +msgstr "¡Ö%s¡×¤Î¸å¤Î¥ª¥Ú¥é¥ó¥É¤¬¤¢¤ê¤Þ¤»¤ó" + +#: src/cmp.c:270 src/diff.c:736 src/diff3.c:335 src/sdiff.c:560 +#, c-format +msgid "extra operand `%s'" +msgstr ";·×¤Ê¥ª¥Ú¥é¥ó¥É¡Ö%s¡×" + +#: src/cmp.c:477 +#, c-format +msgid "%s %s differ: byte %s, line %s\n" +msgstr "%s %s °Û¤Ê¤ê¤Þ¤¹: ¥Ð¥¤¥È %s¡¢¹Ô %s\n" + +#: src/cmp.c:495 +#, c-format +msgid "%s %s differ: byte %s, line %s is %3o %s %3o %s\n" +msgstr "%s %s °Û¤Ê¤ê¤Þ¤¹: ¥Ð¥¤¥È %s¡¢¹Ô %s %3o %s %3o %s\n" + +#: src/cmp.c:543 +#, c-format +msgid "cmp: EOF on %s\n" +msgstr "cmp: ¥Õ¥¡¥¤¥ë%s¤ÎËöÈø\n" + +#: src/diff.c:41 +msgid "" +"Written by Paul Eggert, Mike Haertel, David Hayes,\n" +"Richard Stallman, and Len Tower." +msgstr "" +"ºîÀ®¤Ï¡¢Paul Eggert¡¢Mike Haertel¡¢David Hayes¡¢\n" +"Richard Stallman¡¢Len Tower¡£" + +#: src/diff.c:322 +#, c-format +msgid "invalid context length `%s'" +msgstr "̵¸ú¤ÊÁ°¸å¤ÎÉý¡Ö%s¡×" + +#: src/diff.c:405 +msgid "pagination not supported on this host" +msgstr "¤³¤Î¥Û¥¹¥È¤Ç¤Ï¥Ú¡¼¥¸³äÉÕ¤±¤ò¥µ¥Ý¡¼¥È¤·¤Þ¤»¤ó" + +#: src/diff.c:420 src/diff3.c:315 +msgid "too many file label options" +msgstr "¥Õ¥¡¥¤¥ë¡¦¥é¥Ù¥ë¡¦¥ª¥×¥·¥ç¥ó¤¬Â¿¤¹¤®¤Þ¤¹" + +#: src/diff.c:498 +#, c-format +msgid "invalid width `%s'" +msgstr "̵¸ú¤ÊÉý¡Ö%s¡×" + +#: src/diff.c:502 +msgid "conflicting width options" +msgstr "Éý¤Î¥ª¥×¥·¥ç¥ó¤¬¾×Æͤ·¤Æ¤¤¤Þ¤¹" + +#: src/diff.c:526 +#, c-format +msgid "invalid horizon length `%s'" +msgstr "̵¸ú¤Ê²£Éý¡Ö%s¡×" + +#: src/diff.c:629 +#, c-format +msgid "`-%ld' option is obsolete; use `-%c %ld'" +msgstr "¡Ö-%ld¡×¥ª¥×¥·¥ç¥ó¤Ï¡¢»þÂåÃÙ¤ì¤Ç¤¹¡£¡Ö-%c %ld¡×¤ò»È¤¤¤Þ¤·¤ç¤¦" + +#: src/diff.c:641 +#, c-format +msgid "`-%ld' option is obsolete; omit it" +msgstr "¡Ö-%ld¡×¥ª¥×¥·¥ç¥ó¤Ï¡¢»þÂåÃÙ¤ì¤Ç¤¹¡£¾Êά¤·¤Þ¤·¤ç¤¦" + +#: src/diff.c:709 +msgid "--from-file and --to-file both specified" +msgstr "--from-file¤È--to-file¤ÎξÊý¤ò»ØÄꤷ¤Þ¤·¤¿" + +#: src/diff.c:832 +msgid "Compare files line by line." +msgstr "2¤Ä¤Î¥Õ¥¡¥¤¥ë¤ò¹Ô¤´¤È¤ËÈæ³Ó¤·¤Þ¤¹¡£" + +#: src/diff.c:834 +msgid "-i --ignore-case Ignore case differences in file contents." +msgstr "-i --ignore-case ¥Õ¥¡¥¤¥ëÆâÍƤÎÂçʸ»ú¾®Ê¸»ú¤ò̵»ë¡£" + +#: src/diff.c:835 +msgid "--ignore-file-name-case Ignore case when comparing file names." +msgstr "--ignore-file-name-case ¥Õ¥¡¥¤¥ë̾¤ÎÂçʸ»ú¾®Ê¸»ú¤ò̵»ë¡£" + +#: src/diff.c:836 +msgid "--no-ignore-file-name-case Consider case when comparing file names." +msgstr "--no-ignore-file-name-case ¥Õ¥¡¥¤¥ë̾¤ÎÂçʸ»ú¾®Ê¸»ú¤ò¶èÊÌ¡£" + +#: src/diff.c:837 src/sdiff.c:186 +msgid "-E --ignore-tab-expansion Ignore changes due to tab expansion." +msgstr "-E --ignore-tab-expansion ¥¿¥ÖŸ³«¤Îº¹¤ò̵»ë¡£" + +#: src/diff.c:838 src/sdiff.c:187 +msgid "-b --ignore-space-change Ignore changes in the amount of white space." +msgstr "-b --ignore-space-change ¶õÇò¿ô¤Îº¹¤ò̵»ë¡£" + +#: src/diff.c:839 +msgid "-w --ignore-all-space Ignore all white space." +msgstr "-w --ignore-all-space Á´¶õÇò¤ò̵»ë¡£" + +#: src/diff.c:840 src/sdiff.c:189 +msgid "-B --ignore-blank-lines Ignore changes whose lines are all blank." +msgstr "-B --ignore-blank-lines ¶õÇò¤À¤±¤Î¹Ô¤Îº¹¤ò̵»ë¡£" + +#: src/diff.c:841 src/sdiff.c:190 +msgid "" +"-I RE --ignore-matching-lines=RE Ignore changes whose lines all match RE." +msgstr "-i RE --ignore-matching-lines=RE RE¤Ë°ìÃפ¹¤ë¤¹¤Ù¤Æ¤Î¹Ô¤Îº¹¤ò̵»ë¡£" + +#: src/diff.c:842 src/sdiff.c:191 +msgid "--strip-trailing-cr Strip trailing carriage return on input." +msgstr "--strip-trailing-cr ÆþÎϤ«¤é¹ÔËö¥­¥ã¥ê¥Ã¥¸¡¦¥ê¥¿¡¼¥ó¤òºï½ü¡£" + +#: src/diff.c:844 +msgid "--binary Read and write data in binary mode." +msgstr "--binary ¥Ð¥¤¥Ê¥ê¡¼¡¦¥â¡¼¥É¤ÇÆɤ߽ñ¤­¡£" + +#: src/diff.c:846 src/diff3.c:451 src/sdiff.c:192 +msgid "-a --text Treat all files as text." +msgstr "-a --text ¤¹¤Ù¤Æ¥Æ¥­¥¹¥È¤È¤·¤Æ½èÍý¡£" + +#: src/diff.c:848 +msgid "" +"-c -C NUM --context[=NUM] Output NUM (default 3) lines of copied " +"context.\n" +"-u -U NUM --unified[=NUM] Output NUM (default 3) lines of unified " +"context.\n" +" --label LABEL Use LABEL instead of file name.\n" +" -p --show-c-function Show which C function each change is in.\n" +" -F RE --show-function-line=RE Show the most recent line matching RE." +msgstr "" +"-c -C NUM --context[=NUM] ¥³¥Ô¡¼¤·¤¿Á°¸åNUM¹Ô (´ûÄê¤Ï3) ¤ò½ÐÎÏ¡£\n" +"-u -U NUM --unified[=NUM] Åý¹ç¤·¤¿Á°¸åNUM¹Ô (´ûÄê¤Ï3) ¤ò½ÐÎÏ¡£\n" +" --label LABEL ¥Õ¥¡¥¤¥ë̾¤ÎÂå¤ï¤ê¤ËLABEL¤ò»ÈÍÑ¡£\n" +" -p --show-c-function ³ÆÊѹ¹¤ò´Þ¤àC¤Î´Ø¿ô̾¤òɽ¼¨¡£\n" +" -F RE --show-function-line=RE RE¤È°ìÃפ¹¤ëľ¶á¤Î¹Ô¤òɽ¼¨¡£" + +#: src/diff.c:853 +msgid "-q --brief Output only whether files differ." +msgstr "-q --brief ¥Õ¥¡¥¤¥ë¤¬°Û¤Ê¤ë¤«¤É¤¦¤«¤À¤±¤ò½ÐÎÏ¡£" + +#: src/diff.c:854 +msgid "-e --ed Output an ed script." +msgstr "-e --ed ed¥¹¥¯¥ê¥×¥È¤ò½ÐÎÏ¡£" + +#: src/diff.c:855 +msgid "--normal Output a normal diff." +msgstr "--normal ɸ½àŪ¤Êº¹Ê¬¤ò½ÐÎÏ¡£" + +#: src/diff.c:856 +msgid "-n --rcs Output an RCS format diff." +msgstr "-n --rcs RCS·Á¼°¤Îº¹Ê¬¤ò½ÐÎÏ¡£" + +#: src/diff.c:857 +msgid "" +"-y --side-by-side Output in two columns.\n" +" -W NUM --width=NUM Output at most NUM (default 130) print columns.\n" +" --left-column Output only the left column of common lines.\n" +" --suppress-common-lines Do not output common lines." +msgstr "" +"-y --side-by-side ½ÄÎó½ÐÎÏ¡£\n" +" -W NUM --width=NUM ¹â¡¹NUM (´ûÄê¤Ï130) °õ»ú·å¤Ç½ÐÎÏ¡£\n" +" --left-column ¶¦Ä̹ԤϺ¸Îó¤À¤±½ÐÎÏ¡£\n" +" --suppress-common-lines ¶¦Ä̹ԤνÐÎϤòÍ޻ߡ£" + +#: src/diff.c:861 +msgid "-D NAME --ifdef=NAME Output merged file to show `#ifdef NAME' diffs." +msgstr "-D NAME --ifdef=NAME º¹Ê¬¤ò¡Ö#ifdef NAME¡×¤Ç¼¨¤¹Ê»¹ç¥Õ¥¡¥¤¥ë¤ò½ÐÎÏ¡£" + +#: src/diff.c:862 +msgid "" +"--GTYPE-group-format=GFMT Similar, but format GTYPE input groups with GFMT." +msgstr "--GTYPE-group-format=GFMT ƱÍͤÀ¤¬¡¢GTYPE¤ÎÆþÎÏ·²¤òGFMT¤ÇÀ°·Á¡£" + +#: src/diff.c:863 +msgid "--line-format=LFMT Similar, but format all input lines with LFMT." +msgstr "--line-format=LFMT ƱÍͤÀ¤¬¡¢Á´ÆþÎϹԤòLFMT¤ÇÀ°·Á¡£" + +#: src/diff.c:864 +msgid "" +"--LTYPE-line-format=LFMT Similar, but format LTYPE input lines with LFMT." +msgstr "--LTYPE-line-format=LFMT ƱÍͤÀ¤¬¡¢LTYPEÆþÎϹԤòLFMT¤ÇÀ°·Á¡£" + +#: src/diff.c:865 +msgid " LTYPE is `old', `new', or `unchanged'. GTYPE is LTYPE or `changed'." +msgstr "" +" ¤³¤³¤ÇLTYPE¤Ï¡Öold¡×¡Önew¡×¡Öunchanged¡×¡£GTYPE¤ÏLTYPE¤«¡Öchanged¡×¡£" + +#: src/diff.c:866 +msgid "" +" GFMT may contain:\n" +" %< lines from FILE1\n" +" %> lines from FILE2\n" +" %= lines common to FILE1 and FILE2\n" +" %[-][WIDTH][.[PREC]]{doxX}LETTER printf-style spec for LETTER\n" +" LETTERs are as follows for new group, lower case for old group:\n" +" F first line number\n" +" L last line number\n" +" N number of lines = L-F+1\n" +" E F-1\n" +" M L+1" +msgstr "" +" GFMT¤Ë¤Ï°Ê²¼¤ò»ØÄê¤Ç¤­¤Þ¤¹:\n" +" %< FILE1¤Î¹Ô\n" +" %> FILE2¤Î¹Ô\n" +" %= FILE1¤ÈFILE2¤Î¶¦Ä̹Ô\n" +" %[-][WIDTH][.[PREC]]{doxX}LETTER printfÉ÷»ØÄê¤Ç¤ÎLETTER\n" +" LETTER¤Ï¡¢°Ê²¼¤Îʸ»ú¤Ç¿·¤·¤¤Êý¡¢¾®Ê¸»ú¤Ç¸Å¤¤Êý:\n" +" F ºÇ½é¤Î¹ÔÈÖ¹æ\n" +" L ºÇ¸å¤Î¹ÔÈÖ¹æ\n" +" N ¹Ô¿ô = L-F+1\n" +" E F-1\n" +" M L+1" + +#: src/diff.c:877 +msgid "" +" LFMT may contain:\n" +" %L contents of line\n" +" %l contents of line, excluding any trailing newline\n" +" %[-][WIDTH][.[PREC]]{doxX}n printf-style spec for input line number" +msgstr "" +" LFMT¤Ë¤Ï°Ê²¼¤ò»ØÄê¤Ç¤­¤Þ¤¹:\n" +" %L ¹ÔÆâÍÆ\n" +" %l ¸å³¤¹¤ë²þ¹Ô¤ò¤Î¤¾¤¤¤¿¹ÔÆâÍÆ\n" +" %[-][WIDTH][.[PREC]]{doxX}n printfÉ÷»ØÄê¤Ç¤ÎÆþÎϹԿô" + +#: src/diff.c:881 +msgid "" +" Either GFMT or LFMT may contain:\n" +" %% %\n" +" %c'C' the single character C\n" +" %c'\\OOO' the character with octal code OOO" +msgstr "" +" GFMT¤äLFMT¤Ë¤Ï°Ê²¼¤ò»ØÄê¤Ç¤­¤Þ¤¹:\n" +" %% %\n" +" %c'C' ʸ»úC°ìʸ»ú\n" +" %c'\\OOO' 8¿Ê¥³¡¼¥ÉOOO¤Îʸ»ú" + +#: src/diff.c:886 +msgid "-l --paginate Pass the output through `pr' to paginate it." +msgstr "-l --paginate ½ÐÎϤò¡Öpr¡×¤Ç¥Ú¡¼¥¸Ê¬³ä¡£" + +#: src/diff.c:887 src/sdiff.c:198 +msgid "-t --expand-tabs Expand tabs to spaces in output." +msgstr "-t --expand-tabs ½ÐÎϤΥ¿¥Ö¤ò¶õÇò¤ËŸ³«¡£" + +#: src/diff.c:888 src/diff3.c:452 +msgid "-T --initial-tab Make tabs line up by prepending a tab." +msgstr "-T --initial-tab ¥¿¥Ö¤Ç»Ï¤Þ¤ë¹Ô¤Ï¡¢Á°¤Ë¥¿¥Ö¤òÃÖ¤¤¤Æ·¤¨¤ë¡£" + +#: src/diff.c:890 +msgid "-r --recursive Recursively compare any subdirectories found." +msgstr "-r --recursive ¸«¤Ä¤«¤Ã¤¿²¼°Ì¥Ç¥£¥ì¥¯¥È¥ê¡¼¤òºÆµ¢Åª¤ËÈæ³Ó¡£" + +#: src/diff.c:891 +msgid "-N --new-file Treat absent files as empty." +msgstr "-N --new-file ¸ºß¤·¤Ê¤¤¥Õ¥¡¥¤¥ë¤Ï¶õ¤È¤ß¤Ê¤¹¡£" + +#: src/diff.c:892 +msgid "--unidirectional-new-file Treat absent first files as empty." +msgstr "--unidirectional-new-file ¸ºß¤·¤Ê¤¤Á°¼Ô¤Î¥Õ¥¡¥¤¥ë¤Ï¶õ¤È¤ß¤Ê¤¹¡£" + +#: src/diff.c:893 +msgid "-s --report-identical-files Report when two files are the same." +msgstr "-s --report-identical-files ξ¥Õ¥¡¥¤¥ë¤¬Æ±¤¸¤È¤­¤ËÊó¹ð¡£" + +#: src/diff.c:894 +msgid "-x PAT --exclude=PAT Exclude files that match PAT." +msgstr "-x PAT --exclude=PAT PAT¤È°ìÃפ¹¤ë¥Õ¥¡¥¤¥ë¤ò½ü³°¡£" + +#: src/diff.c:895 +msgid "" +"-X FILE --exclude-from=FILE Exclude files that match any pattern in FILE." +msgstr "" +"-X FILE --exclude-from=FILE FILEÆâ¤Î³Æ¥Ñ¥¿¡¼¥ó¤È°ìÃפ¹¤ë¥Õ¥¡¥¤¥ë¤ò½ü³°¡£" + +#: src/diff.c:896 +msgid "" +"-S FILE --starting-file=FILE Start with FILE when comparing directories." +msgstr "" +"-S FILE --starting-file=FILE ¥Ç¥£¥ì¥¯¥È¥ê¡¼¤òÈæ³Ó¤¹¤ëºÝ¡¢FILE¤«¤é»Ï¤á¤ë¡£" + +#: src/diff.c:897 +msgid "" +"--from-file=FILE1 Compare FILE1 to all operands. FILE1 can be a directory." +msgstr "" +"--from-file=FILE1 Á´¥ª¥Ú¥é¥ó¥É¤ÈFILE1¤òÈæ³Ó¡£FILE1¤Ï¥Ç¥£¥ì¥¯¥È¥ê¡¼¤â²Ä¡£" + +#: src/diff.c:898 +msgid "" +"--to-file=FILE2 Compare all operands to FILE2. FILE2 can be a directory." +msgstr "" +"--to-file=FILE2 FILE2¤ÈÁ´¥ª¥Ú¥é¥ó¥É¤òÈæ³Ó¡£FILE2¤Ï¥Ç¥£¥ì¥¯¥È¥ê¡¼¤â²Ä¡£" + +#: src/diff.c:900 +msgid "--horizon-lines=NUM Keep NUM lines of the common prefix and suffix." +msgstr "--horizon-lines=NUM ÀèƬ¤ÈËöÈø¤Ë¤¢¤ë¶¦Ä̤ÊNUM¹Ô¤ò³ÎÊÝ¡£" + +#: src/diff.c:901 src/sdiff.c:200 +msgid "-d --minimal Try hard to find a smaller set of changes." +msgstr "-d --minimal ¤Ç¤­¤ë¤À¤±¤¬¤ó¤Ð¤Ã¤Æ¡¢¾®¤µ¤¤º¹Ê¬¤ò¸«¤Ä¤±¤ë¡£" + +#: src/diff.c:902 +msgid "" +"--speed-large-files Assume large files and many scattered small changes." +msgstr "--speed-large-files µðÂç¤Ê¥Õ¥¡¥¤¥ë¤Ëʬ»¶¤·¤¿Êѹ¹¤¬¤¢¤ë¤È²¾Äê¡£" + +#: src/diff.c:907 +msgid "" +"FILES are `FILE1 FILE2' or `DIR1 DIR2' or `DIR FILE...' or `FILE... DIR'." +msgstr "FILES¤Ï¡¢¡ÖFILE1 FILE2¡×¡ÖDIR1 DIR2¡×¡ÖDIR FILE...¡×¡ÖFILE... DIR¡×¡£" + +#: src/diff.c:908 +msgid "" +"If --from-file or --to-file is given, there are no restrictions on FILES." +msgstr "--from-file¤ä--to-file¤ò»ØÄꤹ¤ì¤Ð¡¢FILES¤ÎÀ©¸Â¤Ï¤¢¤ê¤Þ¤»¤ó¡£" + +#: src/diff.c:909 src/diff3.c:474 src/sdiff.c:222 +msgid "If a FILE is `-', read standard input." +msgstr "¥Õ¥¡¥¤¥ë¤¬¡Ö-¡×¤Î¤È¤­¡¢É¸½àÆþÎϤòÆɤߤޤ¹¡£" + +#: src/diff.c:920 +#, c-format +msgid "Usage: %s [OPTION]... FILES\n" +msgstr "»ÈÍÑË¡: %s [¥ª¥×¥·¥ç¥ó]... FILES\n" + +#: src/diff.c:949 +#, c-format +msgid "conflicting %s option value `%s'" +msgstr "%s¥ª¥×¥·¥ç¥ó¤ÎÃÍ¡Ö%s¡×¤¬¾×Æͤ·¤Æ¤¤¤Þ¤¹" + +#: src/diff.c:962 +msgid "conflicting output style options" +msgstr "½ÐÎÏ»ØÄꥪ¥×¥·¥ç¥ó¤¬¾×Æͤ·¤Æ¤¤¤Þ¤¹" + +#: src/diff.c:976 +msgid "regular empty file" +msgstr "¶õ¤ÎÄ̾ï¥Õ¥¡¥¤¥ë" + +#: src/diff.c:976 +msgid "regular file" +msgstr "Ä̾ï¥Õ¥¡¥¤¥ë\"" + +#: src/diff.c:978 +msgid "directory" +msgstr "¥Ç¥£¥ì¥¯¥È¥ê¡¼" + +#: src/diff.c:981 +msgid "block special file" +msgstr "¥Ö¥í¥Ã¥¯Æüì¥Õ¥¡¥¤¥ë" + +#: src/diff.c:984 +msgid "character special file" +msgstr "¥­¥ã¥é¥¯¥¿Æüì¥Õ¥¡¥¤¥ë" + +#: src/diff.c:987 +msgid "fifo" +msgstr "̾Á°¤Ä¤­¥Ñ¥¤¥×" + +#: src/diff.c:991 +msgid "socket" +msgstr "¥½¥±¥Ã¥È" + +#: src/diff.c:994 +msgid "message queue" +msgstr "¥á¥Ã¥»¡¼¥¸¡¦¥­¥å¡¼" + +#: src/diff.c:997 +msgid "semaphore" +msgstr "¥»¥Þ¥Õ¥©¡¼" + +#: src/diff.c:1000 +msgid "shared memory object" +msgstr "¶¦Í­¥á¥â¥ê¡¼¡¦¥ª¥Ö¥¸¥§¥¯¥È" + +#: src/diff.c:1003 +msgid "typed memory object" +msgstr "·¿¤Ä¤­¥á¥â¥ê¡¼¡¦¥ª¥Ö¥¸¥§¥¯¥È" + +#: src/diff.c:1006 +msgid "weird file" +msgstr "¤¢¤ä¤·¤²¤Ê¥Õ¥¡¥¤¥ë" + +#: src/diff.c:1070 src/diff.c:1256 +#, c-format +msgid "Only in %s: %s\n" +msgstr "%s¤À¤±¤Ëȯ¸«: %s\n" + +#: src/diff.c:1193 +msgid "cannot compare `-' to a directory" +msgstr "¡Ö-¡×¤Ï¥Ç¥£¥ì¥¯¥È¥ê¡¼¤ÈÈæ³Ó¤Ç¤­¤Þ¤»¤ó" + +#: src/diff.c:1220 +msgid "-D option not supported with directories" +msgstr "-D¥ª¥×¥·¥ç¥ó¤Ï¥Ç¥£¥ì¥¯¥È¥ê¡¼¤Ç¤Î¥µ¥Ý¡¼¥È¤ò¤·¤Æ¤¤¤Þ¤»¤ó" + +#: src/diff.c:1229 +#, c-format +msgid "Common subdirectories: %s and %s\n" +msgstr "¶¦Ä̤β¼°Ì¥Ç¥£¥ì¥¯¥È¥ê¡¼: %s¤È%s\n" + +#: src/diff.c:1266 +#, c-format +msgid "File %s is a %s while file %s is a %s\n" +msgstr "¥Õ¥¡¥¤¥ë%s¤Ï%s¡¢¥Õ¥¡¥¤¥ë%s¤Ï%s\n" + +#: src/diff.c:1345 +#, c-format +msgid "Files %s and %s are identical\n" +msgstr "¥Õ¥¡¥¤¥ë%s¤È%s¤ÏƱ°ì\n" + +#: src/diff3.c:26 +msgid "Written by Randy Smith." +msgstr "ºîÀ®¤Ï¡¢Randy Smith¡£" + +#: src/diff3.c:328 +msgid "incompatible options" +msgstr "ξΩ¤·¤Ê¤¤¥ª¥×¥·¥ç¥ó" + +#: src/diff3.c:368 +msgid "`-' specified for more than one input file" +msgstr "ÆþÎÏ¥Õ¥¡¥¤¥ë¤Ë¡Ö-¡×¤¬Ê£¿ô²ó»ØÄꤵ¤ì¤Þ¤·¤¿" + +#: src/diff3.c:408 src/diff3.c:1232 src/diff3.c:1645 src/diff3.c:1700 +#: src/sdiff.c:305 src/sdiff.c:879 src/sdiff.c:890 +msgid "read failed" +msgstr "Æɹþ¤ß¼ºÇÔ" + +#: src/diff3.c:441 +msgid "-e --ed Output unmerged changes from OLDFILE to YOURFILE into MYFILE." +msgstr "-e --ed OLDFILE¤«¤éYOURFILE¤Ø¤ÎMYFILE¤Ë¤¿¤¤¤¹¤ë̤ʻ¹ç¤ÎÊѹ¹¤ò½ÐÎÏ¡£" + +#: src/diff3.c:442 +msgid "-E --show-overlap Output unmerged changes, bracketing conflicts." +msgstr "-E --show-overlap ¾×Æͤò¤¯¤¯¤ê¡¢Ì¤Ê»¹ç¤ÎÊѹ¹¤ò½ÐÎÏ¡£" + +#: src/diff3.c:443 +msgid "-A --show-all Output all changes, bracketing conflicts." +msgstr "-A --show-all ¾×Æͤò¤¯¤¯¤ê¡¢Á´Êѹ¹¤ò½ÐÎÏ¡£" + +#: src/diff3.c:444 +msgid "-x --overlap-only Output overlapping changes." +msgstr "-x --overlap-only ½ÅÊ£¤·¤¿Êѹ¹¤ò½ÐÎÏ¡£" + +#: src/diff3.c:445 +msgid "-X Output overlapping changes, bracketing them." +msgstr "-X ¾×Æͤò¤¯¤¯¤ê¤Ê¤¬¤é¡¢Êѹ¹¤ò½ÐÎÏ¡£" + +#: src/diff3.c:446 +msgid "-3 --easy-only Output unmerged nonoverlapping changes." +msgstr "-3 --easy-only ¾×Æͤ·¤Æ¤¤¤Ê¤¤¡¢Ì¤Ê»¹ç¤ÎÊѹ¹¤ò½ÐÎÏ¡£" + +#: src/diff3.c:448 +msgid "-m --merge Output merged file instead of ed script (default -A)." +msgstr "" +"-m --merge ed¥¹¥¯¥ê¥×¥È¤ÎÂå¤ï¤ê¤Ë¡¢Ê»¹ç¤·¤¿¥Õ¥¡¥¤¥ë¤ò½ÐÎÏ (´ûÄê¤Ï-A)¡£" + +#: src/diff3.c:449 +msgid "-L LABEL --label=LABEL Use LABEL instead of file name." +msgstr "-L LABEL --label=LABEL ¥Õ¥¡¥¤¥ë̾¤ÎÂå¤ï¤ê¤ËLABEL¤ò»ÈÍÑ¡£" + +#: src/diff3.c:450 +msgid "-i Append `w' and `q' commands to ed scripts." +msgstr "-i ed¥¹¥¯¥ê¥×¥È¤Î¸å¤Ë¡Öw¡×¤È¡Öq¡×¥³¥Þ¥ó¥É¤òÄɲá£" + +#: src/diff3.c:453 src/sdiff.c:202 +msgid "--diff-program=PROGRAM Use PROGRAM to compare files." +msgstr "--diff-program=PROGRAM ¥Õ¥¡¥¤¥ë¤ÎÈæ³Ó¤ËPROGRAM¤ò»ÈÍÑ¡£" + +#: src/diff3.c:465 +#, c-format +msgid "Usage: %s [OPTION]... MYFILE OLDFILE YOURFILE\n" +msgstr "»ÈÍÑË¡: %s [¥ª¥×¥·¥ç¥ó]... MYFILE OLDFILE YOURFILE\n" + +#: src/diff3.c:467 +msgid "Compare three files line by line." +msgstr "3¤Ä¤Î¥Õ¥¡¥¤¥ë¤ò¹Ô¤´¤È¤ËÈæ³Ó¤·¤Þ¤¹¡£" + +#: src/diff3.c:673 +msgid "internal error: screwup in format of diff blocks" +msgstr "ÆâÉô¥¨¥é¡¼: º¹Ê¬¥Ö¥í¥Ã¥¯¤Î·Á¼°¤Ë¥Ï¥Þ¤ë" + +#: src/diff3.c:971 +#, c-format +msgid "%s: diff failed: " +msgstr "%s: diff¼ºÇÔ: " + +#: src/diff3.c:993 +msgid "internal error: invalid diff type in process_diff" +msgstr "ÆâÉô¥¨¥é¡¼: process_diffÆâ¤Ç̵¸ú¤Êº¹Ê¬·¿" + +#: src/diff3.c:1018 +msgid "invalid diff format; invalid change separator" +msgstr "̵¸ú¤Êº¹Ê¬·Á¼°; ̵¸ú¤ÊÊѹ¹¶èÀÚ¤ê" + +#: src/diff3.c:1242 +msgid "invalid diff format; incomplete last line" +msgstr "̵¸ú¤Êº¹Ê¬·Á¼°; ºÇ½ª¹Ô¤¬Ì¤½ªÃ¼" + +#: src/diff3.c:1265 src/sdiff.c:273 +#, c-format +msgid "subsidiary program `%s' not executable" +msgstr "²¼°Ì¥×¥í¥°¥é¥à¡Ö%s¡×¤¬¼Â¹ÔÉÔǽ¤Ç¤¹" + +#: src/diff3.c:1268 src/sdiff.c:276 src/util.c:298 +#, c-format +msgid "subsidiary program `%s' not found" +msgstr "²¼°Ì¥×¥í¥°¥é¥à¡Ö%s¡×¤¬¸«¤Ä¤«¤ê¤Þ¤»¤ó" + +#: src/diff3.c:1272 src/sdiff.c:268 src/util.c:301 +#, c-format +msgid "subsidiary program `%s' failed" +msgstr "²¼°Ì¥×¥í¥°¥é¥à¡Ö%s¡×¤¬¼ºÇÔ" + +#: src/diff3.c:1294 +msgid "invalid diff format; incorrect leading line chars" +msgstr "̵¸ú¤Êº¹Ê¬·Á¼°; ÉÔÀµ¤Ê¹ÔƬʸ»ú·²" + +#: src/diff3.c:1370 +msgid "internal error: invalid diff type passed to output" +msgstr "ÆâÉô¥¨¥é¡¼: ½ÐÎϤËÅϤµ¤ì¤ë̵¸ú¤Êº¹Ê¬·¿" + +#: src/diff3.c:1647 src/diff3.c:1704 +msgid "input file shrank" +msgstr "ÆþÎÏ¥Õ¥¡¥¤¥ë¤¬½Ì¤ó¤À" + +#: src/dir.c:162 +#, c-format +msgid "cannot compare file names `%s' and `%s'" +msgstr "¥Õ¥¡¥¤¥ë̾¡Ö%s¡×¤È¡Ö%s¡×¤òÈæ³Ó¤Ç¤­¤Þ¤»¤ó" + +#: src/sdiff.c:35 +msgid "Written by Thomas Lord." +msgstr "ºîÀ®¤Ï¡¢Thomas Lord¡£" + +#: src/sdiff.c:183 +msgid "-o FILE --output=FILE Operate interactively, sending output to FILE." +msgstr "-o FILE --output=FILE ÂÐÏÃŪ¤ËÁàºî¤·¡¢½ÐÎϤÏFILE¤Ø¡£" + +#: src/sdiff.c:185 +msgid "-i --ignore-case Consider upper- and lower-case to be the same." +msgstr "-i --ignore-case ¥Õ¥¡¥¤¥ëÆâÍƤÎÂçʸ»ú¾®Ê¸»ú¤òƱ°ì»ë¡£" + +#: src/sdiff.c:188 +msgid "-W --ignore-all-space Ignore all white space." +msgstr "-W --ignore-all-space Á´¶õÇò¤ò̵»ë¡£" + +#: src/sdiff.c:194 +msgid "-w NUM --width=NUM Output at most NUM (default 130) columns per line." +msgstr "-w NUM --width=NUM ¹ÔÅö¤ê¹â¡¹NUM (´ûÄê¤Ï130) ·å¤Ç½ÐÎÏ¡£" + +#: src/sdiff.c:195 +msgid "-l --left-column Output only the left column of common lines." +msgstr "-l --left-column ¶¦Ä̹ԤϺ¸Îó¤À¤±½ÐÎÏ¡£" + +#: src/sdiff.c:196 +msgid "-s --suppress-common-lines Do not output common lines." +msgstr "-s --suppress-common-lines ¶¦Ä̹ԤνÐÎϤòÍ޻ߡ£" + +#: src/sdiff.c:201 +msgid "" +"-H --speed-large-files Assume large files and many scattered small changes." +msgstr "-H --speed-large-files µðÂç¤Ê¥Õ¥¡¥¤¥ë¤Ëʬ»¶¤·¤¿Êѹ¹¤¬¤¢¤ë¤È²¾Äê¡£" + +#: src/sdiff.c:214 +#, c-format +msgid "Usage: %s [OPTION]... FILE1 FILE2\n" +msgstr "»ÈÍÑË¡: %s [¥ª¥×¥·¥ç¥ó]... ¥Õ¥¡¥¤¥ë1 ¥Õ¥¡¥¤¥ë2\n" + +#: src/sdiff.c:215 +msgid "Side-by-side merge of file differences." +msgstr "¥Õ¥¡¥¤¥ëº¹Ê¬¤Î2ÃÊÁÈÊ»¹ç" + +#: src/sdiff.c:327 +msgid "cannot interactively merge standard input" +msgstr "ɸ½à½ÐÎϤÏÂÐÏÃŪ¤ËÊ»¹ç¤Ç¤­¤Þ¤»¤ó" + +#: src/sdiff.c:588 +msgid "both files to be compared are directories" +msgstr "Èæ³ÓÂоݤÏξÊý¤È¤â¥Ç¥£¥ì¥¯¥È¥ê¡¼" + +#: src/sdiff.c:853 +msgid "" +"ed:\tEdit then use both versions, each decorated with a header.\n" +"eb:\tEdit then use both versions.\n" +"el:\tEdit then use the left version.\n" +"er:\tEdit then use the right version.\n" +"e:\tEdit a new version.\n" +"l:\tUse the left version.\n" +"r:\tUse the right version.\n" +"s:\tSilently include common lines.\n" +"v:\tVerbosely include common lines.\n" +"q:\tQuit.\n" +msgstr "" +"ed:\tξÊý¤ÎÈǤ˥إåÀ¡¼¤Ç¾þ¤Ã¤Æ¡¢ÍøÍѤ·¡¢ÊÔ½¸¡£\n" +"eb:\tÎÈǤò»ÈÍѤ·¤ÆÊÔ½¸¡£\n" +"el:\tº¸Â¦¤ÎÈǤò»ÈÍѤ·¤ÆÊÔ½¸¡£\n" +"er:\t±¦Â¦¤ÎÈǤò»ÈÍѤ·¤ÆÊÔ½¸¡£\n" +"e:\t¿·ÈǤòÊÔ½¸¡£\n" +"l:\tº¸Â¦¤ÎÈǤò»ÈÍÑ¡£\n" +"r:\t±¦Â¦¤ÎÈǤò»ÈÍÑ¡£\n" +"s:\t¶¦Ä̹Ԥò²ÉÌۤ˴ޤࡣ\n" +"v:\t¶¦Ä̹ԤòñÁÀå¤Ë´Þ¤à¡£\n" +"q:\t½ªÎ»¡£\n" diff --git a/src/apps/bin/diffutils-2.8.1/po/pl.gmo b/src/apps/bin/diffutils-2.8.1/po/pl.gmo new file mode 100644 index 0000000000000000000000000000000000000000..72a5bb982469686d40916f0c9e74c82f4d0b8bec GIT binary patch literal 23351 zcmb`PdvILWec!JdJFy_Uvh}ho)z*=05_;f*04SLhC`trLkc5br0MHOXG3LeY1#q#u z_pbKtYPqY}t(7KeUQQdwv6H%XY{zz**hv^Vn!XZFrmr*|Pm*zxdZsg(Hci-8X`8BS zr*@M+`uY9Nxx054SW15E=4o1K$Bkzk)K} z2>5mIot}65K9F+z3H$u^2=w{=)1U#R-G1=TK>EMq%?|0qo8>pfdm8*1kal+IQT6%NfZ-Hk$@19#h`nl&k z$eQl?DUfmQk@xg_@0-B`Abkp5?|lKJ-MwD`-veF;PqTG*gAaih*{An`Kf-U?zwm^1I*1k2-d)NgP#Xk=L5e3GS3J8pZ)!A z#_}GeiqyLX%6QD-Js$?|2fqZew)gz5`~Bx2`?v2cAp5t^2ls0 zLlEBHPaCPX{~3@y-G2#09`^qPNdNo42-0rH`FqQ}H53GUoec;DH z=zBo+8G0Z18pu8#5c)FDvAaRqjR}9jBV%>@e(WDDA+<%OG@r{LevnXY!rkBj9dgY%wu z1X{|vjsze)cI0=#Ix0!VW&9^(oX5ehfltz<)Q`Ytz#jzvDfkqxj)RmZUvl^_!IW2T z0-5(y-v=`OQ=bH9P}#SD%0x)MqcI&VsX`%=ZxZ2O#4ge>3QV@}Bu0 zZ-EEE-v&>DUk4AeCG;)!^u+W0rrpUu0pX`<=HfjEo(7MBKM$S({|uzxQ==gJc#1l* z{!^cEzrO;WLUrB_J`JvebKvK|2f^zg`+bJJlzE&HK7wv%J^?cSGk*j!&W!9UW6#KY z);aSj`+nx%gN*;Q^#3S01v1Xl@Sp7G)4v5C17)0VV4|oabe)y?vY)eyAbd9)gUo04 zBkuh_126FVk3ssMdje#Rb35QWK%wt4_-T+a=l&1)7^G#+A`kNw5WO=0A@FVB$3b{t z{ue>UoBs{>Tj=|CeoK4yXyGm35Qt0*-4`e#cMGy_w}K)E@c+U~paH)KGQWkdfL{Rr z5`?c7KMTU=i~k9vzh}M+WKGWq9q$JJEeH*s`BU%?&s$>7GT$X=phzEz?*re;b6L*= z;0HlyxFqX_9!r1ZeqRUQ4@smw<1YUl5c)3v0tj7}{}sr)<-YoLQ^gLGt4fq1cJkEU#gl6Zy41N!YJl<3Q{~fNs)t9WK!(^>dPSWTm1|0Ue9~>T_F4QEIcafd6qRw{bxS_J`R2f zWZuvIXZwClsfyzNc(l_>ThT%{jSS6f+s;}y8bLU0?IzYC+oiivTy5u2twEOuY>e^p0$gf zKQH~bnP}b)i zqx>}G?@{Cf?|J7bhH{RQePsResZwIf1A|Lo(KbQFTy_CO3 z*-x3K$mf2_NA#QL{iMS@`~W}T75%)Ae}9JZ{gj`ee1`G~%8yab6Y17DVjUmMmU&%{ClJ=y(u~qqy4Wp@mF$Wo>cVM5(z5 z{f0-(MaBT2^uad;Fy%Iet$^1kzyZk9_?Rhib(d-?3l;<(vp)!{HGsQjgj zB7EJgGSORQV$|E08vZLro10;6Qs45Mt!CAH8G4QPvW|TR6Y0W&G?>)x%qBDpi<3s5 zMCEe0g`gzWdIT@~zS&o>b))!&pd1zVc;o6`+*jC_4x3^Urtxsy1j3pu4PM=9RM=kI zO{X$dnN(2Oh_)I@Lsu}Fb$(Ggs)f%tq8fA>*oW_b69f9Itp0UR&($6{!@VY#r&c4b zg@t4*j@n^|WR^gd412!U^$dBwuRP_eH2cVQC8!@&HEEWkN>mPNBW44BwQn*8R2J4I zsZot5Ek@}~`O+6g$@)@B+_Nvo^c`_x zbp<6WwS`&zYAxBS1(lWc8PwcOa z1T8LFG1`p6V!q;0D@Epn>&pJ5Z&(nH3Tr6h6iKzu3$W7$ox}WWQ9Y@(WYq1jTs3B) zQ5Qu}-)7(CiM~l{Q9Fs1fa%fsb1dO(7*>sZ6QZgdi}X76U#*3k(IuUH+Suf)bP{dF zNe%k5EI$q^p|8r>%;;mQshitj?5H6cO(`H%l_;-o_hh|YRo1t6aWZHYCz3dgikZc@ z;XGJH1?`X#DlqPWY_+VD{RxXc9J*x}n;J8frieclg=cn`l{OX8-)SMJW4{rRlx{K4 zs#bNyX}uOz{Y=68g&L|<9(8qoA*j`&fKF>+y-|w|>PivPaA1BTH)Esu4jy8+o=2830P2Npi85ALt zNt%oA){5E;9Sb+eR8D64JWlE+ZB(mCt%i z#YQL_MJ9T^-Kgmb3Hp22z_fs^f{Tjt-T~sn2MMrPYa9)}WWLWfVo>iAsKPnOG zK~307`CLUvWRGWd=R}RdJw4hgx0{T+BE3X$RF4oC*(x&^l-M_9#X2mFDjp2}ZdeUt z>&(eZTCQqK%Lp(#`XnfX9a;(dH@C&&=yU2n+u7$m#HeSh(a;rbpwnl5){{g{VQ<_b zr`5U4v{Zc?@wVF_x~i(GN_318ioODwY(2bGH<>PAejODcFQ~-gJL0Ib_AMiJ7UlR- z`V}h@RFVezgq`eNsrI8M1mAj(W>Jm{&Lb2hppO}`z=$W*JTbDm)|cw%#c*Bd5KC;= zg9vueDA&!whq`vGkW?|Q)*)y5Lw80%88xIr90i=vD+BMy3jHDOrMG}P^L`^tvEz_1(bodU(o z@GC7~&4fexU-xS)dlFrkJ*k|_cxwyimh?OOpP0Ed`A$EP4C55PbuT)G9n~Awe6_oJ zHni>sjd6rz=_!83o;_qrDnQlPvqu;g&>JwTDw^!%W*bj245YZ&9M+*OK0mBZk+@$% zr_Q3qHbh2_Lb)kBeR0%2-s9NRJrZSR-u5v*DNV5Qoz>^Na&J8!D+>38n{{NO+^Aq$ z+;*sC7AnX~Caf=!Kj+V>g=E6oz8Y-d0;7P;Vvw>ZS|yp!$k}^q+gz;HhGnsxnvv|W zHpb9zh|SFg7J+rAX*uK+4F{}-^(RHsS$gLsyCO?a^V{hoZ;W$RphN1enEO)?F%g#S z`?UgoS(h1?PAq3<3FpVfW_D(7M%B1#m80%w=3$Fs6lt-KGsR=$9x{NXiPNeJ;(@bL zxRoym@C#wNHG-H})t}MNwq}aYOAi~hDBSE!Qnv_`1HEfb!&>T49mkLrg@r~frDr*t zxUcwIY@r@5)Yoims15GA}6;m6d2 zdIP5)e=ci|9mBKn@uA~-RKVt0BfwPTxwVz`rYH)vxtw-#LZ=fD=ZK?j3U5jbDRbFQ zCU}Tw6U$7ikT1U*6|1I#w zaeGd;{I<_37r@HQkcSvcpfc@|h)KdDs)Zz)M2+sL+*(5%Hc^G6op<%^TA2AtYA<)! z=}stnVU#0i+U z#AyU^33wpu&OIH{Y8pQi@sMRAf*ony{W_!5%qHaT#v=&rbxxKt;uiWQ9uZlVXe=d8 z@E_#hs$Pod2%Y=#s7FtMewTI^eO*c=N+pmzLK|Fn)Jj|whr$`R{uYC(xv1O*XF)n5 zI4B0%n{khELR^TvKu9+=5>V*ABzhdEKh>$0d#52;@k5_`@wpFlo};A-p}Op~aI3+g zUXEd+xj3wKDiLtuSdM=0KG|J)F02rHq4{>u;Pg`T<`e62$rl&TH7F4ADBQV5-Z0n; z5%EG6yKDRfIb$Qo6513lUaW=q?+tdwb+SjBrCr^iI&qAmEzha%jmDO$($F}{r^wXG*dJ@r_e?UoA#oGKfb#|p#qqU-H%vE>z9?x@OP9m->_Y=|gKCx=SM z&G^{Z*oZj`PCPnd=6En7PxR@W{CM>6$YY1zJ2G@S|4Lt&9AH>MI7px0f#0rz?g+fL}*9}SPq(_ zLu*L`_Gq!~#YjYq0H}oAIIg$=Tz8BiEIVdJy2InBbOLmz=g*nbVT=<}Hj9l7_Q1?W zxcg~1I&=ym!H?pl*s!VuAA$`Gr}Tr<1|!iK5%(0OCta(O5qT<_6AO!LGxMiMy_M`f zLc}pe;?j& z$wRp(=jF-y@6A1V?nUohN`Oo?`}u{%m6?V43n)@mL{8}r-LT4e(Y6!jyl~05g^3Fn zF5IZm@}QUYoMN(bOm>JF@>Yo=g|lJYju3*2{ywgSvH%y%mu#d-Ijo0AOu|?us^6$e1CFAH zf{{+BINXhFcR7RrghVxkCnYK^4Cif>6BNCM!Qo>2NCM;XO|=xt2N4tF&BWp7oX_hK z;1qY#y=MY?QprWa`)hP~9HS+dC!$p3OIEMPr8ia;^cpg+V_JGAU8qzi&Gf=4QBb0) zIY?>*Q&c3<;%0Ux6yE~=N>_uNs>EzAJ@J3u$(r>u6EMv0<+;AeJw7H6hXxHVHY>wYxIITV#dWgQ@ge`g~&mf))j);xzy&B+wy?i6O;AJj@wT9{?+q-J7kY$0yAAW0PZJkBs574$YD+;^X_oxID1hq*)3!gDV96({_pUlu~4# zsI@D{qC#afEH*}~6Rr`KJvy_z;2%Ex z*yH|0x3Y}LvB{rCC`H01&0+4j$yRVFLXk^cNwzMVcF>H_eAfo#CRN#hV(ZmHyJgyO zP}-H2qz@BQN{YA;<~m#od0Lg8grwwZ*guR-NuovDEY8lHJ=c?v)P3BOj>O|;TD@Mz zdnlFz*Um)tOD-X4d3}0G@{vw1oc(MkA8CekBrYJu%V=#zrJ%4An5LTB2BLrtM}5-i ztkhf6oEy?*^oL0=bH+^TuT&d5m$|u-YB;vx4hcw&YRf!W39i_uNLwv?{7_F~5{D2} z366cOnYO8d#)~313gc)35*5%8K|PLkRp8PqDkm>rv+c|`mz}f+^%;HhG!HzY;1~pq(E*IJ%^QtHhG~DvLi`XaWNqdo<&}@$4ugGC6tTo&+ddcsRb2KX! zFPEEyW-2!}`jV5VcUtOceSK~10+~zj_hPLbrlrKrH=}rqJCx5V zGfh{D#U&9g&E+d?TzRFq*K=FZB`Zm%71{Jk6kfwl*-WKImZ~IOUKE{=f4?hJsq+#M z4z_{;t!<9d>lw$T9DNg2cL+8a>Z5hy1m#ko4rCsYp!P`anrDh~W)U3LVKdyFVz7mkSX( z5}s7=P{#FqU)Z^Kc$?BRaCm+F?GE2iF=F^E4eCU@h0g#BMQ~;{N?Woj)En0gOjv92 zo2c`kR464*mJNlaCcKr@t~Vh$#34vjy51c1q4&__!;%rdT)qnu_yQi6rK|>tlOS8QExEGbK{J%E=a6D$BB2Q>!i3 zt}CyHTZtx4HS}#y<`j_xW7b7$V?$*r@<7#MW~pdfMI#k!R4S2BCcj$thjiy0@ZL*w zy42^&P}n>aLMee~=vf?6>A}%dH>a`J678Dfpxx}yoSVX3`Er9;dvD(AD*S$u=9pTR zH8?NpT(iAZMu|mA+izoO%%E>|SsvGFD~?Lo_Nwd)RBJa|r7N;stlN&pajPg{H7l$eNZlYa=Bt%u|itf;#MT8SNMgh-^PiwlTm`xzAt60 z+dM}utviATD$$k_XD2oQc??oIq>F*MV?9Eqov4!q$GG`hNu~=)9a~@3xn#Lx`m;No zYGT(SYz7lG)Jd!+rJ${9PrZb~V1nk8&FC3NhB2*C7p-C)1ntx5s_V@gCYbH9w6vNu zv14d+*6o@Mcv|f9%G7bu*FJgk#JN1U`a>;7bD{E(GrdOsQf=yTJJTT|1!E+DRu$m|f@nO)t=xJC| zBp(mHH*IZz5US*f6lF|E+hsL!x&b{|Y$E^I3UQI59g`Hbnw)0(>_cYYbR+e4*#&%T z9@}cmnP(z5ax77Um3cWG2DnicTV|-71%}RYDnxxHMLjmL29nxx{IW~b`(*an&Wd|7 z+U$aJ`qsJ=xm^`^quEYs1qQcXz7W4BsjW+R*IHFpJuIbYMXR+2=eO;_TyiiIE7QN? zTymQp)$;_frv_EK953AQgNfQSH}xuVX>R-`&272F#gL=4)OfI%R9Y{WML$evwi`Q# z4%CG-I$3V6uTGYm?Q2l`w$|eSk3WVc%XKH*XTvyM&UaEm`umMVASxpQ$lHLtH|b_I zwW^XUs772W>_q0o2pd?cU$2R};smZ*rKR1xM)KRDQ@e!Gdymr@pK!d+B)c~O?pzvO zaTI1d%OMdBaat?Tc!y&<6lrfn3FlXx4EsfDj?IGW_c==32ofhGZ#?L!l{uArXiSc4 zuN0Bo<&~+Wwf8Hl2WEa@)qO7}IgK^<)u*)vQ`ns$N6@Nc;PGCBevx$|CAHA{kaZLc z338Gev%7;C$yIf9u$C*EoBC_wVMpQ@wfLgliJz?v7-#_GwH>nbEJU2t2< zp#*hGnk?5+Yiq+zLP6Dx45+$R*Kg0wbwt~(L@2u|*=LNo$uqQkl>b&$>=fzD(JbUht)oGYj2GQ*VHhrAN$&!y{U zY3n`Xk&;@+3I?UqxyiyEm+T{{|-UpJ$7^-lU^ z1;wU4HnWP$q`{RCFPGY?{S3&Y>YJ8^P4j%bJJD{b>k?X{kN%Z&=?*7QyDph~Z?avN z@GiwbG&dHQQ2mamgaK)Hy;ii}a5nW6jj-C>JGEflfjUgpwPB)hGy%`qVC(M5_<|oJ+0QSv^Xxr2@yepH)ISI+TQvVZdy1-1*Syak-dQ8oEx4*dI(MxahqP-UkC3Fmv8_bPUxP<1Wsj=ISv?LUPFf-I z<{_erf9UCRnN82F2-BwHR}1(8Y;D8VswOfUMuV8y5J8snCl0r_qE@2`6J*JLG-$F* zDSxcvCc1aaRX62ae|C%7q{0x|B5N_(tdKW}I%g}nM?eE{ud!G9pAqpf_Iikujd)S# zxKZG)P@<(p8?DXXh{=glW17)-JmoJElSlL!O`smxuB1P?)Uk7%5Pl^At}Qva_Cg1} zT+O0$a@|)7t`;R)<+KJltk&JAx0J#f~ll)K&J40NAA2I5CQi(r2y-dhRg4SZNmF>Do zd}rZBPPe8(AXx+~DK=|KJ#KmP6642LMeStSeCo0iDdMl9H~?K!72bsH!<|uKd?H%V z_sV5bF*UKTq0)e-phpI-Lsegp*e62LeasORHS*j;eUH!UV^aKjYfGA+9xAguzY|YS zX_{Y7SCf=?gDU5xrl$D`hmh^Z0l}vE4Qw1_o& zcGX*^EQ*gZ$S!s~ky+y8(A3qsrip^>PK~g#SDoAigS#@d*+90ttyl7=6-JN{FcZlc zMN#y6-52yPLM(L`4WKx1LS|U(-OaI0ln;^sIuU35q(Gl);Ac&^xU= zFWX#s>g|!|sNoU@TXNN_zJpv`BpdXgUORzwlq4FbjUw8*a=pocqmrcw4r*kx1S2bt zt|LfoPt;j@U~gkPnp6_Sh;A7QB|lIr+4~cBiWrgvK^tJ|w$Y>d=#Zoc_P@%yBT4Y2 zM&(tZ_qnTP13|TCmV`tI@g2$4Zn01@2XD{}%V9$t71tVr${i!QgzN0*tM-6EN?{xn zi2|b$Tb-OVaCY1#dCJxq$D_zOtrB69m{aSDr>eFYHse?Dc;gl}Tao}s z!EaS9N!ro0eQilZJbRKiS9+lybjARc>gq977R3q7o7c zpt|NFWLYFxo*|ZGc=x;B7>^}|>!5h0u_b9JonT|`ZD(K^@ramSf)|oxh;+E%UZ5U- zV29jYU$`ME64kSpbCForDmTxU>o{zBR@k$pqj4wG&_?{Sb!Af~8?Oa<>W$o#`I}iM za_AVPMc#4LBMtY!EQ3%h5{Wz8xrFPo3R0nM`$e7fLvF@XPoqg1OcGTjMO8E^t{kya z)>ub^Nd<2ckC2_kTDyF|hA6s*DquO0wCbMTkD^=U(oQvO=Ly=@le9zf8_>28pTGOd zd|znbRFZ-mN%U_E zhUv{ZN`23}tL0i3*2K5MjnOV`$d>>6MAj$Xch;%++)7gG50h7m?u<-WZ=v7pbtsI% lg4vK=OKqEk!@, 1996, 2002. +# corrections: Pawe³ Krawczyk , 1996 +# +msgid "" +msgstr "" +"Project-Id-Version: GNU diffutils 2.7.10\n" +"POT-Creation-Date: 2002-04-05 14:10-0800\n" +"PO-Revision-Date: 2002-03-12 15:00+0100\n" +"Last-Translator: Rafa³ Maszkowski \n" +"Language-Team: Polish \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=ISO-8859-2\n" +"Content-Transfer-Encoding: 8-bit\n" + +#: lib/c-stack.c:188 +msgid "program error" +msgstr "b³±d programu" + +#: lib/c-stack.c:189 +msgid "stack overflow" +msgstr "przepe³nienie stosu" + +#: lib/error.c:128 lib/error.c:156 +msgid "Unknown system error" +msgstr "Niezany b³±d systemu" + +#: lib/freesoft.c:27 +msgid "" +"This program comes with NO WARRANTY, to the extent permitted by law.\n" +"You may redistribute copies of this program\n" +"under the terms of the GNU General Public License.\n" +"For more information about these matters, see the file named COPYING." +msgstr "" +"Autorzy nie daj± ¯ADNYCH gwarancji, do granic, na które zezwala prawo.\n" +"Program mo¿e byæ rozpowszechniany na warunkach Ogólnej Licencji Publicznej\n" +"GNU; szczególy s± opisane w pliku COPYING." + +#: lib/getopt.c:693 +#, c-format +msgid "%s: option `%s' is ambiguous\n" +msgstr "%s: opcja `%s' is ambiguous\n" + +#: lib/getopt.c:718 +#, 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:723 +#, 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:741 lib/getopt.c:914 +#, c-format +msgid "%s: option `%s' requires an argument\n" +msgstr "%s: opcja `%s' wymaga argumentu\n" + +#: lib/getopt.c:770 +#, c-format +msgid "%s: unrecognized option `--%s'\n" +msgstr "%s: nierozpoznana opcja `--%s'\n" + +#: lib/getopt.c:774 +#, c-format +msgid "%s: unrecognized option `%c%s'\n" +msgstr "%s: unrecognized option `%c%s'\n" + +#: lib/getopt.c:800 +#, c-format +msgid "%s: illegal option -- %c\n" +msgstr "%s: nielegalna opcja -- %c\n" + +#: lib/getopt.c:803 +#, c-format +msgid "%s: invalid option -- %c\n" +msgstr "%s: b³êdna opcja -- %c\n" + +#: lib/getopt.c:833 lib/getopt.c:963 +#, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "%s: opcja wymaga argumentu -- %c\n" + +#: lib/getopt.c:880 +#, c-format +msgid "%s: option `-W %s' is ambiguous\n" +msgstr "%s: opcja `-W %s' jest niejednoznaczna\n" + +#: lib/getopt.c:898 +#, 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/regex.c:1367 +msgid "Success" +msgstr "Powodzenie" + +#: lib/regex.c:1370 +msgid "No match" +msgstr "Nie pasuje" + +#: lib/regex.c:1373 +msgid "Invalid regular expression" +msgstr "Z³e wyra¿enie regularne" + +#: lib/regex.c:1376 +msgid "Invalid collation character" +msgstr "Zly znak zbiorczy" + +#: lib/regex.c:1379 +msgid "Invalid character class name" +msgstr "Z³a nazwa klasy znaków" + +#: lib/regex.c:1382 +msgid "Trailing backslash" +msgstr "Koñcowy uko¶nik odwrotny" + +#: lib/regex.c:1385 +msgid "Invalid back reference" +msgstr "Z³y odno¶nik wstecz" + +#: lib/regex.c:1388 +msgid "Unmatched [ or [^" +msgstr "Nie sparowany [ lub [^" + +#: lib/regex.c:1391 +msgid "Unmatched ( or \\(" +msgstr "Nie sparowany ( lub \\(" + +#: lib/regex.c:1394 +msgid "Unmatched \\{" +msgstr "Nie sparowany \\{" + +#: lib/regex.c:1397 +msgid "Invalid content of \\{\\}" +msgstr "Z³a zawarto¶æ \\{\\}" + +#: lib/regex.c:1400 +msgid "Invalid range end" +msgstr "Z³y koniec zakresu" + +#: lib/regex.c:1403 +msgid "Memory exhausted" +msgstr "Brak pamiêci" + +#: lib/regex.c:1406 +msgid "Invalid preceding regular expression" +msgstr "Z³e poprzedzj±ce wyra¿enie regularne" + +#: lib/regex.c:1409 +msgid "Premature end of regular expression" +msgstr "Przedwczesny koniec wyra¿enia regularnego" + +#: lib/regex.c:1412 +msgid "Regular expression too big" +msgstr "Wyra¿enia regularne jest za du¿e" + +#: lib/regex.c:1415 +msgid "Unmatched ) or \\)" +msgstr "Nie sparowany ) lub \\)" + +#: lib/regex.c:8034 +msgid "No previous regular expression" +msgstr "Brak porzedniego wyra¿enia regularnego" + +#: lib/xmalloc.c:63 +msgid "memory exhausted" +msgstr "brak pamiêci" + +#: src/analyze.c:809 src/diff.c:1283 +#, c-format +msgid "Files %s and %s differ\n" +msgstr "Pliki %s i %s ró¿ni± siê\n" + +#: src/analyze.c:812 +#, c-format +msgid "Binary files %s and %s differ\n" +msgstr "Pliki binarne %s i %s siê ró¿ni±\n" + +#: src/analyze.c:1058 src/diff3.c:1413 src/util.c:526 +msgid "No newline at end of file" +msgstr "Brak znaku nowej linii na koñcu pliku" + +#: src/cmp.c:43 +msgid "Written by Torbjorn Granlund and David MacKenzie." +msgstr "Napisany przez Torbjorna Gralunda i Davida MacKenzie." + +#: src/cmp.c:118 src/diff.c:817 src/diff3.c:427 src/sdiff.c:168 +#, c-format +msgid "Try `%s --help' for more information." +msgstr "Napisz `%s --help' ¿eby dowiedzieæ siê wiêcej." + +#: src/cmp.c:137 +#, c-format +msgid "invalid --ignore-initial value `%s'" +msgstr "b³êdna warto¶æ --ignore-initial `%s'" + +#: src/cmp.c:146 +msgid "options -l and -s are incompatible" +msgstr "sprzeczne opcje -l i -s" + +#: src/cmp.c:154 src/diff.c:826 src/diff3.c:435 src/sdiff.c:177 +#: src/sdiff.c:313 src/sdiff.c:320 src/sdiff.c:910 src/util.c:194 +#: src/util.c:286 src/util.c:293 +msgid "write failed" +msgstr "zapis nieudany" + +#: src/cmp.c:156 src/diff.c:828 src/diff.c:1354 src/diff3.c:437 +#: src/sdiff.c:179 +msgid "standard output" +msgstr "standardowe wyj¶cie" + +#: src/cmp.c:160 +msgid "-b --print-bytes Print differing bytes." +msgstr "-b --print-chars Wypisanie ró¿ni±cych siê bajtów." + +#: src/cmp.c:161 +msgid "-i SKIP --ignore-initial=SKIP Skip the first SKIP bytes of input." +msgstr "-i OMIÑ --ignore-initial=OMIÑ PRzeskoczenie pierwszych OMIÑ bajtów." + +#: src/cmp.c:162 +msgid "-i SKIP1:SKIP2 --ignore-initial=SKIP1:SKIP2" +msgstr "-i SKOK1:SKOK2--ignore-initial=SKOK1:SKOK2" + +#: src/cmp.c:163 +msgid "" +" Skip the first SKIP1 bytes of FILE1 and the first SKIP2 bytes of FILE2." +msgstr " Przeskoczenie pierwszych SKOK1 bajtów PLIKU1 i SKOK2 bajtów PLIKU2." + +#: src/cmp.c:164 +msgid "-l --verbose Output byte numbers and values of all differing bytes." +msgstr "" +"-I --verbose Wypisanie po³o¿eñ i kodów wszystkich ró¿ni±cych siê bajtów." + +#: src/cmp.c:165 +msgid "-n LIMIT --bytes=LIMIT Compare at most LIMIT bytes." +msgstr "-n LIMIT --bytes=LIMIT Porównanie najwy¿ej LIMIT bajtów." + +#: src/cmp.c:166 +msgid "-s --quiet --silent Output nothing; yield exit status only." +msgstr "" +"-s --quiet --silnet Bez wypisania wyników; tylko przekazanie statusu." + +#: src/cmp.c:167 src/diff.c:904 src/diff3.c:455 src/sdiff.c:204 +msgid "-v --version Output version info." +msgstr "-v --version Wypisanie informacji o wersji." + +#: src/cmp.c:168 src/diff.c:905 src/diff3.c:456 src/sdiff.c:205 +msgid "--help Output this help." +msgstr "--help Wypisanie tego helpu." + +#: src/cmp.c:177 +#, c-format +msgid "Usage: %s [OPTION]... FILE1 [FILE2 [SKIP1 [SKIP2]]]\n" +msgstr "U¿ycie: %s [OPCJA]... PLIK1 [PLIK2 [SKOK1 [SKOK2]]]\n" + +#: src/cmp.c:179 +msgid "Compare two files byte by byte." +msgstr "Porównanie plików bajt po bajcie." + +#: src/cmp.c:183 +msgid "SKIP1 and SKIP2 are the number of bytes to skip in each file." +msgstr "SKOK1 i SKOK2 to liczby bajtów do pominiêcia w ka¿dym z plików." + +#: src/cmp.c:184 +msgid "" +"SKIP values may be followed by the following multiplicative suffixes:\n" +"kB 1000, K 1024, MB 1,000,000, M 1,048,576,\n" +"GB 1,000,000,000, G 1,073,741,824, and so on for T, P, E, Z, Y." +msgstr "" +"Po warto¶ci SKOKU mog± byæ dodane nastêpuj±ce przyrostki:\n" +"kB 1000, K 1024, MB 1,000,000, M 1,048,576,\n" +"GB 1,000,000,000, G 1,073,741,824, i tak dalej dla T, P, E, Z, Y." + +#: src/cmp.c:187 +msgid "If a FILE is `-' or missing, read standard input." +msgstr "Je¿eli PLIK to `-' lub go brak, czytane jest standardowe wej¶cie." + +#: src/cmp.c:188 src/diff.c:911 src/diff3.c:475 src/sdiff.c:223 +msgid "Report bugs to ." +msgstr "Inofmracje o b³êdach: bug-gnu-utils@gnu.org ." + +#: src/cmp.c:231 +#, c-format +msgid "invalid --bytes value `%s'" +msgstr "b³êdna warto¶æ --bytes `%s'" + +#: src/cmp.c:258 src/diff.c:734 src/diff3.c:333 src/sdiff.c:558 +#, c-format +msgid "missing operand after `%s'" +msgstr "brakuj±cy argument po `%s'" + +#: src/cmp.c:270 src/diff.c:736 src/diff3.c:335 src/sdiff.c:560 +#, c-format +msgid "extra operand `%s'" +msgstr "nadmiarowy argument `%s'" + +#: src/cmp.c:477 +#, c-format +msgid "%s %s differ: byte %s, line %s\n" +msgstr "%s %s ró¿ni± siê: bajt %s, linia %s\n" + +#: src/cmp.c:495 +#, c-format +msgid "%s %s differ: byte %s, line %s is %3o %s %3o %s\n" +msgstr "%s %s ró¿ni± siê: bajt %s, linia %s zawiera %3o %s %3o %s\n" + +#: src/cmp.c:543 +#, c-format +msgid "cmp: EOF on %s\n" +msgstr "cmp: EOF przy %s\n" + +#: src/diff.c:41 +msgid "" +"Written by Paul Eggert, Mike Haertel, David Hayes,\n" +"Richard Stallman, and Len Tower." +msgstr "" +"Napisany przez Paula Eggerta, Mike'a Haertela, Davida Hayesa,\n" +"Richarda Stallmana i Lena Towera." + +#: src/diff.c:322 +#, c-format +msgid "invalid context length `%s'" +msgstr "b³êdna d³ugo¶æ kontekstu `%s'" + +#: src/diff.c:405 +msgid "pagination not supported on this host" +msgstr "stronicowanie nie jest mo¿liwe na tej maszynie" + +#: src/diff.c:420 src/diff3.c:315 +msgid "too many file label options" +msgstr "za du¿o opcji etykietowania plików" + +#: src/diff.c:498 +#, c-format +msgid "invalid width `%s'" +msgstr "b³êdna szeroko¶æ `%s'" + +#: src/diff.c:502 +msgid "conflicting width options" +msgstr "sprzeczne opcje szeroko¶ci" + +#: src/diff.c:526 +#, c-format +msgid "invalid horizon length `%s'" +msgstr "b³êdna d³ugo¶æ horyzontu `%s'" + +#: src/diff.c:629 +#, c-format +msgid "`-%ld' option is obsolete; use `-%c %ld'" +msgstr "opcja `-%ld' jest przestarza³a, u¿yj `-%c %ld'" + +#: src/diff.c:641 +#, c-format +msgid "`-%ld' option is obsolete; omit it" +msgstr "opcja `-%ld' jest przestarza³a, opu¶æ j±" + +#: src/diff.c:709 +msgid "--from-file and --to-file both specified" +msgstr "równocze¶nie podane --from-file i --to-file" + +#: src/diff.c:832 +msgid "Compare files line by line." +msgstr "Porównanie plików kolejnymi liniami." + +#: src/diff.c:834 +msgid "-i --ignore-case Ignore case differences in file contents." +msgstr "" +"-i --ignore-case Ignorowanie ró¿nic miêdzy wielkimi i ma³ymi literami." + +#: src/diff.c:835 +msgid "--ignore-file-name-case Ignore case when comparing file names." +msgstr "" +"--ignore-space-change Zignorowanie wielko¶ci liter przy porównywaniu\n" +" nazw plików." + +#: src/diff.c:836 +msgid "--no-ignore-file-name-case Consider case when comparing file names." +msgstr "" +"--no-ignore-file-name-case Uwzglêdnianie wielko¶ci liter przy porównywaniu\n" +" nazw plików." + +#: src/diff.c:837 src/sdiff.c:186 +msgid "-E --ignore-tab-expansion Ignore changes due to tab expansion." +msgstr "" +"-E --ignore-tab-expansion Zignorowanie zmian spowodowanych rozwiniêciem\n" +" TABów." + +#: src/diff.c:838 src/sdiff.c:187 +msgid "-b --ignore-space-change Ignore changes in the amount of white space." +msgstr "-b --ignore-space-change Zignorowanie zmian ilo¶ci znaków odstêpu." + +#: src/diff.c:839 +msgid "-w --ignore-all-space Ignore all white space." +msgstr "-w --ignore-all-space Zignorowanie znaków odstêpu." + +#: src/diff.c:840 src/sdiff.c:189 +msgid "-B --ignore-blank-lines Ignore changes whose lines are all blank." +msgstr "-B --ignore-blank-lines Zignorowanie zmian ilo¶ci pustych linii." + +#: src/diff.c:841 src/sdiff.c:190 +msgid "" +"-I RE --ignore-matching-lines=RE Ignore changes whose lines all match RE." +msgstr "" +"-I RE --ignore-matching-lines=RE Zignorowanie zmian w liniach pasuj±cych\n" +" do RE." + +#: src/diff.c:842 src/sdiff.c:191 +msgid "--strip-trailing-cr Strip trailing carriage return on input." +msgstr "--strip-trailing-cr Pominiêcie znaków nowej linii na wej¶ciu." + +#: src/diff.c:844 +msgid "--binary Read and write data in binary mode." +msgstr "--binary Czytanie i zapisywanie danych binarnie." + +#: src/diff.c:846 src/diff3.c:451 src/sdiff.c:192 +msgid "-a --text Treat all files as text." +msgstr "-a --text Traktowanie plików jako tekstowych." + +#: src/diff.c:848 +msgid "" +"-c -C NUM --context[=NUM] Output NUM (default 3) lines of copied " +"context.\n" +"-u -U NUM --unified[=NUM] Output NUM (default 3) lines of unified " +"context.\n" +" --label LABEL Use LABEL instead of file name.\n" +" -p --show-c-function Show which C function each change is in.\n" +" -F RE --show-function-line=RE Show the most recent line matching RE." +msgstr "" +"-c -C ILE --context[=ILE] Skopiowanie ILE (domy¶lnie 2) linii kontekstu.\n" +"-u -U ILE --unified[=ILE] ILE (domy¶lnie 2) linii zunifikowanego " +"kontekstu.\n" +" --label ETYKIETA U¿ycie ETYKIETY zamiast nazwy pilku.\n" +" -p --show-c-function Wskazanie funkcji C, w których s± zmiany.\n" +" -F RE --show-function-line=RE Pokazanie ostatniej linii pasuj±cej do RE." + +#: src/diff.c:853 +msgid "-q --brief Output only whether files differ." +msgstr "-q --brief Wypisanie wyniku tylko gdy pliki siê ró¿ni±." + +#: src/diff.c:854 +msgid "-e --ed Output an ed script." +msgstr "-e --ed Wynik w postaci komend ed-a" + +#: src/diff.c:855 +msgid "--normal Output a normal diff." +msgstr "--normal Wynik w postaci zwyk³ego diff-a." + +#: src/diff.c:856 +msgid "-n --rcs Output an RCS format diff." +msgstr "-n --rcs Wynik w postaci diff-a z RCS." + +#: src/diff.c:857 +msgid "" +"-y --side-by-side Output in two columns.\n" +" -W NUM --width=NUM Output at most NUM (default 130) print columns.\n" +" --left-column Output only the left column of common lines.\n" +" --suppress-common-lines Do not output common lines." +msgstr "" +"-y --side-by-side Wynik w dwóch kolumnach.\n" +" -W ILE --width=ILE Wypisanie najwy¿ej ILE (domy¶nie 130) znaków w " +"linii.\n" +" --left-column Wypisanie tylko lewej kolumny dla wspólnych linii.\n" +" --suppress-common-lines Bez wypisywania wspólnych linii." + +#: src/diff.c:861 +msgid "-D NAME --ifdef=NAME Output merged file to show `#ifdef NAME' diffs." +msgstr "" +"-D NAZWA --ifdef=NAZWA Wypisanie po³±czonego pliu dla pokazania ró¿nic\n" +" w `#ifdef NAZWA'." + +#: src/diff.c:862 +msgid "" +"--GTYPE-group-format=GFMT Similar, but format GTYPE input groups with GFMT." +msgstr "" +"--TYPG-group-format=GFMT Podobnie, ale z u¿yciem GFMT do sformatowania " +"grup\n" +" wej¶ciowych type TYPG" + +#: src/diff.c:863 +msgid "--line-format=LFMT Similar, but format all input lines with LFMT." +msgstr "" +"--line-format=LFMT Podobnie, ale z u¿yciem LFMT do sformatowania linii\n" +" wej¶ciowych." + +#: src/diff.c:864 +msgid "" +"--LTYPE-line-format=LFMT Similar, but format LTYPE input lines with LFMT." +msgstr "" +"--TYPL-group-format=LFMT Podobnie, ale z u¿yciem LFMT do sformatowania " +"grup\n" +" wej¶ciowych typu TYPL" + +#: src/diff.c:865 +msgid " LTYPE is `old', `new', or `unchanged'. GTYPE is LTYPE or `changed'." +msgstr "TYPL to `old', `news' lub `unchanged'. TYPG to TYPL lub `changed'." + +#: src/diff.c:866 +msgid "" +" GFMT may contain:\n" +" %< lines from FILE1\n" +" %> lines from FILE2\n" +" %= lines common to FILE1 and FILE2\n" +" %[-][WIDTH][.[PREC]]{doxX}LETTER printf-style spec for LETTER\n" +" LETTERs are as follows for new group, lower case for old group:\n" +" F first line number\n" +" L last line number\n" +" N number of lines = L-F+1\n" +" E F-1\n" +" M L+1" +msgstr "" +" GFMT mo¿e zawieraæ:\n" +" %< linie z PLIKU1\n" +" %> linie z PLIKU2\n" +" %= linie wspólne dla PLIKU1 i PLIKU2\n" +" %[-][SZER][.[DOK£]]{doxX}LITERA specyfikacja w stylu printf dla LITERY\n" +" LITERY s± nastêpuj±ce dla nowej grupy (ma³e dla starej grupy):\n" +" F numer pierwszej linii\n" +" L numer ostatniej linii\n" +" N ilo¶æ linii = L-F+1\n" +" E F-1\n" +" M L+1" + +#: src/diff.c:877 +msgid "" +" LFMT may contain:\n" +" %L contents of line\n" +" %l contents of line, excluding any trailing newline\n" +" %[-][WIDTH][.[PREC]]{doxX}n printf-style spec for input line number" +msgstr "" +" LFMT mo¿e zawieraæ:\n" +" %L zawarto¶æ linii\n" +" %l zawarto¶c linii, z wy³±czeniem znaku nowej linii\n" +" %[-][SZER][.[DOK£]]{doxX}n specyfikacjê numeru linii w stylu printf" + +#: src/diff.c:881 +msgid "" +" Either GFMT or LFMT may contain:\n" +" %% %\n" +" %c'C' the single character C\n" +" %c'\\OOO' the character with octal code OOO" +msgstr "" +" GFMT i LFMT mog± zawieraæ:\n" +" %% %\n" +" %c'C' pojedyñczy znak C\n" +" %c'\\OOO' znak o kodzie ósemkowym OOO" + +#: src/diff.c:886 +msgid "-l --paginate Pass the output through `pr' to paginate it." +msgstr "-I --paginate Przepuszczenie wyniku przez `pr' ¿eby go stronnicowaæ." + +#: src/diff.c:887 src/sdiff.c:198 +msgid "-t --expand-tabs Expand tabs to spaces in output." +msgstr "-t --expand-tabs Rozwiniêcie TABów w spacje w wyniku." + +#: src/diff.c:888 src/diff3.c:452 +msgid "-T --initial-tab Make tabs line up by prepending a tab." +msgstr "-T --initial-tab Wyrównanie linii przez u¿ycie TABów." + +#: src/diff.c:890 +msgid "-r --recursive Recursively compare any subdirectories found." +msgstr "-r --recursive Porównanie podkatalogów rekurencyjnie." + +#: src/diff.c:891 +msgid "-N --new-file Treat absent files as empty." +msgstr "-N --new-file Traktowanie brakuj±cych plików jak pustych." + +#: src/diff.c:892 +msgid "--unidirectional-new-file Treat absent first files as empty." +msgstr "" +"--unidirectional-new-file Traktowanie brakuj±cych pierwszych plików\n" +" w pierwszym zestawie jako pustych." + +#: src/diff.c:893 +msgid "-s --report-identical-files Report when two files are the same." +msgstr "" +"-s --report-identical-files Informowanie gdy dwa pliki s± takie same." + +#: src/diff.c:894 +msgid "-x PAT --exclude=PAT Exclude files that match PAT." +msgstr "-x WZÓR --exclude=WZÓR Wykluczenie plików pasuj±cych do WZORu." + +#: src/diff.c:895 +msgid "" +"-X FILE --exclude-from=FILE Exclude files that match any pattern in FILE." +msgstr "" +"-X PLIK --exclude-from=PLIK Pominiêcie plików pasuj±cych do wzorców w " +"PLIKu." + +#: src/diff.c:896 +msgid "" +"-S FILE --starting-file=FILE Start with FILE when comparing directories." +msgstr "" +"-S PLIK --starting-file=PLIK Zacznij od PLIKu przy porównywaniu katalogów." + +#: src/diff.c:897 +msgid "" +"--from-file=FILE1 Compare FILE1 to all operands. FILE1 can be a directory." +msgstr "" +"--from-file=PLIK1 Porównanie PLIKU1 z wszystkimi argumentami.\n" +" PLIK1 mo¿e byæ katalogiem." + +#: src/diff.c:898 +msgid "" +"--to-file=FILE2 Compare all operands to FILE2. FILE2 can be a directory." +msgstr "" +"--to-file=PLIK2 Porównanie wszystkich argumentów z PLIKIEM2.\n" +" PLIK2 mo¿e byæ katalogiem." + +#: src/diff.c:900 +msgid "--horizon-lines=NUM Keep NUM lines of the common prefix and suffix." +msgstr "" +"--horizon-lines=ILE Zostawienie ILE linii wspólnego przedrostka i " +"przyrostka." + +#: src/diff.c:901 src/sdiff.c:200 +msgid "-d --minimal Try hard to find a smaller set of changes." +msgstr "-d --minimal Usi³owanie znalezienia mniejszego zbioru zmian." + +#: src/diff.c:902 +msgid "" +"--speed-large-files Assume large files and many scattered small changes." +msgstr "--speed-large-files Du¿e pliki i rozrzucone ma³e zmiany." + +#: src/diff.c:907 +msgid "" +"FILES are `FILE1 FILE2' or `DIR1 DIR2' or `DIR FILE...' or `FILE... DIR'." +msgstr "" +"PLIKI to `PLIK1 PLIK2' albo `KATALOG1 KATALOG2' albo `KATALOG PLIK...' albo\n" +"PLIK... KATALOG'." + +#: src/diff.c:908 +msgid "" +"If --from-file or --to-file is given, there are no restrictions on FILES." +msgstr "" +"Je¿eli u¿yta jest opcja --from-file albo --to-file, nie ma ograniczeñ co do\n" +"PLIKÓW." + +#: src/diff.c:909 src/diff3.c:474 src/sdiff.c:222 +msgid "If a FILE is `-', read standard input." +msgstr "Je¿eli PLIK to `-', czytane jest standardowe wej¶cie." + +#: src/diff.c:920 +#, c-format +msgid "Usage: %s [OPTION]... FILES\n" +msgstr "U¿ycie: %s [OPCJA]... PLIKI\n" + +#: src/diff.c:949 +#, c-format +msgid "conflicting %s option value `%s'" +msgstr "sprzeczna warto¶æ opcji %s: `%s'" + +#: src/diff.c:962 +msgid "conflicting output style options" +msgstr "sprzeczne opcje stylu wyniku" + +#: src/diff.c:976 +msgid "regular empty file" +msgstr "zwyk³y pusty plik" + +#: src/diff.c:976 +msgid "regular file" +msgstr "zwyk³y plik" + +#: src/diff.c:978 +msgid "directory" +msgstr "katalog" + +#: src/diff.c:981 +msgid "block special file" +msgstr "specjalny plik blokowy" + +#: src/diff.c:984 +msgid "character special file" +msgstr "specjalny plik znakowy" + +#: src/diff.c:987 +msgid "fifo" +msgstr "fifo" + +#: src/diff.c:991 +msgid "socket" +msgstr "gniazdo" + +#: src/diff.c:994 +msgid "message queue" +msgstr "kolejka komunikatów" + +#: src/diff.c:997 +msgid "semaphore" +msgstr "semafor" + +#: src/diff.c:1000 +msgid "shared memory object" +msgstr "obiekt w pamiêci dzielonej" + +#: src/diff.c:1003 +msgid "typed memory object" +msgstr "obiekt w pamiêci z okre¶leniem typu" + +#: src/diff.c:1006 +msgid "weird file" +msgstr "dziwny plik" + +#: src/diff.c:1070 src/diff.c:1256 +#, c-format +msgid "Only in %s: %s\n" +msgstr "Tylko w %s: %s\n" + +#: src/diff.c:1193 +msgid "cannot compare `-' to a directory" +msgstr "nie mo¿na porównaæ `-' z katalogiem" + +#: src/diff.c:1220 +msgid "-D option not supported with directories" +msgstr "-D opcja nie dzia³a dla katalogów" + +#: src/diff.c:1229 +#, c-format +msgid "Common subdirectories: %s and %s\n" +msgstr "Wspólne podkatalogi: %s i %s\n" + +#: src/diff.c:1266 +#, c-format +msgid "File %s is a %s while file %s is a %s\n" +msgstr "Plik %s jest %s, podczas gdy plik %s jest %s\n" + +#: src/diff.c:1345 +#, c-format +msgid "Files %s and %s are identical\n" +msgstr "Pliki %s i %s s± identyczne\n" + +#: src/diff3.c:26 +msgid "Written by Randy Smith." +msgstr "Napisany przez Randiego Smitha." + +#: src/diff3.c:328 +msgid "incompatible options" +msgstr "niezgodne opcje" + +#: src/diff3.c:368 +msgid "`-' specified for more than one input file" +msgstr "`-' podany dla wiêcej ni¿ jednego pliku wej¶ciowego" + +#: src/diff3.c:408 src/diff3.c:1232 src/diff3.c:1645 src/diff3.c:1700 +#: src/sdiff.c:305 src/sdiff.c:879 src/sdiff.c:890 +msgid "read failed" +msgstr "nieudany odczyt" + +#: src/diff3.c:441 +msgid "-e --ed Output unmerged changes from OLDFILE to YOURFILE into MYFILE." +msgstr "" +"-e --ed Wypisanie niez³±czonych zmian miêdzy STARY_PLIK a NOWY_PLIK do\n" +" MÓJ_PLIK." + +#: src/diff3.c:442 +msgid "-E --show-overlap Output unmerged changes, bracketing conflicts." +msgstr "" +"-E --show-overlap Wypisanie niez³±czonych zmian, konflikty w nawiasach." + +#: src/diff3.c:443 +msgid "-A --show-all Output all changes, bracketing conflicts." +msgstr "-A --show-all Wypisanie wszystkich zmian, konflikty w nawiasach." + +#: src/diff3.c:444 +msgid "-x --overlap-only Output overlapping changes." +msgstr "-x --overlap-only Wypisanie nachodz±cych zmian." + +#: src/diff3.c:445 +msgid "-X Output overlapping changes, bracketing them." +msgstr "-X Wypisanie nachodz±cych zmian w nawiasach." + +#: src/diff3.c:446 +msgid "-3 --easy-only Output unmerged nonoverlapping changes." +msgstr "-3 --easy-only Wypisanie niez³±czonych nienachodz±cych zmian." + +#: src/diff3.c:448 +msgid "-m --merge Output merged file instead of ed script (default -A)." +msgstr "" +"-m -merge Wypisanie po³±czonych plików zamiast komend ed-a (domy¶lnie -A)." + +#: src/diff3.c:449 +msgid "-L LABEL --label=LABEL Use LABEL instead of file name." +msgstr "-L ETYKIETA --label=ETYKIETA U¿ycie ETYKIETY zamiast nazwy pliku." + +#: src/diff3.c:450 +msgid "-i Append `w' and `q' commands to ed scripts." +msgstr "-i Dodanie komendy `w' i `q' do komend ed-a." + +#: src/diff3.c:453 src/sdiff.c:202 +msgid "--diff-program=PROGRAM Use PROGRAM to compare files." +msgstr "--diff-program=PROGRAM U¿ycie PROGRAMU do porównania plików." + +#: src/diff3.c:465 +#, c-format +msgid "Usage: %s [OPTION]... MYFILE OLDFILE YOURFILE\n" +msgstr "U¿ycie: %s [OPCJA]... MÓJ_PLIK STARY_PLIK TWÓJ_PLIK\n" + +#: src/diff3.c:467 +msgid "Compare three files line by line." +msgstr "Porównanie trzech plików linia po linii." + +#: src/diff3.c:673 +msgid "internal error: screwup in format of diff blocks" +msgstr "b³ad wewnêtrzny: spieprzony format bloków diff" + +#: src/diff3.c:971 +#, c-format +msgid "%s: diff failed: " +msgstr "%s: diff nie zadzia³a³: " + +#: src/diff3.c:993 +msgid "internal error: invalid diff type in process_diff" +msgstr "b³±d wewnêtrzny: b³êdny typ diff w process_diff" + +#: src/diff3.c:1018 +msgid "invalid diff format; invalid change separator" +msgstr "b³êdny format diff; b³êdny separator zmian" + +#: src/diff3.c:1242 +msgid "invalid diff format; incomplete last line" +msgstr "b³êdny format diff; niekompletna ostatnia linia" + +#: src/diff3.c:1265 src/sdiff.c:273 +#, c-format +msgid "subsidiary program `%s' not executable" +msgstr "program pomocniczy `%s' nie jest wykonywalny" + +#: src/diff3.c:1268 src/sdiff.c:276 src/util.c:298 +#, c-format +msgid "subsidiary program `%s' not found" +msgstr "nie znaleziono programu pomocniczego `%s'" + +#: src/diff3.c:1272 src/sdiff.c:268 src/util.c:301 +#, c-format +msgid "subsidiary program `%s' failed" +msgstr "nie zadzia³a³ program pomocniczy `%s'" + +#: src/diff3.c:1294 +msgid "invalid diff format; incorrect leading line chars" +msgstr "b³êdny format diff; nieprawid³owe znaki na pocz±tku linii" + +#: src/diff3.c:1370 +msgid "internal error: invalid diff type passed to output" +msgstr "b³±d wenwêtrzny: b³êdny typ diff-a przekazany na wyj¶cie" + +#: src/diff3.c:1647 src/diff3.c:1704 +msgid "input file shrank" +msgstr "plik wej¶ciowy siê zmiejszy³" + +#: src/dir.c:162 +#, c-format +msgid "cannot compare file names `%s' and `%s'" +msgstr "nie mo¿na porównaæ nazw plików `%s' i `%s'" + +#: src/sdiff.c:35 +msgid "Written by Thomas Lord." +msgstr "Napisany przez Thomasa Lorda." + +#: src/sdiff.c:183 +msgid "-o FILE --output=FILE Operate interactively, sending output to FILE." +msgstr "-o PLIK --output=PLIK Tryb interakcyjny, wyniki wysy³ane do PLIKu." + +#: src/sdiff.c:185 +msgid "-i --ignore-case Consider upper- and lower-case to be the same." +msgstr "-i --ignore-case Traktowanie ma³ych i wielkich liter tak samo." + +#: src/sdiff.c:188 +msgid "-W --ignore-all-space Ignore all white space." +msgstr "-W --ignore-all-space Ignorowanie wszystkich znaków odstêpu." + +#: src/sdiff.c:194 +msgid "-w NUM --width=NUM Output at most NUM (default 130) columns per line." +msgstr "" +"-w ILE --width=ILE Wypisanie najwy¿ej ILE (domy¶nie 130) znaków w linii." + +#: src/sdiff.c:195 +msgid "-l --left-column Output only the left column of common lines." +msgstr "-I --left-column Wypisanie tylko lewej kolumny dla wspólnych linii." + +#: src/sdiff.c:196 +msgid "-s --suppress-common-lines Do not output common lines." +msgstr "-s --suppress-common-lines Bez wypisania wspólnych linii." + +#: src/sdiff.c:201 +msgid "" +"-H --speed-large-files Assume large files and many scattered small changes." +msgstr "-H --speed-large-files Du¿e pliki i rozrzucone ma³e zmiany." + +#: src/sdiff.c:214 +#, c-format +msgid "Usage: %s [OPTION]... FILE1 FILE2\n" +msgstr "U¿ycie: %s [OPCJA]... PLIK1 PLIK2\n" + +#: src/sdiff.c:215 +msgid "Side-by-side merge of file differences." +msgstr "Interaktywne po³±czenie plików." + +#: src/sdiff.c:327 +msgid "cannot interactively merge standard input" +msgstr "nie mogê interakcyjnie ³±czyæ standardowego wej¶cia" + +#: src/sdiff.c:588 +msgid "both files to be compared are directories" +msgstr "oba maj±ce byæ porównane pliki to katalogi" + +#: src/sdiff.c:853 +msgid "" +"ed:\tEdit then use both versions, each decorated with a header.\n" +"eb:\tEdit then use both versions.\n" +"el:\tEdit then use the left version.\n" +"er:\tEdit then use the right version.\n" +"e:\tEdit a new version.\n" +"l:\tUse the left version.\n" +"r:\tUse the right version.\n" +"s:\tSilently include common lines.\n" +"v:\tVerbosely include common lines.\n" +"q:\tQuit.\n" +msgstr "" +"ed:\tEdycja i u¿ycie obu wersji, ka¿dej z nag³ówkiem.\n" +"eb:\tEdycja i u¿ycie obu wersji.\n" +"el:\tiU¿ycie wersji po lewej.\n" +"er:\tEdycja i u¿ycie wersji po prawej.\n" +"e:\tEdycja nowej wersji.\n" +"l:\tU¿ycie wersji po lewej.\n" +"r:\tU¿ycie wersji po prawej.\n" +"s:\tDo³±czenie wspólnych linii bez informoawania o tym.\n" +"v:\tDo³±czenie wspólnych linii z podaniem informacji.\n" +"q:\tZakoñczenie.\n" diff --git a/src/apps/bin/diffutils-2.8.1/po/quot.sed b/src/apps/bin/diffutils-2.8.1/po/quot.sed new file mode 100644 index 0000000000..0122c46318 --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/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/src/apps/bin/diffutils-2.8.1/po/remove-potcdate.sin b/src/apps/bin/diffutils-2.8.1/po/remove-potcdate.sin new file mode 100644 index 0000000000..2436c49e78 --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/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/src/apps/bin/diffutils-2.8.1/po/ru.gmo b/src/apps/bin/diffutils-2.8.1/po/ru.gmo new file mode 100644 index 0000000000000000000000000000000000000000..3c67e6d2a83ecf10b4f4cb6b7712b5ae0a13f854 GIT binary patch literal 23983 zcmche3w&HxedjMMk46+Ikc1E(ISDw56OAG%A#vp>#PKU4wx!5&9LF|zBwa~^r5R-& zv7PYfZh@BFmZjYSeYe}!mTsZTmfh}$(p`_Di9MDyBWp$(%LW$%Asdp|!A>@%ux!8o z|2g;0j5Kl#+g*Kf{F{64dH&D;b^hm{&%Wx-r#<`k72qA7_v){K-}k)N?Xj=lXuywp z-W#v=yjM(sf5`KfJnv0!0ylw&!EVoc^J~Ft!27^9@F9>oZ~i0jZJ_ioSO8nV{|Ua+ z^WJg=xC*?*zJJRuFv9aEK?6#=>%j$({@?N=in7g+DJPN+g^R9e7csID!zQ6J_AmdyqNM~KM%_H_23~8x?J^lAmhL7Rp4D9bCYr276%#YZC?iO1^*97KUecx=yLVP zLB_dSzSHm3vfi6L@9npN(Dm)ZAa&pVdGI~px53S9-Oqrl!Cv<1e(({VY5&gS;Jf(m zb++ESZUooyoCKlWyM(^2;P*l1e~kf|$2CJBYr5vwKzJ#@o?kZrz8m};$U3k4D#&`S`<{J%cL#VY zRixf`K^c$ryyv6fwczi8ZwLQ}dp-qT!}I?J*}qlq1g{52K-#VPH27BVi|%_4Y^TZ_ zLF!%49K9>SQScq$$3XhO{&zvzUH{)e=zjei_$E;J<7&@qel7TO;B_E-(JcJ@HW1p$ zxXtW|#~95Sko7iy0+e=N0Gs)53j8woEZ7C>{JwpE!`DIjUi~WYY4B&kH-rBRg#I^P z23`(AJDJao8yw1b@+|A1&5e(M%C7WvX3`E3o_3(_DI^b(MI$}+mQX<_UjKijh4>%n=D{@T6?LWi~= zg3!O6y_N6nLU&}Wy$_^)`v*Yi-u@8CdfGn-* zVf(khYgrO)W!@dKFHPWPkbXND=M}88sxLxLZ75FF!f872X?tLDFPPc#8zF$Kfk@q#y?=|2rf*s%= zgY>iJ35OTJPoaXKq2h0YwCj8ixD9*|q+RD1Kp*@%2tC){4KnYwqagEM`xW>65BB*E zp)-7UhtQF^-XV0OUYGDc{dT3m9&i%ehzepaME~FU07%)!-c<`=R)6!C&Qh23*b5WS!Jo z|8cMlJkCCyV=AxY`RAG9c@R2oY5|$UCh7`5ZW8`m2MS$oK_#+R-aVj?oMWX?T&6F%(O3BD18x1|3b;cM2}Bl||39;pv4d%h1| z>3O|Ew|9c@p73Wcdo6O;%U%or_kIk7pL%~Egjaj>AhOnb5@a3sy#{1I?xT+PH{b&x zbm^n6@N3`w;H$w8vwrB=_pf+<4=nXxLFT{x6v(*!vd%YwYaBvzecl7Uj`wj8I`lsR zLht@R23c3Xtfv$FA;`Y&xDAA-cL+bx-;U3N%y-8ZK<9CCa6icWAN(|UEhzKp0KX2h?%nLQ z@Y!ym7vFcwJgx$TPuPRq!Y9yScL9XPyT1uu4azu-w}&}My*<4SqagF!lLUVj{3OVF z_WU~#y6*WMkp0~ACHMRlkpA}^0pWu^i{LGux0g0TpS^2A=)KnmUk`o;WW2q?Pp_cJ zI0q;)U-@ILV(0X4jDMMn_b({SUHoj(2_hHXM=0|5pD5e)m;L9%fYAEOlu^nrP*{iP zLjBvuzq=@(qWm^R*568z{ePI!MG+c&mLhAFKiMPs`(?_nQrN9Z5?u73yl_cqEaDc4gr zQsnPiitLa4{kny^e?P$!d!T>!^Y3p_evu+P_(zoArThw|_U}LQu#@s{+{<-fyZgNb zyqR(j<#zXO4>;m}ZvZotK}sKGGe!RXg9Xu7-WMp>xaZ#hg>Q%4v%s6(?+3vi_d5Xe zhWD4jgTp@nAE5M8;6JgE-hZU*qx>}`LFuM^n(|8&`FkB@oFY0*{=P{0809?_ktg}v zZ^8SQ;LlK6D8kFHqBK$df^vu=eUBPGj`nNZZ>sq+1PG7zjN7#4*Q`i_%N6lA5X+hI$@icXnaV2 zxq7=Jdw1{b-q3%~-rcRcd;2!7-@EtGp~S%lKC)$FfB(ilV0~s+`M5c}w zGTr`Ny&Fv|W%fb8<`%P$F#ssNFB6Bk;v@c0b1Qrl)Uyrbd-#=Zw(pNkDAQVcZ@;&@ zx7`dJO2c7LQ29$4Mfkc}rK7$|N2|9gW%zF>HazSnJM}BiY&EOqN7KuEmvyYVB_Ul{ zkOrOFof(FP{!pjUH?grXe*{5EOr&G*awK9_4cfY~_`}h$*ieHnuI|27gR4@_W+>sO z;>~Fj71m^F@ajlrob9#Ugq5kvq@v>kv5`z7qbukPI^QQ9CH;pou_Sa_v5!dPCm1lY zlht4H^jz%~XV_?RwbaVQlm1|0Bp!Rj4@qVTWXaI*yRN6ni$s*CA}Y-hWP3cC?ou^r zw#UX}W6@-b8Gv8ymw*A4g|$h_sK%2Pt#qb*84*Sa`cg@3*q3AaP#j!W(m=Wzh{dDH zL&o&^(IMs91Ibw0H$%~M)WqV(eI7^2N^N1*$V4(Rl8lab_4f5_?pud4*nw6G9#EAi z%?Z(F!!Th=T8Z9`$de8biKG+uX&`|X7p)i@j`>5i6}zkynf0zK`$*rgAROfh^JyhfyKD!JXpmz+94oR)VLS2)v`|Z#~+Hop(A#& zDPz{9Qiwkmg?DzBl{Vv|zf*(JH1-=2NzpClS=FkpIF(MuCL)1?j|?VJrSht(^9Q5J zWGqUjNk5%Q#trI97ccX0OrxC9VM5NRWr)B|cR0@IU>h27MkXG!oPs`#jzzEnmLE-j z(vPC%22$uYr@EDi#W4Hh6KUbATa1ZB{AlV>BoQA&a2$hW;^RK#7=nE9#KV4aEIKhE zn_gZ2I%$|1O&o~GoP%~XG(rX7{OtGB+Aa|v9*Yg8g>rXGOUG{mW6}72%ef|GHcMl3 zU^IawS`Josf^oDyeQYq>)@{X()6wvdKip-X+~nQVl|d0QnWWkGZmp=z(6MlXOl3o$ z&*O=-No6J`63H}+R_zo>U(8Q=5j&KXk#uw*;vbxd!jtUi(pe8>eAzfE;R?7)jHDeX zxg0q|l7*ypv|W*I_bA2xx%ju+^wlm34L&%^PB|?i-vZfhv>j}PwxAOhx5aE(clSp8 zqzIBV;E#2=N71DAXDpsdi%Q0$2=xXHw@H%~85Vt8%c|Q|KPnN@(WJ1I^0|tT$R6+P z&WRd@d+M}R&2BPozw{D|$I>wbMz+dqjqYdPkQM8&WG3)n@OS+QKW?2l`AEy1+R`!t z%#J>Z4*DUjg#8bUipA0Q)PEq{=LTX_x7BFqac!W}XMWa`L``9D+#)xsa~Wu<^eEzO zw?TB(gsLjhF-j=Ty z$@-OQKYBulSntvF%5lMYgrWrWH6so(;(9etjI6Hp!Srr1Tzf-eiS4=p!H#Ce(&m=c zRXaAAn83JNhn(p*MKW}@Bj^lOD7N=fJ9E{my$LClg9Cki<9MrE zYPO5gfk1hoG(sVwcFFb|sV_PjKeJB@lHkYSHe! zP*$aING384SE~W+#|`56IV8$xIL1LQYE2kcH0A5|xqW3rU|`sd_D+FfW_U^sV$Fm@ zmVREUvFu5-XUhiVT*lkgv!hRcv;PURb(j36pO_5e6u)&ZLc@;g^^*~`yLvXX?gx!= zgkF<~Qu4))?1VfsoWyF^{ZU%|uvsB$6D& zFRL#rS;F~oakHg+YqzR#)hb=?G4QZOF^aU<*MZ`(aSs{5(!^=i9`V3gDcs5r z1o&Zp>`)70VpV@YKiirqJ|sO1BxC+?I7!_iOb+x;It^>7Lvc7c|F?;n_s+q2uY;AU4k$0j47Ft*uNS5JjOjm(xy-(CGxkIpV0Bf;T0G6u4{~ z5_pJc6U$;t7*Z#!PSB7TS^C*19uX=@9$-N=H!7>P1E%}1ED}DnzEzLyH+YW4hZEE} zAa$G`xfC0G!04eU5;+hXN{`wTlIuC(lRA6TeoNbGCuS)FZ>X|m+=DW%GvoE{as%70 z^?TPTi#ki*rH?DxaK6$AA6#~M$j6E*hI=jcmp!ubpHj=Q^QT#v+UUA&etNAV<}313 z@W$QtoNoDTl~pc)m6;|FF_u7Os!k$036H22l4ue&s;6>m4RP2+6}E=o(xXW~@RihF zF0T>tysA3B3$}Vgf z7NjGBgJPh)Zuc4|#D&NQ3F)Sc1Qe8M zk7PL1%P~we7l*a55&;*E<>>e7o8^_a`s2i2Xg(UvaC#Z?wk52`B|ls|*PuYeqj2XM z`NCii$A}lQ*k$AQ$Qc_sme8hfac|Pcf6uTpu9F6B`j&Nr>claMjd)Id4`fDEo!-HZ z$VfaB$)sarsk`{qnn;e^+3Kms;%v8EDBx7tz&utMo)=wjpT(As<8sF)IIKf?%#{rh z`KivP{db%8wzjqwb1&F&Ym3>+ixzpKZ@0?Bt!rA|d;4uIO`B^!>F3Sz`Sx2{Zojp? zWsS5JPERF-1?6&}zs2;nn2jyw!4|X2&bVExSl3CISEgw%0)*UZ)76Mb{2H37Z!LmF z>ss|`-4VAzwLT*CGK2VvDX(9`X)X>ZCfRq9sck)G=eoYWb=&%PAw?YOnE{6;F~FFG z@fe{YCE!@}Kx@;kLST|hz?*lr5~I&7>Uk^xTjEh(zPlXk*6WE zzNdFr_qNTgUVm^OA>x=q;zoIO$m~Pq*brm0?#9xATD=|d{qe*BRPrH2Vchu1WFpB+ zJ$*934Wb(N+)(powZ2(h^Jcfa+5Lf^nmP0*k^>(~5Kr8U8XJR^R8H*hTcd;b`te6%2*JL{Dz1fs02j=c z7)T|?{ItK;BpA!Y(if|efurbQ&`2j#Y_3MOs~kcALZX_&lMp?xy z@Jm2~Lmt;$mu(zkcM#yXkxkHB1?K=G+^XeBgW=vQeF6Y-BWTs+C+F0_QrO)8QlAcnXmu-hP;%POFa(Now zRM?Yk)5D#Y-EU8(D^_`^^RoLg9Auk3^m8%_W%W|U?#ys(IN`O6|*=#X#EgqLiADR$e7gHg2{!Gj_k>S>EmRj0kAgl!7y5B>&0@7+@Jdx;3cqiHh5B9!O2Hg%HHm=_K}#=%4)uYwIL&gn z940CzkJbZsY{c=1gJMiBJcF4CW!!zax6)@>kbjUM1jld`_Qk4c48jw4Q*Xmm+uHbO zpwtfdG0dE<$zHWO0`w*mvXV&mPz2c(=i6T9t7~dHTGur7_Vh>A%MBIZA{)?Vou;F$ zts~NQYozVHrv28=_O?jdnzlA7M*486rH`fcZjpLzx82lsEA_UJ5)#3|iR0J6Po1WR zOaZgK)%3?k0C^U80c=I$L}qw|q2` zjY{SD;&k5RPnz$Z`QEcw!6K2(#9?1vUpocu;UXQpP3yOu0WyQoPw`r*^(pFVp= z@{L|N_v5oczR|Z{eCDMy#ynn}pUsxF19|fUQ(-dsnH=1XnjY508e=QZ&F2gG*{m#K zCO5TkSVlfs$ezv>^2fD@Lb0-V)Et>#n44?S7o~D`o;NaCD3Ys7Jt`C-l$p!TSBl3R z0o-VseB?eCWvD`KSq*NrPUlNAMcdL`YWk7e^hVpj)tcpl{A@8-JE2v?ZI^v%G5ON; z%;D47g3y!`15&6>*5;#46d#*&?Yc`v;1^z(46 zOn!2)d}2vXQhp|1o0QaIo|5Y1?v#t>i5z^f&sqcWmAvQYi*pO?Go8o=F!i(TW-@!M zY#z@Zo5?B*wbLZ{*s=6un2R)@JvoyITuHZ723b`q}lG(*$M)pG%93(3ha+TbCp}_~O=rWb2iZf3z zbiOoKoH=o_SV0Svj+@EcNt2yFvM`$~l(RNjr;wA~5q=N5+=nHwA6<_ahQ|F3hP@SM zYg^dlrN(U<%)t)h(vmK@Ril~PK5C}IF~oH^xww=X%V%H6@=+Q>e%65q6-(oW`ICGcB4)ROTt1 z0Csw|fcVbl8||;%a8&r@e6a-UEy5DBxtVFIN*GM@yf)xm@ZB##a7G} ztK;~vTlKrLc12E{n9&CF^mE^rwb@)TeF&$8LYv8!7sY2%D{G0wq!6Kn>BsVi!_+a_ z;hxZ&i~ZCe41c1WvBtA+fs0O7gbPLTOVjg<<$P`y?KZhEbNsQqaL`7*Zuu{_5|1YuYHs@c`t+Odt8gJ&*4mB!Ngj zn_eiE$|nxjSmlMoWwkX0bkKr9e?k9w{asm{&*GBh4@=V9b5FkT3|1{jdUKC;Mo!+n zXez?jXm#{SUe!~Ut>lzYoBMV#k!>KW+f_9vH`FD=iNY}E`FZ>bv3LxaM*&%zRY6gm z7DHt<%o!%3*V8UyWE0_DVujdbweSJw9mXb2W-BwtIZ$XHa<;KY&Y+4g=L)%TbsHpF zU~axRnVUHwY;Jp5q%nzdp-ir%U23!j*0M%TJP=Z&E@{pZ<7qt%iJn$EVkAzW+{G%g z<&`;n3bwl>UPXR3GLxSyuE;CaS`;U-7ms0`I1;NnBoZsrk>Q?XDN)%Ln|5~rD<~9~ zW!qgW=ceI>3WkQ7E9c(T5iOMDK)(e9M91ki6e~ezbqRPOL4zZX)z)&D5|Z0IJm-+q zWa8-?a`B!i&ILY&t#rd&(JagsXHI9407=VJ850eztICGycwwJmLSE2kIHimA_%a*7 zHdM_KzF6%9ApKIo4CM6E1e38>Na<5Q&$=}0Babf>#5i!AwDFm5;IszYlyg~qR&zDT z>XQ#Oz0KjmoN@-5Zj`7C(z9hwx_)_rz`)`iiw6@bEPe+1DkuJGeS+Zgi^7>0?*i%xqxGj5T{B(O zrVNH1RK=SJiR?*WLTdb23*?7^_FN_dJOjgSH394?>y&XZV4cbn1`JX?2MEg$U5 z0V0kreqY~${)8%|c!Un;qnN3#`TU)_oYEuc> zhaBcv%!S*;Ky4GiGDOhSfY2x@Q?E%VJfE9hm@mml*63T~Jy)D^hF>gA<1E6n9PQje zlvA|j9D)-ZMui*n{PK-#PGXL3C*_!+U9FT+ctKjr5{i==n$AvZ+*PKYJsLD#Az`d$ zHp;O<(2{1$Qwh(jgRGmyQO7PL^e3u5vq+g*OJUdgtuRGujYU|-?L#h`OsO$kUM9y)0psu*}&h-xdzZ1%87E4@ViwPTy zw_Xe+cd=onVmP8WR~#)Wjm~Zd&AD%#Kl6`Iew+CQNsGZ7qBnA4ds#n9>wo*)bI`j% zE@Le&OCeWsdnRjEd8LhB^$D(N$X1&lGEd=bA zwf6`=Ae2!yV(togxhlff(e^TDKDmBm8Ma3Wmyndg5dybf?wZOHJDk^0vl#E%=9k*y ztlk6=2q~2oXQs2BeMaTxX9#KW40EYCUlt#o3p!h;+C21XayCIS z?6=n4#KMKgTd@W9benU%V0;VtCm;(tG&hx-sdnD5(K%F0RxBQinaj=|#|q?2r*rdj z*+SO4px&&|SZMCOBu@KdRs^!T3tUr$_eC(l!Wm=9gLNKnJPsUm3ZD;CKwPSbD4OD_{Nywan%YKW zCudg7wR|QpmB(js?1;$8O?%>y%>}w){c4f&O_Hv?Ju#d2 z9Up9MdT!C2eNs6Q{U^}~Vq-_La6vhLjL;csa6XAYxt^7*C(ZgVSe?u!IQ@DH*CFBl9REvGiPjE86Q zoQO{1IgrHJ+VmX=Ok`=n-an(p@j;|k=xT8DAP$!D2bZ1Dh={G7jr!T8*&-UdoNH2* z80K%DBlb`h`I;tNecT{i#7l`MSCb3Eru$Tx$~^_Qe|2-R?rktLgo499 z5%4_M3}=H2G)5?Km5`g25v>gHaV|SA&o`(}CFe7Iv)aB{U464#-;nbe)*?5u{TYZP;s}^C;b!V-F?<3e!g7qKe%|m!I6_g>Y4LDu*Xk1pz1la z$vaaKQTV?|1I?S7Bv9?m^ws8n+E*`d;w+hGi}P3%H{|lH&%8@Ht;zXxcd(lHNmQSU zhncl(>_TZ;l~(RZ(Q8;G?_%G|GId#>)`|)1ScZ{%X3?OU4!{p#&#Z?$Kb9A%2##wd z*l}`35-Vnr!cuu*t~l%Ac7z9%+$KeWU7!#q>pQVHc_v%*i{>)L=R+}4kAXk_OwZx?0ocq5hmHJp(AkslyHfCxjk1roapo1EY8g4#r zB5PTcT=&q-8A~Xr=j$wUT)7FnXm2YtURMn=Xw&?~nz}x5fbgEx#|y)%$7{$EuHy)| z_$P^`XM=UrtW@RPeOTsQJ2ndW^qA<3Ij(&RA-n04ZNFC45WOR5A_Y;ZtmiRRjr4KJ zTaENl1&U2cBBFY98ZA-93U6&9hD^#I9>Ki#6ZfP@TP2_c8p)bX{ka|{7Nu{Ee4#JNzRapqj-sjW$%7ii%wc(CrnaW=m0P~sr{E+Z n83, 1998, 2001, 2002. +# +msgid "" +msgstr "" +"Project-Id-Version: diffutils 2.8\n" +"POT-Creation-Date: 2002-04-05 14:10-0800\n" +"PO-Revision-Date: 2002-04-03 14:06+0400\n" +"Last-Translator: Oleg S. Tihonov \n" +"Language-Team: Russian \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=koi8-r\n" +"Content-Transfer-Encoding: 8bit\n" + +#: lib/c-stack.c:188 +msgid "program error" +msgstr "ÏÛÉÂËÁ ÐÒÏÇÒÁÍÍÙ" + +#: lib/c-stack.c:189 +msgid "stack overflow" +msgstr "ÐÅÒÅÐÏÌÎÅÎÉÅ ÓÔÅËÁ" + +#: lib/error.c:128 lib/error.c:156 +msgid "Unknown system error" +msgstr "îÅÉÚ×ÅÓÔÎÁÑ ÓÉÓÔÅÍÎÁÑ ÏÛÉÂËÁ" + +#: lib/freesoft.c:27 +msgid "" +"This program comes with NO WARRANTY, to the extent permitted by law.\n" +"You may redistribute copies of this program\n" +"under the terms of the GNU General Public License.\n" +"For more information about these matters, see the file named COPYING." +msgstr "" +"Copyright (C) %s Free Software Foundation, Inc.\n" +"íÙ îå ÐÒÅÄÏÓÔÁ×ÌÑÅÍ ÇÁÒÁÎÔÉÊ, × ÔÏÊ ÍÅÒÅ, ËÏÔÏÒÁÑ ÄÏÐÕÓÔÉÍÁ ÚÁËÏÎÏÍ.\n" +"÷Ù ÍÏÖÅÔÅ ÒÁÓÐÒÏÓÔÒÁÎÑÔØ ÜÔÉ ÐÒÏÇÒÁÍÍÙ ÐÒÉ ÓÏÂÌÀÄÅÎÉÉ\n" +"ÕÓÌÏ×ÉÊ õÎÉ×ÅÒÓÁÌØÎÏÊ ïÂÝÅÓÔ×ÅÎÎÏÊ ìÉÃÅÎÚÉÉ GNU.\n" +"äÌÑ ÐÏÌÕÞÅÎÉÑ ÐÏÄÒÏÂÎÏÊ ÉÎÆÏÒÍÁÃÉÉ Ï ×ÏÚÍÏÖÎÏÓÔÉ ÒÁÓÐÒÏÓÔÒÁÎÅÎÉÑ ÓÍÏÔÒÉÔÅ\n" +"ÆÁÊÌ COPYING." + +#: lib/getopt.c:693 +#, c-format +msgid "%s: option `%s' is ambiguous\n" +msgstr "%s: ÎÅÏÄÎÏÚÎÁÞÎÙÊ ËÌÀÞ `%s'\n" + +#: lib/getopt.c:718 +#, c-format +msgid "%s: option `--%s' doesn't allow an argument\n" +msgstr "%s: ËÌÀÞ `--%s' ÄÏÌÖÅÎ ÉÓÐÏÌØÚÏ×ÁÔØÓÑ ÂÅÚ ÁÒÇÕÍÅÎÔÁ\n" + +#: lib/getopt.c:723 +#, c-format +msgid "%s: option `%c%s' doesn't allow an argument\n" +msgstr "%s: ËÌÀÞ `%c%s' ÄÏÌÖÅÎ ÉÓÐÏÌØÚÏ×ÁÔØÓÑ ÂÅÚ ÁÒÇÕÍÅÎÔÁ\n" + +#: lib/getopt.c:741 lib/getopt.c:914 +#, c-format +msgid "%s: option `%s' requires an argument\n" +msgstr "%s: ËÌÀÞ `%s' ÄÏÌÖÅÎ ÉÓÐÏÌØÚÏ×ÁÔØÓÑ c ÁÒÇÕÍÅÎÔÏÍ\n" + +#: lib/getopt.c:770 +#, c-format +msgid "%s: unrecognized option `--%s'\n" +msgstr "%s: ÎÅÉÚ×ÅÓÔÎÙÊ ËÌÀÞ `--%s'\n" + +#: lib/getopt.c:774 +#, c-format +msgid "%s: unrecognized option `%c%s'\n" +msgstr "%s: ÎÅÉÚ×ÅÓÔÎÙÊ ËÌÀÞ `%c%s'\n" + +#: lib/getopt.c:800 +#, c-format +msgid "%s: illegal option -- %c\n" +msgstr "%s: ÎÅÄÏÐÕÓÔÉÍÙÊ ËÌÀÞ -- %c\n" + +#: lib/getopt.c:803 +#, c-format +msgid "%s: invalid option -- %c\n" +msgstr "%s: ÎÅ×ÅÒÎÙÊ ËÌÀÞ -- %c\n" + +#: lib/getopt.c:833 lib/getopt.c:963 +#, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "%s: ËÌÀÞ %c ÄÏÌÖÅÎ ÂÙ ÉÓÐÏÌØÚÏ×ÁÔØÓÑ c ÁÒÇÕÍÅÎÔÏÍ\n" + +#: lib/getopt.c:880 +#, c-format +msgid "%s: option `-W %s' is ambiguous\n" +msgstr "%s: ÎÅÏÄÎÏÚÎÁÞÎÙÊ ËÌÀÞ `-W %s'\n" + +#: lib/getopt.c:898 +#, c-format +msgid "%s: option `-W %s' doesn't allow an argument\n" +msgstr "%s: ËÌÀÞ `-W %s' ÄÏÌÖÅÎ ÉÓÐÏÌØÚÏ×ÁÔØÓÑ ÂÅÚ ÁÒÇÕÍÅÎÔÁ\n" + +#: lib/regex.c:1367 +msgid "Success" +msgstr "õÓÐÅÈ" + +#: lib/regex.c:1370 +msgid "No match" +msgstr "óÏ×ÐÁÄÅÎÉÊ ÎÅÔ" + +#: lib/regex.c:1373 +msgid "Invalid regular expression" +msgstr "îÅ×ÅÒÎÏÅ ÒÅÇÕÌÑÒÎÏÅ ×ÙÒÁÖÅÎÉÅ" + +#: lib/regex.c:1376 +msgid "Invalid collation character" +msgstr "îÅÄÏÐÕÓÔÉÍÙÊ ÄÌÑ ÓÏÒÔÉÒÏ×ËÉ ÓÉÍ×ÏÌ" + +#: lib/regex.c:1379 +msgid "Invalid character class name" +msgstr "îÅ×ÅÒÎÏÅ ÉÍÑ ËÌÁÓÓÁ ÓÉÍ×ÏÌÁ" + +#: lib/regex.c:1382 +msgid "Trailing backslash" +msgstr "ïÂÒÁÔÎÁÑ ËÏÓÁÑ ÞÅÒÔÁ ÓÔÏÉÔ ÐÏÓÌÅÄÎÅÊ" + +#: lib/regex.c:1385 +msgid "Invalid back reference" +msgstr "îÅ×ÅÒÎÁÑ ÓÓÙÌËÁ" + +#: lib/regex.c:1388 +msgid "Unmatched [ or [^" +msgstr "îÅÐÁÒÎÁÑ [ ÉÌÉ [^" + +#: lib/regex.c:1391 +msgid "Unmatched ( or \\(" +msgstr "îÅÐÁÒÎÁÑ ( ÉÌÉ \\(" + +#: lib/regex.c:1394 +msgid "Unmatched \\{" +msgstr "îÅÐÁÒÎÁÑ \\{" + +#: lib/regex.c:1397 +msgid "Invalid content of \\{\\}" +msgstr "îÅ×ÅÒÎÏÅ ÓÏÄÅÒÖÉÍÏÅ \\{\\}" + +#: lib/regex.c:1400 +msgid "Invalid range end" +msgstr "îÅ×ÅÒÎÙÊ ÎÉÖÎÉÊ ÐÒÅÄÅÌ" + +#: lib/regex.c:1403 +msgid "Memory exhausted" +msgstr "ïÐÅÒÁÔÉ×ÎÁÑ ÐÁÍÑÔØ ÉÓÞÅÒÐÁÎÁ" + +#: lib/regex.c:1406 +msgid "Invalid preceding regular expression" +msgstr "îÅ×ÅÒÎÏÅ ÐÒÅÄÛÅÓÔ×ÕÀÝÅÅ ÒÅÇÕÌÑÒÎÏÅ ×ÙÒÁÖÅÎÉÅ" + +#: lib/regex.c:1409 +msgid "Premature end of regular expression" +msgstr "ðÒÅÖÄÅ×ÒÅÍÅÎÎÙÊ ËÏÎÅà ÒÅÇÕÌÑÒÎÏÇÏ ×ÙÒÁÖÅÎÉÑ" + +#: lib/regex.c:1412 +msgid "Regular expression too big" +msgstr "òÅÇÕÌÑÒÎÏÅ ×ÙÒÁÖÅÎÉÅ ÓÌÉÛËÏÍ ×ÅÌÉËÏ" + +#: lib/regex.c:1415 +msgid "Unmatched ) or \\)" +msgstr "îÅÐÁÒÎÁÑ ) ÉÌÉ \\)" + +#: lib/regex.c:8034 +msgid "No previous regular expression" +msgstr "òÅÇÕÌÑÒÎÏÅ ×ÙÒÁÖÅÎÉÅ ÎÅ ÂÙÌÏ ÚÁÄÁÎÏ ÒÁÎØÛÅ" + +#: lib/xmalloc.c:63 +msgid "memory exhausted" +msgstr "ÐÁÍÑÔØ ÉÓÞÅÒÐÁÎÁ" + +#: src/analyze.c:809 src/diff.c:1283 +#, c-format +msgid "Files %s and %s differ\n" +msgstr "æÁÊÌÙ %s É %s ÒÁÚÌÉÞÁÀÔÓÑ\n" + +#: src/analyze.c:812 +#, c-format +msgid "Binary files %s and %s differ\n" +msgstr "ä×ÏÉÞÎÙÅ ÆÁÊÌÙ %s É %s ÒÁÚÌÉÞÁÀÔÓÑ\n" + +#: src/analyze.c:1058 src/diff3.c:1413 src/util.c:526 +msgid "No newline at end of file" +msgstr "÷ ËÏÎÃÅ ÆÁÊÌÁ ÎÅÔ ÎÏ×ÏÊ ÓÔÒÏËÉ" + +#: src/cmp.c:43 +msgid "Written by Torbjorn Granlund and David MacKenzie." +msgstr "á×ÔÏÒÙ Torbjorn Granlund É David MacKenzie." + +#: src/cmp.c:118 src/diff.c:817 src/diff3.c:427 src/sdiff.c:168 +#, c-format +msgid "Try `%s --help' for more information." +msgstr "ðÏÐÒÏÂÕÊÔÅ `%s --help' ÄÌÑ ÐÏÌÕÞÅÎÉÑ ÂÏÌÅÅ ÐÏÄÒÏÂÎÏÇÏ ÏÐÉÓÁÎÉÑ." + +#: src/cmp.c:137 +#, c-format +msgid "invalid --ignore-initial value `%s'" +msgstr "ÎÅÄÏÐÕÓÔÉÍÏÅ ÚÎÁÞÅÎÉÅ --ignore-initial `%s'" + +#: src/cmp.c:146 +msgid "options -l and -s are incompatible" +msgstr "ËÌÀÞÉ -l É -s ÎÅÓÏ×ÍÅÓÔÉÍÙ" + +#: src/cmp.c:154 src/diff.c:826 src/diff3.c:435 src/sdiff.c:177 +#: src/sdiff.c:313 src/sdiff.c:320 src/sdiff.c:910 src/util.c:194 +#: src/util.c:286 src/util.c:293 +msgid "write failed" +msgstr "ÚÁÐÉÓØ ÎÅÕÓÐÅÛÎÁ" + +#: src/cmp.c:156 src/diff.c:828 src/diff.c:1354 src/diff3.c:437 +#: src/sdiff.c:179 +msgid "standard output" +msgstr "ÓÔÁÎÄÁÒÔÎÙÊ ×Ù×ÏÄ" + +#: src/cmp.c:160 +msgid "-b --print-bytes Print differing bytes." +msgstr "-b --print-bytes ÷Ù×ÏÄÉÔØ ÒÁÚÌÉÞÁÀÝÉÅÓÑ ÂÁÊÔÙ." + +#: src/cmp.c:161 +msgid "-i SKIP --ignore-initial=SKIP Skip the first SKIP bytes of input." +msgstr "" +"-i î --ignore-initial=î éÇÎÏÒÉÒÏ×ÁÔØ ÒÁÚÌÉÞÉÑ × ÐÅÒ×ÙÈ î ÂÁÊÔÁÈ ××ÏÄÁ." + +#: src/cmp.c:162 +msgid "-i SKIP1:SKIP2 --ignore-initial=SKIP1:SKIP2" +msgstr "-i î1:î2 --ignore-initial=î1:î2" + +#: src/cmp.c:163 +msgid "" +" Skip the first SKIP1 bytes of FILE1 and the first SKIP2 bytes of FILE2." +msgstr "ðÒÏÐÕÓÔÉÔØ ÐÅÒ×ÙÅ î1 ÂÁÊÔ ÆÁÊÌÁ æáêì1 É ÐÅÒ×ÙÅ î2 ÂÁÊÔ ÆÁÊÌÁ æáêì2." + +#: src/cmp.c:164 +msgid "-l --verbose Output byte numbers and values of all differing bytes." +msgstr "-l --verbose ÷Ù×ÏÄÉÔØ ÎÏÍÅÒÁ É ÚÎÁÞÅÎÉÑ ×ÓÅÈ ÒÁÚÌÉÞÁÀÝÉÈÓÑ ÂÁÊÔ." + +#: src/cmp.c:165 +msgid "-n LIMIT --bytes=LIMIT Compare at most LIMIT bytes." +msgstr "-n ðòåäåì --bytes=ðòåäåì óÒÁ×ÎÉ×ÁÔØ ÎÅ ÂÏÌÅÅ ÕËÁÚÁÎÎÏÇÏ ÞÉÓÌÁ ÂÁÊÔ." + +#: src/cmp.c:166 +msgid "-s --quiet --silent Output nothing; yield exit status only." +msgstr "" +"-s --quiet --silent îÅ ×Ù×ÏÄÉÔØ, ÔÏÌØËÏ ÓÏÏÂÝÉÔØ ×ÏÚ×ÒÁÝÁÅÍÏÅ ÚÎÁÞÅÎÉÅ." + +#: src/cmp.c:167 src/diff.c:904 src/diff3.c:455 src/sdiff.c:204 +msgid "-v --version Output version info." +msgstr "-v --version ðÏËÁÚÁÔØ ÉÎÆÏÒÍÁÃÉÀ Ï ×ÅÒÓÉÉ É ×ÙÊÔÉ." + +#: src/cmp.c:168 src/diff.c:905 src/diff3.c:456 src/sdiff.c:205 +msgid "--help Output this help." +msgstr "--help ðÏËÁÚÁÔØ ÜÔÕ ÓÐÒÁ×ËÕ É ×ÙÊÔÉ." + +#: src/cmp.c:177 +#, c-format +msgid "Usage: %s [OPTION]... FILE1 [FILE2 [SKIP1 [SKIP2]]]\n" +msgstr "éÓÐÏÌØÚÏ×ÁÎÉÅ: %s [ëìàþ]... æáêì1 [æáêì2 [î1 [î2]]]\n" + +#: src/cmp.c:179 +msgid "Compare two files byte by byte." +msgstr "ðÏÂÁÊÔÏ×Ï ÓÒÁ×ÎÉ×ÁÅÔ Ä×Á ÆÁÊÌÁ." + +#: src/cmp.c:183 +msgid "SKIP1 and SKIP2 are the number of bytes to skip in each file." +msgstr "î1 É î2 -- ÜÔÏ ÞÉÓÌÏ ÂÁÊÔ, ËÏÔÏÒÙÅ ÓÌÅÄÕÅÔ ÐÒÏÐÕÓÔÉÔØ × ËÁÖÄÏÍ ÆÁÊÌÅ." + +#: src/cmp.c:184 +msgid "" +"SKIP values may be followed by the following multiplicative suffixes:\n" +"kB 1000, K 1024, MB 1,000,000, M 1,048,576,\n" +"GB 1,000,000,000, G 1,073,741,824, and so on for T, P, E, Z, Y." +msgstr "" +"ë ÚÎÁÞÅÎÉÑÍ î ÍÏÖÎÏ ÐÒÉÐÉÓÙ×ÁÔØ ÏÄÉÎ ÉÚ ÓÌÅÄÕÀÝÉÈ ÍÎÏÖÉÔÅÌØÎÙÈ ÓÕÆÆÉËÓÏ×:\n" +"kB 1000, K 1024, MB 1,000,000, M 1,048,576,\n" +"GB 1,000,000,000, G 1,073,741,824, É ÔÁË ÄÁÌÅÅ ÄÌÑ T, P, E, Z, Y." + +#: src/cmp.c:187 +msgid "If a FILE is `-' or missing, read standard input." +msgstr "åÓÌÉ æáêì ÎÅ ÚÁÄÁÎ ÉÌÉ ÚÁÄÁÎ ËÁË `-', ÞÉÔÁÅÔ ÓÔÁÎÄÁÒÔÎÙÊ ××ÏÄ." + +#: src/cmp.c:188 src/diff.c:911 src/diff3.c:475 src/sdiff.c:223 +msgid "Report bugs to ." +msgstr "ï ÏÛÉÂËÁÈ ÓÏÏÂÝÁÊÔÅ ." + +#: src/cmp.c:231 +#, c-format +msgid "invalid --bytes value `%s'" +msgstr "ÎÅÄÏÐÕÓÔÉÍÏÅ ÚÎÁÞÅÎÉÅ --bytes `%s'" + +#: src/cmp.c:258 src/diff.c:734 src/diff3.c:333 src/sdiff.c:558 +#, c-format +msgid "missing operand after `%s'" +msgstr "ÐÒÏÐÕÝÅÎ ÏÐÅÒÁÎÄ ÐÏÓÌÅ `%s'" + +#: src/cmp.c:270 src/diff.c:736 src/diff3.c:335 src/sdiff.c:560 +#, c-format +msgid "extra operand `%s'" +msgstr "ÉÚÌÉÛÎÉÊ ÏÐÅÒÁÎÄ `%s'" + +#: src/cmp.c:477 +#, c-format +msgid "%s %s differ: byte %s, line %s\n" +msgstr "%s %s ÒÁÚÌÉÞÁÀÔÓÑ: ÂÁÊÔ %s, ÓÔÒÏËÁ %s\n" + +#: src/cmp.c:495 +#, c-format +msgid "%s %s differ: byte %s, line %s is %3o %s %3o %s\n" +msgstr "%s %s ÒÁÚÌÉÞÁÀÔÓÑ: ÂÁÊÔ %s, ÓÔÒÏËÁ %s ÒÁ×ÅÎ %3o %s %3o %s\n" + +#: src/cmp.c:543 +#, c-format +msgid "cmp: EOF on %s\n" +msgstr "cmp: ËÏÎÅÊ ÆÁÊÌÁ × %s\n" + +#: src/diff.c:41 +msgid "" +"Written by Paul Eggert, Mike Haertel, David Hayes,\n" +"Richard Stallman, and Len Tower." +msgstr "" +"á×ÔÏÒÙ Paul Eggert, Mike Haertel, David Hayes,\n" +"Richard Stallman, É Len Tower." + +#: src/diff.c:322 +#, c-format +msgid "invalid context length `%s'" +msgstr "ÎÅÄÏÐÕÓÔÉÍÁÑ ÄÌÉÎÁ ËÏÎÔÅËÓÔÁ `%s'" + +#: src/diff.c:405 +msgid "pagination not supported on this host" +msgstr "ÒÁÚÂÉÅÎÉÅ ÎÁ ÓÔÒÁÎÉÃÙ ÎÅ ÐÏÄÄÅÒÖÉ×ÁÅÔÓÑ ÎÁ ÄÁÎÎÏÊ ÍÁÛÉÎÅ" + +#: src/diff.c:420 src/diff3.c:315 +msgid "too many file label options" +msgstr "ÓÌÉÛËÏÍ ÍÎÏÇÏ ËÌÀÞÅÊ ÚÁÄÁÀÝÉÈ ÍÅÔËÉ ÆÁÊÌÏ×" + +#: src/diff.c:498 +#, c-format +msgid "invalid width `%s'" +msgstr "ÎÅÄÏÐÕÓÔÉÍÁÑ ÛÉÒÉÎÁ `%s'" + +#: src/diff.c:502 +msgid "conflicting width options" +msgstr "ÐÒÏÔÉ×ÏÒÅÞÉ×ÙÅ ËÌÀÞÉ ÚÁÄÁÎÉÑ ÛÉÒÉÎÙ" + +#: src/diff.c:526 +#, c-format +msgid "invalid horizon length `%s'" +msgstr "ÎÅÄÏÐÕÓÔÉÍÁÑ ÄÌÉÎÁ ÇÏÒÉÚÏÎÔÁ `%s'" + +#: src/diff.c:629 +#, c-format +msgid "`-%ld' option is obsolete; use `-%c %ld'" +msgstr "ËÌÀÞ `-%ld' ÕÓÔÁÒÅÌ; ÉÓÐÏÌØÚÕÊÔÅ `-%c %ld'" + +#: src/diff.c:641 +#, c-format +msgid "`-%ld' option is obsolete; omit it" +msgstr "ËÌÀÞ `-%ld' ÕÓÔÁÒÅÌ; ÏÐÕÓËÁÊÔÅ ÅÇÏ" + +#: src/diff.c:709 +msgid "--from-file and --to-file both specified" +msgstr "ÎÅÏÂÈÏÄÉÍÏ ÚÁÄÁÔØ ËÁË --from-file, ÔÁË É --to-file" + +#: src/diff.c:832 +msgid "Compare files line by line." +msgstr "ðÏÓÔÒÏÞÎÏ ÓÒÁ×ÎÉ×ÁÅÔ Ä×Á ÆÁÊÌÁ." + +#: src/diff.c:834 +msgid "-i --ignore-case Ignore case differences in file contents." +msgstr "-i --ignore-case éÇÎÏÒÉÒÏ×ÁÔØ ÒÅÇÉÓÔÒ ÂÕË× × ÓÏÄÅÒÖÉÍÏÍ ÆÁÊÌÏ×." + +#: src/diff.c:835 +msgid "--ignore-file-name-case Ignore case when comparing file names." +msgstr "--ignore-file-name-case éÇÎÏÒÉÒÏ×ÁÔØ ÒÅÇÉÓÔÒ ÂÕË× × ÉÍÅÎÁÈ ÆÁÊÌÏ×." + +#: src/diff.c:836 +msgid "--no-ignore-file-name-case Consider case when comparing file names." +msgstr "--no-ignore-file-name-case õÞÉÔÙ×ÁÔØ ÒÅÇÉÓÔÒ ÂÕË× × ÉÍÅÎÁÈ ÆÁÊÌÏ×." + +#: src/diff.c:837 src/sdiff.c:186 +msgid "-E --ignore-tab-expansion Ignore changes due to tab expansion." +msgstr "" +"-E --ignore-tab-expansion éÇÎÏÒÉÒÏ×ÁÔØ ÉÚÍÅÎÅÎÉÑ, ×ÙÚ×ÁÎÎÙÅ ÒÁÓËÒÙÔÉÅÍ " +"ÔÁÂÕÌÑÃÉÉ." + +#: src/diff.c:838 src/sdiff.c:187 +msgid "-b --ignore-space-change Ignore changes in the amount of white space." +msgstr "" +"-b --ignore-space-change éÇÎÏÒÉÒÏ×ÁÔØ ÉÚÍÅÎÅÎÉÑ ÞÉÓÌÁ ÐÒÏÂÅÌØÎÙÈ ÓÉÍ×ÏÌÏ×." + +#: src/diff.c:839 +msgid "-w --ignore-all-space Ignore all white space." +msgstr "-w --ignore-all-space éÇÎÏÒÉÒÏ×ÁÔØ ×ÓÅ ÐÒÏÂÅÌØÎÙÅ ÓÉÍ×ÏÌÙ." + +#: src/diff.c:840 src/sdiff.c:189 +msgid "-B --ignore-blank-lines Ignore changes whose lines are all blank." +msgstr "-B --ignore-blank-lines éÇÎÏÒÉÒÏ×ÁÔØ ÉÚÍÅÎÅÎÉÑ ÞÉÓÌÁ ÐÕÓÔÙÈ ÓÔÒÏË." + +#: src/diff.c:841 src/sdiff.c:190 +msgid "" +"-I RE --ignore-matching-lines=RE Ignore changes whose lines all match RE." +msgstr "" +"-I ò÷ --ignore-matching-lines=ò÷ éÇÎÏÒÉÒÏ×ÁÔØ ÉÚÍÅÎÅÎÉÑ, ÓÔÒÏËÉ ËÏÔÏÒÙÈ\n" +" ÐÏÌÎÏÓÔØÀ ÓÏÏÔ×ÅÔÓÔ×ÕÀÔ ÚÁÄÁÎÎÏÍÕ ÒÅÇÕÌÑÒÎÏÍÕ " +"×ÙÒÁÖÅÎÉÀ" + +#: src/diff.c:842 src/sdiff.c:191 +msgid "--strip-trailing-cr Strip trailing carriage return on input." +msgstr "--strip-trailing-cr õÄÁÌÉÔØ ÎÁ ×Ù×ÏÄÅ ÚÁ×ÅÒÛÁÀÝÉÊ ×ÏÚ×ÒÁÔ ËÁÒÅÔËÉ." + +#: src/diff.c:844 +msgid "--binary Read and write data in binary mode." +msgstr "--binary þÉÔÁÔØ É ÚÁÐÉÓÙ×ÁÔØ ÆÁÊÌÙ × Ä×ÏÉÞÎÏÊ ÆÏÒÍÅ." + +#: src/diff.c:846 src/diff3.c:451 src/sdiff.c:192 +msgid "-a --text Treat all files as text." +msgstr "-a --text óÞÉÔÁÔØ ×ÓÅ ÆÁÊÌÙ ÔÅËÓÔÏ×ÙÍÉ." + +#: src/diff.c:848 +msgid "" +"-c -C NUM --context[=NUM] Output NUM (default 3) lines of copied " +"context.\n" +"-u -U NUM --unified[=NUM] Output NUM (default 3) lines of unified " +"context.\n" +" --label LABEL Use LABEL instead of file name.\n" +" -p --show-c-function Show which C function each change is in.\n" +" -F RE --show-function-line=RE Show the most recent line matching RE." +msgstr "" +"-c -C þéóìï --context[=þéóìï] ëÏÐÉÒÏ×ÁÔØ þéóìï (ÐÏ ÕÍÏÌÞÁÎÉÀ 3) ÓÔÒÏË " +"ËÏÎÔÅËÓÔÁ.\n" +"-u -U þéóìï --unified[=þéóìï] ÷Ù×ÏÄÉÔØ þéóìï (ÐÏ ÕÍÏÌÞÁÎÉÀ 3) ÓÔÒÏË\n" +" ÏÂßÅÄÉÎÅÎÎÏÇÏ ËÏÎÔÅËÓÔÁ.\n" +" -L íåôëá --label íåôëá éÓÐÏÌØÚÏ×ÁÔØ íåôëõ ×ÍÅÓÔÏ ÉÍÅÎÉ ÆÁÊÌÁ.\n" +" -p --show-c-function ðÏËÁÚÙ×ÁÔØ C-ÆÕÎËÃÉÀ, ÓÏÄÅÒÖÁÝÕÀ ÉÚÍÅÎÅÎÉÅ.\n" +" -F ò÷ --show-function-line=ò÷ ðÏËÁÚÙ×ÁÔØ ÐÒÅÄÛÅÓÔ×ÕÀÝÕÀ ÓÔÒÏËÕ, " +"ÓÏ×ÐÁÄÁÀÝÕÀ\n" +" Ó ÚÁÄÁÎÎÙÍ ÒÅÇÕÌÑÒÎÙÍ ×ÙÒÁÖÅÎÉÅÍ." + +#: src/diff.c:853 +msgid "-q --brief Output only whether files differ." +msgstr "-q --brief îÁÐÅÞÁÔÁÔØ ÔÏÌØËÏ ÒÁÚÌÉÞÁÀÔÓÑ ÌÉ ÆÁÊÌÙ." + +#: src/diff.c:854 +msgid "-e --ed Output an ed script." +msgstr "-e --ed ÷Ù×ÏÄÉÔØ ÓÃÅÎÁÒÉÊ ed." + +#: src/diff.c:855 +msgid "--normal Output a normal diff." +msgstr "--normal ÷Ù×ÏÄÉÔØ × ÏÂÙÞÎÏÍ ÆÏÒÍÁÔÅ diff." + +#: src/diff.c:856 +msgid "-n --rcs Output an RCS format diff." +msgstr "-n --rcs ÷Ù×ÏÄÉÔØ × ÆÏÒÍÁÔÅ RCS." + +#: src/diff.c:857 +msgid "" +"-y --side-by-side Output in two columns.\n" +" -W NUM --width=NUM Output at most NUM (default 130) print columns.\n" +" --left-column Output only the left column of common lines.\n" +" --suppress-common-lines Do not output common lines." +msgstr "" +"-y --side-by-side ÷Ù×ÏÄÉÔØ × Ä×Å ËÏÌÏÎËÉ.\n" +" -W þéóìï --width=þéóìï ÷Ù×ÏÄÉÔØ ÍÁËÓÉÍÕÍ ÚÁÄÁÎÎÏÅ þéóìï ÚÎÁËÏ× × " +"ÓÔÒÏËÅ.\n" +" (ÐÏ ÕÍÏÌÞÁÎÉÀ 130)\n" +" --left-column ÷Ù×ÏÄÉÔØ ÔÏÌØËÏ ÌÅ×ÕÀ ËÏÌÏÎËÕ ÏÂÝÉÈ ÓÔÒÏË.\n" +" --suppress-common-lines îÅ ×Ù×ÏÄÉÔØ ÏÂÝÉÅ ÓÔÒÏËÉ." + +#: src/diff.c:861 +msgid "-D NAME --ifdef=NAME Output merged file to show `#ifdef NAME' diffs." +msgstr "" +"-D éíñ --ifdef=éíñ ÷Ù×ÏÄÉÔØ ÚÁÐÌÁÔÙ, ÉÓÐÏÌØÚÕÀÝÉÅ ËÏÎÓÔÒÕËÃÉÀ `#ifdef éíñ'." + +#: src/diff.c:862 +msgid "" +"--GTYPE-group-format=GFMT Similar, but format GTYPE input groups with GFMT." +msgstr "" +"--çôéð-group-format=çæíô áÎÁÌÏÇÉÞÎÏ, ÎÏ ÆÏÒÍÁÔÉÒÏ×ÁÔØ ×ÈÏÄÎÙÅ ÇÒÕÐÐÙ ÔÉÐÁ " +"çôéð\n" +" × ÓÏÏÔ×ÅÔÓÔ×ÉÉ Ó ÆÏÒÍÁÔÏÍ çæíô." + +#: src/diff.c:863 +msgid "--line-format=LFMT Similar, but format all input lines with LFMT." +msgstr "" +"--line-format=óæíô áÎÁÌÏÇÉÞÎÏ, ÎÏ ÆÏÒÍÁÔÉÒÏ×ÁÔØ ×ÓÅ ×ÈÏÄÎÙÅ ÓÔÒÏËÉ Ó óæíô." + +#: src/diff.c:864 +msgid "" +"--LTYPE-line-format=LFMT Similar, but format LTYPE input lines with LFMT." +msgstr "" +"--óôéð-group-format=óæíô áÎÁÌÏÇÉÞÎÏ, ÎÏ ÆÏÒÍÁÔÉÒÏ×ÁÔØ ×ÈÏÄÎÙÅ ÓÔÒÏËÉ ÔÉÐÁ " +"óôéð\n" +" × ÓÏÏÔ×ÅÔÓÔ×ÉÉ Ó ÆÏÒÍÁÔÏÍ óæíô." + +#: src/diff.c:865 +msgid " LTYPE is `old', `new', or `unchanged'. GTYPE is LTYPE or `changed'." +msgstr "" +" óôéð ÍÏÖÅÔ ÂÙÔØ `old', `new', ÉÌÉ `unchanged', çôéð -- ÔÏ ÖÅ É `changed'." + +#: src/diff.c:866 +msgid "" +" GFMT may contain:\n" +" %< lines from FILE1\n" +" %> lines from FILE2\n" +" %= lines common to FILE1 and FILE2\n" +" %[-][WIDTH][.[PREC]]{doxX}LETTER printf-style spec for LETTER\n" +" LETTERs are as follows for new group, lower case for old group:\n" +" F first line number\n" +" L last line number\n" +" N number of lines = L-F+1\n" +" E F-1\n" +" M L+1" +msgstr "" +" çæíô ÍÏÖÅÔ ÓÏÄÅÒÖÁÔØ:\n" +" %< ÓÔÒÏËÉ ÉÚ æáêìá1\n" +" %> ÓÔÒÏËÉ ÉÚ æáêìá2\n" +" %= ÓÔÒÏËÉ, ÏÂÝÉÅ ÄÌÑ æáêìá1 É æáêìá2\n" +" %[-][ûéòéîá][.[ôïþî]]{doxX}âõë÷á ÆÏÒÍÁÔ ÄÌÑ âõë÷ù × ÓÔÉÌÅ printf\n" +" âõë÷á ÐÒÉÎÉÍÁÅÔ ÓÌÅÄÕÀÝÉÅ ÚÎÁÞÅÎÉÑ ÄÌÑ ÎÏ×ÙÈ ÇÒÕÐÐ, ÄÌÑ ÓÔÁÒÙÈ " +"ÓÔÒÏÞÎÙÅ:\n" +" F ÎÏÍÅÒ ÐÅÒ×ÏÊ ÓÔÒÏËÉ\n" +" L ÎÏÍÅÒ ÐÏÓÌÅÄÎÅÊ ÓÔÒÏËÉ\n" +" N ÞÉÓÌÏ ÓÔÒÏË = L-F+1\n" +" E F-1\n" +" M L+1" + +#: src/diff.c:877 +msgid "" +" LFMT may contain:\n" +" %L contents of line\n" +" %l contents of line, excluding any trailing newline\n" +" %[-][WIDTH][.[PREC]]{doxX}n printf-style spec for input line number" +msgstr "" +" óæíô ÍÏÖÅÔ ÓÏÄÅÒÖÁÔØ:\n" +" %L ÓÏÄÅÒÖÉÍÏÅ ÓÔÒÏËÉ\n" +" %l ÓÏÄÅÒÖÉÍÏÅ ÓÔÒÏËÉ, ÉÓËÌÀÞÁÑ ×ÓÅ ÎÏ×ÙÅ ÓÔÒÏËÉ × ËÏÎÃÅ\n" +" %[-][ûéòéîá][.[ôïþî]]{doxX}n ÆÏÒÍÁÔ ÎÏÍÅÒÁ ×ÈÏÄÎÏÊ ÓÔÒÏËÉ × ÓÔÉÌÅ printf" + +#: src/diff.c:881 +msgid "" +" Either GFMT or LFMT may contain:\n" +" %% %\n" +" %c'C' the single character C\n" +" %c'\\OOO' the character with octal code OOO" +msgstr "" +" ïÂÁ çæíô É óæíô ÍÏÇÕÔ ÓÏÄÅÒÖÁÔØ:\n" +" %% %\n" +" %c'ó' ÏÄÉÎ ÓÉÍ×ÏÌ ó\n" +" %c'\\OOO' ÏÄÉÎ ÓÉÍ×ÏÌ Ó ×ÏÓØÍÅÒÉÞÎÙÍ ËÏÄÏÍ OOO" + +#: src/diff.c:886 +msgid "-l --paginate Pass the output through `pr' to paginate it." +msgstr "" +"-l --paginate îÁÐÒÁ×ÉÔØ ×Ù×ÏÄ ÐÒÏÇÒÁÍÍÅ `pr' ÄÌÑ ÒÁÚÂÉÅÎÉÑ ÎÁ ÓÔÒÁÎÉÃÙ." + +#: src/diff.c:887 src/sdiff.c:198 +msgid "-t --expand-tabs Expand tabs to spaces in output." +msgstr "-t --expand-tabs òÁÓËÒÙ×ÁÔØ ÐÒÉ ×Ù×ÏÄÅ ÓÉÍ×ÏÌÙ ÔÁÂÕÌÑÃÉÉ × ÐÒÏÂÅÌÙ." + +#: src/diff.c:888 src/diff3.c:452 +msgid "-T --initial-tab Make tabs line up by prepending a tab." +msgstr "" +"-T --initial-tab ÷ÙÒÁ×ÎÉ×ÁÔØ ÔÁÂÕÌÑÃÉÀ ÄÏÂÁ×ÌÑÑ × ÎÁÞÁÌÏ ÓÉÍ×ÏÌ ÔÁÂÕÌÑÃÉÉ." + +#: src/diff.c:890 +msgid "-r --recursive Recursively compare any subdirectories found." +msgstr "-r --recursive òÅËÕÒÓÉ×ÎÏ ÓÒÁ×ÎÉ×ÁÔØ ÐÏÄËÁÔÁÌÏÇÉ." + +#: src/diff.c:891 +msgid "-N --new-file Treat absent files as empty." +msgstr "-N --new-file ÷ÏÓÐÒÉÎÉÍÁÔØ ÎÅÓÕÝÅÓÔ×ÕÀÝÉÅ ÆÁÊÌÙ ËÁË ÐÕÓÔÙÅ." + +#: src/diff.c:892 +msgid "--unidirectional-new-file Treat absent first files as empty." +msgstr "" +"--unidirectional-new-file ÷ÏÓÐÒÉÎÉÍÁÔØ ÎÅÓÕÝÅÓÔ×ÕÀÝÉÅ ÐÅÒ×ÙÅ ÆÁÊÌÙ ËÁË " +"ÐÕÓÔÙÅ." + +#: src/diff.c:893 +msgid "-s --report-identical-files Report when two files are the same." +msgstr "-s --report-identical-files óÏÏÂÝÁÔØ Ï ÏÄÉÎÁËÏ×ÙÈ ÆÁÊÌÁÈ." + +#: src/diff.c:894 +msgid "-x PAT --exclude=PAT Exclude files that match PAT." +msgstr "" +"-x ïâòáúåã --exclude=ïâòáúåã éÓËÌÀÞÉÔØ ÆÁÊÌÙ, ÞØÉ ÉÍÅÎÁ ÓÏ×ÐÁÄÁÀÔ Ó " +"ïâòáúãïí." + +#: src/diff.c:895 +msgid "" +"-X FILE --exclude-from=FILE Exclude files that match any pattern in FILE." +msgstr "" +"-X æáêì --exclude-from=æáêì éÓËÌÀÞÉÔØ ÆÁÊÌÙ, ÞØÉ ÉÍÅÎÁ ÓÏ×ÐÁÄÁÀÔ Ó ËÁËÉÍ-" +"ÌÉÂÏ\n" +" ÏÂÒÁÚÃÏÍ ÉÚ ÚÁÐÉÓÁÎÎÙÈ × æáêìå." + +#: src/diff.c:896 +msgid "" +"-S FILE --starting-file=FILE Start with FILE when comparing directories." +msgstr "-S æáêì --starting-file=æáêì ðÒÉ ÓÒÁ×ÎÅÎÉÉ ËÁÔÁÌÏÇÏ× ÎÁÞÁÔØ Ó æáêìá." + +#: src/diff.c:897 +msgid "" +"--from-file=FILE1 Compare FILE1 to all operands. FILE1 can be a directory." +msgstr "" +"--from-file=æáêì1 óÒÁ×ÎÉÔØ æáêì1 ÓÏ ×ÓÅÍÉ ÏÐÅÒÁÎÄÁÍÉ.\n" +" æáêì1 ÍÏÖÅÔ ÂÙÔØ ËÁÔÁÌÏÇÏÍ." + +#: src/diff.c:898 +msgid "" +"--to-file=FILE2 Compare all operands to FILE2. FILE2 can be a directory." +msgstr "" +"--to-file=æáêì2 óÒÁ×ÎÉÔØ ×ÓÅ ÏÐÅÒÁÎÄÙ Ó æáêìïí2. æáêì2 ÍÏÖÅÔ ÂÙÔØ " +"ËÁÔÁÌÏÇÏÍ." + +#: src/diff.c:900 +msgid "--horizon-lines=NUM Keep NUM lines of the common prefix and suffix." +msgstr "" +"--horizon-lines=þéóìï ÷Ù×ÏÄÉÔØ þéóìï ÏÂÝÉÈ ÓÔÒÏË ÄÏ É ÐÏÓÌÅ ÒÁÚÌÉÞÁÀÝÉÈÓÑ." + +#: src/diff.c:901 src/sdiff.c:200 +msgid "-d --minimal Try hard to find a smaller set of changes." +msgstr "-d --minimal ðÙÔÁÔØÓÑ ÎÁÊÔÉ ÎÁÉÍÅÎØÛÉÊ ÎÁÂÏÒ ÉÚÍÅÎÅÎÉÊ." + +#: src/diff.c:902 +msgid "" +"--speed-large-files Assume large files and many scattered small changes." +msgstr "" +"--speed-large-files ðÒÅÄÐÏÌÁÇÁÔØ, ÞÔÏ ÆÁÊÌÙ ÂÏÌØÛÉÅ ÓÏ ÍÎÏÇÉÍÉ\n" +" ÒÁÚÂÒÏÓÁÎÎÙÍÉ ÍÅÌËÉÍÉ ÉÚÍÅÎÅÎÉÑÍÉ." + +#: src/diff.c:907 +msgid "" +"FILES are `FILE1 FILE2' or `DIR1 DIR2' or `DIR FILE...' or `FILE... DIR'." +msgstr "" +"æáêìù ÜÔÏ `æáêì1 æáêì2', ÉÌÉ `ëáôáìïç1 ëáôáìïç2', ÉÌÉ `ëáôáìïç æáêì...',\n" +"ÉÌÉ `æáêì... ëáôáìïç'." + +#: src/diff.c:908 +msgid "" +"If --from-file or --to-file is given, there are no restrictions on FILES." +msgstr "åÓÌÉ ÚÁÄÁÎ --from-file ÉÌÉ --to-file, ÎÁ æáêìù ÎÅÔ ÏÇÒÁÎÉÞÅÎÉÊ." + +#: src/diff.c:909 src/diff3.c:474 src/sdiff.c:222 +msgid "If a FILE is `-', read standard input." +msgstr "åÓÌÉ æáêì ÚÁÄÁÎ ËÁË `-', ÞÉÔÁÅÔ ÓÔÁÎÄÁÒÔÎÙÊ ××ÏÄ." + +#: src/diff.c:920 +#, c-format +msgid "Usage: %s [OPTION]... FILES\n" +msgstr "éÓÐÏÌØÚÏ×ÁÎÉÅ: %s [ëìàþ]... æáêìù\n" + +#: src/diff.c:949 +#, c-format +msgid "conflicting %s option value `%s'" +msgstr "ÐÒÏÔÉ×ÏÒÅÞÉ×ÏÅ ÚÎÁÞÅÎÉÅ %s ÄÌÑ ËÌÀÞÁ `%s'" + +#: src/diff.c:962 +msgid "conflicting output style options" +msgstr "ÐÒÏÔÉ×ÏÒÅÞÉ×ÙÅ ËÌÀÞÉ ÚÁÄÁÎÉÑ ÓÔÉÌÑ ×Ù×ÏÄÁ" + +#: src/diff.c:976 +msgid "regular empty file" +msgstr "ÏÂÙÞÎÙÊ ÐÕÓÔÏÊ ÆÁÊÌ" + +#: src/diff.c:976 +msgid "regular file" +msgstr "ÏÂÙÞÎÙÊ ÆÁÊÌ" + +#: src/diff.c:978 +msgid "directory" +msgstr "ËÁÔÁÌÏÇ" + +#: src/diff.c:981 +msgid "block special file" +msgstr "ÓÐÅÃÉÁÌØÎÙÊ ÆÁÊÌ Ó ÐÏÂÌÏÞÎÙÍ ÄÏÓÔÕÐÏÍ" + +#: src/diff.c:984 +msgid "character special file" +msgstr "ÓÐÅÃÉÁÌØÎÙÊ ÆÁÊÌ Ó ÐÏÓÉÍ×ÏÌØÎÙÍ ÄÏÓÔÕÐÏÍ" + +#: src/diff.c:987 +msgid "fifo" +msgstr "ÏÞÅÒÅÄØ" + +#: src/diff.c:991 +msgid "socket" +msgstr "ÓÏËÅÔ" + +#: src/diff.c:994 +msgid "message queue" +msgstr "ÏÞÅÒÅÄØ ÓÏÏÂÝÅÎÉÊ" + +#: src/diff.c:997 +msgid "semaphore" +msgstr "ÓÅÍÁÆÏÒ" + +#: src/diff.c:1000 +msgid "shared memory object" +msgstr "ÒÁÚÄÅÌÑÅÍÙÊ ÏÂßÅËÔ" + +#: src/diff.c:1003 +msgid "typed memory object" +msgstr "" + +#: src/diff.c:1006 +msgid "weird file" +msgstr "ÓÔÒÁÎÎÙÊ ÆÁÊÌ" + +#: src/diff.c:1070 src/diff.c:1256 +#, c-format +msgid "Only in %s: %s\n" +msgstr "ôÏÌØËÏ × %s: %s\n" + +#: src/diff.c:1193 +msgid "cannot compare `-' to a directory" +msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÓÒÁ×ÎÉÔØ `-' Ó ËÁÔÁÌÏÇÏÍ" + +#: src/diff.c:1220 +msgid "-D option not supported with directories" +msgstr "-D option not supported with directories" + +#: src/diff.c:1229 +#, c-format +msgid "Common subdirectories: %s and %s\n" +msgstr "ïÂÝÉÅ ÐÏÄËÁÔÁÌÏÇÉ: %s É %s\n" + +#: src/diff.c:1266 +#, c-format +msgid "File %s is a %s while file %s is a %s\n" +msgstr "æÁÊÌ %s ÜÔÏ %s, ÔÏÇÄÁ ËÁË ÆÁÊÌ %s -- %s\n" + +#: src/diff.c:1345 +#, c-format +msgid "Files %s and %s are identical\n" +msgstr "æÁÊÌÙ %s É %s ÉÄÅÎÔÉÞÎÙ\n" + +#: src/diff3.c:26 +msgid "Written by Randy Smith." +msgstr "á×ÔÏÒ Randy Smith." + +#: src/diff3.c:328 +msgid "incompatible options" +msgstr "ÎÅÓÏ×ÍÅÓÔÉÍÙÅ ËÌÀÞÉ" + +#: src/diff3.c:368 +msgid "`-' specified for more than one input file" +msgstr "`-' ÚÁÄÁÎ ÄÌÑ ÂÏÌÅÅ ÏÄÎÏÇÏ ×ÈÏÄÎÏÇÏ ÆÁÊÌÁ" + +#: src/diff3.c:408 src/diff3.c:1232 src/diff3.c:1645 src/diff3.c:1700 +#: src/sdiff.c:305 src/sdiff.c:879 src/sdiff.c:890 +msgid "read failed" +msgstr "ÞÔÅÎÉÅ ÎÅÕÓÐÅÛÎÏ" + +#: src/diff3.c:441 +msgid "-e --ed Output unmerged changes from OLDFILE to YOURFILE into MYFILE." +msgstr "" +"-e --ed ÷Ù×ÏÄÉÔØ ÎÅ ÏÂßÅÄÉÎÅÎÎÙÅ ÉÚÍÅÎÅÎÉÑ × óôïòïí-æáêìå ÉÚ ÷áûåçï-æáêìá\n" +" × íïê-æáêì." + +#: src/diff3.c:442 +msgid "-E --show-overlap Output unmerged changes, bracketing conflicts." +msgstr "" +"-E --show-overlap ÷Ù×ÏÄÉÔØ ÎÅ ÏÂßÅÄÉÎÅÎÎÙÅ ÉÚÍÅÎÅÎÉÑ,\n" +" ÚÁËÌÀÞÁÑ ËÏÎÆÌÉËÔÎÙÅ ÍÅÓÔÁ × ÓËÏÂËÉ." + +#: src/diff3.c:443 +msgid "-A --show-all Output all changes, bracketing conflicts." +msgstr "" +"-A --show-all ÷Ù×ÏÄÉÔØ ×ÓÅ ÉÚÍÅÎÅÎÉÑ, ÚÁËÌÀÞÁÑ ËÏÎÆÌÉËÔÎÙÅ ÍÅÓÔÁ × ÓËÏÂËÉ." + +#: src/diff3.c:444 +msgid "-x --overlap-only Output overlapping changes." +msgstr "-x --overlap-only ÷Ù×ÏÄÉÔØ ÐÅÒÅËÒÙ×ÁÀÝÉÅÓÑ ÉÚÍÅÎÅÎÉÑ." + +#: src/diff3.c:445 +msgid "-X Output overlapping changes, bracketing them." +msgstr "-X ÷Ù×ÏÄÉÔØ ÐÅÒÅÓÅËÁÀÝÉÅÓÑ ÉÚÍÅÎÅÎÉÑ, ÚÁËÌÀÞÁÑ ÉÈ × ÓËÏÂËÉ." + +#: src/diff3.c:446 +msgid "-3 --easy-only Output unmerged nonoverlapping changes." +msgstr "-3 --easy-only ÷Ù×ÏÄÉÔØ ÎÅ ÏÂßÅÄÉÎÅÎÎÙÅ ÎÅÐÅÒÅÓÅËÁÀÝÉÅÓÑ ÉÚÍÅÎÅÎÉÑ." + +#: src/diff3.c:448 +msgid "-m --merge Output merged file instead of ed script (default -A)." +msgstr "" +"-m --merge ÷Ù×ÏÄÉÔØ ÏÂßÅÄÉÎÅÎÎÙÊ ÆÁÊÌ ×ÍÅÓÔÏ ÓÃÅÎÁÒÉÑ ed (ÐÏ ÕÍÏÌÞÁÎÉÀ -A)." + +#: src/diff3.c:449 +msgid "-L LABEL --label=LABEL Use LABEL instead of file name." +msgstr "-L íåôëá --label=íåôëá éÓÐÏÌØÚÏ×ÁÔØ íåôëõ ×ÍÅÓÔÏ ÉÍÅÎÉ ÆÁÊÌÁ." + +#: src/diff3.c:450 +msgid "-i Append `w' and `q' commands to ed scripts." +msgstr "-i äÏÂÁ×ÉÔØ ËÏÍÁÎÄÙ `w' É `q' × ËÏÎÅà ÓÃÅÎÁÒÉÑ ed." + +#: src/diff3.c:453 src/sdiff.c:202 +msgid "--diff-program=PROGRAM Use PROGRAM to compare files." +msgstr "" +"--diff-program=ðòïçòáííá éÓÐÏÌØÚÏ×ÁÔØ ÄÌÑ ÓÒÁ×ÎÉÑ ÆÁÊÌÏ× ÕËÁÚÁÎÎÕÀ " +"ðòïçòáííõ." + +#: src/diff3.c:465 +#, c-format +msgid "Usage: %s [OPTION]... MYFILE OLDFILE YOURFILE\n" +msgstr "éÓÐÏÌØÚÏ×ÁÎÉÅ: %s [ëìàþ]... íïê-æáêì óôáòùê-æáêì ÷áû-æáêì\n" + +#: src/diff3.c:467 +msgid "Compare three files line by line." +msgstr "ðÏÓÔÒÏÞÎÏ ÓÒÁ×ÎÉ×ÁÅÔ ÔÒÉ ÆÁÊÌÁ." + +#: src/diff3.c:673 +msgid "internal error: screwup in format of diff blocks" +msgstr "×ÎÕÔÒÅÎÎÑÑ ÏÛÉÂËÁ: ÐÏ×ÒÅÖÄÅÎÎÙÊ ÆÏÒÍÁÔ ÂÌÏËÏ× ÚÁÐÌÁÔÙ" + +#: src/diff3.c:971 +#, c-format +msgid "%s: diff failed: " +msgstr "%s: ÐÏÉÓË ÒÁÚÌÉÞÉÊ ÎÅÕÓÐÅÛÅÎ: " + +#: src/diff3.c:993 +msgid "internal error: invalid diff type in process_diff" +msgstr "×ÎÕÔÒÅÎÎÑÑ ÏÛÉÂËÁ: ÎÅ×ÅÒÎÙÊ ÔÉÐ ÚÁÐÌÁÔÙ × ÆÕÎËÃÉÉ `process_diff'" + +#: src/diff3.c:1018 +msgid "invalid diff format; invalid change separator" +msgstr "ÎÅ×ÅÒÎÙÊ ÆÏÒÍÁÔ ÚÁÐÌÁÔÙ; ÎÅ×ÅÒÎÙÊ ÒÁÚÄÅÌÉÔÅÌØ ÉÚÍÅÎÅÎÉÑ" + +#: src/diff3.c:1242 +msgid "invalid diff format; incomplete last line" +msgstr "ÎÅ×ÅÒÎÙÊ ÆÏÒÍÁÔ ÚÁÐÌÁÔÙ; ÎÅÐÏÌÎÁÑ ÐÏÓÌÅÄÎÑÑ ÓÔÒÏËÁ" + +#: src/diff3.c:1265 src/sdiff.c:273 +#, c-format +msgid "subsidiary program `%s' not executable" +msgstr "ÎÅ×ÏÚÍÏÖÎÏ ×ÙÐÏÌÎÉÔØ ×ÓÐÏÍÏÇÁÔÅÌØÎÕÀ ÐÒÏÇÒÁÍÍÁ `%s'" + +#: src/diff3.c:1268 src/sdiff.c:276 src/util.c:298 +#, c-format +msgid "subsidiary program `%s' not found" +msgstr "ÎÅ ÎÁÊÄÅÎÁ ×ÓÐÏÍÏÇÁÔÅÌØÎÁÑ ÐÒÏÇÒÁÍÍÁ `%s'" + +#: src/diff3.c:1272 src/sdiff.c:268 src/util.c:301 +#, c-format +msgid "subsidiary program `%s' failed" +msgstr "ÄÏÞÅÒÎÑÑ ÐÒÏÇÒÁÍÍÁ `%s' ÚÁ×ÅÒÛÉÌÁÓØ ÎÅÕÓÐÅÛÎÏ" + +#: src/diff3.c:1294 +msgid "invalid diff format; incorrect leading line chars" +msgstr "ÎÅ×ÅÒÎÙÊ ÆÏÒÍÁÔ ÚÁÐÌÁÔÙ; ÎÅÐÒÁ×ÌØÎÙÅ ÐÅÒ×ÙÅ ÓÉÍ×ÏÌÙ ÓÔÒÏËÉ" + +#: src/diff3.c:1370 +msgid "internal error: invalid diff type passed to output" +msgstr "×ÎÕÔÒÅÎÎÑÑ ÏÛÉÂËÁ: ÎÁ ×ÙÈÏÄ ÐÅÒÅÄÁÎ ÎÅ×ÅÒÎÙÊ ÔÉÐ ÚÁÐÌÁÔÙ" + +#: src/diff3.c:1647 src/diff3.c:1704 +msgid "input file shrank" +msgstr "×ÈÏÄÎÏÊ ÆÁÊÌ ÕÍÅÎØÛÉÌÓÑ" + +#: src/dir.c:162 +#, c-format +msgid "cannot compare file names `%s' and `%s'" +msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÓÒÁ×ÎÉÔØ ÉÍÅÎÁ ÆÁÊÌÏ× `%s' É `%s'" + +#: src/sdiff.c:35 +msgid "Written by Thomas Lord." +msgstr "á×ÔÏÒ ôÏÍÁÓ ìÏÒÄ." + +#: src/sdiff.c:183 +msgid "-o FILE --output=FILE Operate interactively, sending output to FILE." +msgstr "-o æáêì --output=æáêì òÁÂÏÔÁÔØ ÉÎÔÅÒÁËÔÉ×ÎÏ, ÚÁÐÉÓÙ×ÁÑ ×Ù×ÏÄ × æáêì." + +#: src/sdiff.c:185 +msgid "-i --ignore-case Consider upper- and lower-case to be the same." +msgstr "-i --ignore-case éÇÎÏÒÉÒÏ×ÁÔØ ÒÅÇÉÓÔÒ ÂÕË×." + +#: src/sdiff.c:188 +msgid "-W --ignore-all-space Ignore all white space." +msgstr "-W --ignore-all-space éÇÎÏÒÉÒÏ×ÁÔØ ×ÓÅ ÐÒÏÂÅÌØÎÙÅ ÓÉÍ×ÏÌÙ." + +#: src/sdiff.c:194 +msgid "-w NUM --width=NUM Output at most NUM (default 130) columns per line." +msgstr "" +"-w þéóìï --width=þéóìï ÷Ù×ÏÄÉÔØ ÍÁËÓÉÍÕÍ ÚÁÄÁÎÎÏÅ þéóìï ÚÎÁËÏ× × ÓÔÒÏËÅ.\n" +" (ÐÏ ÕÍÏÌÞÁÎÉÀ 130)" + +#: src/sdiff.c:195 +msgid "-l --left-column Output only the left column of common lines." +msgstr "-l --left-column ÷Ù×ÏÄÉÔØ ÔÏÌØËÏ ÌÅ×ÕÀ ËÏÌÏÎËÕ ÏÂÝÉÈ ÓÔÒÏË." + +#: src/sdiff.c:196 +msgid "-s --suppress-common-lines Do not output common lines." +msgstr "-s --suppress-common-lines îÅ ×Ù×ÏÄÉÔØ ÏÂÝÉÅ ÓÔÒÏËÉ." + +#: src/sdiff.c:201 +msgid "" +"-H --speed-large-files Assume large files and many scattered small changes." +msgstr "" +"-H --speed-large-files ðÒÅÄÐÏÌÁÇÁÔØ, ÞÔÏ ÆÁÊÌÙ ÂÏÌØÛÉÅ ÓÏ ÍÎÏÇÉÍÉ\n" +" ÒÁÚÂÒÏÓÁÎÎÙÍÉ ÍÅÌËÉÍÉ ÉÚÍÅÎÅÎÉÑÍÉ." + +#: src/sdiff.c:214 +#, c-format +msgid "Usage: %s [OPTION]... FILE1 FILE2\n" +msgstr "éÓÐÏÌØÚÏ×ÁÎÉÅ: %s [ëìàþ]... æáêì1 æáêì2\n" + +#: src/sdiff.c:215 +msgid "Side-by-side merge of file differences." +msgstr "éÎÔÅÒÁËÔÉ×ÎÏ ÓÌÉ×ÁÅÔ ÒÁÚÌÉÞÉÑ ÆÁÊÌÏ×." + +#: src/sdiff.c:327 +msgid "cannot interactively merge standard input" +msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÉÎÔÅÒÁËÔÉ×ÎÏ ÓÌÉ×ÁÔØ ÓÔÁÎÄÁÒÔÎÙÊ ××ÏÄ" + +#: src/sdiff.c:588 +msgid "both files to be compared are directories" +msgstr "ÏÂÁ ÓÒÁ×ÎÉ×ÁÅÍÙÈ ÆÁÊÌÁ -- ËÁÔÁÌÏÇÉ" + +#: src/sdiff.c:853 +msgid "" +"ed:\tEdit then use both versions, each decorated with a header.\n" +"eb:\tEdit then use both versions.\n" +"el:\tEdit then use the left version.\n" +"er:\tEdit then use the right version.\n" +"e:\tEdit a new version.\n" +"l:\tUse the left version.\n" +"r:\tUse the right version.\n" +"s:\tSilently include common lines.\n" +"v:\tVerbosely include common lines.\n" +"q:\tQuit.\n" +msgstr "" +"ed:\tòÅÄÁËÔÉÒÏ×ÁÔØ É ÉÓÐÏÌØÚÏ×ÁÔØ ÏÂÅ ×ÅÒÓÉÉ, ×ËÌÀÞÉ× × ËÁÖÄÕÀ ÚÁÇÏÌÏ×ÏË.\n" +"eb:\tòÅÄÁËÔÉÒÏ×ÁÔØ É ÉÓÐÏÌØÚÏ×ÁÔØ ÏÂÅ ×ÅÒÓÉÉ.\n" +"el:\tòÅÄÁËÔÉÒÏ×ÁÔØ É ÉÓÐÏÌØÚÏ×ÁÔØ ÌÅ×ÕÀ ×ÅÒÓÉÀ.\n" +"er:\tòÅÄÁËÔÉÒÏ×ÁÔØ É ÉÓÐÏÌØÚÏ×ÁÔØ ÐÒÁ×ÕÀ ×ÅÒÓÉÀ.\n" +"e:\téÓÐÏÌØÚÏ×ÁÔØ ÎÏ×ÕÀ ×ÅÒÓÉÀ.\n" +"l:\téÓÐÏÌØÚÏ×ÁÔØ ÐÒÁ×ÕÀ ×ÅÒÓÉÀ.\n" +"r:\téÓÐÏÌØÚÏ×ÁÔØ ÐÒÁ×ÕÀ ×ÅÒÓÉÀ.\n" +"s:\t÷ËÌÀÞÁÔØ ÏÂÝÉÅ ÓÔÒÏËÉ, ÎÅ ×ÙÄÁ×ÁÑ ÓÏÏÂÝÅÎÉÑ.\n" +"v:\t÷ËÌÀÞÁÔØ ÏÂÝÉÅ ÓÔÒÏËÉ, ×ÙÄÁ×ÁÑ ÓÏÏÂÝÅÎÉÅ.\n" +"q:\t÷ÙÊÔÉ.\n" diff --git a/src/apps/bin/diffutils-2.8.1/po/sv.gmo b/src/apps/bin/diffutils-2.8.1/po/sv.gmo new file mode 100644 index 0000000000000000000000000000000000000000..e17c11372b26cdd6b664f6c6aa6b3472817b699a GIT binary patch literal 22549 zcmb`P3veCRdEZx!omh|^+j?1+BI^hi2vNdb0-z*PpkNUsKoBB8Kp;q(p_p)S@8V*K zdv~vP_X31fH<8_>aURaYao$axw6T*WcH$&%lXekC|oMq`A0uO`NS*J_jck)jCNB;x(9{zg- zq}+QZz$x%U;0vJ8x5AX~0vZ2f^daMTEC->_V?PB_?lEa+h9#jbnTM%?L!gWUdK;N9 zV|@H;K-znpIe6~_w;lc(NWYK&G01!e8Jl+$Ou_epp9Gob;BSJAbMVjX`+Mojdxj!X z?mvRkA7gmpqu}GifV;q61z zk#dJ#23gZXH$mj#(D#D0f9MxL>K*#WAap^lzP7o4)fo?06z=sZ?R!7qV~$%D6_`dSeB zKSduNc~7xcGM=Ya97=!kF7tRRDEu%8{xJ9q_;*0sdg}K<*6V4?co)DEAai+I<}E1n z9s@rQQvc~MgYfl;jOQs(_?q#Itb_31$ZH_$GV(JZ;~)7)?z{8@U40oZbnu1G40zIE z0Fvi_2)rBo3HW#l{3P$RU-?hqo4~Jt^nC=7`5k!xWPC^H%Y*huu7I?COCOz zAA@$1Keht$ZEO{!{#Xn`)3Mh<<}>zDka3Uw2*}!veH#3F@K-_TG4>BY_+;$2!9(C5 zf{!yLp%>#GKLOqcUIqui4UqQ7(Fb=i-|-LgzJ*B9-dzbxJi_~rBbw0BJL`GR9S6^W zG9GySxi5m$d+xu2tn)GYmVS;s2h!)UWsq?kYk-e}A9L@Ybtv?N=EwdIXb@?kKj}Dq zdC>NF%i%}BGrS93PlI0qk)P*%5Z-xS`hkwme;;@r{97RFHSuO}0c5SD-UM?KeKPTP z!8!2HK-S^JG&lv;ZT^X$1DWRu;g?gWu4lj(_)qFHju(X9u(%pnONp7k?gnCn$6l{Gvl?pRq1}85{z?0z&(x$3fE474Rtd z8VC)Rei3BcFaHIH&`j3%W!6U4`(@!v=KS*agO7oq2kHN1=|}Q^AA~;3j8W*md=g}w z%OXe2fB9qJ*Molpr2g`+fCl_+kUGo%9sD{(h&kN#?I1J~y|?lS@J*nUm-k-->38Ly zfb_faZ@^*Cy9lj>pDvDqkAO12CqP*T+Q0Z?AmuOqZIC%#+yRex-X-QN{Bda(r2R`m z-+Mr*_g3(Akg;6)C^!iItV8L4fcO6fvSye56l8vvN%H+NJSp?J%$Q{Umt|a%Kjre5 zK>E3S6+~BFt~+GzLZ8b&1HxaIh41eJe;1VUe+a^Vm;X0-7bzuek%X@DdzvJ)lV5{G zUGHm1&_w)hkty$+NgpK1@0Umy^vVA77lBtvpCzr6zLf+Wyw^zbJ5Rbo`UpvAD)g(6 z7D$_ACF^mmhgpCbv6!=s|t^!GUbe#|}pfWvP1HeQ}` zA1;AEO8PMAdr3b{`U%o^le&Mu%*$occe#&K;Fx=!2jM-@vm%rFdxd|62jn+R68@`_ zmPxZD`F+ZQ=u_|KNbrgNevp4ZM5@_W{r6t?{EgsZ*LQh*k@O3DzWp`c-%na09VMM3 z{XFS9=~qb!X^!+!(qAFT?;cW<^tJNB@6)7jAw5BQi6p-b3*PJCTSz0Mkn|=Ja^n3> z(l$wcpCi4Q^jAqAAa(z~$-Vq6_`{@6kiL&JNRpp#L1bC8D6J=>d}beuQ*_^dRX5 z=^dovcZ!Ga)E8rBqI^9}&FqPkyK0Ryp>b+bJ{pvlz3%vanTj(^ubjPhwQ_Z7dFJ%BYp>Ok zoA3YN{LISA%(5}9G>Y>zKg+k7T-FM!W=-g#x!RR+FPRC_&;*PzX*7~8!PLazmZ_&n zyES6?22rX(7HUq?sM#D#QX%UZW7eWH%XO|MZZ}uM)OA58Oei=Y@4RuPO|s?)HEHJk zGf!J8N!v3t?{{7oXz=MVkAM3wFulo&hjE@2ZCbiE_GgTk@Mg8quCe}5ciZG?5V2Zy znY^r;t#}}zl$q<$Z+OI9rw;&1UvI}SS6mNk!xi|bC}%53 zewj-%7dE1nGOeZeg>!RDV`g{6R2@6tTLYp&d&@ik`82u788ettlNm_XXFZ;e3s@k$qycsm2TAv(O z_WDqDC>u7lB+TOB+yug!ObuSGx0@`lZKfSEG76Y3mFoipH-?LuvSGJ4&I` zfo=HypQA(nGPA$q;knWWjdYq)tpK1AV&$IuqS2HBQdEg@ zXR9ak?WnRnYZoU6jpB3?XHl)N7`Ghj0V zOe}^uY_@XYtE0yFei&rieiAnj9LHeoxEVr@8sv+U%`j~Qt(Gi$XZ}-CFM05 zuZu>g0GywVFxPrXyw-@Sxlrzu)O7r|+6dwe%ekgxHcMl(wVoh}mV?!updT$y8`I|e z)B<*#hSqA~+N6DRgLgw$21UqZkmmY(wV+l*$HEOVl<7jB$4PFocB_@7Ig?iHR7hVG zW}a`mvNDnftA2R16~L3M=-yG++Mz5Qg>VI2A$rmVlw6LSCCN%sJK7#dx3fy||6lw& zXO_Dsg$A##vrA$tJ2KMmnsJ`Ec&*aRWGQ1R3hX-Dr}{Et|BC|$2YrjqDJAK9&OdNn)JIOtweE@M+l58 zm01WjST|(FIxOuL9t{3&*a~Co%tRc9DDqlyu?J|h2YN@Ic9ixPztw08whc|Om=mN%9 zssPEL5R)&(QAh1tMl2`g_)^*xD-tx5Hu{8>?47B$qdNrOdXHvFwhPW96eXaa>9IXw=dqI4iob={mc<>xTq-H{gy9>o=D;fxbS zRS!j36~sxALv2bZ-%Qx^;1Y;B7qw{DUMQyKWn0l)*?1~fi+=R z(Ja*EbL+~2z`(E@^_>F6%W5TOuE;?!xqIT(qcas zipQRNNC%cCPOC182hL34Rvr-G&9JdOf|yv5n zOC5^i7&4=<+DNAX%hnJp>f^vIpq;4Pz@BH!PNYWcd|A-R?dKIySHV@F31J2A@)yrIgL zes4;@&W!iE%YAISmS37u7Il_YA6!6YJyta1UY%nW#lu^d!pJrXg&@rY_6IZdKOXIE~mAr70U z!b+K!ucu+*E2+KQU!vrBRdwVGRy;9S7xWDCx;&1lLp46EXKT}Q%VUOrIla~{FbUb(ZB z9_#3vctm7bPGd=Ng8v{JSM^dvN9fouR6JS=^jYd%_jM}GD3gQi5$fQ&qgLXYI26vf z?X7W8F?TAr%3hF$I2;rM?ajH*I3ezcyvmVoX5>Jjlga6Ep#D@@tSe8CWW^7C<+WEn zSbj%KRYP^z)3DxVQ!m>v(OhiS%0e8tuq{WwcfRZ|ybv}yd!hPz&}R2i^Uf#M#LsE?!DQ{P#91;~MExXL(;Us7@TCsO~xS zz1ps;I(>l$zaF>!b{;jdlRQqGGdlS%*=@S#u0PHj(ALqSl3CISB7aX0)*UZ)76N``870E z-&zEV+TH5Yx+89Zx_v~-wX67wnYSXxY3>|QOmgT>rp_;#%TvqCQ|DK%AVqBI83CIn zF~FFGX2j8u60i|$RR*pkZP;U*Wv@jdVjO_VksI3;cL3MvV*tyJS&`=OIGW`F-R${` zW;Tp*LKAQJp2UWz?dmBWW%6~ig*;IzR=G{%X0hSHO!Rmq4v z)y(O|r7LsiXDi-HaUUV#m?3fNeA+hGQ91UAaadPlZ$}mHV!RP2Td3r1M4@TIG)+=I z>h6;co)p#i%9CAR4(pf0U0<%sm#g2@_2regJOaH?V6AD@nR~BjG%87B$v@l~hh__X|PwTo`{KLI|$=LtG0L2V5{;vYI80 zFb_|dguYCa->yg-j-rLCkwz#u+&S6qa0mwwa;hmjDW}rHaNcSoLDB0mI9zN$$-%fh zsg^?dAYx*?894mh<@0(RaEd$W@)>~cRJu;W_m(Jm9HS+dC!$p3p(xkm(i^J^dJUOZ znwH){SDUQ~GqZR`6qKlHHj;XRDJl|aakoUOR9%l<1*|)Z$&`yyTQuuwK|Rqjry#+$ z$2Hg8Gc{HR0gjCa2Emz~_Ms_Ujq%z5 z-Iwgn^uQvoPTc)+n~m&%hki~2D65w$c4gM0wZw~J<*Gbd?OKu!-*QTfG;L4}CCV|n z)o>GVHcO0Li^pa1?UwMmmRphgSFhPA?gSiaa-g_D+Wiz7#xc2{PYEA3IG zDWifN1=~)&nC)V_PL|sdxw8ekSGNQx%DA&O);q2vk}4=go_1$@KfyqRSfVUC7wzRB z_LWR=xj2!62Sqs4(-xuX40}%vI~R(G6PAUjf`D7Dvi)^?pVfDiR&I3Q&Asj!W?PJj zd9@w3L(e&{B_{-HEUcZf6G+3Mhv*A-*rJEJ8N_pkBVuEFuLk&FFW)#_@Cui~T0`}c z?OnB3`f+m2VzprLNmXKo-`8TIp_f4^n8VE`S-k-*y$l^10=YQNvbkL2R7_s22kzL2 z?GYQrNG?2!kqBkneYtl~woE9z$sq*Wa1{3Kis>1IC+?=+hN-r-=c9#E6Oq_E`mHd+ z^yxh9^{XSwQkux@{JENsJc~naFZk76HRF|Im9f!*rNtHhv|L<~?N6iRCd~Ng=(s=n zj6eFU8GB}8Y}6k;J}L$MWjt+Zrl;Ide{9^09h(?E`t&IN>cBjaB0hdkjJpGyO_!j|}T>*j@Q^JF7Z$9iC4 zZegY~m9fg`00)}l9{MYgWdi5!W`3mA2%`9eocg95yiP`0;vYZ$?DGVml!aw*Y>fOF z#7<;r!W>_X2uCpH)GpdkZ`MQN9#XR`Au1aTKZ@gUeV6Ug0Z~Xbj*D;{gJv^e7}brK z_kBS~?z?!1$p)UvMpEmJJ?hsF(MPG+8qR!ob@SK>KI;A6i9M=^1XtLR*dmemcVh%R zt;<7K@X@K|nd#}h!AGYS&s|uVx>QESG$QL>RLt6~)VN%YtASin_6wJYRoY?S7dN6h zUdgS-4de!YnBrWM)KiYKMvRV1ztx3E4g0+}0O=M1NP*0kZ3lO_t`m(v%JA{~WpSew z5FOTVRJzm9qXXBKOEvm0R$E6f#93|EH)MIE(bl8IU^8nV)iT+5nu*`EJv+n zL|4>M_s0@7itU{7m*Bx=;)jHugM=9kj+j9V{-Ck!I9LW64OVQRkrdPlu7K6@wZRGv zolRP;z}!Ne8Af<^aS4~5MG-=ZS%axNjNuB5_bE`u8f6<%<3>-g5yQqglK>XL9F#9( zJSf&k%tm9ox&e=~N2eh|e%MVnc4d5Pji6o+*eR7UM@c zipMMyD&en5sA;agT6F&=+4U>IIMmn>Y>iY z4))d2#uCECSoLJ+sEeqgenCakQJ#!oA`ABjeXT)7LQ#=s7)o?l5lDP*~sX zcZZ9qgy^@J2S*mIK!BY%+s3Oy$VFq^ejr77(FJ7(_PkK{4kC=O2z7RYY})MdTOu`g z(Ya|8) zB8!CaIwUBz1XSJ=WK`DG$&@tH$uxs>BNQ5%RKgQBbT__%&rdUN5OKt+blQq^3nmO6 z#;X!iq9I3W>a{J6JUTCvDkG10D@Ue&j<}k2(N)p-RLX$(T4k5cao9L7r5vi*_hhs(FjRFm8mb z>qnDaAxkB_b&y?}<&EN&x=l-mnIr3%v&vSY>1=<wSJ)Eo zge{fzB>PEg5j1egGUkR{1Bi2)G`W+D;psAR$+cHTF5OXk-CCyHm7weU{kpm=C7~l4 zcOnV&a6puk`VpH^1I{t0CHiSYZ|e}r8>K>L`Qw-i&?3}HCA?p#6B*7g;hG_g*|rlo z3#0MY#W5<|y`fH1>1v1!tnZ?&3vY`cJU&sEfT$X$JI$TAuIjL42v(F}3>)`UE}!_; z#0R_Ml)gorQtY-F>cq@WEi6pUi$JI=F+F!)o+GoM4>Ywu{Hf${wnSMVmQ$Q3b*j)Z zOq#u}*w8*T`+85NXS=Sqd8iRraoX({_{1u##_c zC$;X5Ri3IJ)Pa$5w9*{|RkqPBu<91{n4AvzJGx_UG*qXlE@#3J8Ra%P^vsRW@)you zkd>3MWRvdI?HJZ?)ghw&=EkZaO;X;TD9RRtKOVpc+IthEd6RoC(cInSqZGY$M?sZ? z;~HC5YQ3GdxeY74U8h6&vpCsz(he6l@APn!uv#&#J(bK`R1-OR%}C@>}lTzM7R_qKvA(3=);P+47^VS z)Lwh8T&ZRWr6)A%4TG|3)*hJ>kx}0NQt-C1Q2h=3mhR&im<@+g15_@cWfHYwgh2^W zl)%`|dYB#7qeKWSJ8r~{{`LnEEmj;Zi%PdO)#85s8`T9B>VI z^VkW~D?oauZp#gLPQH#)6BfPGP;rbx`wFK z&gVT9y#?un&4?75LsQ^($={Q>XFZEH5*@)>mSxmeJ76TnT-(4#=^6fs%y|?%$4Z<0k4_h#dAI`x41)@uLR5N z_DlQfCN40W7Y+IqzyFk;6Y2?2aWTGTX;aFb$U5^}Z7-99mWYywzTw@`%a zNEM-@=zGEpLjJ717K#>OLG97jdV7<2CH{;{BCqbW6&r?iaOuLGEV`BEiJv;S0!}+) z?=Id|nld}kK+}9*wT5~ZM%^YHL7Kv`!zu%EStxg#srI<#P zSu9~W`?f~|1Z_E;xi4-@*H`1V5=2NfIh#rBL7kOTju+NUw+XKac}EYUG0~OW);cFj zVvc;GQ*e7Q346n}4l2yPQI891y^V6}z}}Tg`oB7$No`$&v%JD-LZ^$-%&g((-WO@; z%IiH#=~Jk4HkdW^u&TEO?Xif@O4i!AWI1P9+&!0}2%YYF3PTnVI6PTBm9|o+K2%UU zph`hRcUVUFnwTI7(kgP~jxZzGW&cpEl-c=n_*VLb=o5FxxN*y~w?@USrQz?|&}Vkh z?INSKILHwmV)u_<(vkJR!^PN))E{R?#eIqO(WoX0qKM2A>xmn#9!mGkJ|Rub;@(cQ zrMtqDM~TdW%$|%j*YQhC)<*8(By$P(qz%nF>_JN+s9P|&JX$9o?^icrg%2VV;sCM} zQP3w_H+>toQn_pDldb2N#3HET^pFM9#5Lk%Gbi{s&kK=&(dAE>gxs0$28{MY8S4M2 M!OP^naz7dVFQKGDt^fc4 literal 0 HcmV?d00001 diff --git a/src/apps/bin/diffutils-2.8.1/po/sv.po b/src/apps/bin/diffutils-2.8.1/po/sv.po new file mode 100644 index 0000000000..6d62ce2af7 --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/po/sv.po @@ -0,0 +1,921 @@ +# Swedish messages for diffutils. +# Copyright © 1996, 2001, 2002 Free Software Foundation, Inc. +# Göran Uddeborg , 1996, 2001, 2002. +# $Revision: 1.1 $ +# +msgid "" +msgstr "" +"Project-Id-Version: diffutils 2.7.10\n" +"POT-Creation-Date: 2002-04-05 14:10-0800\n" +"PO-Revision-Date: 2002-03-12 17:03+0100\n" +"Last-Translator: Göran Uddeborg \n" +"Language-Team: Swedish \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=iso-8859-1\n" +"Content-Transfer-Encoding: 8bit\n" + +#: lib/c-stack.c:188 +msgid "program error" +msgstr "programfel" + +#: lib/c-stack.c:189 +msgid "stack overflow" +msgstr "stackspill" + +#: lib/error.c:128 lib/error.c:156 +msgid "Unknown system error" +msgstr "Okänt systemfel" + +#: lib/freesoft.c:27 +msgid "" +"This program comes with NO WARRANTY, to the extent permitted by law.\n" +"You may redistribute copies of this program\n" +"under the terms of the GNU General Public License.\n" +"For more information about these matters, see the file named COPYING." +msgstr "" +"Detta program kommer UTAN GARANTI, så långt lagen tillåter. Du kan\n" +"distribuera kopior av detta program i enlighet med villkoren i GNU\n" +"General Public License. För mer information om detta, se filen som\n" +"heter COPYING." + +#: lib/getopt.c:693 +#, c-format +msgid "%s: option `%s' is ambiguous\n" +msgstr "%s: flaggan \"%s\" är tvetydig\n" + +#: lib/getopt.c:718 +#, c-format +msgid "%s: option `--%s' doesn't allow an argument\n" +msgstr "%s: flaggan \"--%s\" tar inget argument\n" + +#: lib/getopt.c:723 +#, 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:741 lib/getopt.c:914 +#, c-format +msgid "%s: option `%s' requires an argument\n" +msgstr "%s: flaggan \"%s\" behöver ett argument\n" + +#: lib/getopt.c:770 +#, c-format +msgid "%s: unrecognized option `--%s'\n" +msgstr "%s: okänd flagga \"--%s\"\n" + +#: lib/getopt.c:774 +#, c-format +msgid "%s: unrecognized option `%c%s'\n" +msgstr "%s: okänd flagga \"%c%s\"\n" + +#: lib/getopt.c:800 +#, c-format +msgid "%s: illegal option -- %c\n" +msgstr "%s: otillåten flagga -- %c\n" + +#: lib/getopt.c:803 +#, c-format +msgid "%s: invalid option -- %c\n" +msgstr "%s: ogiltig flagga -- %c\n" + +#: lib/getopt.c:833 lib/getopt.c:963 +#, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "%s: flaggan behöver ett argument -- %c\n" + +#: lib/getopt.c:880 +#, c-format +msgid "%s: option `-W %s' is ambiguous\n" +msgstr "%s: flaggan \"-W %s\" är tvetydig\n" + +#: lib/getopt.c:898 +#, c-format +msgid "%s: option `-W %s' doesn't allow an argument\n" +msgstr "%s: flaggan \"-W %s\" tar inget argument\n" + +#: lib/regex.c:1367 +msgid "Success" +msgstr "Lyckades" + +#: lib/regex.c:1370 +msgid "No match" +msgstr "Ingen match" + +#: lib/regex.c:1373 +msgid "Invalid regular expression" +msgstr "Ogiltigt reguljäruttryck" + +#: lib/regex.c:1376 +msgid "Invalid collation character" +msgstr "Ogiltigt sorteringstecken" + +#: lib/regex.c:1379 +msgid "Invalid character class name" +msgstr "Ogiltigt namn på teckenklass" + +#: lib/regex.c:1382 +msgid "Trailing backslash" +msgstr "Avslutande omvänt snedstreck" + +#: lib/regex.c:1385 +msgid "Invalid back reference" +msgstr "Ogiltig bakåtreferens" + +#: lib/regex.c:1388 +msgid "Unmatched [ or [^" +msgstr "Oparad [ eller [^" + +#: lib/regex.c:1391 +msgid "Unmatched ( or \\(" +msgstr "Oparad ( eller \\(" + +#: lib/regex.c:1394 +msgid "Unmatched \\{" +msgstr "Oparad \\{" + +#: lib/regex.c:1397 +msgid "Invalid content of \\{\\}" +msgstr "Ogiltigt innehåll i \\{\\}" + +#: lib/regex.c:1400 +msgid "Invalid range end" +msgstr "Ogiltigt intervallslut" + +#: lib/regex.c:1403 +msgid "Memory exhausted" +msgstr "Minnet slut" + +#: lib/regex.c:1406 +msgid "Invalid preceding regular expression" +msgstr "Föregående reguljäruttryck ogiltigt" + +#: lib/regex.c:1409 +msgid "Premature end of regular expression" +msgstr "Förtida slut på reguljäruttryck" + +#: lib/regex.c:1412 +msgid "Regular expression too big" +msgstr "För stort reguljäruttryck" + +#: lib/regex.c:1415 +msgid "Unmatched ) or \\)" +msgstr "Oparad ) eller \\)" + +#: lib/regex.c:8034 +msgid "No previous regular expression" +msgstr "Inget föregående reguljäruttryck" + +#: lib/xmalloc.c:63 +msgid "memory exhausted" +msgstr "minnet slut" + +#: src/analyze.c:809 src/diff.c:1283 +#, c-format +msgid "Files %s and %s differ\n" +msgstr "Filerna %s och %s skiljer\n" + +#: src/analyze.c:812 +#, c-format +msgid "Binary files %s and %s differ\n" +msgstr "Binärfilerna %s och %s skiljer\n" + +#: src/analyze.c:1058 src/diff3.c:1413 src/util.c:526 +msgid "No newline at end of file" +msgstr "Ingen nyrad vid filslut" + +#: src/cmp.c:43 +msgid "Written by Torbjorn Granlund and David MacKenzie." +msgstr "Skrivet av Torbjörn Granlund och David MacKenzie." + +#: src/cmp.c:118 src/diff.c:817 src/diff3.c:427 src/sdiff.c:168 +#, c-format +msgid "Try `%s --help' for more information." +msgstr "Försök med \"%s --help\" för mer information." + +#: src/cmp.c:137 +#, c-format +msgid "invalid --ignore-initial value `%s'" +msgstr "ogiltigt --ignore-initial-värde \"%s\"" + +#: src/cmp.c:146 +msgid "options -l and -s are incompatible" +msgstr "flaggorna -l och -s är motstridiga" + +#: src/cmp.c:154 src/diff.c:826 src/diff3.c:435 src/sdiff.c:177 +#: src/sdiff.c:313 src/sdiff.c:320 src/sdiff.c:910 src/util.c:194 +#: src/util.c:286 src/util.c:293 +msgid "write failed" +msgstr "skrivning misslyckades" + +#: src/cmp.c:156 src/diff.c:828 src/diff.c:1354 src/diff3.c:437 +#: src/sdiff.c:179 +msgid "standard output" +msgstr "standard ut" + +#: src/cmp.c:160 +msgid "-b --print-bytes Print differing bytes." +msgstr "-b --print-bytes Skriv ut byte som skiljer." + +#: src/cmp.c:161 +msgid "-i SKIP --ignore-initial=SKIP Skip the first SKIP bytes of input." +msgstr "" +"-i HOPP --ignore-initial=HOPP Hoppa över de HOPP första byten i indata." + +#: src/cmp.c:162 +msgid "-i SKIP1:SKIP2 --ignore-initial=SKIP1:SKIP2" +msgstr "-i HOPP1:HOPP2 --ignore-initial=HOPP1:HOPP2" + +#: src/cmp.c:163 +msgid "" +" Skip the first SKIP1 bytes of FILE1 and the first SKIP2 bytes of FILE2." +msgstr "" +" Hoppa över de HOPP1 första byten i FIL1 och de HOPP2 första byten i FIL2." + +#: src/cmp.c:164 +msgid "-l --verbose Output byte numbers and values of all differing bytes." +msgstr "-l --verbose Skriv ut bytenummer och värde för alla skiljande byte." + +#: src/cmp.c:165 +msgid "-n LIMIT --bytes=LIMIT Compare at most LIMIT bytes." +msgstr "-n GRÄNS --bytes=GRÄNS Jämför högst GRÄNS byte." + +#: src/cmp.c:166 +msgid "-s --quiet --silent Output nothing; yield exit status only." +msgstr "-s --quiet --silent Skriv inget; ge endast en slutstatus." + +#: src/cmp.c:167 src/diff.c:904 src/diff3.c:455 src/sdiff.c:204 +msgid "-v --version Output version info." +msgstr "-v --version Visa versionsinformation." + +#: src/cmp.c:168 src/diff.c:905 src/diff3.c:456 src/sdiff.c:205 +msgid "--help Output this help." +msgstr "--help Visa detta hjälpmeddelande." + +#: src/cmp.c:177 +#, c-format +msgid "Usage: %s [OPTION]... FILE1 [FILE2 [SKIP1 [SKIP2]]]\n" +msgstr "Användning: %s [FLAGGA]... FIL1 [FIL2 [HOPP1 [HOPP2]]]\n" + +#: src/cmp.c:179 +msgid "Compare two files byte by byte." +msgstr "Jämför två filer byte för byte." + +#: src/cmp.c:183 +msgid "SKIP1 and SKIP2 are the number of bytes to skip in each file." +msgstr "HOPP1 och HOPP2 är antalet byte att hoppa över i varje fil." + +#: src/cmp.c:184 +msgid "" +"SKIP values may be followed by the following multiplicative suffixes:\n" +"kB 1000, K 1024, MB 1,000,000, M 1,048,576,\n" +"GB 1,000,000,000, G 1,073,741,824, and so on for T, P, E, Z, Y." +msgstr "" +"HOPP-värden kan följas av följande mutiplikativa suffix:\n" +"kB 1000, K 1024, MB 1 000 000, M 1 048 576\n" +"GB 1 000 000 000, G 1 073 741 824, och så vidare för T, P, E, Z, Y." + +#: src/cmp.c:187 +msgid "If a FILE is `-' or missing, read standard input." +msgstr "Om FIL är \"-\" eller utelämnats, läs standard in." + +#: src/cmp.c:188 src/diff.c:911 src/diff3.c:475 src/sdiff.c:223 +msgid "Report bugs to ." +msgstr "" +"Rapportera fel till .\n" +"Rapportera synpunkter på den svenska översättningen till ." + +#: src/cmp.c:231 +#, c-format +msgid "invalid --bytes value `%s'" +msgstr "ogiltigt --bytes-värde \"%s\"" + +#: src/cmp.c:258 src/diff.c:734 src/diff3.c:333 src/sdiff.c:558 +#, c-format +msgid "missing operand after `%s'" +msgstr "saknad operand efter \"%s\"" + +#: src/cmp.c:270 src/diff.c:736 src/diff3.c:335 src/sdiff.c:560 +#, c-format +msgid "extra operand `%s'" +msgstr "extra operand \"%s\"" + +#: src/cmp.c:477 +#, c-format +msgid "%s %s differ: byte %s, line %s\n" +msgstr "%s %s skiljer: byte %s, rad %s\n" + +#: src/cmp.c:495 +#, c-format +msgid "%s %s differ: byte %s, line %s is %3o %s %3o %s\n" +msgstr "%s %s skiljer: byte %s, rad %s är %3o %s %3o %s\n" + +#: src/cmp.c:543 +#, c-format +msgid "cmp: EOF on %s\n" +msgstr "cmp: EOF i %s\n" + +#: src/diff.c:41 +msgid "" +"Written by Paul Eggert, Mike Haertel, David Hayes,\n" +"Richard Stallman, and Len Tower." +msgstr "" +"Skrivet av Paul Eggert, Mike Haertel, DAvid Hayes,\n" +"Richard Stallman och Len Tower." + +#: src/diff.c:322 +#, c-format +msgid "invalid context length `%s'" +msgstr "ogiltig omgivningslängd \"%s\"" + +#: src/diff.c:405 +msgid "pagination not supported on this host" +msgstr "sidvisning stödjs ej på denna värd" + +#: src/diff.c:420 src/diff3.c:315 +msgid "too many file label options" +msgstr "för många etikettflaggor" + +#: src/diff.c:498 +#, c-format +msgid "invalid width `%s'" +msgstr "ogiltig bredd \"%s\"" + +#: src/diff.c:502 +msgid "conflicting width options" +msgstr "konflikt mellan breddflaggor" + +#: src/diff.c:526 +#, c-format +msgid "invalid horizon length `%s'" +msgstr "ogiltig horisontlängd \"%s\"" + +#: src/diff.c:629 +#, c-format +msgid "`-%ld' option is obsolete; use `-%c %ld'" +msgstr "flaggan \"-%ld\" är föråldrad; använd \"-%c %ld\"" + +#: src/diff.c:641 +#, c-format +msgid "`-%ld' option is obsolete; omit it" +msgstr "flaggan \"-%ld\" är föråldrad; använd den inte" + +#: src/diff.c:709 +msgid "--from-file and --to-file both specified" +msgstr "både --from-file och --to-file angavs" + +#: src/diff.c:832 +msgid "Compare files line by line." +msgstr "Jämför filer rad för rad." + +#: src/diff.c:834 +msgid "-i --ignore-case Ignore case differences in file contents." +msgstr "-i --ignore-case Bortse från skiftläge i filinnehåll." + +#: src/diff.c:835 +msgid "--ignore-file-name-case Ignore case when comparing file names." +msgstr "--ignore-file-name-case Bortse från skiftläge när filnamn jämförs." + +#: src/diff.c:836 +msgid "--no-ignore-file-name-case Consider case when comparing file names." +msgstr "" +"--no-ignore-file-name-case Ta hänsyn till skiftläge när filnamn jämförs." + +#: src/diff.c:837 src/sdiff.c:186 +msgid "-E --ignore-tab-expansion Ignore changes due to tab expansion." +msgstr "" +"-E --ignore-tab-expansion Ignorera ändringar på grund av " +"tabulatorexpansion." + +#: src/diff.c:838 src/sdiff.c:187 +msgid "-b --ignore-space-change Ignore changes in the amount of white space." +msgstr "-b --ignore-space-change Bortse från ändringar i antalet blanka." + +#: src/diff.c:839 +msgid "-w --ignore-all-space Ignore all white space." +msgstr "-w --ignore-all-space Ignorera alla blanktecken." + +#: src/diff.c:840 src/sdiff.c:189 +msgid "-B --ignore-blank-lines Ignore changes whose lines are all blank." +msgstr "" +"-B --ignore-blank-lines Ignorera ändringar i form av enbart blanka rader." + +#: src/diff.c:841 src/sdiff.c:190 +msgid "" +"-I RE --ignore-matching-lines=RE Ignore changes whose lines all match RE." +msgstr "" +"-I RU --ignore-matching-lines=RU Ignorera ändringar vars rader matchar RU." + +#: src/diff.c:842 src/sdiff.c:191 +msgid "--strip-trailing-cr Strip trailing carriage return on input." +msgstr "--strip-trailing-cr Tag bort avslutande vagnreturer i indata." + +#: src/diff.c:844 +msgid "--binary Read and write data in binary mode." +msgstr "--binary Läs och skriv data binärt." + +#: src/diff.c:846 src/diff3.c:451 src/sdiff.c:192 +msgid "-a --text Treat all files as text." +msgstr "-a --text Betrakta alla filer som text." + +#: src/diff.c:848 +msgid "" +"-c -C NUM --context[=NUM] Output NUM (default 3) lines of copied " +"context.\n" +"-u -U NUM --unified[=NUM] Output NUM (default 3) lines of unified " +"context.\n" +" --label LABEL Use LABEL instead of file name.\n" +" -p --show-c-function Show which C function each change is in.\n" +" -F RE --show-function-line=RE Show the most recent line matching RE." +msgstr "" +"-c -C ANT --context[=ANT] Skriv ut ANT (normalt 3) rader kopierad " +"omgivning.\n" +"-u -U ANT --unified[=ANT] Skriv ut ANT (normalt 3) rader sammanslagen\n" +" omgivning.\n" +" --label ETIKETT Använd ETIKETT istället för filnamn.\n" +" -p --show-c-function Visa vilken C-funktion varje ändring finns i.\n" +" -F RU --show-function-line=RU Visa den senaste raden som matchar RU." + +#: src/diff.c:853 +msgid "-q --brief Output only whether files differ." +msgstr "-q --brief Skriv ut endast huruvida filer skiljer sig." + +# Finns det någon bättre översättning av "script" än "program"? +#: src/diff.c:854 +msgid "-e --ed Output an ed script." +msgstr "-e --ed Skriv ut ett ed-program." + +#: src/diff.c:855 +msgid "--normal Output a normal diff." +msgstr "--normal Skriv ut en normal diff." + +#: src/diff.c:856 +msgid "-n --rcs Output an RCS format diff." +msgstr "-n --rcs Skriv ut skillnader i RCS-format." + +#: src/diff.c:857 +msgid "" +"-y --side-by-side Output in two columns.\n" +" -W NUM --width=NUM Output at most NUM (default 130) print columns.\n" +" --left-column Output only the left column of common lines.\n" +" --suppress-common-lines Do not output common lines." +msgstr "" +"-y --side-by-side Skriv ut i två kolumner.\n" +" -W ANT --width=ANT Skriv ut högst ANT (130 om inget anges) kolumner.\n" +" --left-column Skriv ut endast vänstra kolumnen av gemensamma rader.\n" +" --suppress-common-lines Skriv inte ut gemensamma rader." + +#: src/diff.c:861 +msgid "-D NAME --ifdef=NAME Output merged file to show `#ifdef NAME' diffs." +msgstr "" +"-D NAMN --ifdef=NAMN Skriv ut sammanslagen fil med skillnader inom " +"\"#ifdef NAMN\"." + +#: src/diff.c:862 +msgid "" +"--GTYPE-group-format=GFMT Similar, but format GTYPE input groups with GFMT." +msgstr "--GTYP-group-format=GFMT Dito, men formatera GTYP ingrupper med GFMT." + +#: src/diff.c:863 +msgid "--line-format=LFMT Similar, but format all input lines with LFMT." +msgstr "--line-format=RFMT Dito, men formatera alla inrader med RFMT." + +#: src/diff.c:864 +msgid "" +"--LTYPE-line-format=LFMT Similar, but format LTYPE input lines with LFMT." +msgstr "--RTYP-line-format=RFMT Dito, men formatera RTYP inrader med RFMT." + +#: src/diff.c:865 +msgid " LTYPE is `old', `new', or `unchanged'. GTYPE is LTYPE or `changed'." +msgstr "" +" RTYP är \"old\", \"new\" eller \"unchanged\". GTYP är RTYP eller \"changed" +"\"." + +#: src/diff.c:866 +msgid "" +" GFMT may contain:\n" +" %< lines from FILE1\n" +" %> lines from FILE2\n" +" %= lines common to FILE1 and FILE2\n" +" %[-][WIDTH][.[PREC]]{doxX}LETTER printf-style spec for LETTER\n" +" LETTERs are as follows for new group, lower case for old group:\n" +" F first line number\n" +" L last line number\n" +" N number of lines = L-F+1\n" +" E F-1\n" +" M L+1" +msgstr "" +" GFMT kan innehålla:\n" +" %< rader från FIL1\n" +" %> rader från FIL2\n" +" %= gemensamma rader i FIL1 och FIL2\n" +" %[-][BREDD][.[PREC]]{doxX}BOKSTAV printf-lik spec. för BOKSTAV\n" +" BOKSTÄVER är enligt följande för ny grupp, gemen för gammal grupp:\n" +" F första radnumret\n" +" L sista radnumret\n" +" N antal rader = L-F+1\n" +" E F-1\n" +" M L+1" + +#: src/diff.c:877 +msgid "" +" LFMT may contain:\n" +" %L contents of line\n" +" %l contents of line, excluding any trailing newline\n" +" %[-][WIDTH][.[PREC]]{doxX}n printf-style spec for input line number" +msgstr "" +" RFMT kan innehålla:\n" +" %L radinnehåll\n" +" %l radinnehåll exklusive avslutande nyrad\n" +" %[-][BREDD][.[PREC]]{doxX}n printf-stil spec. för inradnummer" + +#: src/diff.c:881 +msgid "" +" Either GFMT or LFMT may contain:\n" +" %% %\n" +" %c'C' the single character C\n" +" %c'\\OOO' the character with octal code OOO" +msgstr "" +" Både GFMT eller RFMT kan innehålla:\n" +" %% %\n" +" %c'C' det ensamma tecknet C\n" +" %c'\\OOO' tecknet med oktalkod OOO" + +#: src/diff.c:886 +msgid "-l --paginate Pass the output through `pr' to paginate it." +msgstr "-l --paginate Skicka utdata till \"pr\" för paginering." + +#: src/diff.c:887 src/sdiff.c:198 +msgid "-t --expand-tabs Expand tabs to spaces in output." +msgstr "-t --expand-tabs Expandera tabulatorer till blanksteg." + +#: src/diff.c:888 src/diff3.c:452 +msgid "-T --initial-tab Make tabs line up by prepending a tab." +msgstr "" +"-T --initial-tab Justera tabulatorer genom att skjuta in en tabulator " +"först." + +#: src/diff.c:890 +msgid "-r --recursive Recursively compare any subdirectories found." +msgstr "-r --recursive Jämför underkataloger rekursivt." + +#: src/diff.c:891 +msgid "-N --new-file Treat absent files as empty." +msgstr "-N --new-file Betrakta saknade filer som tomma." + +#: src/diff.c:892 +msgid "--unidirectional-new-file Treat absent first files as empty." +msgstr "--unidirectional-new-file Behandla saknade förstafiler som tomma." + +#: src/diff.c:893 +msgid "-s --report-identical-files Report when two files are the same." +msgstr "-s --report-identical-files Rapportera om två filer är lika." + +#: src/diff.c:894 +msgid "-x PAT --exclude=PAT Exclude files that match PAT." +msgstr "-x MNS --exclude=MNS Ta inte med filer som matchar MNS." + +#: src/diff.c:895 +msgid "" +"-X FILE --exclude-from=FILE Exclude files that match any pattern in FILE." +msgstr "" +"-X FIL --exclude-from=FIL Ta inte med filer med namn som matchar mönstren " +"i FIL." + +#: src/diff.c:896 +msgid "" +"-S FILE --starting-file=FILE Start with FILE when comparing directories." +msgstr "-S FIL --starting-file=FIL Börja med FIL när kataloger jämförs." + +#: src/diff.c:897 +msgid "" +"--from-file=FILE1 Compare FILE1 to all operands. FILE1 can be a directory." +msgstr "" +"--from-file=FIL1 Jämför FIL1 medd alla operander. FIL1 kan vara en " +"katalog." + +#: src/diff.c:898 +msgid "" +"--to-file=FILE2 Compare all operands to FILE2. FILE2 can be a directory." +msgstr "" +"--to-file=FIL2 Jämför alla operander med FIL2. FIL2 kan vara en katalog." + +#: src/diff.c:900 +msgid "--horizon-lines=NUM Keep NUM lines of the common prefix and suffix." +msgstr "" +"--horizon-lines=ANT Spara ANT rader av det gemensamma prefixet och suffixet." + +#: src/diff.c:901 src/sdiff.c:200 +msgid "-d --minimal Try hard to find a smaller set of changes." +msgstr "-d --minimal Arbeta hårt för att hitta en mindre mängd av ändringar." + +#: src/diff.c:902 +msgid "" +"--speed-large-files Assume large files and many scattered small changes." +msgstr "--speed-large-files Antag stora filer och små spridda ändringar." + +#: src/diff.c:907 +msgid "" +"FILES are `FILE1 FILE2' or `DIR1 DIR2' or `DIR FILE...' or `FILE... DIR'." +msgstr "" +"FILER är \"FIL1 FIL2\" eller \"KAT1 KAT2\" eller \"KAT FIL...\" eller " +"\"FIL... KAT\"." + +#: src/diff.c:908 +msgid "" +"If --from-file or --to-file is given, there are no restrictions on FILES." +msgstr "" +"Om --from-file eller --to-file är angivet, finns det inga begränsningar på\n" +"FILER." + +#: src/diff.c:909 src/diff3.c:474 src/sdiff.c:222 +msgid "If a FILE is `-', read standard input." +msgstr "Om FIL är \"-\", läs standard in." + +#: src/diff.c:920 +#, c-format +msgid "Usage: %s [OPTION]... FILES\n" +msgstr "Användning: %s [FLAGGA]... FILER\n" + +#: src/diff.c:949 +#, c-format +msgid "conflicting %s option value `%s'" +msgstr "motstridigt %s-flaggsvärde \"%s\"" + +#: src/diff.c:962 +msgid "conflicting output style options" +msgstr "motstridig utmatningsstilsflagga" + +#: src/diff.c:976 +msgid "regular empty file" +msgstr "tom normal fil" + +#: src/diff.c:976 +msgid "regular file" +msgstr "normal fil" + +#: src/diff.c:978 +msgid "directory" +msgstr "katalog" + +#: src/diff.c:981 +msgid "block special file" +msgstr "blockspecialfil" + +#: src/diff.c:984 +msgid "character special file" +msgstr "teckenspecialfil" + +#: src/diff.c:987 +msgid "fifo" +msgstr "fifo" + +#: src/diff.c:991 +msgid "socket" +msgstr "uttag (socket)" + +#: src/diff.c:994 +msgid "message queue" +msgstr "meddelandekö" + +#: src/diff.c:997 +msgid "semaphore" +msgstr "semafor" + +#: src/diff.c:1000 +msgid "shared memory object" +msgstr "delatminneobjekt" + +#: src/diff.c:1003 +msgid "typed memory object" +msgstr "typat minnes-objekt" + +#: src/diff.c:1006 +msgid "weird file" +msgstr "konstig fil" + +#: src/diff.c:1070 src/diff.c:1256 +#, c-format +msgid "Only in %s: %s\n" +msgstr "Endast i %s: %s\n" + +#: src/diff.c:1193 +msgid "cannot compare `-' to a directory" +msgstr "kan inte jämföra \"-\" med en katalog" + +#: src/diff.c:1220 +msgid "-D option not supported with directories" +msgstr "-D flaggan stödjs ej för kataloger" + +#: src/diff.c:1229 +#, c-format +msgid "Common subdirectories: %s and %s\n" +msgstr "Lika underkataloger: %s och %s\n" + +#: src/diff.c:1266 +#, c-format +msgid "File %s is a %s while file %s is a %s\n" +msgstr "Fil %s är en %s medan fil %s är en %s\n" + +#: src/diff.c:1345 +#, c-format +msgid "Files %s and %s are identical\n" +msgstr "Filerna %s och %s är lika\n" + +#: src/diff3.c:26 +msgid "Written by Randy Smith." +msgstr "Skrivet av Randy Smith." + +#: src/diff3.c:328 +msgid "incompatible options" +msgstr "oförenliga flaggor" + +#: src/diff3.c:368 +msgid "`-' specified for more than one input file" +msgstr "\"-\" angivet för mer än en infil" + +#: src/diff3.c:408 src/diff3.c:1232 src/diff3.c:1645 src/diff3.c:1700 +#: src/sdiff.c:305 src/sdiff.c:879 src/sdiff.c:890 +msgid "read failed" +msgstr "läsning misslyckades" + +#: src/diff3.c:441 +msgid "-e --ed Output unmerged changes from OLDFILE to YOURFILE into MYFILE." +msgstr "" +"-e --ed Skriv ut separata ändringar från GAMMALFIL till DINFIL i MINFIL." + +#: src/diff3.c:442 +msgid "-E --show-overlap Output unmerged changes, bracketing conflicts." +msgstr "" +"-E --show-overlap Skriv ut ändringar separat med markeringar runt " +"konflikter." + +#: src/diff3.c:443 +msgid "-A --show-all Output all changes, bracketing conflicts." +msgstr "-A --show-all Skriv ut alla ändringar med markering runt konflikter." + +#: src/diff3.c:444 +msgid "-x --overlap-only Output overlapping changes." +msgstr "-x --overlap-only Skriv ut överlappande ändringar." + +#: src/diff3.c:445 +msgid "-X Output overlapping changes, bracketing them." +msgstr "-X Skriv ut ändringar separat, markerade." + +#: src/diff3.c:446 +msgid "-3 --easy-only Output unmerged nonoverlapping changes." +msgstr "-3 --easy-only Skriv ut ej överlappande ändringar separat." + +#: src/diff3.c:448 +msgid "-m --merge Output merged file instead of ed script (default -A)." +msgstr "" +"-m --merge Skriv ut sammanslagen fil istället för ed-program (normalt -A)." + +#: src/diff3.c:449 +msgid "-L LABEL --label=LABEL Use LABEL instead of file name." +msgstr "-L ETIKETT --label=ETIKETT Använd ETIKETT istället för filnamn." + +#: src/diff3.c:450 +msgid "-i Append `w' and `q' commands to ed scripts." +msgstr "-i Lägg till \"w\"- och \"q\"-kommandon till ed-program." + +#: src/diff3.c:453 src/sdiff.c:202 +msgid "--diff-program=PROGRAM Use PROGRAM to compare files." +msgstr "--diff-program=PROGRAM Använd PROGRAM för att jämföra filer." + +#: src/diff3.c:465 +#, c-format +msgid "Usage: %s [OPTION]... MYFILE OLDFILE YOURFILE\n" +msgstr "Användning: %s [FLAGGA]... MINFIL GAMMALFIL DINFIL\n" + +#: src/diff3.c:467 +msgid "Compare three files line by line." +msgstr "Jämför tre filer rad för rad." + +#: src/diff3.c:673 +msgid "internal error: screwup in format of diff blocks" +msgstr "internt fel: trasigt format i diff-block" + +#: src/diff3.c:971 +#, c-format +msgid "%s: diff failed: " +msgstr "%s: diff misslyckades: " + +#: src/diff3.c:993 +msgid "internal error: invalid diff type in process_diff" +msgstr "internt fel: ogiltig diff-typ i process_diff" + +#: src/diff3.c:1018 +msgid "invalid diff format; invalid change separator" +msgstr "ogiltigt diff-format; ogiltig ändringsseparator" + +#: src/diff3.c:1242 +msgid "invalid diff format; incomplete last line" +msgstr "ogiltigt diff-format; ofullständig sista rad" + +#: src/diff3.c:1265 src/sdiff.c:273 +#, c-format +msgid "subsidiary program `%s' not executable" +msgstr "underprogram \"%s\" inte körbart" + +#: src/diff3.c:1268 src/sdiff.c:276 src/util.c:298 +#, c-format +msgid "subsidiary program `%s' not found" +msgstr "underprogram \"%s\" hittades inte" + +#: src/diff3.c:1272 src/sdiff.c:268 src/util.c:301 +#, c-format +msgid "subsidiary program `%s' failed" +msgstr "underprogram \"%s\" misslyckades" + +#: src/diff3.c:1294 +msgid "invalid diff format; incorrect leading line chars" +msgstr "ogiltigt diff-format; felaktiga starttecken på rad" + +#: src/diff3.c:1370 +msgid "internal error: invalid diff type passed to output" +msgstr "internt fel: ogiltig diff-typ utskickad" + +#: src/diff3.c:1647 src/diff3.c:1704 +msgid "input file shrank" +msgstr "infilen krympte" + +#: src/dir.c:162 +#, c-format +msgid "cannot compare file names `%s' and `%s'" +msgstr "kan inte jämföra filnamn \"%s\" och \"%s\"" + +#: src/sdiff.c:35 +msgid "Written by Thomas Lord." +msgstr "Skrivet av Thomas Lord." + +#: src/sdiff.c:183 +msgid "-o FILE --output=FILE Operate interactively, sending output to FILE." +msgstr "-o FIL --output=FIL Kör interaktivt, med utdata till FIL." + +#: src/sdiff.c:185 +msgid "-i --ignore-case Consider upper- and lower-case to be the same." +msgstr "-i --ignore-case Betrakta versaler och gemena som lika." + +#: src/sdiff.c:188 +msgid "-W --ignore-all-space Ignore all white space." +msgstr "-W --ignore-all-space Ignorera alla blanktecken." + +#: src/sdiff.c:194 +msgid "-w NUM --width=NUM Output at most NUM (default 130) columns per line." +msgstr "" +"-w ANT --width=ANT Skriv ut högst ANT (130 om inget anges) tecken per rad." + +#: src/sdiff.c:195 +msgid "-l --left-column Output only the left column of common lines." +msgstr "" +"-l --left-column Skriv ut endast vänstra kolumnen av gemensamma rader." + +#: src/sdiff.c:196 +msgid "-s --suppress-common-lines Do not output common lines." +msgstr "-s --suppress-common-lines Skriv inte ut gemensamma rader." + +#: src/sdiff.c:201 +msgid "" +"-H --speed-large-files Assume large files and many scattered small changes." +msgstr "-H --speed-large-files Antag stora filer och små spridda ändringar." + +#: src/sdiff.c:214 +#, c-format +msgid "Usage: %s [OPTION]... FILE1 FILE2\n" +msgstr "Användning: %s [FLAGGA]... FIL1 FIL2\n" + +#: src/sdiff.c:215 +msgid "Side-by-side merge of file differences." +msgstr "Sammanslagning sida-vid-sida av filskillnader." + +#: src/sdiff.c:327 +msgid "cannot interactively merge standard input" +msgstr "kan inte slå samman standard in interaktivt" + +#: src/sdiff.c:588 +msgid "both files to be compared are directories" +msgstr "båda filerna som skall jämföras är kataloger" + +#: src/sdiff.c:853 +msgid "" +"ed:\tEdit then use both versions, each decorated with a header.\n" +"eb:\tEdit then use both versions.\n" +"el:\tEdit then use the left version.\n" +"er:\tEdit then use the right version.\n" +"e:\tEdit a new version.\n" +"l:\tUse the left version.\n" +"r:\tUse the right version.\n" +"s:\tSilently include common lines.\n" +"v:\tVerbosely include common lines.\n" +"q:\tQuit.\n" +msgstr "" +"ed:\tRedigera och använd sedan båda versioner, dekorerade med huvuden.\n" +"eb:\tRedigera och använd sedan båda versioner.\n" +"el:\tRedigera och använd sedan vänstra versionen.\n" +"er:\tRedigera och använd sedan högra versionen.\n" +"e:\tRedigera en ny version.\n" +"l:\tAnvänd vänstra versionen.\n" +"r:\tAnvänd högra versionen.\n" +"s:\tInkludera tyst gemensamma rader.\n" +"v:\tInkludera och tillkännage gemensamma rader.\n" +"q:\tAvsluta.\n" diff --git a/src/apps/bin/diffutils-2.8.1/po/tr.gmo b/src/apps/bin/diffutils-2.8.1/po/tr.gmo new file mode 100644 index 0000000000000000000000000000000000000000..2e9abdaeea00c8067af9acce8eb93cc72b331f5a GIT binary patch literal 24943 zcmchf3vgW5dEc+=R|UUi%a&z3I+9I-l&~NGNfrf)HbD|3VS)q&fTk#l5-zY8!1cbM zeUJoHC$Uo7aT42!8$aTzX6!aro7ydz*czu*l1Txzp1zW{Y3p&PoxYsuGi{QYHcdOz z{{G)NclYjMLD6p79UcC6?>*1&e6RDJ5BlsYZv7XL|9lg8XB5413;ew(dQI6se!~d( z!%_5x(I|S^8hDN0eUtDI=4LqGX8D91|9{!1HM0s-pU-J!{9~#{H;F^GR|8y9_xDBE5U={49GZd`(*g7 z_WPsg_P2r$fqKsxZvO-bU2gw-AmhLNE#M)LJ~YnTp=ERm{0;DA6y5O#kbdsC0J5e# zeime$JM^A@-|<>-A4s2~>pL!iw0p;M;CsM70FSeEw}X4Z1@`HK;7{98ALFRe)ANk+!W~}Ib zs;J)YfEtfEyysKkUEtS2*7ly?48Q*)$o}nm9mxLeDuBDe%OLG`eF=nDcl~O3|Bpd< zdpB)VZ}%f0d%F7yh&=56G)VuuzXsB7_qRdlzWZN-@b{qj;|`E_(Hp@r@K1u!Qv5bJ z4KnWFGWZ7Yqaf=Y{4A(;zXA^O-*1E0!T$xqD|?VJJ>T=6z*n=iZvp>3$ebd0`<_>U z(ElFBh9^MLT2TCOH~4w*e(^mWgF0okv6sT0kC2SC1~R{Wj1@uqedj^?-uF`=^xda@ zhTi+W1G10%L|^7Payv-75%Cv1GSc+#N4^3w-pH?k?B~co0O6&Pe+|;#$bSXzrs-=y z=sybW^nP?6P61|xB*a7g(;5l#rEP?bthCYzIkNp_GpFyO)%WwL+|02J?7e()-kLaUO^x&(( z6W}L7=KtV70a^cp{{y7|{r7?nJPy7K)PAzI{T~azzX?Lu{hA;65PPBa4?O@na0O&j z9{O>RF(3L?K;{#DnBSs%BZ|g1zykQY;3H9V03Ouu168mFvhR}LhsBS~<>4WaH9xHV zVVw{ET@YFyWKTt>gIB;G0k49Ss2tix6)*vhftv3Os*Jsh>fndM?|%-`_7G!>9}ayL zWIl&}3;YDC3K~VwbmD8^r%-vUS^DwtuY;`l$jiYw@FB1aeiD2T{3DQg9vuTe0@9cC z-K6;CBzP2rZj(RFKK%jsH~4*+r9Kbt0<|B^^Muy%e(*CO^E&Yl!Esa?x<`6+>PZmV zOnn(-U#I>)cnH&h%xYdAcodukHGlT@1OFSO-bw9q3lu%4!2bYJfBJs#F;M&WH27~o z#yh2Pn8&Fvg0wyLUGTk8boy1`26)iFKm9F`{W|@JtP4JvImGYbC_1wS!cS+eg3R~K zuY$ZkqjBl)kvl;4>k;-!eD%mTK z#pizs{LkQ_C_4LjkTK7G2c*9b-opA{4Kk+W^&EX`-sjkJ&G($$&(Dknt}5rpG7fL;Lmwa}_^4p?Nv*V<7W> z;yI9ZPka|-eorzt?bnl92lRWg2tv0fKMX>PCqD_k6MPn=zbAhMgzujG9{8pxTDTRY zj|It*e$%(~=)!4`eOtHyvi}R3H*;IK0@7yThe6f<8IZOMe;(Wgej8-|3%?6Om-uxc z>y5>S@I!nOWW4ws_%ceJa+&fMDEcr*@r8ZL{HuL>IR)Cw@0Jf2JxS5}^wB=e**E{s zp8}quT&Jv3ew4y`B*XU6y3SKRLHQzuxrmPPL8D8QgOr%^S<0WK=%cmiBi;}_Ur+g~ z6zHS9kUbSIMxUdI9{RASk!a^AXDQj|o#D$GSfyN~e2H>|qCNZt3iJ~%>s(KGM>#=xFg$x4TnXQgf-TAtWtMWBqR(?4| zL9!ybvQHzRWM`3*QqEA`MR|nsI?67}GDRQcU$QTGm92_?nUa0R__CMsRmv@t{ggq< zpQe0_@?}bsavMdTFHjCp-b(op<&Bi=bC@qbVLzOkOq;7o-5o!6YTniAZdzE0*WFUB z+Kkic_<-ZHYZt|TTN*qv=p1caBdxBK6SuS)*W;xoeH_VZJU%ls6DoDyUS=RyTWZE- z`YtApI+63^ZXfSq=gMg{X}INjt>TVNO;3*c&fmA~#h8C_Fnh67t5j-L*R1(wF0K~s zTc~%TaPh*qsiX5JE?yYEaAtP$$i<6K7i(7@{qXeU{QTssb8Gdq+FUL)n(HjCv6d{k zWzogn+E6b1Xt=nZxR^QC%H`T+Vck`e%WkD!Ypo4Aoy4(Z)m2-S#iSmFU=S7*@9^%l3$-FH8*Tym4Gy^l#sHx7LaPdMRacVY;4plY)$RG@n11rUQX)c_LkplHLK>!z)QT>I(FSxQx_i8VBETM z%g`_>jyrpjmdnWsf>K*+rtos1;C3zfx@q-NTuzI9-h{dfyOwq}23@h1G^&G57mGDn z8oavFs<6Gjn|5WYGO4(-n69*HEnC5O*7<@uswYpi(mHh7v5!LG`xvlrj@94v^g`_& zXV`CYd1|$)^<=5GQcX9KHpx7JJQ@1FxAhD}g@W-^!KAr>Y**suK~s}%F0G{HxIW|- z;aC4AV?bkJYtnG0@zi3N&WtY$Vw9{elf=G#1*UI{L+DBk)YW2IjqB^q%_ectxb|{A zZ6>Z5H)EGpU3gtV$*Q)PwXjyNt<>Yn!85Zn$7d%{24~Sq*$-4DN^?!xY#AnOsFn0? zLBDK(LZMmnzZPp~acRYLIZcZBiU++Exg((~|C7F9K{zU@qlgV%+D4z zYxQ-Fx|)>NoSSJir3jjnH?YniX=BweZ2>d>EM6{>M1DVTD0Q})dUK1HBdtu%_yL%MwFY|J*~H+%6j&$ zTH9$BM{3nZTFflQ4d=lsDrkp{P_YXSwAETC`;!z4aOjF(Y{R*UMg#H3qVUY`veBj@ z{oPoKo7iteq(QfsXH%=T;zqNct`#x`Us$T6O7*Ct^Oxd!J&ozKo-|waszY7b;x&)J zG{zZYuFV;FhRE#nSm2B?wxJ(qw5qA+6!c+SE?@;bKf3vP5~Jo88|b#6x{Zltn3Kv{ zQ+#!wbA>_@H`WWaY8k-^4A!bv639`6eAU{eq+X8K*0kxJ^-ri_W3_gvJYA4lEkiBs5d zI$AC!%Lo0hF!?ZbV^D-llXMI3wu;sa9Sb*TDn~PYUad7$y!Xx2g6TkQvWrrHkwk&coc2D zLBrE(vLnNyZ}Y4=XZq2I(2VP1E8}w$A;})k{LV>@!aZHuDz}@AJFi~SYT8T@7;Tk1 z6_?mIWW_rytu;It{M}?Nsd{HlFKKzsT6#u++0iHQQqrcC*#GjXERH>={-f=E?juHB zTaAXUSOc3r^Yfl0Y6^Q37CC9oWu~Q?tBAMX2I;CbQ&rM2MkxAY%ePCrTUc>i7T}h`h=bAUa9qCCxn9c9^Dxo7lKD9C18&kafuO+ zn0aDkbFHs5FUW9RY!geiYY&1Qx5`a--`i7k&@aKkxbp?9a!`azg=HLXb4%Tvlnw-1T6ITU`*9NUJCGL(o>qs|!?7TW zrXI4oCWr?mht`!SU#W5C!6lG7ms<3DFUpz}7B!IyTx|w$9yf^NXHm*%Ipv@idlQBg zZ6vmRVPDx07#Mb=eNdp78GbdEux8?r-q*bv%b!GNrjHuuGT!-_v$OV{{ja%G=k=X_ zQVkOnzjrU%h8@+L)C*>J?QH1X4;teLY3U98jJ`c&N-9Rx__Ie+T|#fbtfpwPlbdfm z!7z|w;qssjweZxSIYn~6M5p$mWgAkbqflVsNryJo6Aw#FFxMcLeJUZYeoO_>@ut#UB@%sgx(zXbb1HJ1( z!+Ppa9mkLrB}=V(gPwIZ319KI*g`v8n6KGd%vmWG+^QC74kZc&4w?upUm7^*h<`>L z{1#d518zM{2%;ocQv8@^+-%|Wwc_YA7^xWIZ=4B}gv$>ph zazbYlkaNUQw*hY|hLpK%M{9V9XcNz3Jq&3RHYcbkBTGM%@`zAL`T+}?xiMMw9WdQX zS|ohveXAMYZ}vN_F4w4YS#^RQxfvUL+1a6}P`I2Ho2&kW6nf71q|4rn-Z!#0h*`tI z8>Va-_lm|1X1v>7?ql1n{+S75(O}6B+Rq(rIB#i$53XGzHiE{PZ?JYrf%(IjegPUYSj z;;=~-4!7SmSL;dUE1A9AUZc(Prs{Yv9FAnL<}8M}ps%CmP>l^*Z0+dO?5N|P&QE(g zJUr~*o3R@nR+T||Qk;N!D^4TCCE$V9oqIZ9)hvD{@z636!M3z+f1S~3Y8mo(;t_=Q z+9ykmxPrc^4oQ|3jipp;_zya`nwKISVRN4wj_4`2?`pSDu%%Seh633`w83>ptyGJ0 zD1ve8ZLw3e5S3fxEJ#NL2W6n6sqh#lB!tM92lh}@#bK>oiGT~oa`b!W$@a>pk_xdGnyoUQN?q1c=;b)6Iw| zehp2{x0YbhIb%)1MX$RQ>uv#+<3o&twi~?z4M%6IrE2XmDtR4IsJNtF zuhn^Ir%wjhBh~o$p4^kY_GEAF$pt;R@I>y(<4;Ft8wAKqvtO7wGe0$R`XY+d6j4yR z12?R4LE3iAT@aUydKkNS@#2jd&F%EkpHp0Rj>!%&1JOBR$ZWbqH@UKs)SK{s zO3dIy%=e@`Wd$$5l=jh8Y{y}CMSOQQ}NQtq`HwJ1Pg^-Tnl9ZE|{;j z*r=70W^%yQ7|W&28&zq+QS`9n)Cm;_JCW@UhY)~JR8u^usI(X^S}fO4^cDt(i~S=7 z#`Vp#6v_t?lksNa@N>@RjRGDKMMPIUdT`s-zs-WAD zMQzj4J?W*&+PIsXIVJ@qRn0-tBA8N5y@<@w=>_CKmuE$W;E>--_ET_x0D6JY-HPgl1mUQ@*C^6Dhq8dt+ zFuK=p<8U@xj9km(a?SNM@w!Zf?8cLNcoQwwaBSEs42b88ZB2-@B$o*}(sj5p!(7>j zCQS_*_*ro5w2Rps+jU-r6H$mQ__MkvKvpNj+Su>v3L{e4#7S$es#iC22vGt9P( ziF>M*w2~+|uWe3ixG#@(daVT|R|rCI3`b$#sG7wfBDtG(8)n+p$44`zCXwi!{pBRZ z^w~Q7^=lx?nR-pDD@+v&$g>=Bf5C6=sv8^LKX7JdzHmghR=g`5MZ=A|v5}Fn!pQxF zkq6x9{o|t}g^~RuBUCKR;%2Ll-g@`Bkq5``dth>Meqfp;kpeDH6;B5a8+S(&?z`PY zsf2reGOjMg?qNbA>Bb>ga6PUL!}af@RduBWBNgV8xH9hMTlG@fSalD}vu@T4tPrbivyu!~lji#dPEDPf?5u5ccw~SGr~JjjJaihz+q=@-w^okR>H&p; z>qKG?o}E8d*x#wA*>XrKOd^7kr*XG`F>MY!TJVmcE#u^2-Lklm;fIDF7$Ak?_~Ffu zql4FDH?42+i&x{Vt6SHLaS6p*PhGnC9LKIjGEwR~B`qbTa_UNup(HWsO;?&rO6f*9 zExA&y*iw3ut8sDHuAfceCI%*Z>FCVd`H9g%2v1nIxpke(MW5QUiwq`vIo9tbSxmkq zEA3Rnr)-`Ix#Uzs*(K*l}xu| z0#NmFePio7rz}WUv8)|mYY>9Eb$Et^C24GHlV3N7?!^>4-6(ZcNgF=*$GOtx3!Bev zzEDzhewm54wEnKdr?iX%Wt7o*hdpU*T@O>R+@}UgXvgKJweh{ypA|j*|83XS93MUxoX#ln{Z8* zbhRAUOXaQWWL@zd?=+(>UzN-QU=wz%!s%;=#H&RycHNk0gGCox z(0n8YrW-rFP3u^5-(flK*PYMF%5|7k-)a1iY4v~AqI=S93M}qC+dMr3p>i`2`&BFH zdMzW;wpHb8C|?Wi?8(=Xw7bKc78BC7mg5qkEUOlj9(RUG5HhJc*e$1pT<^zB5Y{F% z#>3=LV=@vc!AqmdF>EJz^%>ktP+qKUOvzaPj~Tn2#>_Io@FJuKU5YJ~0pm(DaqIC0 zfkC9K1}_tI@6H4}Kk?WU7e@$bt+5{aNua>Q?qwuGCaZ$Y@v0_N9%P7&cj=M4d^WHX znbmK|*@?~?LlCBuLSg)N&4aK3pX-+HF0hD2x>lnp--PX~xmKaY;alKZ;r1^edikC8~ zZRe&NGR@8@Xy4C_Jux@Pd@>qjDQTyDYMNx;4n&*JZCx+HOs2@WMcJO&bJ!Dwj8)Hv zBKziZHF*cHbdk7-`FRir#?IV|ep~P5Cs5Ng`PS7|wI!=S`lsSijK4jf?YK;={4}|0 zHO?LkTragfEzFH%LVMGwg^kJb+Kd^w@@5IW?3)Jf4a?Vukpmx(?a0S@Hr_Gy?SqJS zjli4S5D3oMF7;HDDp;(&c$MREJ>#bPbcvPAfjbc+-}o>@HxY~%uM+!BO7$2&jVJ0c zSoIX2*(88X$!}#(YFtKw8?_p8=_=YFUJlx3^Z6IAV&}M|=RD9%Hnwf5DIYF%WGC6Z z9dqjDG7mdjw|UCjrcz8x=zsNBi8tu)sN1@RtBelhrqwd+vfm+(F8u5g(4awJ7M#35 zLD6s9PN{zXKNZ51JG%MoV_Vla9<^`V zE!@wcG-L_3E9AK>dsq^0E<*O$wGf)V)aYy1yY@z^&Q$)io1EtqH)$8@KFhHEz$@n% zL&li{VNbHUgPduDLn$fYY?Mzo%qxjZ#b#oXQx9`qU#Tq-m|Wta={URu8C-E&AFEtK z7_8c$m{0oBYkONoh}8K6#KZob(Mu+xAs$9W#^`*hXpF8s@@&1DZs3@pj>Omf{jvtO z!4I}W&SIvQqz=oilGi*K**3|^T|AuDr9KtL-h94}CPyvhrROEt*(Tnt9v|({vn$0h zBd6RL$i-g}aJd21jFIGjdPZtn!~V-5&9wDlD>Qobtvlxl0{$htk7&-1rybX`F>NvzEBC$mo536y<0O>sOq14E3R z2Y4wd-!{Ia%10ExPibbP9a1k(U@}BSHUUFaT}jEnv>m);kuW>g=rHSDppM#AkH_*# zuTMT^rrg@qikmNN;FQzzGFLF3S2Lxz(&BauDSauTc<-vSTb(IIh3=%zqwy+d+RW3F zn$SY^gy1(vg@pT0?L>b>Hxd=eVr?q(WEDkKiQxM@O#lhmNJSaR>o+lR%t2vVw%_48OSE1 zAWmmSS&FAUb>>OuV>yUW7VHV39F}8YpmF`%FIhDAwr{ei1wy^Z2VEYQk@O9s++6&+ z2A(*V#l4%*lQp{eaqr2>PhL=_sI6A*s!m}Y{v^pvQM|salQ9eL&K%A3si`sg&@w%( zLM*dQIH)Q0sN*aqn_y|q|H)Bm3BXXjAK$I)7*5kN2e3>za{Rd#VU9QdP>! z>`;3#+J#Jba#Gc0WOMTS(3`rt z`SIjZokM$?%{sHuh?yPpV$$_30I`EV#O(U#vz|a|by9OU80+ozo3B4akRoGbQy_lV zTlH2&XIKJV3N>lr*7Z)gt^|NQtFTBr6w0xYNXF|tL9O+p#tn$BP3RqahfK(sZK4^7 z?DbgF6ttzrhCJC!3U%Vn&N6mv#ZN==+7;`H;tRIy?wr}V%@^v}1I=xP2uqJ-?T|a0 ziEXbhn0eoqy?cRr^EtHMU+``}GHzjjSYZM$8#!Mji~Q&IwDX7DJ&fG#9ViW#P3@C) ziy_nISpcE0Tbk$LEAHgPv`^&E@^HfggTZZHrFRx^zKb!*nl7_8eG+rGuEA4YulilV z;AAF_SdDfE1|nZMbFcoN5w8#BG;*Qq&k3M*4=2K3LAG)xqLott*2xdV)uN38u9@1= zB?Ky;f7v<{Jq4D6nHY%t#PaIHlESRTKxBs9EJyH?GUyWrjW(Y}mDsRSpWYy5(67Gj zV!OW7xmm5g8r_sJ6B&04_LWRv9aqQ&w(Hl0quyKMvH#Nh!dJIk;hbs-ZPgR6Les$m zT(W35lhX*BxbtRTi zOruHN1E8FslNSr`p-PguybRpV%i+il3wQ?nePYjK)VAXoaKBcJC2h!A*DPcl<^JO1 zHgt7Da8RbVrxqHIm_hKf>6UAA4j&cxl-$S6OWq+h*~LXtvpHf9xdFWPOH%6H?OrxFg(7=&V(S`rhKIMV&AQ_gN{imQ z=4C*B%s{>~xma1y!Ml}NZgZK$n@Wqk=7!z)4w^SsB6^}YonjT(09q8|0e`tcl9H|w z<;ZLdJH{x%ky0=^oXW+)8O2b?!SgV$C(yZ!Q@V_i3E9sB3J}t9<_B^fU5pha7>>5C zZIlz_N9ouNS4tZE5rT=2cW3gQE}(a_ROxUwVoo8*NLPoM5Pv+c&Ke{MaqlOFX5XSc z>o;+!p z)Lm9;Ai9aF7raGt7d&ek_?+sOY|OUYc!*p$z~$l$`4|I#6mfGo)^2-_HDWXk-7Up> zfG}LVY#T0t5R;qsQbcSxnkADi z(>Ll@w}l4+vvCu};>gUlEbo_W)XwGZ@G5Nw?7d5}-p(0N>rG^Lltb`2=7Xfh*IPkAXoH304 z|2z0da(htog!XkxX)vBo5x?nfe8Tv)>Ix@iqqc|iiR0VrVtD&j9>3+h(&#i#CTB<1 zqIW+uO%loH`j0{;`P>eDl1kolz|jFffBUr|C&(Y?EK#16^6fRfn#b^2h$~;6^m03r z6Yv^{yiKr(GWi&Ovn|EEwce^UT3!1a^@vo6-IiHtq=<)X!+2Ld`Lf$CEk3*ErFaO=Lo4cZo8_MePWNlizs4eS z&aV`O{B@t9{~Fz#quUh6=qNT4<)mc1Rd2Z%oWzk z|96W2(x_2WCOaIU_#%JTLg#jCnPsy#@yC70InwFBGbv-0?Q`i, 2001. +# +msgid "" +msgstr "" +"Project-Id-Version: diffutils 2.8\n" +"POT-Creation-Date: 2002-04-05 14:10-0800\n" +"PO-Revision-Date: 2002-04-03 07:35EET\n" +"Last-Translator: Deniz Akkus Kanca \n" +"Language-Team: Turkish \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 0.9.5\n" + +#: lib/c-stack.c:188 +msgid "program error" +msgstr "yazılım hatası" + +#: lib/c-stack.c:189 +msgid "stack overflow" +msgstr "yığıt taÅŸması" + +#: lib/error.c:128 lib/error.c:156 +msgid "Unknown system error" +msgstr "Bilinmeyen sistem hatası" + +#: lib/freesoft.c:27 +msgid "" +"This program comes with NO WARRANTY, to the extent permitted by law.\n" +"You may redistribute copies of this program\n" +"under the terms of the GNU General Public License.\n" +"For more information about these matters, see the file named COPYING." +msgstr "" +"Bu yazılım, kanunun izin verdiÄŸi ölçüde, HİÇ BÄ°R GARANTÄ° içermez.\n" +"Bu yazılımın kopyalarını GNU Genel Kamu Lisansı'nın koÅŸulları altında\n" +"dağıtabilirsiniz. Bu konular ile ilgili daha fazla bilgi için lütfen " +"COPYING\n" +"adındaki dosyaya bakın." + +#: lib/getopt.c:693 +#, c-format +msgid "%s: option `%s' is ambiguous\n" +msgstr "%s: `%s' seçeneÄŸi belirsiz\n" + +#: lib/getopt.c:718 +#, 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:723 +#, c-format +msgid "%s: option `%c%s' doesn't allow an argument\n" +msgstr "%s: seçenek `%c%s' argümansız kullanılır\n" + +#: lib/getopt.c:741 lib/getopt.c:914 +#, 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:770 +#, c-format +msgid "%s: unrecognized option `--%s'\n" +msgstr "%s: `--%s' seçeneÄŸi bilinmiyor\n" + +#: lib/getopt.c:774 +#, c-format +msgid "%s: unrecognized option `%c%s'\n" +msgstr "%s: `%c%s' seçeneÄŸi bilinmiyor\n" + +#: lib/getopt.c:800 +#, c-format +msgid "%s: illegal option -- %c\n" +msgstr "%s: kuraldışı seçenek -- %c\n" + +#: lib/getopt.c:803 +#, c-format +msgid "%s: invalid option -- %c\n" +msgstr "%s: geçersiz seçenek -- %c\n" + +#: lib/getopt.c:833 lib/getopt.c:963 +#, 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:880 +#, c-format +msgid "%s: option `-W %s' is ambiguous\n" +msgstr "%s: `-W %s' seçeneÄŸi belirsiz\n" + +#: lib/getopt.c:898 +#, 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/regex.c:1367 +msgid "Success" +msgstr "BaÅŸarılı" + +#: lib/regex.c:1370 +msgid "No match" +msgstr "EÅŸleme yok" + +#: lib/regex.c:1373 +msgid "Invalid regular expression" +msgstr "Düzenli ifade geçersiz" + +#: lib/regex.c:1376 +msgid "Invalid collation character" +msgstr "Harmanlama karakteri geçersiz" + +#: lib/regex.c:1379 +msgid "Invalid character class name" +msgstr "Karakter sınıf ismi geçersiz" + +#: lib/regex.c:1382 +msgid "Trailing backslash" +msgstr "Ä°zleyen ters kesme" + +#: lib/regex.c:1385 +msgid "Invalid back reference" +msgstr "Geriye baÅŸvuru geçersiz" + +#: lib/regex.c:1388 +msgid "Unmatched [ or [^" +msgstr "[ ya da [^ eÅŸleÅŸmiyor" + +#: lib/regex.c:1391 +msgid "Unmatched ( or \\(" +msgstr "( ya da \\( eÅŸleÅŸmiyor" + +#: lib/regex.c:1394 +msgid "Unmatched \\{" +msgstr "\\{ eÅŸleÅŸmiyor" + +#: lib/regex.c:1397 +msgid "Invalid content of \\{\\}" +msgstr "\\{\\} içeriÄŸi geçersiz" + +#: lib/regex.c:1400 +msgid "Invalid range end" +msgstr "Kapsam sonu geçersiz" + +#: lib/regex.c:1403 +msgid "Memory exhausted" +msgstr "Bellek tükendi" + +#: lib/regex.c:1406 +msgid "Invalid preceding regular expression" +msgstr "Önceki düzenli ifade geçersiz" + +#: lib/regex.c:1409 +msgid "Premature end of regular expression" +msgstr "Düzenli ifadenin sonu eksik kalmış" + +#: lib/regex.c:1412 +msgid "Regular expression too big" +msgstr "Düzenli ifade çok büyük" + +#: lib/regex.c:1415 +msgid "Unmatched ) or \\)" +msgstr ") ya da \\) eÅŸleÅŸmiyor" + +#: lib/regex.c:8034 +msgid "No previous regular expression" +msgstr "Daha önce düzenli ifade yok" + +#: lib/xmalloc.c:63 +msgid "memory exhausted" +msgstr "bellek tükendi" + +#: src/analyze.c:809 src/diff.c:1283 +#, c-format +msgid "Files %s and %s differ\n" +msgstr "%s ve %s dosyaları birbirinden farklı\n" + +#: src/analyze.c:812 +#, c-format +msgid "Binary files %s and %s differ\n" +msgstr "Ä°kilik dosyalar %s ve %s birbirinden farklı\n" + +#: src/analyze.c:1058 src/diff3.c:1413 src/util.c:526 +msgid "No newline at end of file" +msgstr "Dosya sonunda yenisatır yok." + +#: src/cmp.c:43 +msgid "Written by Torbjorn Granlund and David MacKenzie." +msgstr "Torbjorn Granlund ve David MacKenzie tarafından yazılmıştır." + +#: src/cmp.c:118 src/diff.c:817 src/diff3.c:427 src/sdiff.c:168 +#, c-format +msgid "Try `%s --help' for more information." +msgstr "Daha fazla bilgi için `%s --help' komutunu kullanın." + +#: src/cmp.c:137 +#, c-format +msgid "invalid --ignore-initial value `%s'" +msgstr "geçersiz -- ilk deÄŸer `%s' yoksayılmış" + +#: src/cmp.c:146 +msgid "options -l and -s are incompatible" +msgstr "-l ve -s seçenekleri beraber kullanılamaz" + +#: src/cmp.c:154 src/diff.c:826 src/diff3.c:435 src/sdiff.c:177 +#: src/sdiff.c:313 src/sdiff.c:320 src/sdiff.c:910 src/util.c:194 +#: src/util.c:286 src/util.c:293 +msgid "write failed" +msgstr "yazma baÅŸarısız oldu" + +#: src/cmp.c:156 src/diff.c:828 src/diff.c:1354 src/diff3.c:437 +#: src/sdiff.c:179 +msgid "standard output" +msgstr "standart çıktı" + +#: src/cmp.c:160 +msgid "-b --print-bytes Print differing bytes." +msgstr "-b --print-bytes Bayt farklarını çıktılar." + +#: src/cmp.c:161 +msgid "-i SKIP --ignore-initial=SKIP Skip the first SKIP bytes of input." +msgstr "-i ATLA --ignore-initial=ATLA Girdinin ilk ATLA baytını atlar." + +#: src/cmp.c:162 +msgid "-i SKIP1:SKIP2 --ignore-initial=SKIP1:SKIP2" +msgstr "-i ATLA1:ATLA2 --ignore-initial=ATLA1:ATLA2" + +#: src/cmp.c:163 +msgid "" +" Skip the first SKIP1 bytes of FILE1 and the first SKIP2 bytes of FILE2." +msgstr " DOSYA1'in ilk ATLA1 baytını ve DOSYA2'nin ilk ATLA2 baytını atlar." + +#: src/cmp.c:164 +msgid "-l --verbose Output byte numbers and values of all differing bytes." +msgstr "" +"-l --verbose Bütün farklı baytların numaralarını ve deÄŸerlerini gösterir." + +#: src/cmp.c:165 +msgid "-n LIMIT --bytes=LIMIT Compare at most LIMIT bytes." +msgstr "-n LÄ°MÄ°T --bytes=LÄ°MÄ°T En fazla LÄ°MÄ°T baytı karşılaÅŸtırır." + +#: src/cmp.c:166 +msgid "-s --quiet --silent Output nothing; yield exit status only." +msgstr "" +"-s --quiet --silent Hiç bir ÅŸey çıktılamaz, yalnızca çıkış durumunu " +"bildirir." + +#: src/cmp.c:167 src/diff.c:904 src/diff3.c:455 src/sdiff.c:204 +msgid "-v --version Output version info." +msgstr "-v --version Sürüm bilgisini gösterir." + +#: src/cmp.c:168 src/diff.c:905 src/diff3.c:456 src/sdiff.c:205 +msgid "--help Output this help." +msgstr "--help Bu yardımı gösterir." + +#: src/cmp.c:177 +#, c-format +msgid "Usage: %s [OPTION]... FILE1 [FILE2 [SKIP1 [SKIP2]]]\n" +msgstr "Kullanım: %s [SEÇENEK]... DOSYA1 [DOSYA2 [ATLA1 [ATLA2]]]\n" + +#: src/cmp.c:179 +msgid "Compare two files byte by byte." +msgstr "Ä°ki dosyayı bayt bayt karşılaÅŸtırır." + +#: src/cmp.c:183 +msgid "SKIP1 and SKIP2 are the number of bytes to skip in each file." +msgstr "ATLA1 ve ATLA2 her dosyada atlanacak bayt sayısını gösterir." + +#: src/cmp.c:184 +msgid "" +"SKIP values may be followed by the following multiplicative suffixes:\n" +"kB 1000, K 1024, MB 1,000,000, M 1,048,576,\n" +"GB 1,000,000,000, G 1,073,741,824, and so on for T, P, E, Z, Y." +msgstr "" +"ATLA deÄŸerleri aÅŸağıdaki çarpanlarla sonlanabilir:\n" +"kB 1000, K 1024, MB 1,000,000, M 1,048,576,\n" +"GB 1,000,000,000, G 1,073,741,824, ve T, P, E, Z, Y için devam eder." + +#: src/cmp.c:187 +msgid "If a FILE is `-' or missing, read standard input." +msgstr "EÄŸer DOSYA `-' ise veya yoksa, standart girdi okunur." + +#: src/cmp.c:188 src/diff.c:911 src/diff3.c:475 src/sdiff.c:223 +msgid "Report bugs to ." +msgstr "" +"Yazılım hatalarını adresine, \n" +"çeviri hatalarını adresine bildirin." + +#: src/cmp.c:231 +#, c-format +msgid "invalid --bytes value `%s'" +msgstr "geçersiz --bytes deÄŸeri `%s'" + +#: src/cmp.c:258 src/diff.c:734 src/diff3.c:333 src/sdiff.c:558 +#, c-format +msgid "missing operand after `%s'" +msgstr "`%s'den sonra iÅŸlenen eksik" + +#: src/cmp.c:270 src/diff.c:736 src/diff3.c:335 src/sdiff.c:560 +#, c-format +msgid "extra operand `%s'" +msgstr "fazla iÅŸlenen `%s'" + +#: src/cmp.c:477 +#, c-format +msgid "%s %s differ: byte %s, line %s\n" +msgstr "%s %s farklı: bayt %s, satır %s\n" + +#: src/cmp.c:495 +#, c-format +msgid "%s %s differ: byte %s, line %s is %3o %s %3o %s\n" +msgstr "%s %s farklı: bayt %s, satır %s: %3o %s %3o %s\n" + +#: src/cmp.c:543 +#, c-format +msgid "cmp: EOF on %s\n" +msgstr "cmp: %s'da EOF (dosyasonu)\n" + +#: src/diff.c:41 +msgid "" +"Written by Paul Eggert, Mike Haertel, David Hayes,\n" +"Richard Stallman, and Len Tower." +msgstr "" +"Paul Eggert, Mike Haertel, David Hayes, Richard Stallman, ve Len Tower\n" +"tarafından yazılmıştır." + +#: src/diff.c:322 +#, c-format +msgid "invalid context length `%s'" +msgstr "`%s' içerik uzunluÄŸu geçersiz" + +#: src/diff.c:405 +msgid "pagination not supported on this host" +msgstr "sayfalama bu makina üzerinde desteklenmiyor" + +#: src/diff.c:420 src/diff3.c:315 +msgid "too many file label options" +msgstr "çok fazla dosya etiket seçeneÄŸi" + +#: src/diff.c:498 +#, c-format +msgid "invalid width `%s'" +msgstr "geçersiz geniÅŸlik `%s'" + +#: src/diff.c:502 +msgid "conflicting width options" +msgstr "çeliÅŸkili geniÅŸlik seçenekleri" + +#: src/diff.c:526 +#, c-format +msgid "invalid horizon length `%s'" +msgstr "geçersiz ufuk uzunluÄŸu `%s'" + +#: src/diff.c:629 +#, c-format +msgid "`-%ld' option is obsolete; use `-%c %ld'" +msgstr "`-%ld' seçeneÄŸi kullanımdan kalktı; `-%c %ld' kullanın" + +#: src/diff.c:641 +#, c-format +msgid "`-%ld' option is obsolete; omit it" +msgstr "`-%ld' seçeneÄŸi kullanımdan kalktı; kullanmayın" + +#: src/diff.c:709 +msgid "--from-file and --to-file both specified" +msgstr "hem --from-file hem de --to-file belirtilmiÅŸ" + +#: src/diff.c:832 +msgid "Compare files line by line." +msgstr "Dosyaları satır satır karşılaÅŸtırır." + +#: src/diff.c:834 +msgid "-i --ignore-case Ignore case differences in file contents." +msgstr "" +"-i --ignore-case Dosya içeriÄŸinde büyük/küçük harf farklarını yoksayar." + +#: src/diff.c:835 +msgid "--ignore-file-name-case Ignore case when comparing file names." +msgstr "" +"--ignore-file-name-case Dosya isimlerinde büyük/küçük harf farklarını " +"yoksayar." + +#: src/diff.c:836 +msgid "--no-ignore-file-name-case Consider case when comparing file names." +msgstr "" +"--no-ignore-file-name-case Dosya isimlerinde büyük/küçük harf farkı gözetir." + +#: src/diff.c:837 src/sdiff.c:186 +msgid "-E --ignore-tab-expansion Ignore changes due to tab expansion." +msgstr "" +"-E --ignore-tab-expansion Sekmelerin açılmasından doÄŸan farkları yoksayar." + +#: src/diff.c:838 src/sdiff.c:187 +msgid "-b --ignore-space-change Ignore changes in the amount of white space." +msgstr "" +"-b --ignore-space-change BoÅŸluk miktarındaki deÄŸiÅŸiklikleri yoksayar." + +#: src/diff.c:839 +msgid "-w --ignore-all-space Ignore all white space." +msgstr "-w --ignore-all-space Bütün boÅŸlukları yoksayar." + +#: src/diff.c:840 src/sdiff.c:189 +msgid "-B --ignore-blank-lines Ignore changes whose lines are all blank." +msgstr "" +"-B --ignore-blank-lines Satırları boÅŸ olan deÄŸiÅŸiklikleri dikkate almaz." + +#: src/diff.c:841 src/sdiff.c:190 +msgid "" +"-I RE --ignore-matching-lines=RE Ignore changes whose lines all match RE." +msgstr "" +"-I DÃœZÄ°F --ignore-matching-lines=DÃœZÄ°F Satırları DÃœZÄ°F kalıbına uyan\n" +" farkları yok sayar." + +#: src/diff.c:842 src/sdiff.c:191 +msgid "--strip-trailing-cr Strip trailing carriage return on input." +msgstr "--strip-trailing-cr Girdiden en sonda sarkan satır başını soyar." + +#: src/diff.c:844 +msgid "--binary Read and write data in binary mode." +msgstr "--binary Datayı ikilik kipte yazar ve okur." + +#: src/diff.c:846 src/diff3.c:451 src/sdiff.c:192 +msgid "-a --text Treat all files as text." +msgstr "-a --text Bütün dosyaları metin imiÅŸcesine iÅŸler." + +#: src/diff.c:848 +msgid "" +"-c -C NUM --context[=NUM] Output NUM (default 3) lines of copied " +"context.\n" +"-u -U NUM --unified[=NUM] Output NUM (default 3) lines of unified " +"context.\n" +" --label LABEL Use LABEL instead of file name.\n" +" -p --show-c-function Show which C function each change is in.\n" +" -F RE --show-function-line=RE Show the most recent line matching RE." +msgstr "" +"-c -C SAYI --context[=SAYI] SAYI kadar baÄŸlam satırı kopyalar (öntanımlı " +"3)\n" +"-u -U SAYI --unified[=SAYI] SAYI kadar birleÅŸmiÅŸ baÄŸlam satırı kopyalar\n" +" (öntanımlı 3)\n" +" --label ETÄ°KET Dosya adı yerine ETÄ°KET'i kullanır.\n" +" -p --show-c-function Her farkın hangi C iÅŸlevi içinde olduÄŸunu " +"gösterir.\n" +" -F DÃœZÄ°F --show-function-line=DÃœZÄ°F DÃœZÄ°F düzenli ifade kalıbına uygun " +"olan\n" +" en son satırı gösterir." + +#: src/diff.c:853 +msgid "-q --brief Output only whether files differ." +msgstr "-q --brief Yalnızca dosyaların farklı olup olmadığını gösterir." + +#: src/diff.c:854 +msgid "-e --ed Output an ed script." +msgstr "-e --ed Bir ed betiÄŸi çıktılar." + +#: src/diff.c:855 +msgid "--normal Output a normal diff." +msgstr "--normal Normal bir diff çıktılar." + +#: src/diff.c:856 +msgid "-n --rcs Output an RCS format diff." +msgstr "-n --rcs RCS biçeminde diff çıktılar." + +#: src/diff.c:857 +msgid "" +"-y --side-by-side Output in two columns.\n" +" -W NUM --width=NUM Output at most NUM (default 130) print columns.\n" +" --left-column Output only the left column of common lines.\n" +" --suppress-common-lines Do not output common lines." +msgstr "" +"-y --side-by-side Ä°ki sütun halinde çıktı verir.\n" +" -w SAYI --width=SAYI Satır başına en fazla SAYI kadar karakter çıktılar\n" +" (öntanımlı 130).\n" +" --left-column Ortak satırlarda yalnız sol sütunu gösterir.\n" +" --suppress-common-lines Ortak satırları göstermez." + +#: src/diff.c:861 +msgid "-D NAME --ifdef=NAME Output merged file to show `#ifdef NAME' diffs." +msgstr "" +"-D Ä°SÄ°M --ifdef=Ä°SÄ°M #ifdef Ä°SÄ°M farklarını gösteren harmanlanmış\n" +" dosya çıktılar." + +#: src/diff.c:862 +msgid "" +"--GTYPE-group-format=GFMT Similar, but format GTYPE input groups with GFMT." +msgstr "" +"--GTÃœR-group-format=GBÇ Benzer, fakat GTÃœR biçeminde girdi grupları\n" +" GBÇ ile biçemlendirilir." + +#: src/diff.c:863 +msgid "--line-format=LFMT Similar, but format all input lines with LFMT." +msgstr "" +"--line-format=LBÇ Benzer, fakat bütün girdi satırları LBÇ ile " +"biçemlendirilir." + +#: src/diff.c:864 +msgid "" +"--LTYPE-line-format=LFMT Similar, but format LTYPE input lines with LFMT." +msgstr "" +"--LTÃœR-line-format=LBÇ Benzer, fakat LTÃœR girdi satırları \n" +" LBÇ ile biçemlendirilir." + +#: src/diff.c:865 +msgid " LTYPE is `old', `new', or `unchanged'. GTYPE is LTYPE or `changed'." +msgstr "" +" LTÃœR, `old' (eski), `new' (yeni) veya `unchanged' (deÄŸiÅŸmemiÅŸ) olabilir. \n" +" GTÃœR, LTÃœR veya `changed' (deÄŸiÅŸmiÅŸ) olabilir." + +#: src/diff.c:866 +msgid "" +" GFMT may contain:\n" +" %< lines from FILE1\n" +" %> lines from FILE2\n" +" %= lines common to FILE1 and FILE2\n" +" %[-][WIDTH][.[PREC]]{doxX}LETTER printf-style spec for LETTER\n" +" LETTERs are as follows for new group, lower case for old group:\n" +" F first line number\n" +" L last line number\n" +" N number of lines = L-F+1\n" +" E F-1\n" +" M L+1" +msgstr "" +" GBÇ aÅŸağıdakileri içerebilir:\n" +" %< DOSYA1'den satırlar\n" +" %> DOSYA2'den satırlar\n" +" %= DOSYA1 ve DOSYA2'de ortak olan satırlar\n" +" %[-][GENÄ°ÅžLÄ°K][.[KESÄ°NLÄ°K]]{doxX}HARF HARF için printf tarzı biçem\n" +" HARF'ler yeni grup için aÅŸağıdaki gibi, eski grup için ise\n" +" küçük harf olurlar:\n" +" F ilk satır numarası\n" +" L son satır numarası\n" +" N satır sayısı = L-F+1\n" +" E F-1\n" +" M L+1" + +#: src/diff.c:877 +msgid "" +" LFMT may contain:\n" +" %L contents of line\n" +" %l contents of line, excluding any trailing newline\n" +" %[-][WIDTH][.[PREC]]{doxX}n printf-style spec for input line number" +msgstr "" +" LBÇ aÅŸağıdakileri içerebilir:\n" +" %L satırın içeriÄŸi\n" +" %l sonlayan yenisatır karakteri hariç, satırın içeriÄŸi\n" +" %[-][GENÄ°ÅžLÄ°K][.[KESÄ°NLÄ°K]]{doxX}n girdi satır sayısı için printf\n" +" tarzı biçem" + +#: src/diff.c:881 +msgid "" +" Either GFMT or LFMT may contain:\n" +" %% %\n" +" %c'C' the single character C\n" +" %c'\\OOO' the character with octal code OOO" +msgstr "" +" GBÇ veya LBÇ aÅŸağıdakileri içerebilir:\n" +" %% %\n" +" %c'C' tekli karakter C\n" +" %c'\\OOO' Sekizlik kodu OOO olan karakter" + +#: src/diff.c:886 +msgid "-l --paginate Pass the output through `pr' to paginate it." +msgstr "-l --paginate Çıktıyı `pr' komutundan geçirerek sayfalar." + +#: src/diff.c:887 src/sdiff.c:198 +msgid "-t --expand-tabs Expand tabs to spaces in output." +msgstr "-t --expand-tabs Çıktıda sekmeleri boÅŸluk haline getirir." + +#: src/diff.c:888 src/diff3.c:452 +msgid "-T --initial-tab Make tabs line up by prepending a tab." +msgstr "" +"-T --initial-tab BaÅŸlarına bir sekme ilave ederek sekmelerin " +"hizalanmasını\n" +" saÄŸlar." + +#: src/diff.c:890 +msgid "-r --recursive Recursively compare any subdirectories found." +msgstr "" +"-r --recursive Çevrimli olarak bulunan bütün alt dizinleri karşılaÅŸtırır." + +#: src/diff.c:891 +msgid "-N --new-file Treat absent files as empty." +msgstr "-N --new-file Var olmayan dosyaları boÅŸ varsayar." + +#: src/diff.c:892 +msgid "--unidirectional-new-file Treat absent first files as empty." +msgstr "--unidirectional-new-file Var olmayan birinci dosyayı boÅŸ varsayar." + +#: src/diff.c:893 +msgid "-s --report-identical-files Report when two files are the same." +msgstr "" +"-s --report-identical-files iki dosyanın birbirinin aynısı olup " +"olmadığını\n" +" bildirir." + +#: src/diff.c:894 +msgid "-x PAT --exclude=PAT Exclude files that match PAT." +msgstr "-x KALIP --exclude=KALIP KALIP'a uyan dosyaları iÅŸleme dahil etmez." + +#: src/diff.c:895 +msgid "" +"-X FILE --exclude-from=FILE Exclude files that match any pattern in FILE." +msgstr "" +"-X DOSYA --exclude-from=DOSYA DOSYA'da bulunan kalıplara uyan dosyaları\n" +" iÅŸlem dışı tutar." + +#: src/diff.c:896 +msgid "" +"-S FILE --starting-file=FILE Start with FILE when comparing directories." +msgstr "" +"-S DOSYA --starting-file=DOSYA Dizinleri karşılaÅŸtırırken DOSYA'dan baÅŸlar." + +#: src/diff.c:897 +msgid "" +"--from-file=FILE1 Compare FILE1 to all operands. FILE1 can be a directory." +msgstr "" +"--from-file=DOSYA1 DOSYA1'i bütün iÅŸlenenlerle karşılaÅŸtırır. DOSYA1 dizin\n" +" olabilir." + +#: src/diff.c:898 +msgid "" +"--to-file=FILE2 Compare all operands to FILE2. FILE2 can be a directory." +msgstr "" +"--to-file=DOSYA2 Bütün iÅŸlenenleri DOSYA2 ile karşılaÅŸtırı. DOSYA2 dizin\n" +" olabilir." + +#: src/diff.c:900 +msgid "--horizon-lines=NUM Keep NUM lines of the common prefix and suffix." +msgstr "--horizon-lines=SAYI ortak ilkek ve soneklerin SAYI satırını tutar." + +#: src/diff.c:901 src/sdiff.c:200 +msgid "-d --minimal Try hard to find a smaller set of changes." +msgstr "-d --minimal Daha küçük bir fark kümesi bulmaya çalışır." + +#: src/diff.c:902 +msgid "" +"--speed-large-files Assume large files and many scattered small changes." +msgstr "" +"--speed-large-files Büyük dosyalar ve çok sayıda dağınık küçük \n" +" farklar olduÄŸunu farzeder." + +#: src/diff.c:907 +msgid "" +"FILES are `FILE1 FILE2' or `DIR1 DIR2' or `DIR FILE...' or `FILE... DIR'." +msgstr "" +"DOSYAlar: `DOSYA1 DOSYA2' veya `DÄ°ZÄ°N1 DÄ°ZÄ°N2' veya `DÄ°ZÄ°N DOSYA...' \n" +" veya `DOSYA...DÄ°ZÄ°N';" + +#: src/diff.c:908 +msgid "" +"If --from-file or --to-file is given, there are no restrictions on FILES." +msgstr "" +"eÄŸer --from-file veya --to-file kullanılmışsa, DOSYAlar üzerinde \n" +"kısıtlama yoktur." + +#: src/diff.c:909 src/diff3.c:474 src/sdiff.c:222 +msgid "If a FILE is `-', read standard input." +msgstr "EÄŸer bir DOSYA `-' ise, standart girdi okunur." + +#: src/diff.c:920 +#, c-format +msgid "Usage: %s [OPTION]... FILES\n" +msgstr "Kullanım: %s [SEÇENEK]... DOSYAlar\n" + +#: src/diff.c:949 +#, c-format +msgid "conflicting %s option value `%s'" +msgstr "çeliÅŸkili %s seçeneÄŸi deÄŸeri: `%s'" + +#: src/diff.c:962 +msgid "conflicting output style options" +msgstr "çeliÅŸkili çıktı tarz seçenekleri" + +#: src/diff.c:976 +msgid "regular empty file" +msgstr "normal boÅŸ dosya" + +#: src/diff.c:976 +msgid "regular file" +msgstr "normal dosya" + +#: src/diff.c:978 +msgid "directory" +msgstr "dizin" + +#: src/diff.c:981 +msgid "block special file" +msgstr "blok özel dosyası" + +#: src/diff.c:984 +msgid "character special file" +msgstr "karakter özel dosyası" + +#: src/diff.c:987 +msgid "fifo" +msgstr "fifo" + +#: src/diff.c:991 +msgid "socket" +msgstr "soket" + +#: src/diff.c:994 +msgid "message queue" +msgstr "ileti kuyruÄŸu" + +#: src/diff.c:997 +msgid "semaphore" +msgstr "semafor" + +#: src/diff.c:1000 +msgid "shared memory object" +msgstr "ortak bellek nesnesi" + +#: src/diff.c:1003 +msgid "typed memory object" +msgstr "türlenmiÅŸ bellek nesnesi" + +#: src/diff.c:1006 +msgid "weird file" +msgstr "dosya garip" + +#: src/diff.c:1070 src/diff.c:1256 +#, c-format +msgid "Only in %s: %s\n" +msgstr "Yalnızca %s'da: %s\n" + +#: src/diff.c:1193 +msgid "cannot compare `-' to a directory" +msgstr "`-', bir dizinle karşılaÅŸtırılamaz" + +#: src/diff.c:1220 +msgid "-D option not supported with directories" +msgstr "-D seçenek dizinler için kullanılamaz." + +#: src/diff.c:1229 +#, c-format +msgid "Common subdirectories: %s and %s\n" +msgstr "Ortak alt dizinler: %s ve %s\n" + +#: src/diff.c:1266 +#, c-format +msgid "File %s is a %s while file %s is a %s\n" +msgstr "%s dosyası, bir %s, halbuki %s dosyası bir %s\n" + +#: src/diff.c:1345 +#, c-format +msgid "Files %s and %s are identical\n" +msgstr "%s ve %s dosyaları birbirinin aynı\n" + +#: src/diff3.c:26 +msgid "Written by Randy Smith." +msgstr "Randy Smith tarafından yazılmıştır." + +#: src/diff3.c:328 +msgid "incompatible options" +msgstr "uyumsuz seçenekler" + +#: src/diff3.c:368 +msgid "`-' specified for more than one input file" +msgstr "`-' birden fazla girdi dosyası için belirtilmiÅŸ" + +#: src/diff3.c:408 src/diff3.c:1232 src/diff3.c:1645 src/diff3.c:1700 +#: src/sdiff.c:305 src/sdiff.c:879 src/sdiff.c:890 +msgid "read failed" +msgstr "okuma baÅŸarısız oldu" + +#: src/diff3.c:441 +msgid "-e --ed Output unmerged changes from OLDFILE to YOURFILE into MYFILE." +msgstr "" +"-e --ed ESKÄ°DOSYA ile SÄ°ZÄ°NDOSYA arasındaki harmanlanmamış farkları\n" +" BENÄ°MDOSYA'ya çıktılar." + +#: src/diff3.c:442 +msgid "-E --show-overlap Output unmerged changes, bracketing conflicts." +msgstr "" +"-E --show-overlap Harmanlanmamış deÄŸiÅŸiklikleri çıktılar, ihtilafları \n" +" köşeli parantez içinde gösterir." + +#: src/diff3.c:443 +msgid "-A --show-all Output all changes, bracketing conflicts." +msgstr "" +"-A --show-all Bütün deÄŸiÅŸiklikleri çıktılar, ihtilafları köşeli parantez\n" +" içine alır." + +#: src/diff3.c:444 +msgid "-x --overlap-only Output overlapping changes." +msgstr "-x --overlap-only Birbiri ile örtüşen farkları gösterir." + +#: src/diff3.c:445 +msgid "-X Output overlapping changes, bracketing them." +msgstr "" +"-X Birbiriyle örtüşen farkları köşeli parantez içinde göstererek çıktılar." + +#: src/diff3.c:446 +msgid "-3 --easy-only Output unmerged nonoverlapping changes." +msgstr "" +"-3 --easy-only Harmanlanmamış, tekrarlanmayan deÄŸiÅŸiklikleri çıktılar." + +#: src/diff3.c:448 +msgid "-m --merge Output merged file instead of ed script (default -A)." +msgstr "" +"-m --merge Ed betiÄŸi yerine harmanlanmış dosya çıktılar. (öntanımlı -A)" + +#: src/diff3.c:449 +msgid "-L LABEL --label=LABEL Use LABEL instead of file name." +msgstr "-L ETÄ°KET --label=ETÄ°KET Dosya adı yerine ETÄ°KET'i kullanır." + +#: src/diff3.c:450 +msgid "-i Append `w' and `q' commands to ed scripts." +msgstr "-i Ed betiklerinin sonuna `w' ve `q' komutlarını ekler." + +#: src/diff3.c:453 src/sdiff.c:202 +msgid "--diff-program=PROGRAM Use PROGRAM to compare files." +msgstr "" +"--diff-program=YAZILIM Dosyaları karşılaÅŸtırmak için YAZILIM'ı kullanır." + +#: src/diff3.c:465 +#, c-format +msgid "Usage: %s [OPTION]... MYFILE OLDFILE YOURFILE\n" +msgstr "Kullanım: %s [SEÇENEK]... BENÄ°MDOSYA ESKÄ°DOSYA SÄ°ZÄ°NDOSYA\n" + +#: src/diff3.c:467 +msgid "Compare three files line by line." +msgstr "Üç dosyayı satır satır karşılaÅŸtırır." + +#: src/diff3.c:673 +msgid "internal error: screwup in format of diff blocks" +msgstr "iç hata: diff blokları biçemlemesinde hata oluÅŸtu" + +#: src/diff3.c:971 +#, c-format +msgid "%s: diff failed: " +msgstr "%s: diff baÅŸarısız oldu:" + +#: src/diff3.c:993 +msgid "internal error: invalid diff type in process_diff" +msgstr "iç hata: process_diff iÅŸlevi içinde geçersiz diff türü" + +#: src/diff3.c:1018 +msgid "invalid diff format; invalid change separator" +msgstr "geçersiz diff biçemi; geçersiz fark ayracı" + +#: src/diff3.c:1242 +msgid "invalid diff format; incomplete last line" +msgstr "geçersiz diff biçemi; tamamlanmamış son satır" + +#: src/diff3.c:1265 src/sdiff.c:273 +#, c-format +msgid "subsidiary program `%s' not executable" +msgstr "alt yazılım `%s' çalışır deÄŸil" + +#: src/diff3.c:1268 src/sdiff.c:276 src/util.c:298 +#, c-format +msgid "subsidiary program `%s' not found" +msgstr "alt yazılım `%s' bulunamadı" + +#: src/diff3.c:1272 src/sdiff.c:268 src/util.c:301 +#, c-format +msgid "subsidiary program `%s' failed" +msgstr "alt yazılım `%s' baÅŸarısız oldu" + +#: src/diff3.c:1294 +msgid "invalid diff format; incorrect leading line chars" +msgstr "geçersiz diff biçemi; geçersiz satır başı karakterleri" + +#: src/diff3.c:1370 +msgid "internal error: invalid diff type passed to output" +msgstr "iç hata: çıktıya geçersiz diff türü geçirildi" + +#: src/diff3.c:1647 src/diff3.c:1704 +msgid "input file shrank" +msgstr "girdi dosyası küçüldü" + +#: src/dir.c:162 +#, c-format +msgid "cannot compare file names `%s' and `%s'" +msgstr "dosya isimleri `%s' ve `%s' karşılaÅŸtırılamıyor" + +#: src/sdiff.c:35 +msgid "Written by Thomas Lord." +msgstr "Thomas Lord tarafından yazılmıştır." + +#: src/sdiff.c:183 +msgid "-o FILE --output=FILE Operate interactively, sending output to FILE." +msgstr "" +"-o DOSYA --output=DOSYA Interaktif olarak çalışır, çıktıyı DOSYA'ya\n" +" yönlendirir." + +#: src/sdiff.c:185 +msgid "-i --ignore-case Consider upper- and lower-case to be the same." +msgstr "-i --ignore-case Büyük harf/küçük harf farkı gözetmez." + +#: src/sdiff.c:188 +msgid "-W --ignore-all-space Ignore all white space." +msgstr "-W --ignore-all-space Bütün boÅŸlukları yok sayar." + +#: src/sdiff.c:194 +msgid "-w NUM --width=NUM Output at most NUM (default 130) columns per line." +msgstr "" +"-w SAYI --width=SAYI Satır başına en fazla SAYI kadar karakter çıktılar\n" +" (öntanımlı 130)." + +#: src/sdiff.c:195 +msgid "-l --left-column Output only the left column of common lines." +msgstr "-l --left-column Ortak satırları yalnızca sol sütunda çıktılar." + +#: src/sdiff.c:196 +msgid "-s --suppress-common-lines Do not output common lines." +msgstr "-s --suppress-common-lines Ortak satırları göstermez." + +#: src/sdiff.c:201 +msgid "" +"-H --speed-large-files Assume large files and many scattered small changes." +msgstr "" +"-H --speed-large-files Büyük dosyalar ve çok sayıda dağınık küçük \n" +" farklar olduÄŸunu farzeder." + +#: src/sdiff.c:214 +#, c-format +msgid "Usage: %s [OPTION]... FILE1 FILE2\n" +msgstr "Kullanım: %s [SEÇENEK]... DOSYA1 DOSYA2\n" + +#: src/sdiff.c:215 +msgid "Side-by-side merge of file differences." +msgstr "Dosya farklarının yanyana katıştırılması." + +#: src/sdiff.c:327 +msgid "cannot interactively merge standard input" +msgstr "interaktif olarak standart girdi harmanlanamaz" + +#: src/sdiff.c:588 +msgid "both files to be compared are directories" +msgstr "karşılaÅŸtırılacak her iki dosya da dizin" + +#: src/sdiff.c:853 +msgid "" +"ed:\tEdit then use both versions, each decorated with a header.\n" +"eb:\tEdit then use both versions.\n" +"el:\tEdit then use the left version.\n" +"er:\tEdit then use the right version.\n" +"e:\tEdit a new version.\n" +"l:\tUse the left version.\n" +"r:\tUse the right version.\n" +"s:\tSilently include common lines.\n" +"v:\tVerbosely include common lines.\n" +"q:\tQuit.\n" +msgstr "" +"ed:\tDüzenler, sonra iki tarafı da kullanır, bir baÅŸlıkla süsler.\n" +"eb:\tDüzenler, sonra iki tarafı da kullanır.\n" +"el:\tDüzenler, sonra sol tarafı kullanır.\n" +"er:\tDüzenler, sonra saÄŸ tarafı kullanır.\n" +"e:\tYeni bir sürüm düzenler.\n" +"l:\tSol tarafı kullanır.\n" +"r:\tSaÄŸ tarafı kullanır.\n" +"s:\tOrtak satırları sessizce dahil eder.\n" +"v:\tOrtak satırları bilgi vererek dahil eder.\n" +"q:\tÇıkar.\n" diff --git a/src/apps/bin/diffutils-2.8.1/po/zh_TW.gmo b/src/apps/bin/diffutils-2.8.1/po/zh_TW.gmo new file mode 100644 index 0000000000000000000000000000000000000000..c09ca46a5770dff3b94c400b81d8054c1665045a GIT binary patch literal 21489 zcmb`O4}4rlb?+|)S|a|Wgd_wg%_QJ|iB^{6BsQ|;Sdt~#v1G}T9NRbsucRw! z=HA`aA1CDV_M`Fd-uZK8=FB-~&dfdj)a$PLu48_Ofj@AZ*FOaQ%yHfrHQ85|gMZ{W zS5`RAYX-mx-uFAsTW<&~%;CDf0O8AZ{|eIoJFW&-fzXhC-T^P2X7CH(I>&kEl^}H9xfNti@BAc4Kkt-s z=)UVs;9?M(!q<200%`ZIVeq}+^I#)OcOAG0+|D}P3H~MTw14;a!9V2hT_E-TunMdJ zKMJk@g}-G?`86Qpzn(s19M`8n_;Y;*q~7&Hr=BH&mdrzSgY!Tc2mDqtU&eUDYeDGU zz#N>F;E=^*ApPF(3y}HV$k?1EU;=y(=z+}h#;<^k^Trp=`+MlixrHiH?-D5eF^2bk z0=xkn2btS@AGPm423fy(Zw6Vvc_DBb#S-{OcgHJ)bsGZ~g|5HJ!g3 zL?7n=H3A(K16~RK3CMgG zdT?}G4Q86a}B44Tq@*(#9nF57HT=-k2k-&p)M2;bkw z9Ay#TC-so0_x(B849fTz`}_W{!77Q7mxFnGkg*Iox=S88P(9|rru z+rXb1tYfZXPwQlTYQcX5OF>x&ba1uEBmJ&stTLX}e+<&s>NDVbc)S9v1VbQn>bHZe zZ~ec3OTjN#{1phj2G&UEHN-*MHRM2atl^|C^;B=rqqa`OWZF%9~}q z1-F842BqEg;C)~PDE**+&5wZax%nBe)p6D{H<|x>8JFO_U>W#7Kn0!#=Ygz+%&+D5 zz&C-=7QVC~JJPO&HI(tUYyxitcY#vxGvJk=XY-GM@TcXQAmeTMPmuYxz7{!N0ltBE z_`IRsf#Z>t2EN1NzB zV{RJ)8GoCMi~iak0HNRZFvu9%z5z16w(o(+QQPw%_1b0rl(&nXF|PI-EW$ILzZ|@R z{M9ypJ@~u4%lM^Tr^Ov0^xH)apw<3oAmeTSoW-M{(3kZR{5B}eKU*}$u{A3#4*nJCEu_zrgomuP$g{JG^l6gFoBVDiZ6ztv zMw0*g1N$%l#z@;p|4gbQHIQ;7B_gv^LN(?40ezq8MOYq1di zgqNFa#+~42NFO8pHR*oRXGtF?75)zLvWfKHZDtKvVV|48#iTW)r8e&_u-86|%%n+O zq&89`Nq)ly#NIl4Nuqo5`y}b3q;7e!zpE_1A8he6E#3}}P0RZi-ZzsvNJ~iTNc%|J zNry;r(pu6dNPk9>-y2E&B;;EE#`*V;N$(|z{gU4f1I|alH;_t6F6nh7^voG04Uyz` znDlzmKauVs75+Y8Uq-;cCw-3eH>4X$@(URdpGxel{v|DzgPo)Zsg?9@(gxC-N%KfO zB>9OhUrD-}R7IL3`M*jY7Lh#C6{KaP1*HE*`cqPdlpy5gq zt1p}gccq|F=hwKarKQDI%9jq(k&1Vv!ck~PJ9#g5fX{N%lZvABIZ4GVPx@qm|jy2o1mThfqtFPO(?cVPA z?#&-+s_*EiZ&PX@5s9UGLdnz+lS>Y`U8+a;qDysG%DyC3IN_==V~j_m@j=0ain)WT zHxW+{lq&LIN>@1P>XLZ0+mslV3R@eL>WL(hDLq#eOZRuW3EKsoFrn}qW$Tr#t>QhF zQPrv`)Nr%mlF+V)d?^3g48fZ#9R8hsf$2?F+>ND@K25{d=*)srXpgMs+op!GCDRFk0Y^xbP+FPxE)(s>s2JFw!^;#rD{8U0C0MHI)-q?dfn~? zWyq0V&oq$opcFFgJ0b&GXbr#H*R5@>P@O|5Bn%E}`O<wW8RXukT4((sx&#(0}tKqDy4HG(Wu*tqQnPM5o9?OQuDe@ z-AHU#I2!4mrNq|VKCf$Da)IiOyUEyslnRSzGBsqiH{H+j8Ztp;sxqi>e`lmO9Z%~S zRQbfW3!#L&GaX65r#WeaLcc|ap-s&G6%WtWo^yn=4X%(|=~%+;iucAM_qYMe41)|C zW-ZtADRDv}EmI+_%^`HVKb)%8W>U3B`XkYBqEvMvucpKoKrO<$Nm6NxCoRe#rsXmu zg5uNCnm8*hEA)XnSW?nJNOeYH;lz+qZEm<*OYLAHl5$mdI2Bfrn6kzF7+I+;!WtS# z#CsFr{_57Ymd3UkjKM~%lK+CK#AptPHS0kLlhR7;Zb;sA2cb|ZZr(cMSaGq6k)DX# zU0AW&XpyS3q|7U{5kVx%O<;(VXsXHYLYz7wj_|WYsd!>YdhK(g14^}|Q(_2GeXP6W z=#qFMa!)*_8JMhIzmX}dbKL~mw58)DHk2c)WI$}3wvnQz{dOMpHNNBH_Y*MM3WD@mfM{*zaUlIK}>riXjS zo^djjhzx{$10U*2U`iz`Z}Ypti9{p}(S(~yCt?b7r6(`rutK9Hqf!NuQ791pK3!=g zqmpHqO)}E4h>;ZRVK^FM7clauIudReGuN5Kwpr7yg;+Lbw|^ida6ZE6&Lu0jCU(?J!4xyfIx2M{?*}>bP zYXL>cWRPn6dvrzJ3>%9y$WT`M_B<9(sbqR!Af8AuX>FZ+?TffcCuF)ZI+6-^hTPo) zVPujOoj&UBv?~ioC0qepiJmk8%`VH%fMo%zEpO-K+ZxUB|6lUER<#vQ3Jc!V$4Xf% zB4xhr&$b*ag>C^6CfB5zYHI88lR{`#ryH%duVP8fVmG!j3%&cew$tMEnQ)WXI9@)ZZMe^DJsqwA5JWe%(M1 zpYa(_5;MhqV<%a!olD1Not*{I> zj(XG~BZ$GItXv9R*+s(r@ig{?l`NjArlU^?A>%!&Ryi(Mk5G(&&ZfsMdaTpi6FqC! zdUtB8Y+Ty{X35^Q5XBCsqbapyQGOrmiVv{48i$0G3%U*WyNUTgKG+0&C=E1M4 z6|q|MP?HkQ_s2Q&;1Y;A7qe*AUO20@uv-Swk5uaoumd-U<7c-Rqn-!{y|CHB*hQ1B zUOv07EC>ROxY6DkP_`M~l3na(A|ca@r&}y@5^ZT(ttFTKwzO<))6cAbTs3czXXr$v z8*BKDdl78xm|iy#()+GH8yfe6#yCPU^(21AtQ34B6~@$A}r%2o{;Zrba*&8BCjzR@Pw)UdhWY2PJ${&gRZQjtRsFEh^^1L$fK+QZ$)so% z_kBjr-o1Tl`#@rWOg5+)ku}zh+2}iE&-FVNg|(+?IplOJ4p?d9Pl}~8{4Uh&ewl*a zeghhXn{mM|5U@J0=AoKJ41{TiLWwT?vb-?1)wTO)3G2tjRMXn#wc3npt5R)WeGgj< zqiBoC_6?7@_mB<@PpnmK5f7Z1BCR~2z`NY&P$_C+Oux@R)0!df6bhY*h}#nkQZEr( z4*X773v0MTbsR%x?e z9rgE_gWn>%_Hs28ak)fscSrDJQsGn@ryqaLZ_Yl3XA{DQj-?`9?0IGrU?`Gr_R7?t z7z(}Ta@r|SIz0e!jyUQjkxjWn@?EyoaXdtnWT8_p9uX!lseXqyplb5Q0YTaC^Q)9PW71+lBMj+Nzr~& zv7~&FRkNf*Hng#&-`&!$-NuXETentM%)gdpM;u!UvaC?snNlH3n-f z`!8!`^gpS0j!my-W_ph$j%--%`VMouJXUCjs&aw8 zTU))htwQln{#BQjm6e%tz1fwONtFdql6wNiE%!8nxCCU#ybE$mbTxf{Ch8&6LAYe&)-LIwHKT$rN>_EO{`ROS#D!Vu{i#N99*@RA~r&gy}itVQdmDryX_%8 zmHtRlF0xB$gX@l2iFJ!ZVK=wwE#|6bZ{<2U3qpv?LD`_4wKf|k#9oniaiyD7a-onf za<$8zaC_4n>g5Bl{j^)_*e9p|u z&2B$;FEsB9r#ZcJJL}`deB|BPyx8OVt)L z;tE~GxK1LxGEDO!K-jJKbiIkl{WUz*zO^V8tqaYkaYyU|75a$OOLyTbCY=tsPP6xb zvL(CrW@>$l+EmllRsJXlt;C7wn+hFJFQh^QDB zpmOELam8N1<@+dMXJ=axa(Ep5!3AC8`i-j5jp2kuRcpGFHBe0v-2J3mR?+~IkVo-S z%(bdqK7>2jIE4;Q8-fHeZrqa?Jt3`)jObIhs%vT8vUYuAnbYBaj}UcCqH%p>4XN#z z9CO9EK(EI1j>?>ku^qAaASQVTRp?i4A`wrJsZXDDuux3nT?-3x7U`Tt1vy(KXX^(F za_+j<*_h;lOk4J?Ev+4ETh?#GkZMC@jc&KRJ`4F5TnJyhGZ~M%DR;Sw)0c{*E>|UuL_wiT2@xtT z$lq+|C4>tIxz!Yzlv`;LIHxlj$I$C*aHQB|$;G%lX)A^CLB(YAX5h$kfzRu3!71*f zEoT7wq*8DbKD|aD<7`^;@kES@JoxpBTzX|pLGecB1Y1k-pu749s#JYTgBU0=)f^=C z4W^h#w8efU(ni(xSWv;Zvuv62q104O7E#ciXi(y_V94P!*A?~MtPTnsQ?dy9tAcfa zQEqMJy7_V=Cl-5C8RkZ2HM+5IRY*2Vj9!b!rBXu! zBI~kM$iDGG$$SMZ25@XxD>e`#7c-i0)8YL%2pv2mmXp-IAMz&DijdMUXI8fTl{H&4D<1g+XcsW8O&~|y=3#P+6nwP`OIRh zpr55pViLb^fQh6o;b~f?OyWypi#D=;+N}OgnT=sA)Ca=Z=w_?Qch=XE8K6v^g z5zg4}<<4BiG9h<2mk=DoG1!-@rtcseaX0nXFl}wk{itu$L?xz=e$b7u_33$<&##s# zt%+O^vb?-9RDMgS{8m+Q zOI1aAsC-$uR1CG@X$zU6dP_nTOH}!7Rpqzctm`!qDH6i(iQ(=bW>u<&FBGb-&rKt& zEBeFT-SOU42yJ?|c*|vdJ64u7A(?4JDb(SH`>UucUr}AP5X*vXro(V_ky>$2Unp8p z9xG^@8eCb@ytcVMKfQ{w@)9mN#bpe2z^W=7zTK(C1JQ6Kwp?z46I{kt*G778%~zA5 za!d-;Cgzr=_yDSwB>&+~$M#j!uo#WmkEZ3{eS{IpOa6hJ++d{rF@D zPc|q?PfX?3Ap02Y9<~3Hml^#@?#W{pS4h!HGo@oc+J8<{QYw4*iC$AA)npP!lcQ6o z&+q?6rY1XZqSw#;;umdhovl4}bp5fN-avMvWwvmd_$2R=Fy!DvGFW(b>DY1Gkq%HY zrIQcu`~EEDeE0G$oj8ZvT&+Ws)S{qi{pEs_iWh|sZpSW4-`T1CHnNCo+PuT&E)V2 zGTz=tGPxiSiTpYfh-50;mJodI!6zBZ-baLh*%O3F9mEf2k2eK!Hu>=Av-(E9LXBVa zp3NRR`1L?+MyG<(%Agby_-XuQ_js+D#)A*ZvuT*Av2T|o)@4SWOF_BrW^7_+WKyP4 z?`gUF4?LD>ghr;3UN(>Jkog=rtnMGQQAwG`!%h1inwcxLGC7Gy%6KeMWFqBlo_OrU zxsgY6kI0xZjkX5mV=dV|dtW@+F*-H9)G$Kc#fkx z&OA2UV&>`3%Z%!9Q*oIY-(_QnU|8dsm%Lw#{2sjzDb%4wqTiFX2k)`rL?VcyV=VLB z5kzVRDIHl9kTT+1M9PmK5+yJA<Mr|8!PT9tJ+lff_Vjm(3Z)LL4-BR( zdp0{dwfAvvQYbIZJ#p$c!>gpDOr5#2G>RtqdYC4Fs9;Lw@$A3np7f57tRCL@KxXfY zrsm9mBB{I3J1zsu?ipSs>#&FsT9;F{`ogFoDj)rcKWA^#)HnB^&+f^dKK0}5-C}5U zC*md+hkKdvyv&lBy&>TJ+%ZGb2XOShX#?;hh3Gc7CU@$g+RK=F|^!oAoef zi5HS_P8^)vCT!1c$ezyL?On{((qDEs1dPL^$d-fkwQWv*Eg}pH>a|# z=1xw1hcQf#8WLlz$xI6w5^5oVc*}MR9bb_tna1fic>` zPto+th6u^1ylrSN9=H19_YUnFn;1Qd5t=qUwtgE)V816>&KQ0caB)t~%oQT^+lcGS z2L|~}K6uvKET(L9YDMnUT^a5&ytQmPUcoEGy{@epE$Q>BqX)Dx3A{M7mFW6$jb)yU-|z4JsOezoAU-Vaxl0mpFaC zki~Nc3+d^J+L_6nIG1}u9IxpzJ~K+l^zJp~HjjP#;IQ}Xv3?{-J6hWu|K{ zFt%1p2GK&oDv`hy^1gE6@xjS$Y6-6OA{!>8&jeH0kd4_N_@P2RtsqwD;l5c|$tOATVs0~P=ije;Pv+xCyox+ojjaGWqkw*DJAN`3pIr5ZuY3$qLspirmM7hy3 zPs1fEFw^3Uf~E)7%fd~#-jkW!K*G!p*Z1`J5t(CgfKkv$tMJHEqYsPS5d$E~f2@CR zbIu!o*f#_x&W(RrXcUGQ`4nV);%@BwzOilI#q6H3mIAhGtDucH0Y*Y4A7P{gSb~eR z-zWMlGca{#k1v{h*z1$+!Uh)kCsAnGn4<|6Zr+$-NHSs}z zTbn(Ah*9BvqG)(a$9^=?k!i@K5AMnRtM`E;Uoza*?dFOc!oeST$~uUvPJ9&y|Ip!P zSqqt)%tyDLBQm5|#J+u$E4i8G26h{o@nIa@d_vRkZ zlcU}oQA5&Tww-ylpdp{QI0Qmoq(LHZGTZddL)=j21Birm*k=hBQf6hR?d}Y2x6-je z!G>-^h5Y_xN0;53n+U0v-^6DL7P4(}Yf$1kgzX%Pi;rX&%&vilGBX-V8cm;+GTW&R zhVmyR?Tdqj{2|JT@A8I2xBYDe!asD&9nAx+{!NYCEGUjSa-lQnt@2t&r;ON_I3o1E zVEQ+SNQq=;JB++e%Py{6pwV)QZkO9j?1DKwWpd_Ztv@=Oo30=lD0tPr86UCb0!(&k zWm?H+Z7S=lEo~VX{8-Dpq^A#AG8K6%ar`nfJ+Z?1yh09m1EY=NVXz>;BLO|KUFwTXsp4dZ z_qn4}`BR3@JlQ?@b2&6i8&hjf?v&h<5H?q%P@}A|wc}H!vMBQX+*MXI{WNMpDhR$my@0Mjm++=DS zgKS;WNXgPA1ltg6lc_2B!Z(>_N2azlQ(K>@eSfBQi}D7%<7ZwvaN71?Aqr)JZN^%} z@f6uOdY||n`E5A&1hp|Om=!T9vhPZ@?C=pz7WRPbjpXifyyKIxvp?jxwqxJ_${wG* zYjkRSd>{32#P^K8bRaCu-PdyF@l4%tjZAz0w;ueKni>95V#8mwFdX>hp>K`vJDNOn zaJbRX&(t0J+Q|ziFHAhgC5srB zf?5Q*J14i( zQcY)@Ycu(LrnB@k-0n={6(^IYo*8*coOq|apClq+?r!Q zlI#6U9RVhnZ%vITHH7Qt&>*x%F7mbUlJqGQ5`Os(zyIQLWqXj1bJChNQOPT&Np2#@ z4JeVDlw29P%rA>;iuK|%f!siQorm4=1J)DTHCMf(_Z8LKDfPbiiz6R`Hqs;ZL>9m@ zUx$`(%lV!CY)_iWMy$TDB|G3`xyRHNzOgW1MB6f@PaJ1n+Bar4uAt`8FHN44b!5SH z6_U-^5fA0vVjZv;eofZX)MrJ7d3+>*#;NO8O1Y?Nv6zh?3Y z;P`|8?gS;$L#APDi+qbT7sn#heAi+(_Jk9p5JM!|ENHElC4IaTRi_CEdqm;BPHDG>WH@xQ%G&hXRtX3tJ9cCr_}KDqvp e{^c&oN?G>wnU{k8vwIFT%jXL{MmbmNDf~aduo;^G literal 0 HcmV?d00001 diff --git a/src/apps/bin/diffutils-2.8.1/po/zh_TW.po b/src/apps/bin/diffutils-2.8.1/po/zh_TW.po new file mode 100644 index 0000000000..aff39f9602 --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/po/zh_TW.po @@ -0,0 +1,922 @@ +# traditional Chinese translation for diffutils. +# Copyright (C) 2002 Free Software Foundation, Inc. +# Abel Cheung , 2002. +# +msgid "" +msgstr "" +"Project-Id-Version: diffutils 2.7.10\n" +"POT-Creation-Date: 2002-04-05 14:10-0800\n" +"PO-Revision-Date: 2002-03-13 06:06+0800\n" +"Last-Translator: Abel Cheung \n" +"Language-Team: Chinese (traditional) \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=Big5\n" +"Content-Transfer-Encoding: 8bit\n" + +#: lib/c-stack.c:188 +msgid "program error" +msgstr "µ{¦¡¿ù»~" + +#: lib/c-stack.c:189 +msgid "stack overflow" +msgstr "°ïÅ|·¸¦ì" + +#: lib/error.c:128 lib/error.c:156 +msgid "Unknown system error" +msgstr "¤£©úªº¨t²Î¿ù»~" + +#: lib/freesoft.c:27 +msgid "" +"This program comes with NO WARRANTY, to the extent permitted by law.\n" +"You may redistribute copies of this program\n" +"under the terms of the GNU General Public License.\n" +"For more information about these matters, see the file named COPYING." +msgstr "" +"¦¹³nÅé¦bªk«ß¤¹³\ªº­­«×¤§¤U¤£ªþ±a¥ô¦ó«OÃÒ¡C§A¥i¥H®Ú¾Ú GNU General Public\n" +"License ¤¤ªº±ø´Ú­«·s´²§G¦¹³nÅé¡C¸Ô½Ð½Ð°Ñ¦ÒÀÉ®× COPYING¡C" + +#: lib/getopt.c:693 +#, c-format +msgid "%s: option `%s' is ambiguous\n" +msgstr "%s¡G¿ï¶µ¡¥%s¡¦¬O¤£©ú½Tªº\n" + +#: lib/getopt.c:718 +#, c-format +msgid "%s: option `--%s' doesn't allow an argument\n" +msgstr "%s¡G¿ï¶µ¡¥--%s¡¦¤£¥i°t¦X°Ñ¼Æ¨Ï¥Î\n" + +#: lib/getopt.c:723 +#, c-format +msgid "%s: option `%c%s' doesn't allow an argument\n" +msgstr "%s¡G¿ï¶µ¡¥%c%s¡¦¤£¥i°t¦X°Ñ¼Æ¨Ï¥Î\n" + +#: lib/getopt.c:741 lib/getopt.c:914 +#, c-format +msgid "%s: option `%s' requires an argument\n" +msgstr "%s¡G¿ï¶µ¡¥%s¡¦»Ý­n°Ñ¼Æ\n" + +#: lib/getopt.c:770 +#, c-format +msgid "%s: unrecognized option `--%s'\n" +msgstr "%s¡GµLªkÃѧOªº¿ï¶µ¡¥--%s¡¦\n" + +#: lib/getopt.c:774 +#, c-format +msgid "%s: unrecognized option `%c%s'\n" +msgstr "%s¡GµLªkÃѧOªº¿ï¶µ¡¥%c%s¡¦\n" + +#: lib/getopt.c:800 +#, c-format +msgid "%s: illegal option -- %c\n" +msgstr "%s¡G¤£¦Xªkªº¿ï¶µ ¢w %c\n" + +#: lib/getopt.c:803 +#, c-format +msgid "%s: invalid option -- %c\n" +msgstr "%s¡GµL®Äªº¿ï¶µ ¢w %c\n" + +#: lib/getopt.c:833 lib/getopt.c:963 +#, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "%s¡G¿ï¶µ»Ý­n°Ñ¼Æ ¢w %c\n" + +#: lib/getopt.c:880 +#, c-format +msgid "%s: option `-W %s' is ambiguous\n" +msgstr "%s¡G¿ï¶µ¡¥-W %s¡¦¬O¤£©ú½Tªº\n" + +#: lib/getopt.c:898 +#, c-format +msgid "%s: option `-W %s' doesn't allow an argument\n" +msgstr "%s¡G¿ï¶µ¡¥-W %s¡¦¤£¥i°t¦X°Ñ¼Æ¨Ï¥Î\n" + +#: lib/regex.c:1367 +msgid "Success" +msgstr "¦¨¥\" + +#: lib/regex.c:1370 +msgid "No match" +msgstr "¨S¦³²Å¦Xªº¦r¦ê" + +#: lib/regex.c:1373 +msgid "Invalid regular expression" +msgstr "¤£¥¿½Tªº¥¿³Wªí¥Ü¦¡" + +#: lib/regex.c:1376 +msgid "Invalid collation character" +msgstr "µL®Äªº collation ¦r¤¸" + +#: lib/regex.c:1379 +msgid "Invalid character class name" +msgstr "µL®Äªº¦r¤¸ºØÃþ¦WºÙ" + +#: lib/regex.c:1382 +msgid "Trailing backslash" +msgstr "¥½ºÝ¦³¦h¾lªº¤Ï±×¸¹" + +#: lib/regex.c:1385 +msgid "Invalid back reference" +msgstr "µL®Äªº back reference" + +#: lib/regex.c:1388 +msgid "Unmatched [ or [^" +msgstr "¨S¦³¹ïÀ³ªº [ ©Î [^" + +#: lib/regex.c:1391 +msgid "Unmatched ( or \\(" +msgstr "¨S¦³¹ïÀ³ªº ( ©Î \\(" + +#: lib/regex.c:1394 +msgid "Unmatched \\{" +msgstr "¨S¦³¹ïÀ³ªº \\{" + +#: lib/regex.c:1397 +msgid "Invalid content of \\{\\}" +msgstr "\\{\\} ¤¤ªº¤º®eµL®Ä" + +#: lib/regex.c:1400 +msgid "Invalid range end" +msgstr "½d³ò¥½ºÝ¦r¤¸µL®Ä" + +#: lib/regex.c:1403 +msgid "Memory exhausted" +msgstr "°O¾ÐÅé¯ÓºÉ" + +#: lib/regex.c:1406 +msgid "Invalid preceding regular expression" +msgstr "¤§«eªº¥¿³Wªí¥Ü¦¡µL®Ä" + +#: lib/regex.c:1409 +msgid "Premature end of regular expression" +msgstr "¥¿³Wªí¥Ü¦¡¹L¦­µ²§ô" + +#: lib/regex.c:1412 +msgid "Regular expression too big" +msgstr "¥¿³Wªí¥Ü¦¡¹Lªø" + +#: lib/regex.c:1415 +msgid "Unmatched ) or \\)" +msgstr "¨S¦³¹ïÀ³ªº ) ©Î \\)" + +#: lib/regex.c:8034 +msgid "No previous regular expression" +msgstr "¤§«e¨S¦³¥ô¦ó¥¿³Wªí¥Ü¦¡" + +#: lib/xmalloc.c:63 +msgid "memory exhausted" +msgstr "°O¾ÐÅé¯ÓºÉ" + +#: src/analyze.c:809 src/diff.c:1283 +#, c-format +msgid "Files %s and %s differ\n" +msgstr "ÀÉ®× %s »P %s ¤£¦P\n" + +#: src/analyze.c:812 +#, c-format +msgid "Binary files %s and %s differ\n" +msgstr "¤G¤¸½XÀÉ %s »P %s ¤£¦P\n" + +#: src/analyze.c:1058 src/diff3.c:1413 src/util.c:526 +msgid "No newline at end of file" +msgstr "ÀÉ®×¥½¨S¦³ newline ¦r¤¸" + +#: src/cmp.c:43 +msgid "Written by Torbjorn Granlund and David MacKenzie." +msgstr "¥Ñ Torbjorn Granlund ¤Î David MacKenzie ½s¼g¡C" + +#: src/cmp.c:118 src/diff.c:817 src/diff3.c:427 src/sdiff.c:168 +#, c-format +msgid "Try `%s --help' for more information." +msgstr "½Ð¹Á¸Õ¡¥%s --help¡¦¨ÓÀò¨ú§ó¦h¸ê°T¡C" + +#: src/cmp.c:137 +#, c-format +msgid "invalid --ignore-initial value `%s'" +msgstr "µL®Äªº --ignore-initial ­È¡¥%s¡¦" + +#: src/cmp.c:146 +msgid "options -l and -s are incompatible" +msgstr "-l ©M -s ¿ï¶µ¤£­Ý®e" + +#: src/cmp.c:154 src/diff.c:826 src/diff3.c:435 src/sdiff.c:177 +#: src/sdiff.c:313 src/sdiff.c:320 src/sdiff.c:910 src/util.c:194 +#: src/util.c:286 src/util.c:293 +msgid "write failed" +msgstr "¼g¤J¥¢±Ñ" + +#: src/cmp.c:156 src/diff.c:828 src/diff.c:1354 src/diff3.c:437 +#: src/sdiff.c:179 +msgid "standard output" +msgstr "¼Ð·Ç¿é¥X" + +#: src/cmp.c:160 +msgid "-b --print-bytes Print differing bytes." +msgstr "-b --print-bytes ¦L¥X¬Û²§¦ì¸mªº¦ì¤¸²Õ¡C" + +#: src/cmp.c:161 +msgid "-i SKIP --ignore-initial=SKIP Skip the first SKIP bytes of input." +msgstr "-i SKIP --ignore-initial=SKIP ²¤¹L¿é¤J¸ê®Æªº³Ìªì SKIP ­Ó¦ì¤¸²Õ¡C" + +#: src/cmp.c:162 +msgid "-i SKIP1:SKIP2 --ignore-initial=SKIP1:SKIP2" +msgstr "-i SKIP1:SKIP2 --ignore-initial=SKIP1:SKIP2" + +#: src/cmp.c:163 +msgid "" +" Skip the first SKIP1 bytes of FILE1 and the first SKIP2 bytes of FILE2." +msgstr " ²¤¹L FILE1 ªº³Ìªì SKIP1 ­Ó¦ì¤¸²Õ©M FILE2 ªº³Ìªì SKIP2 ­Ó¦ì¤¸²Õ¡C" + +#: src/cmp.c:164 +msgid "-l --verbose Output byte numbers and values of all differing bytes." +msgstr "-l --verbose Åã¥Ü¨âªÌ©Ò¦³¬Û²§ªº¦ì¸m©M¥¦­Ìªº¦ì¤¸²Õ¼Æ­È¡C" + +#: src/cmp.c:165 +msgid "-n LIMIT --bytes=LIMIT Compare at most LIMIT bytes." +msgstr "-n LIMIT --bytes=LIMIT ³Ì¦h¤ñ¸û LIMIT ­Ó¦ì¤¸²Õ¡C" + +#: src/cmp.c:166 +msgid "-s --quiet --silent Output nothing; yield exit status only." +msgstr "-s --quiet --silent ¤£¿é¥X¥ô¦ó¸ê°T¡F¥u²£¥Í¦^¶Ç­È¡C" + +#: src/cmp.c:167 src/diff.c:904 src/diff3.c:455 src/sdiff.c:204 +msgid "-v --version Output version info." +msgstr "-v --version Åã¥Üª©¥»¸ê°T¡C" + +#: src/cmp.c:168 src/diff.c:905 src/diff3.c:456 src/sdiff.c:205 +msgid "--help Output this help." +msgstr "--help Åã¥Ü¦¹¨D§U»¡©ú¡C" + +#: src/cmp.c:177 +#, c-format +msgid "Usage: %s [OPTION]... FILE1 [FILE2 [SKIP1 [SKIP2]]]\n" +msgstr "¥Îªk¡G%s [¿ï¶µ]... ÀÉ®×1 [ÀÉ®×2 [SKIP1 [SKIP2]]]\n" + +#: src/cmp.c:179 +msgid "Compare two files byte by byte." +msgstr "¤ñ¸û¨â­ÓÀɮתº¨C¤@­Ó¦ì¤¸²Õ¡C" + +#: src/cmp.c:183 +msgid "SKIP1 and SKIP2 are the number of bytes to skip in each file." +msgstr "SKIP1 ©M SKIP2 ¬O¨C­ÓÀÉ®×·|²¤¹Lªº¦ì¤¸²Õ¼Æ¥Ø¡C" + +#: src/cmp.c:184 +msgid "" +"SKIP values may be followed by the following multiplicative suffixes:\n" +"kB 1000, K 1024, MB 1,000,000, M 1,048,576,\n" +"GB 1,000,000,000, G 1,073,741,824, and so on for T, P, E, Z, Y." +msgstr "" +"SKIP ­È¥i¥H¥[¤W¥H¤Uªº³æ¦ì¡G\n" +"kB=1000¡BK=1024¡BMB=1000000¡BM=1048576¡BGB=1000000000¡BG=1073741824¡A\n" +"ÁÙ¦³ T¡BP¡BE¡BZ¡BY ¦p¦¹Ãþ±À¡C" + +#: src/cmp.c:187 +msgid "If a FILE is `-' or missing, read standard input." +msgstr "¦pªGÀɮ׬O¡¥-¡¦©Î¨S¦³«ü©w¡A«h¥Ñ¼Ð·Ç¿é¤JŪ¤J¸ê®Æ¡C" + +#: src/cmp.c:188 src/diff.c:911 src/diff3.c:475 src/sdiff.c:223 +msgid "Report bugs to ." +msgstr "½Ð¦V ¦^³ø¿ù»~¡C" + +#: src/cmp.c:231 +#, c-format +msgid "invalid --bytes value `%s'" +msgstr "µL®Äªº --bytes ­È¡¥%s¡¦" + +#: src/cmp.c:258 src/diff.c:734 src/diff3.c:333 src/sdiff.c:558 +#, c-format +msgid "missing operand after `%s'" +msgstr "¡¥%s¡¦«á¯Ê¤Ö¤F°Ñ¼Æ" + +#: src/cmp.c:270 src/diff.c:736 src/diff3.c:335 src/sdiff.c:560 +#, c-format +msgid "extra operand `%s'" +msgstr "¦h¾lªº°Ñ¼Æ¡¥%s¡¦" + +#: src/cmp.c:477 +#, c-format +msgid "%s %s differ: byte %s, line %s\n" +msgstr "%s %s ¤£¦P¡G²Ä %s ¦ì¤¸²Õ¡A²Ä %s ¦æ\n" + +#: src/cmp.c:495 +#, c-format +msgid "%s %s differ: byte %s, line %s is %3o %s %3o %s\n" +msgstr "%s %s ¤£¦P¡G²Ä %s ¦æ¡A²Ä %s ¦ì¤¸²Õ¬° %3o %s %3o %s\n" + +#: src/cmp.c:543 +#, c-format +msgid "cmp: EOF on %s\n" +msgstr "cmp¡G%s ¤wµ²§ô\n" + +#: src/diff.c:41 +msgid "" +"Written by Paul Eggert, Mike Haertel, David Hayes,\n" +"Richard Stallman, and Len Tower." +msgstr "" +"¥Ñ Paul Eggert¡BMike Haertel¡BDavid Hayes¡B\n" +"Richard Stallman ©M Len Tower ½s¼g¡C" + +#: src/diff.c:322 +#, c-format +msgid "invalid context length `%s'" +msgstr "µL®Äªº¤W¤U¤å¦æ¼Æ¡¥%s¡¦" + +#: src/diff.c:405 +msgid "pagination not supported on this host" +msgstr "¦¹¨t²Î¤£¤ä´©¤À­¶" + +#: src/diff.c:420 src/diff3.c:315 +msgid "too many file label options" +msgstr "¤Ó¦h¦³ÃöÀɮ׼лxªº¿ï¶µ" + +#: src/diff.c:498 +#, c-format +msgid "invalid width `%s'" +msgstr "µL®Äªº¼e«×¡¥%s¡¦" + +#: src/diff.c:502 +msgid "conflicting width options" +msgstr "¤¬¬Û©èIJªº¼e«×¿ï¶µ" + +#: src/diff.c:526 +#, c-format +msgid "invalid horizon length `%s'" +msgstr "µL®Äªº¤ô¥­ªø«×¡¥%s¡¦" + +#: src/diff.c:629 +#, c-format +msgid "`-%ld' option is obsolete; use `-%c %ld'" +msgstr "¡¥-%ld¡¦¿ï¶µ¤w¹L®É¡F½Ð¨Ï¥Î¡¥-%c %ld¡¦" + +#: src/diff.c:641 +#, c-format +msgid "`-%ld' option is obsolete; omit it" +msgstr "¡¥-%ld¡¦¿ï¶µ¤w¹L®É¡F·|©¿²¤¦¹¿ï¶µ" + +#: src/diff.c:709 +msgid "--from-file and --to-file both specified" +msgstr "¦P®É«ü©w¤F --from-file ¤Î --to-file ¿ï¶µ" + +#: src/diff.c:832 +msgid "Compare files line by line." +msgstr "¤ñ¸û¨â­ÓÀɮתº¨C¤@¦æ¡C" + +#: src/diff.c:834 +msgid "-i --ignore-case Ignore case differences in file contents." +msgstr "-i --ignore-case ¤£¤À¿ëÀɮפº®e¤¤ªº¤j¤p¼g¡C" + +#: src/diff.c:835 +msgid "--ignore-file-name-case Ignore case when comparing file names." +msgstr "--ignore-file-name-case ·í¤ñ¸ûÀɮצWºÙ®É¤£¤À¿ë¤j¤p¼g¡C" + +#: src/diff.c:836 +msgid "--no-ignore-file-name-case Consider case when comparing file names." +msgstr "--no-ignore-file-name-case ·í¤ñ¸ûÀɮצWºÙ®É·|¤À¿ë¤j¤p¼g¡C" + +#: src/diff.c:837 src/sdiff.c:186 +msgid "-E --ignore-tab-expansion Ignore changes due to tab expansion." +msgstr "-E --ignore-tab-expansion ©¿²¤¦]±N tab Âà´«¬°ªÅ®æ¦Ó³y¦¨ªº®t²§¡C" + +#: src/diff.c:838 src/sdiff.c:187 +msgid "-b --ignore-space-change Ignore changes in the amount of white space." +msgstr "-b --ignore-space-change ©¿²¤¦]ªÅ¥Õ¦r¤¸¼Æ¥Ø¤£¦P¦Ó³y¦¨ªº®t²§¡C" + +#: src/diff.c:839 +msgid "-w --ignore-all-space Ignore all white space." +msgstr "-w --ignore-all-space ©¿²¤©Ò¦³ªÅ¥Õ¦r¤¸¡C" + +#: src/diff.c:840 src/sdiff.c:189 +msgid "-B --ignore-blank-lines Ignore changes whose lines are all blank." +msgstr "-B --ignore-blank-lines ©¿²¤¥ô¦ó¦]ªÅ¦æ¦Ó³y¦¨ªº®t²§¡C" + +#: src/diff.c:841 src/sdiff.c:190 +msgid "" +"-I RE --ignore-matching-lines=RE Ignore changes whose lines all match RE." +msgstr "" +"-I RE --ignore-matching-lines=RE ©¿²¤¥ô¦ó²Å¦X«ü©wªº<¥¿³Wªí¥Ü¦¡>ªº¦a¤è¡C" + +#: src/diff.c:842 src/sdiff.c:191 +msgid "--strip-trailing-cr Strip trailing carriage return on input." +msgstr "--strip-trailing-cr ¥h°£¿é¤J¸ê®Æ¨C¦æ¥½ºÝªº carriage return ¦r¤¸¡C" + +#: src/diff.c:844 +msgid "--binary Read and write data in binary mode." +msgstr "--binary ¥H¤G¤¸½XÀɼҦ¡Åª¼g¸ê®Æ¡C" + +#: src/diff.c:846 src/diff3.c:451 src/sdiff.c:192 +msgid "-a --text Treat all files as text." +msgstr "-a --text ©Ò¦³Àɮ׳£¥H¤å¦rÀɤ覡³B²z¡C" + +#: src/diff.c:848 +msgid "" +"-c -C NUM --context[=NUM] Output NUM (default 3) lines of copied " +"context.\n" +"-u -U NUM --unified[=NUM] Output NUM (default 3) lines of unified " +"context.\n" +" --label LABEL Use LABEL instead of file name.\n" +" -p --show-c-function Show which C function each change is in.\n" +" -F RE --show-function-line=RE Show the most recent line matching RE." +msgstr "" +"-c -C ¦æ¼Æ --context[=¦æ¼Æ] Åã¥Ü«ü©w<¦æ¼Æ>(¹w³] 3 ¦æ)copied ®æ¦¡ªº¤W¤U¤å\n" +"-u -U ¦æ¼Æ --unified[=¦æ¼Æ] Åã¥Ü«ü©w<¦æ¼Æ>(¹w³] 3 ¦æ)unified ®æ¦¡ªº¤W¤U" +"¤å\n" +" --label ¼Ð»x ¨Ï¥Î<¼Ð»x>¥N´ÀÀɮצWºÙ¡C\n" +" -p --show-c-function Åã¥Ü©M¨C­Ó®t²§¦³Ãöªº C ¨ç¦¡¦WºÙ¡C\n" +" -F RE --show-function-line=RE Åã¥Ü³Ì±µªñ¦Ó²Å¦X<¥¿³Wªí¥Ü¦¡>ªº¤@¦æ¡C" + +#: src/diff.c:853 +msgid "-q --brief Output only whether files differ." +msgstr "-q --brief ¥uÅã¥ÜÀɮ׬O§_¤£¦P¡C" + +#: src/diff.c:854 +msgid "-e --ed Output an ed script." +msgstr "-e --ed ¥H ed script ¤è¦¡¿é¥X¡C" + +#: src/diff.c:855 +msgid "--normal Output a normal diff." +msgstr "--normal ¥H¥¿±`ªº diff ¤è¦¡¿é¥X¡C" + +#: src/diff.c:856 +msgid "-n --rcs Output an RCS format diff." +msgstr "-n --rcs ¥H RCS diff ®æ¦¡¿é¥X¡C" + +#: src/diff.c:857 +msgid "" +"-y --side-by-side Output in two columns.\n" +" -W NUM --width=NUM Output at most NUM (default 130) print columns.\n" +" --left-column Output only the left column of common lines.\n" +" --suppress-common-lines Do not output common lines." +msgstr "" +"-y --side-by-side ¥H¨â¦C¨Ã±Æªº¤è¦¡Åã¥Ü¡C\n" +" -W NUM --width=NUM ¨C¦æÅã¥Ü³Ì¦h NUM (¹w³] 130) ­Ó¦r¤¸¡C\n" +" --left-column ·í¦³¨â¦æ¬Û¦P®É¥uÅã¥Ü¥ªÃ䪺¤@¦æ¡C\n" +" --suppress-common-lines ·í¦³¨â¦æ¬Û¦P®É¤£·|Åã¥Ü¡C" + +#: src/diff.c:861 +msgid "-D NAME --ifdef=NAME Output merged file to show `#ifdef NAME' diffs." +msgstr "-D NAME --ifdef=NAME ¿é¥Xªº¸ê®Æ¥H¡¥#ifdef NAME¡¦¤è¦¡¼Ð©ú®t²§¡C" + +#: src/diff.c:862 +msgid "" +"--GTYPE-group-format=GFMT Similar, but format GTYPE input groups with GFMT." +msgstr "" +"--GTYPE-group-format=GFMT ®ÄªGÃþ¦ü¡A¦ý·|¥H GFMT ®æ¦¡³B²z GTYPE ¿é¤J¦æ²Õ¡C" + +#: src/diff.c:863 +msgid "--line-format=LFMT Similar, but format all input lines with LFMT." +msgstr "--line-format=LFMT ®ÄªGÃþ¦ü¡A¦ý·|¥H LFMT ®æ¦¡³B²z¨C¤@¦æ¸ê®Æ¡C" + +#: src/diff.c:864 +msgid "" +"--LTYPE-line-format=LFMT Similar, but format LTYPE input lines with LFMT." +msgstr "" +"--LTYPE-line-format=LFMT ®ÄªGÃþ¦ü¡A¦ý·|¥H LFMT ®æ¦¡³B²z LTYPE ¿é¤J¦æ²Õ¡C" + +#: src/diff.c:865 +msgid " LTYPE is `old', `new', or `unchanged'. GTYPE is LTYPE or `changed'." +msgstr "" +" LTYPE ¥i¥H¬O¡¥old¡¦¡B¡¥new¡¦©Î¡¥unchanged¡¦¡CGTYPE ¥i¥H¬O LTYPE ªº¿ï¾Ü\n" +" ©Î¬O¡¥changed¡¦¡C" + +#: src/diff.c:866 +msgid "" +" GFMT may contain:\n" +" %< lines from FILE1\n" +" %> lines from FILE2\n" +" %= lines common to FILE1 and FILE2\n" +" %[-][WIDTH][.[PREC]]{doxX}LETTER printf-style spec for LETTER\n" +" LETTERs are as follows for new group, lower case for old group:\n" +" F first line number\n" +" L last line number\n" +" N number of lines = L-F+1\n" +" E F-1\n" +" M L+1" +msgstr "" +" GFMT ¥i¥]¬A¡G\n" +" %< ¸Ó²Õ¤¤¨C¦æÄÝ©ó FILE1 ªº®t²§\n" +" %> ¸Ó²Õ¤¤¨C¦æÄÝ©ó FILE2 ªº®t²§\n" +" %= ¸Ó²Õ¤¤¦P®É¦b FILE1 ©M FILE2 ¥X²{ªº¨C¤@¦æ\n" +" %[-][¼e«×][.[ºë½T«×]]{doxX}¦r¤¸ ¥H printf ®æ¦¡ªí¥Ü¸Ó<¦r¤¸>¥Nªíªº¸ê®Æ\n" +" ¤j¼g<¦r¤¸>ªí¥ÜÄÝ©ó·sªºÀɮסA¤p¼gªí¥ÜÄÝ©óªºÀɮסC<¦r¤¸>ªº·N¸q¦p¤U¡G\n" +" F ¦æ²Õ¤¤²Ä¤@¦æªº¦æ¸¹\n" +" L ¦æ²Õ¤¤³Ì«á¤@¦æªº¦æ¸¹\n" +" N ¦æ¼Æ ( =L-F+1 )\n" +" E F-1\n" +" M L+1" + +#: src/diff.c:877 +msgid "" +" LFMT may contain:\n" +" %L contents of line\n" +" %l contents of line, excluding any trailing newline\n" +" %[-][WIDTH][.[PREC]]{doxX}n printf-style spec for input line number" +msgstr "" +" LFMT ¥i¥]¬A¡G\n" +" %L ¸Ó¦æªº¤º®e\n" +" %l ¸Ó¦æªº¤º®e¡A¦ý¤£¥]¬Aµ²§ôªº newline ¦r¤¸\n" +" %[-][¼e«×][.[ºë½T«×]]{doxX}n ¥H printf ®æ¦¡ªí¥Üªº¿é¤J¸ê®Æ¦æ¸¹" + +#: src/diff.c:881 +msgid "" +" Either GFMT or LFMT may contain:\n" +" %% %\n" +" %c'C' the single character C\n" +" %c'\\OOO' the character with octal code OOO" +msgstr "" +" GFMT ©Î LFMT ¥i¥]¬A¡G\n" +" %% %\n" +" %c'C' ¦r¤¸ C\n" +" %c'\\OOO' ¤K¶i¦ì¼Æ¦r OOO ©Ò¥Nªíªº¦r¤¸" + +#: src/diff.c:886 +msgid "-l --paginate Pass the output through `pr' to paginate it." +msgstr "-l --paginate ±N¿é¥X°e¦Ü¡¥pr¡¦«ü¥O¨Ó¤À­¶¡C" + +#: src/diff.c:887 src/sdiff.c:198 +msgid "-t --expand-tabs Expand tabs to spaces in output." +msgstr "-t --expand-tabs ±N¿é¥X¤¤ªº tab ´«¦¨ªÅ®æ¡C" + +#: src/diff.c:888 src/diff3.c:452 +msgid "-T --initial-tab Make tabs line up by prepending a tab." +msgstr "-T --initial-tab ¨C¦æ¥ý¥[¤W tab ¦r¤¸¡A¨Ï tab ¦r¤¸¥i¥H¹ï»ô¡C" + +#: src/diff.c:890 +msgid "-r --recursive Recursively compare any subdirectories found." +msgstr "-r --recursive ³s¦P©Ò¦³°Æ¥Ø¿ý¤@°_¤ñ¸û¡C" + +#: src/diff.c:891 +msgid "-N --new-file Treat absent files as empty." +msgstr "-N --new-file ¤£¦s¦bªºÀÉ®×¥HªÅ¥ÕÀɮפ覡³B²z¡C" + +#: src/diff.c:892 +msgid "--unidirectional-new-file Treat absent first files as empty." +msgstr "--unidirectional-new-file ­Y²Ä¤@­ÓÀɮפ£¦s¦b¡A¥HªÅ¥ÕÀɮ׳B²z¡C" + +#: src/diff.c:893 +msgid "-s --report-identical-files Report when two files are the same." +msgstr "-s --report-identical-files ·í¨â­ÓÀɮפ@¼Ë®É¤´µMÅã¥Üµ²ªG¡C" + +#: src/diff.c:894 +msgid "-x PAT --exclude=PAT Exclude files that match PAT." +msgstr "-x PAT --exclude=PAT ±Æ°£¼Ë¦¡¬° PAT ªºÀɮסC" + +#: src/diff.c:895 +msgid "" +"-X FILE --exclude-from=FILE Exclude files that match any pattern in FILE." +msgstr "-X FILE --exclude-from=FILE ±Æ°£©Ò¦³¦b FILE ¤¤¦C¥Xªº¼Ë¦¡ªºÀɮסC" + +#: src/diff.c:896 +msgid "" +"-S FILE --starting-file=FILE Start with FILE when comparing directories." +msgstr "-S FILE --starting-file=FILE ·í¤ñ¸û¥Ø¿ý®É¡A¥Ñ FILE ¶}©l¤ñ¸û¡C" + +#: src/diff.c:897 +msgid "" +"--from-file=FILE1 Compare FILE1 to all operands. FILE1 can be a directory." +msgstr "" +"--from-file=FILE1 ±N FILE1 ©M°Ñ¼Æ¤¤ªº©Ò¦³ÀÉ®×/¥Ø¿ý§@¤ñ¸û¡CFILE1 ¥i¥H¬O¥Ø¿ý¡C" + +#: src/diff.c:898 +msgid "" +"--to-file=FILE2 Compare all operands to FILE2. FILE2 can be a directory." +msgstr "" +"--to-file=FILE2 ±N°Ñ¼Æ¤¤ªº©Ò¦³ÀÉ®×/¥Ø¿ý©M FILE2 §@¤ñ¸û¡CFILE2 ¥i¥H¬O¥Ø¿ý¡C" + +#: src/diff.c:900 +msgid "--horizon-lines=NUM Keep NUM lines of the common prefix and suffix." +msgstr "--horizon-lines=NUM (¦¹¿ï¶µ¤£§@³B²z)" + +#: src/diff.c:901 src/sdiff.c:200 +msgid "-d --minimal Try hard to find a smaller set of changes." +msgstr "-d --minimal ºÉ¥i¯à§ä¥X³Ì¤pªº®t²§¡C" + +#: src/diff.c:902 +msgid "" +"--speed-large-files Assume large files and many scattered small changes." +msgstr "--speed-large-files °²³]ÀɮפQ¤À¤j¦Ó¥B·í¤¤§t¦³³\¦h¨Ç·Lªº®t²§¡C" + +#: src/diff.c:907 +msgid "" +"FILES are `FILE1 FILE2' or `DIR1 DIR2' or `DIR FILE...' or `FILE... DIR'." +msgstr "" +"FILES ªº®æ¦¡¥i¥H¬O¡¥FILE1 FILE2¡¦¡B¡¥DIR1 DIR2¡¦¡B¡¥DIR FILE...¡¦©Î\n" +" ¡¥FILE... DIR¡¦¡C" + +#: src/diff.c:908 +msgid "" +"If --from-file or --to-file is given, there are no restrictions on FILES." +msgstr "¦pªG¨Ï¥Î --from-file ©Î --to-file ¿ï¶µ¡AFILES ªº®æ¦¡«h¤£¨ü­­¨î¡C" + +#: src/diff.c:909 src/diff3.c:474 src/sdiff.c:222 +msgid "If a FILE is `-', read standard input." +msgstr "¦pªG FILE ¬O¡¥-¡¦¡A«h¥Ñ¼Ð·Ç¿é¤JŪ¨ú¸ê®Æ¡C" + +# It is intentional *not* to translate FILES -- maddog +#: src/diff.c:920 +#, c-format +msgid "Usage: %s [OPTION]... FILES\n" +msgstr "¥Îªk¡G%s [¿ï¶µ]... FILES\n" + +#: src/diff.c:949 +#, c-format +msgid "conflicting %s option value `%s'" +msgstr "¤¬¬Û¥Ù¬Þªº %s ¿ï¶µ¡A°Ñ¼Æ­È¬°¡¥%s¡¦" + +#: src/diff.c:962 +msgid "conflicting output style options" +msgstr "¤¬¬Û¥Ù¬Þªº¿é¥X¼Ò¦¡¿ï¶µ" + +#: src/diff.c:976 +msgid "regular empty file" +msgstr "´¶³qªÅ¥ÕÀÉ®×" + +#: src/diff.c:976 +msgid "regular file" +msgstr "´¶³qÀÉ®×" + +#: src/diff.c:978 +msgid "directory" +msgstr "¥Ø¿ý" + +#: src/diff.c:981 +msgid "block special file" +msgstr "°Ï¶ô¯S®íÀÉ®×" + +#: src/diff.c:984 +msgid "character special file" +msgstr "¦r¤¸¯S®íÀÉ®×" + +#: src/diff.c:987 +msgid "fifo" +msgstr "fifo" + +#: src/diff.c:991 +msgid "socket" +msgstr "socket" + +#: src/diff.c:994 +msgid "message queue" +msgstr "°T®§¦î¦C" + +#: src/diff.c:997 +msgid "semaphore" +msgstr "semaphore" + +#: src/diff.c:1000 +msgid "shared memory object" +msgstr "¤À¨É°O¾Ðª«¥ó" + +#: src/diff.c:1003 +msgid "typed memory object" +msgstr "¤ÀÃþ°O¾Ðª«¥ó" + +#: src/diff.c:1006 +msgid "weird file" +msgstr "¤£´M±`ªºÀÉ®×" + +#: src/diff.c:1070 src/diff.c:1256 +#, c-format +msgid "Only in %s: %s\n" +msgstr "¥u¦b %s ¦s¦b¡G%s\n" + +#: src/diff.c:1193 +msgid "cannot compare `-' to a directory" +msgstr "¡¥-¡¦µLªk»P¥Ø¿ý§@¤ñ¸û" + +#: src/diff.c:1220 +msgid "-D option not supported with directories" +msgstr "-D ¿ï¶µ¤£¥i°t¦X¥Ø¿ý¨Ï¥Î" + +#: src/diff.c:1229 +#, c-format +msgid "Common subdirectories: %s and %s\n" +msgstr "%s ©M %s ¦³¦@¦Pªº°Æ¥Ø¿ý\n" + +#: src/diff.c:1266 +#, c-format +msgid "File %s is a %s while file %s is a %s\n" +msgstr "ÀÉ®× %s ¬O%s¦ÓÀÉ®× %s ¬O%s\n" + +#: src/diff.c:1345 +#, c-format +msgid "Files %s and %s are identical\n" +msgstr "ÀÉ®× %s ©M %s ¬Û¦P\n" + +#: src/diff3.c:26 +msgid "Written by Randy Smith." +msgstr "¥Ñ Randy Smith ½s¼g¡C" + +#: src/diff3.c:328 +msgid "incompatible options" +msgstr "¤£­Ý®eªº¿ï¶µ" + +#: src/diff3.c:368 +msgid "`-' specified for more than one input file" +msgstr "¦h©ó¤@­Óªº¿é¤JÀɬO¡¥-¡¦" + +#: src/diff3.c:408 src/diff3.c:1232 src/diff3.c:1645 src/diff3.c:1700 +#: src/sdiff.c:305 src/sdiff.c:879 src/sdiff.c:890 +msgid "read failed" +msgstr "Ū¨ú¸ê®Æ¥¢±Ñ" + +#: src/diff3.c:441 +msgid "-e --ed Output unmerged changes from OLDFILE to YOURFILE into MYFILE." +msgstr "" +"-e --ed ¨ú¥X¥Ñ OLDFILE ¦Ü YOURFILE ªº§ó§ï³¡¥÷¡A¨Ã¿é¥X¥i±N¦¹\n" +" §ïÅÜ®M¥Î¦Ü MYFILE ªº ed script¡C" + +#: src/diff3.c:442 +msgid "-E --show-overlap Output unmerged changes, bracketing conflicts." +msgstr "-E --show-overlap Åã¥Ü¥¼¦X¨Öªº§ó§ï³¡¥÷¡A¨Ã¬A¤W¤¬¬Û©èIJªº¦a¤è¡C" + +#: src/diff3.c:443 +msgid "-A --show-all Output all changes, bracketing conflicts." +msgstr "-A --show-all Åã¥Ü©Ò¦³­n§ó§ïªº³¡¥÷¡A¨Ã¬A¤W¤¬¬Û©èIJªº¦a¤è¡C" + +#: src/diff3.c:444 +msgid "-x --overlap-only Output overlapping changes." +msgstr "-x --overlap-only ¥uÅã¥Ü­«Å|ªº§ó§ï³¡¥÷¡C" + +#: src/diff3.c:445 +msgid "-X Output overlapping changes, bracketing them." +msgstr "-X Åã¥Ü­«Å|ªº§ó§ï³¡¥÷¡A¨Ã¬A¤W°O¸¹¡C" + +#: src/diff3.c:446 +msgid "-3 --easy-only Output unmerged nonoverlapping changes." +msgstr "-3 --easy-only Åã¥Ü¥¼¦X¨Ö¦Ó¥B¤£­«Å|ªº§ó§ï³¡¥÷¡C" + +#: src/diff3.c:448 +msgid "-m --merge Output merged file instead of ed script (default -A)." +msgstr "-m --merge Åã¥Ü¦X¨Ö«áªºÀɮצӤ£¬O ed script (¹w³]¥[¤W -A)¡C" + +#: src/diff3.c:449 +msgid "-L LABEL --label=LABEL Use LABEL instead of file name." +msgstr "-L ¼Ð»x --label=¼Ð»x ¥H<¼Ð»x>¥N´ÀÀɮצWºÙ¡C" + +#: src/diff3.c:450 +msgid "-i Append `w' and `q' commands to ed scripts." +msgstr "-i ¦b ed script ¤¤ªþ¥[¡¥w¡¦©M¡¥q¡¦«ü¥O¡C" + +#: src/diff3.c:453 src/sdiff.c:202 +msgid "--diff-program=PROGRAM Use PROGRAM to compare files." +msgstr "--diff-program=µ{¦¡ ¨Ï¥Î<µ{¦¡>¨Ó¤ñ¸ûÀɮסC" + +#: src/diff3.c:465 +#, c-format +msgid "Usage: %s [OPTION]... MYFILE OLDFILE YOURFILE\n" +msgstr "¥Îªk¡G%s [¿ï¶µ]... MYFILE OLDFILE YOURFILE\n" + +#: src/diff3.c:467 +msgid "Compare three files line by line." +msgstr "¤ñ¸û¤T­ÓÀɮתº¨C¤@¦æ¡C" + +#: src/diff3.c:673 +msgid "internal error: screwup in format of diff blocks" +msgstr "¤º³¡¿ù»~¡Gdiff °Ï¬qªº®æ¦¡¥X¿ù" + +#: src/diff3.c:971 +#, c-format +msgid "%s: diff failed: " +msgstr "%s¡Gdiff ¥¢±Ñ¡G" + +#: src/diff3.c:993 +msgid "internal error: invalid diff type in process_diff" +msgstr "¤º³¡¿ù»~¡Gprocess_diff ¤¤ªº diff Ãþ«¬µL®Ä" + +#: src/diff3.c:1018 +msgid "invalid diff format; invalid change separator" +msgstr "µL®Äªº diff ®æ¦¡¡Fªí¥Ü¸ê®ÆÅܧ󪺤À¹j¦r¦êµL®Ä" + +#: src/diff3.c:1242 +msgid "invalid diff format; incomplete last line" +msgstr "µL®Äªº diff ®æ¦¡¡F³Ì«á¤@¦æ¤£§¹¾ã" + +#: src/diff3.c:1265 src/sdiff.c:273 +#, c-format +msgid "subsidiary program `%s' not executable" +msgstr "©Ò»Ýªºµ{¦¡¡¥%s¡¦µLªk°õ¦æ" + +#: src/diff3.c:1268 src/sdiff.c:276 src/util.c:298 +#, c-format +msgid "subsidiary program `%s' not found" +msgstr "§ä¤£¨ì©Ò»Ýªºµ{¦¡¡¥%s¡¦" + +#: src/diff3.c:1272 src/sdiff.c:268 src/util.c:301 +#, c-format +msgid "subsidiary program `%s' failed" +msgstr "µ{¦¡¡¥%s¡¦¦^¶Ç¿ù»~" + +#: src/diff3.c:1294 +msgid "invalid diff format; incorrect leading line chars" +msgstr "diff ®æ¦¡µL®Ä¡F¬Y¦æªº²Ä¤@­Ó¦r¤¸¤£¥¿½T" + +#: src/diff3.c:1370 +msgid "internal error: invalid diff type passed to output" +msgstr "¤º³¡¿ù»~¡G·Ç³Æ¿é¥Xªº diff ¸ê®ÆÃþ«¬µL®Ä" + +#: src/diff3.c:1647 src/diff3.c:1704 +msgid "input file shrank" +msgstr "¿é¤JÀÉÁY¤p" + +#: src/dir.c:162 +#, c-format +msgid "cannot compare file names `%s' and `%s'" +msgstr "µLªk¤ñ¸ûÀɮצWºÙ¡¥%s¡¦©M¡¥%s¡¦" + +#: src/sdiff.c:35 +msgid "Written by Thomas Lord." +msgstr "¥Ñ Thomas Lord ½s¼g¡C" + +#: src/sdiff.c:183 +msgid "-o FILE --output=FILE Operate interactively, sending output to FILE." +msgstr "-o ÀÉ®× --output=ÀÉ®× ¤¬°Ê¦¡¾Þ§@¡A¨Ã±Nµ²ªG¼g¤J¦Ü<ÀÉ®×>¡C" + +#: src/sdiff.c:185 +msgid "-i --ignore-case Consider upper- and lower-case to be the same." +msgstr "-i --ignore-case ¤£¤À¿ëÀɮפº®e¤¤ªº¤j¤p¼g¡C" + +#: src/sdiff.c:188 +msgid "-W --ignore-all-space Ignore all white space." +msgstr "-W --ignore-all-space ©¿²¤©Ò¦³ªÅ¥Õ¦r¤¸¡C" + +#: src/sdiff.c:194 +msgid "-w NUM --width=NUM Output at most NUM (default 130) columns per line." +msgstr "-w NUM --width=NUM ¨C¦æÅã¥Ü³Ì¦h NUM¡]¹w³] 130¡^­Ó¦r¤¸¡C" + +#: src/sdiff.c:195 +msgid "-l --left-column Output only the left column of common lines." +msgstr "-l --left-column ·í¦³¨â¦æ¬Û¦P®É¥uÅã¥Ü¥ªÃ䪺¤@¦æ¡C" + +#: src/sdiff.c:196 +msgid "-s --suppress-common-lines Do not output common lines." +msgstr "-s --suppress-common-lines ·í¦³¨â¦æ¬Û¦P®É¤£·|Åã¥Ü¡C" + +#: src/sdiff.c:201 +msgid "" +"-H --speed-large-files Assume large files and many scattered small changes." +msgstr "-H --speed-large-files °²³]ÀɮפQ¤À¤j¦Ó¥B·í¤¤§t¦³³\¦h¨Ç·Lªº®t²§¡C" + +#: src/sdiff.c:214 +#, c-format +msgid "Usage: %s [OPTION]... FILE1 FILE2\n" +msgstr "¥Îªk¡G%s [¿ï¶µ]... ÀÉ®×1 ÀÉ®×2\n" + +#: src/sdiff.c:215 +msgid "Side-by-side merge of file differences." +msgstr "¥H¨Ã±Æ¤è¦¡¦X¨ÖÀɮפ§¶¡ªº®t²§¡C" + +#: src/sdiff.c:327 +msgid "cannot interactively merge standard input" +msgstr "¤£¤¹³\¥H¤¬°Ê¤è¦¡¦X¨Ö¼Ð·Ç¿é¤Jªº¸ê®Æ" + +#: src/sdiff.c:588 +msgid "both files to be compared are directories" +msgstr "¨â­Ó­n¤ñ¸ûªº³£¬O¥Ø¿ý" + +#: src/sdiff.c:853 +msgid "" +"ed:\tEdit then use both versions, each decorated with a header.\n" +"eb:\tEdit then use both versions.\n" +"el:\tEdit then use the left version.\n" +"er:\tEdit then use the right version.\n" +"e:\tEdit a new version.\n" +"l:\tUse the left version.\n" +"r:\tUse the right version.\n" +"s:\tSilently include common lines.\n" +"v:\tVerbosely include common lines.\n" +"q:\tQuit.\n" +msgstr "" +"ed¡G\t½s¿è¨âÃ䪺ª©¥»¦X¨Ö«áªº¸ê®Æ¡A¦Uª©¥»¤À§O¥[¤W¼ÐÀY¥H¸êÃѧO¡C\n" +"eb¡G\t½s¿è¨âÃ䪺ª©¥»¦X¨Ö«áªº¸ê®Æ¡C\n" +"el¡G\t¨Ï¥Î¥ªÃ䪺ª©¥»¨Ó¶i¦æ½s¿è¡C\n" +"er¡G\t¨Ï¥Î¥kÃ䪺ª©¥»¨Ó¶i¦æ½s¿è¡C\n" +"e ¡G\t½s¿è·sªºª©¥»¡C\n" +"l ¡G\t¨Ï¥Î¥ªÃ䪺ª©¥»¡C\n" +"r ¡G\t¨Ï¥Î¥kÃ䪺ª©¥»¡C\n" +"s ¡G\t¥[¤W¨âÃä¤@¼Ëªº¦æ²Õ®É¤£¦bµe­±Åã¥Ü¡C\n" +"v ¡G\t¥[¤W¨âÃä¤@¼Ëªº¦æ²Õ®É·|¦bµe­±Åã¥Ü¡C\n" +"q ¡G\tÂ÷¶}¡C\n" + +#~ msgid "--inhibit-hunk-merge Do not merge hunks." +#~ msgstr "--inhibit-hunk-merge (¦¹¿ï¶µ¤£§@³B²z)" + +#~ msgid "" +#~ "SKIP values may be followed by the following multiplicative suffixes:\n" +#~ msgstr "SKIP ­È¥i¥H¥[¤W¥H¤Uªº³æ¦ì¡G\n" + +#~ msgid "kB 1000, K 1024, MB 1,000,000, M 1,048,576,\n" +#~ msgstr "kB 1000¡BK 1024¡BMB 1,000,000¡BM 1,048,576¡B\n" + +#~ msgid "GB 1,000,000,000, G 1,073,741,824, and so on for T, P, E, Z, Y.\n" +#~ msgstr "GB 1,000,000,000¡BG 1,073,741,824¡BÁÙ¦³ T¡BP¡BE¡BZ¡BY ¦p¦¹Ãþ±À¡C\n" + +#~ msgid "multiple `--from-file' options" +#~ msgstr "¡¥--from-file¡¦¿ï¶µ¤£¥i¨Ï¥Î¦h©ó¤@¦¸" + +#~ msgid "multiple `--to-file' options" +#~ msgstr "¡¥--to-file¡¦¿ï¶µ¤£¥i¨Ï¥Î¦h©ó¤@¦¸" + +#~ msgid "regular executable file" +#~ msgstr "¥¿±`¥i°õ¦æÀÉ" + +#~ msgid "If a FILE is `-', read standard input.\n" +#~ msgstr "¦pªGÀɮ׬O¡¥-¡¦¡A«h¥Ñ¼Ð·Ç¿é¤JŪ¤J¸ê®Æ¡C\n" diff --git a/src/apps/bin/diffutils-2.8.1/src/Jamfile b/src/apps/bin/diffutils-2.8.1/src/Jamfile new file mode 100644 index 0000000000..047a085d31 --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/src/Jamfile @@ -0,0 +1,12 @@ +SubDir OBOS_TOP src apps bin diffutils-2.8.1 src ; + +SubDirCcFlags += -DHAVE_CONFIG_H -DLOCALEDIR=\'\"/share/locale\"\' ; + +BinCommand diff : + analyze.c context.c diff.c dir.c ed.c ifdef.c io.c normal.c side.c util.c version.c : root libdiffutils.a ; + +BinCommand diff3 : + diff3.c version.c : root libdiffutils.a ; + +BinCommand cmp : + cmp.c version.c : root libdiffutils.a ; diff --git a/src/apps/bin/diffutils-2.8.1/src/Makefile b/src/apps/bin/diffutils-2.8.1/src/Makefile new file mode 100644 index 0000000000..3c1a309d98 --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/src/Makefile @@ -0,0 +1,418 @@ +# Makefile.in generated by automake 1.6 from Makefile.am. +# src/Makefile. Generated from Makefile.in by configure. + +# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002 +# Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + + + +# Automakefile for GNU diffutils programs. + +# Copyright (C) 2001, 2002 Free Software Foundation, Inc. +SHELL = /bin/sh + +srcdir = . +top_srcdir = .. + +prefix = /usr/local +exec_prefix = ${prefix} + +bindir = ${exec_prefix}/bin +sbindir = ${exec_prefix}/sbin +libexecdir = ${exec_prefix}/libexec +datadir = ${prefix}/share +sysconfdir = ${prefix}/etc +sharedstatedir = ${prefix}/com +localstatedir = ${prefix}/var +libdir = ${exec_prefix}/lib +infodir = ${prefix}/info +mandir = ${prefix}/man +includedir = ${prefix}/include +oldincludedir = /usr/include +pkgdatadir = $(datadir)/diffutils +pkglibdir = $(libdir)/diffutils +pkgincludedir = $(includedir)/diffutils +top_builddir = .. + +ACLOCAL = ${SHELL} /boot/home/Development/current/src/apps/bin/diffutils-2.8.1/config/missing --run aclocal-1.6 +AUTOCONF = ${SHELL} /boot/home/Development/current/src/apps/bin/diffutils-2.8.1/config/missing --run autoconf +AUTOMAKE = ${SHELL} /boot/home/Development/current/src/apps/bin/diffutils-2.8.1/config/missing --run automake-1.6 +AUTOHEADER = ${SHELL} /boot/home/Development/current/src/apps/bin/diffutils-2.8.1/config/missing --run autoheader + +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = /bin/install -c +INSTALL_PROGRAM = ${INSTALL} +INSTALL_DATA = ${INSTALL} -m 644 +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +INSTALL_SCRIPT = ${INSTALL} +INSTALL_HEADER = $(INSTALL_DATA) +transform = s,x,x, +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +host_alias = +host_triplet = i586-pc-beos + +EXEEXT = +OBJEXT = o +PATH_SEPARATOR = : +AMTAR = ${SHELL} /boot/home/Development/current/src/apps/bin/diffutils-2.8.1/config/missing --run tar +AWK = gawk +BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@ +CATOBJEXT = @CATOBJEXT@ +CC = gcc +CPP = gcc -E +DATADIRNAME = @DATADIRNAME@ +DEPDIR = .deps +GENCAT = @GENCAT@ +GLIBC21 = @GLIBC21@ +GMSGFMT = : +HAVE_LIB = @HAVE_LIB@ +HELP2MAN = ${SHELL} /boot/home/Development/current/src/apps/bin/diffutils-2.8.1/config/missing --run help2man +INSTALL_STRIP_PROGRAM = ${SHELL} $(install_sh) -c -s +INSTOBJEXT = @INSTOBJEXT@ +INTLBISON = @INTLBISON@ +INTLLIBS = +INTLOBJS = @INTLOBJS@ +INTL_LIBTOOL_SUFFIX_PREFIX = @INTL_LIBTOOL_SUFFIX_PREFIX@ +LIB = @LIB@ +LIBICONV = +LIBINTL = +LIB_CLOCK_GETTIME = +LTLIB = @LTLIB@ +LTLIBICONV = +LTLIBINTL = +MKINSTALLDIRS = config/mkinstalldirs +PACKAGE = diffutils +POSUB = +PR_PROGRAM = /bin/pr +RANLIB = ranlib +STRIP = +U = +USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@ +USE_NLS = no +VERSION = 2.8.1 +am__include = include +am__quote = +install_sh = /boot/home/Development/current/src/apps/bin/diffutils-2.8.1/config/install-sh + +bin_PROGRAMS = cmp diff diff3 sdiff + +noinst_HEADERS = diff.h system.h + +localedir = $(datadir)/locale + +AM_CPPFLAGS = -I../lib -I$(top_srcdir)/lib +DEFS = -DLOCALEDIR=\"$(localedir)\" -DHAVE_CONFIG_H + +LDADD = ../lib/libdiffutils.a +diff_LDADD = $(LDADD) + +cmp_SOURCES = cmp.c version.c +diff3_SOURCES = diff3.c version.c +sdiff_SOURCES = sdiff.c version.c +diff_SOURCES = \ + analyze.c context.c diff.c dir.c ed.c ifdef.c io.c \ + normal.c side.c util.c version.c + + +MAINTAINERCLEANFILES = $(srcdir)/version.c +subdir = src +mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +bin_PROGRAMS = cmp$(EXEEXT) diff$(EXEEXT) diff3$(EXEEXT) sdiff$(EXEEXT) +PROGRAMS = $(bin_PROGRAMS) + +am_cmp_OBJECTS = cmp.$(OBJEXT) version.$(OBJEXT) +cmp_OBJECTS = $(am_cmp_OBJECTS) +cmp_LDADD = $(LDADD) +cmp_DEPENDENCIES = ../lib/libdiffutils.a +cmp_LDFLAGS = +am_diff_OBJECTS = analyze.$(OBJEXT) context.$(OBJEXT) diff.$(OBJEXT) \ + dir.$(OBJEXT) ed.$(OBJEXT) ifdef.$(OBJEXT) io.$(OBJEXT) \ + normal.$(OBJEXT) side.$(OBJEXT) util.$(OBJEXT) \ + version.$(OBJEXT) +diff_OBJECTS = $(am_diff_OBJECTS) +diff_DEPENDENCIES = ../lib/libdiffutils.a +diff_LDFLAGS = +am_diff3_OBJECTS = diff3.$(OBJEXT) version.$(OBJEXT) +diff3_OBJECTS = $(am_diff3_OBJECTS) +diff3_LDADD = $(LDADD) +diff3_DEPENDENCIES = ../lib/libdiffutils.a +diff3_LDFLAGS = +am_sdiff_OBJECTS = sdiff.$(OBJEXT) version.$(OBJEXT) +sdiff_OBJECTS = $(am_sdiff_OBJECTS) +sdiff_LDADD = $(LDADD) +sdiff_DEPENDENCIES = ../lib/libdiffutils.a +sdiff_LDFLAGS = +DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) +CPPFLAGS = +LDFLAGS = +LIBS = +depcomp = $(SHELL) $(top_srcdir)/config/depcomp +am__depfiles_maybe = depfiles +DEP_FILES = ./$(DEPDIR)/analyze.Po ./$(DEPDIR)/cmp.Po \ + ./$(DEPDIR)/context.Po ./$(DEPDIR)/diff.Po \ + ./$(DEPDIR)/diff3.Po ./$(DEPDIR)/dir.Po \ + ./$(DEPDIR)/ed.Po ./$(DEPDIR)/ifdef.Po \ + ./$(DEPDIR)/io.Po ./$(DEPDIR)/normal.Po \ + ./$(DEPDIR)/sdiff.Po ./$(DEPDIR)/side.Po \ + ./$(DEPDIR)/util.Po ./$(DEPDIR)/version.Po +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +CCLD = $(CC) +LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ +CFLAGS = -g -O2 +DIST_SOURCES = $(cmp_SOURCES) $(diff_SOURCES) $(diff3_SOURCES) \ + $(sdiff_SOURCES) +HEADERS = $(noinst_HEADERS) + +DIST_COMMON = $(noinst_HEADERS) Makefile.am Makefile.in +SOURCES = $(cmp_SOURCES) $(diff_SOURCES) $(diff3_SOURCES) $(sdiff_SOURCES) + +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .o .obj +$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.ac $(ACLOCAL_M4) + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnits src/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) +binPROGRAMS_INSTALL = $(INSTALL_PROGRAM) +install-binPROGRAMS: $(bin_PROGRAMS) + @$(NORMAL_INSTALL) + $(mkinstalldirs) $(DESTDIR)$(bindir) + @list='$(bin_PROGRAMS)'; for p in $$list; do \ + p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ + if test -f $$p \ + ; then \ + p1=`echo "$$p1" | sed -e 's,^.*/,,'`; \ + f=`echo $$p1|sed '$(transform);s/$$/$(EXEEXT)/'`; \ + echo " $(INSTALL_PROGRAM_ENV) $(binPROGRAMS_INSTALL) $$p $(DESTDIR)$(bindir)/$$f"; \ + $(INSTALL_PROGRAM_ENV) $(binPROGRAMS_INSTALL) $$p $(DESTDIR)$(bindir)/$$f; \ + else :; fi; \ + done + +uninstall-binPROGRAMS: + @$(NORMAL_UNINSTALL) + @list='$(bin_PROGRAMS)'; for p in $$list; do \ + f=`echo $$p|sed 's/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \ + f=`echo "$$f" | sed -e 's,^.*/,,'`; \ + echo " rm -f $(DESTDIR)$(bindir)/$$f"; \ + rm -f $(DESTDIR)$(bindir)/$$f; \ + done + +clean-binPROGRAMS: + -test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS) +cmp$(EXEEXT): $(cmp_OBJECTS) $(cmp_DEPENDENCIES) + @rm -f cmp$(EXEEXT) + $(LINK) $(cmp_LDFLAGS) $(cmp_OBJECTS) $(cmp_LDADD) $(LIBS) +diff$(EXEEXT): $(diff_OBJECTS) $(diff_DEPENDENCIES) + @rm -f diff$(EXEEXT) + $(LINK) $(diff_LDFLAGS) $(diff_OBJECTS) $(diff_LDADD) $(LIBS) +diff3$(EXEEXT): $(diff3_OBJECTS) $(diff3_DEPENDENCIES) + @rm -f diff3$(EXEEXT) + $(LINK) $(diff3_LDFLAGS) $(diff3_OBJECTS) $(diff3_LDADD) $(LIBS) +sdiff$(EXEEXT): $(sdiff_OBJECTS) $(sdiff_DEPENDENCIES) + @rm -f sdiff$(EXEEXT) + $(LINK) $(sdiff_LDFLAGS) $(sdiff_OBJECTS) $(sdiff_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) core *.core + +distclean-compile: + -rm -f *.tab.c + +include ./$(DEPDIR)/analyze.Po +include ./$(DEPDIR)/cmp.Po +include ./$(DEPDIR)/context.Po +include ./$(DEPDIR)/diff.Po +include ./$(DEPDIR)/diff3.Po +include ./$(DEPDIR)/dir.Po +include ./$(DEPDIR)/ed.Po +include ./$(DEPDIR)/ifdef.Po +include ./$(DEPDIR)/io.Po +include ./$(DEPDIR)/normal.Po +include ./$(DEPDIR)/sdiff.Po +include ./$(DEPDIR)/side.Po +include ./$(DEPDIR)/util.Po +include ./$(DEPDIR)/version.Po + +distclean-depend: + -rm -rf ./$(DEPDIR) + +.c.o: + source='$<' object='$@' libtool=no \ + depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' \ + $(CCDEPMODE) $(depcomp) \ + $(COMPILE) -c `test -f $< || echo '$(srcdir)/'`$< + +.c.obj: + source='$<' object='$@' libtool=no \ + depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' \ + $(CCDEPMODE) $(depcomp) \ + $(COMPILE) -c `cygpath -w $<` +CCDEPMODE = depmode=gcc +uninstall-info-am: + +ETAGS = etags +ETAGSFLAGS = + +tags: TAGS + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + mkid -fID $$unique + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + test -z "$(ETAGS_ARGS)$$tags$$unique" \ + || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique + +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 +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) + +top_distdir = .. +distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) + +distdir: $(DISTFILES) + @for file in $(DISTFILES); do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + dir="/$$dir"; \ + $(mkinstalldirs) "$(distdir)$$dir"; \ + else \ + dir=''; \ + fi; \ + if test -d $$d/$$file; then \ + 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) $(HEADERS) + +installdirs: + $(mkinstalldirs) $(DESTDIR)$(bindir) + +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -rm -f Makefile $(CONFIG_CLEAN_FILES) stamp-h stamp-h[0-9]* + +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 "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES) +clean: clean-am + +clean-am: clean-binPROGRAMS clean-generic mostlyclean-am + +distclean: distclean-am + +distclean-am: clean-am distclean-compile distclean-depend \ + distclean-generic distclean-tags + +dvi: dvi-am + +dvi-am: + +info: info-am + +info-am: + +install-data-am: + +install-exec-am: install-binPROGRAMS + +install-info: install-info-am + +install-man: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic + +uninstall-am: uninstall-binPROGRAMS uninstall-info-am + +.PHONY: GTAGS all all-am check check-am clean clean-binPROGRAMS \ + clean-generic distclean distclean-compile distclean-depend \ + distclean-generic distclean-tags distdir dvi dvi-am info \ + info-am install install-am install-binPROGRAMS install-data \ + install-data-am install-exec install-exec-am install-info \ + install-info-am install-man install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic tags uninstall uninstall-am \ + uninstall-binPROGRAMS uninstall-info-am + + +$(srcdir)/version.c: $(top_srcdir)/configure.ac + (echo '#include ' && \ + echo 'char const version_string[] = "(GNU $(PACKAGE)) $(VERSION)";') \ + >$@ +# 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/apps/bin/diffutils-2.8.1/src/Makefile.am b/src/apps/bin/diffutils-2.8.1/src/Makefile.am new file mode 100644 index 0000000000..9d382a5af0 --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/src/Makefile.am @@ -0,0 +1,44 @@ +# Automakefile for GNU diffutils programs. + +# Copyright (C) 2001, 2002 Free Software Foundation, Inc. + +## This program is free software; you can redistribute it and/or modify +## it under the terms of the GNU General Public License as published by +## the Free Software Foundation; either version 2, or (at your option) +## any later version. + +## This program is distributed in the hope that it will be useful, +## but WITHOUT ANY WARRANTY; without even the implied warranty of +## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +## GNU General Public License for more details. + +## You should have received a copy of the GNU General Public License +## along with this program; if not, write to the Free Software +## Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +## 02111-1307, USA. + +bin_PROGRAMS = cmp diff diff3 sdiff + +noinst_HEADERS = diff.h system.h + +localedir = $(datadir)/locale + +AM_CPPFLAGS = -I../lib -I$(top_srcdir)/lib +DEFS = -DLOCALEDIR=\"$(localedir)\" @DEFS@ + +LDADD = ../lib/libdiffutils.a @LIBINTL@ +diff_LDADD = $(LDADD) @LIB_CLOCK_GETTIME@ + +cmp_SOURCES = cmp.c version.c +diff3_SOURCES = diff3.c version.c +sdiff_SOURCES = sdiff.c version.c +diff_SOURCES = \ + analyze.c context.c diff.c dir.c ed.c ifdef.c io.c \ + normal.c side.c util.c version.c + +MAINTAINERCLEANFILES = $(srcdir)/version.c + +$(srcdir)/version.c: $(top_srcdir)/configure.ac + (echo '#include ' && \ + echo 'char const version_string[] = "(GNU $(PACKAGE)) $(VERSION)";') \ + >$@ diff --git a/src/apps/bin/diffutils-2.8.1/src/Makefile.in b/src/apps/bin/diffutils-2.8.1/src/Makefile.in new file mode 100644 index 0000000000..287f368da8 --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/src/Makefile.in @@ -0,0 +1,418 @@ +# Makefile.in generated by automake 1.6 from Makefile.am. +# @configure_input@ + +# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002 +# Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# Automakefile for GNU diffutils programs. + +# Copyright (C) 2001, 2002 Free Software Foundation, Inc. +SHELL = @SHELL@ + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +prefix = @prefix@ +exec_prefix = @exec_prefix@ + +bindir = @bindir@ +sbindir = @sbindir@ +libexecdir = @libexecdir@ +datadir = @datadir@ +sysconfdir = @sysconfdir@ +sharedstatedir = @sharedstatedir@ +localstatedir = @localstatedir@ +libdir = @libdir@ +infodir = @infodir@ +mandir = @mandir@ +includedir = @includedir@ +oldincludedir = /usr/include +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +top_builddir = .. + +ACLOCAL = @ACLOCAL@ +AUTOCONF = @AUTOCONF@ +AUTOMAKE = @AUTOMAKE@ +AUTOHEADER = @AUTOHEADER@ + +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = @INSTALL@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_DATA = @INSTALL_DATA@ +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_HEADER = $(INSTALL_DATA) +transform = @program_transform_name@ +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +host_alias = @host_alias@ +host_triplet = @host@ + +EXEEXT = @EXEEXT@ +OBJEXT = @OBJEXT@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +AMTAR = @AMTAR@ +AWK = @AWK@ +BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@ +CATOBJEXT = @CATOBJEXT@ +CC = @CC@ +CPP = @CPP@ +DATADIRNAME = @DATADIRNAME@ +DEPDIR = @DEPDIR@ +GENCAT = @GENCAT@ +GLIBC21 = @GLIBC21@ +GMSGFMT = @GMSGFMT@ +HAVE_LIB = @HAVE_LIB@ +HELP2MAN = @HELP2MAN@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INSTOBJEXT = @INSTOBJEXT@ +INTLBISON = @INTLBISON@ +INTLLIBS = @INTLLIBS@ +INTLOBJS = @INTLOBJS@ +INTL_LIBTOOL_SUFFIX_PREFIX = @INTL_LIBTOOL_SUFFIX_PREFIX@ +LIB = @LIB@ +LIBICONV = @LIBICONV@ +LIBINTL = @LIBINTL@ +LIB_CLOCK_GETTIME = @LIB_CLOCK_GETTIME@ +LTLIB = @LTLIB@ +LTLIBICONV = @LTLIBICONV@ +LTLIBINTL = @LTLIBINTL@ +MKINSTALLDIRS = @MKINSTALLDIRS@ +PACKAGE = @PACKAGE@ +POSUB = @POSUB@ +PR_PROGRAM = @PR_PROGRAM@ +RANLIB = @RANLIB@ +STRIP = @STRIP@ +U = @U@ +USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@ +USE_NLS = @USE_NLS@ +VERSION = @VERSION@ +am__include = @am__include@ +am__quote = @am__quote@ +install_sh = @install_sh@ + +bin_PROGRAMS = cmp diff diff3 sdiff + +noinst_HEADERS = diff.h system.h + +localedir = $(datadir)/locale + +AM_CPPFLAGS = -I../lib -I$(top_srcdir)/lib +DEFS = -DLOCALEDIR=\"$(localedir)\" @DEFS@ + +LDADD = ../lib/libdiffutils.a @LIBINTL@ +diff_LDADD = $(LDADD) @LIB_CLOCK_GETTIME@ + +cmp_SOURCES = cmp.c version.c +diff3_SOURCES = diff3.c version.c +sdiff_SOURCES = sdiff.c version.c +diff_SOURCES = \ + analyze.c context.c diff.c dir.c ed.c ifdef.c io.c \ + normal.c side.c util.c version.c + + +MAINTAINERCLEANFILES = $(srcdir)/version.c +subdir = src +mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +bin_PROGRAMS = cmp$(EXEEXT) diff$(EXEEXT) diff3$(EXEEXT) sdiff$(EXEEXT) +PROGRAMS = $(bin_PROGRAMS) + +am_cmp_OBJECTS = cmp.$(OBJEXT) version.$(OBJEXT) +cmp_OBJECTS = $(am_cmp_OBJECTS) +cmp_LDADD = $(LDADD) +cmp_DEPENDENCIES = ../lib/libdiffutils.a +cmp_LDFLAGS = +am_diff_OBJECTS = analyze.$(OBJEXT) context.$(OBJEXT) diff.$(OBJEXT) \ + dir.$(OBJEXT) ed.$(OBJEXT) ifdef.$(OBJEXT) io.$(OBJEXT) \ + normal.$(OBJEXT) side.$(OBJEXT) util.$(OBJEXT) \ + version.$(OBJEXT) +diff_OBJECTS = $(am_diff_OBJECTS) +diff_DEPENDENCIES = ../lib/libdiffutils.a +diff_LDFLAGS = +am_diff3_OBJECTS = diff3.$(OBJEXT) version.$(OBJEXT) +diff3_OBJECTS = $(am_diff3_OBJECTS) +diff3_LDADD = $(LDADD) +diff3_DEPENDENCIES = ../lib/libdiffutils.a +diff3_LDFLAGS = +am_sdiff_OBJECTS = sdiff.$(OBJEXT) version.$(OBJEXT) +sdiff_OBJECTS = $(am_sdiff_OBJECTS) +sdiff_LDADD = $(LDADD) +sdiff_DEPENDENCIES = ../lib/libdiffutils.a +sdiff_LDFLAGS = +DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) +CPPFLAGS = @CPPFLAGS@ +LDFLAGS = @LDFLAGS@ +LIBS = @LIBS@ +depcomp = $(SHELL) $(top_srcdir)/config/depcomp +am__depfiles_maybe = depfiles +@AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/analyze.Po ./$(DEPDIR)/cmp.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/context.Po ./$(DEPDIR)/diff.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/diff3.Po ./$(DEPDIR)/dir.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/ed.Po ./$(DEPDIR)/ifdef.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/io.Po ./$(DEPDIR)/normal.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/sdiff.Po ./$(DEPDIR)/side.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/util.Po ./$(DEPDIR)/version.Po +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +CCLD = $(CC) +LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ +CFLAGS = @CFLAGS@ +DIST_SOURCES = $(cmp_SOURCES) $(diff_SOURCES) $(diff3_SOURCES) \ + $(sdiff_SOURCES) +HEADERS = $(noinst_HEADERS) + +DIST_COMMON = $(noinst_HEADERS) Makefile.am Makefile.in +SOURCES = $(cmp_SOURCES) $(diff_SOURCES) $(diff3_SOURCES) $(sdiff_SOURCES) + +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .o .obj +$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.ac $(ACLOCAL_M4) + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnits src/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) +binPROGRAMS_INSTALL = $(INSTALL_PROGRAM) +install-binPROGRAMS: $(bin_PROGRAMS) + @$(NORMAL_INSTALL) + $(mkinstalldirs) $(DESTDIR)$(bindir) + @list='$(bin_PROGRAMS)'; for p in $$list; do \ + p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ + if test -f $$p \ + ; then \ + p1=`echo "$$p1" | sed -e 's,^.*/,,'`; \ + f=`echo $$p1|sed '$(transform);s/$$/$(EXEEXT)/'`; \ + echo " $(INSTALL_PROGRAM_ENV) $(binPROGRAMS_INSTALL) $$p $(DESTDIR)$(bindir)/$$f"; \ + $(INSTALL_PROGRAM_ENV) $(binPROGRAMS_INSTALL) $$p $(DESTDIR)$(bindir)/$$f; \ + else :; fi; \ + done + +uninstall-binPROGRAMS: + @$(NORMAL_UNINSTALL) + @list='$(bin_PROGRAMS)'; for p in $$list; do \ + f=`echo $$p|sed 's/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \ + f=`echo "$$f" | sed -e 's,^.*/,,'`; \ + echo " rm -f $(DESTDIR)$(bindir)/$$f"; \ + rm -f $(DESTDIR)$(bindir)/$$f; \ + done + +clean-binPROGRAMS: + -test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS) +cmp$(EXEEXT): $(cmp_OBJECTS) $(cmp_DEPENDENCIES) + @rm -f cmp$(EXEEXT) + $(LINK) $(cmp_LDFLAGS) $(cmp_OBJECTS) $(cmp_LDADD) $(LIBS) +diff$(EXEEXT): $(diff_OBJECTS) $(diff_DEPENDENCIES) + @rm -f diff$(EXEEXT) + $(LINK) $(diff_LDFLAGS) $(diff_OBJECTS) $(diff_LDADD) $(LIBS) +diff3$(EXEEXT): $(diff3_OBJECTS) $(diff3_DEPENDENCIES) + @rm -f diff3$(EXEEXT) + $(LINK) $(diff3_LDFLAGS) $(diff3_OBJECTS) $(diff3_LDADD) $(LIBS) +sdiff$(EXEEXT): $(sdiff_OBJECTS) $(sdiff_DEPENDENCIES) + @rm -f sdiff$(EXEEXT) + $(LINK) $(sdiff_LDFLAGS) $(sdiff_OBJECTS) $(sdiff_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) core *.core + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/analyze.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cmp.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/context.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/diff.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/diff3.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dir.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ed.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ifdef.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/io.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/normal.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sdiff.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/side.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/util.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/version.Po@am__quote@ + +distclean-depend: + -rm -rf ./$(DEPDIR) + +.c.o: +@AMDEP_TRUE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ +@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ + $(COMPILE) -c `test -f $< || echo '$(srcdir)/'`$< + +.c.obj: +@AMDEP_TRUE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ +@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ + $(COMPILE) -c `cygpath -w $<` +CCDEPMODE = @CCDEPMODE@ +uninstall-info-am: + +ETAGS = etags +ETAGSFLAGS = + +tags: TAGS + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + mkid -fID $$unique + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + test -z "$(ETAGS_ARGS)$$tags$$unique" \ + || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique + +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 +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) + +top_distdir = .. +distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) + +distdir: $(DISTFILES) + @for file in $(DISTFILES); do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + dir="/$$dir"; \ + $(mkinstalldirs) "$(distdir)$$dir"; \ + else \ + dir=''; \ + fi; \ + if test -d $$d/$$file; then \ + 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) $(HEADERS) + +installdirs: + $(mkinstalldirs) $(DESTDIR)$(bindir) + +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -rm -f Makefile $(CONFIG_CLEAN_FILES) stamp-h stamp-h[0-9]* + +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 "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES) +clean: clean-am + +clean-am: clean-binPROGRAMS clean-generic mostlyclean-am + +distclean: distclean-am + +distclean-am: clean-am distclean-compile distclean-depend \ + distclean-generic distclean-tags + +dvi: dvi-am + +dvi-am: + +info: info-am + +info-am: + +install-data-am: + +install-exec-am: install-binPROGRAMS + +install-info: install-info-am + +install-man: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic + +uninstall-am: uninstall-binPROGRAMS uninstall-info-am + +.PHONY: GTAGS all all-am check check-am clean clean-binPROGRAMS \ + clean-generic distclean distclean-compile distclean-depend \ + distclean-generic distclean-tags distdir dvi dvi-am info \ + info-am install install-am install-binPROGRAMS install-data \ + install-data-am install-exec install-exec-am install-info \ + install-info-am install-man install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic tags uninstall uninstall-am \ + uninstall-binPROGRAMS uninstall-info-am + + +$(srcdir)/version.c: $(top_srcdir)/configure.ac + (echo '#include ' && \ + echo 'char const version_string[] = "(GNU $(PACKAGE)) $(VERSION)";') \ + >$@ +# 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/apps/bin/diffutils-2.8.1/src/analyze.c b/src/apps/bin/diffutils-2.8.1/src/analyze.c new file mode 100644 index 0000000000..796b79da2e --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/src/analyze.c @@ -0,0 +1,1068 @@ +/* Analyze file differences for GNU DIFF. + + Copyright (C) 1988, 1989, 1992, 1993, 1994, 1995, 1998, 2001, 2002 + Free Software Foundation, Inc. + + This file is part of GNU DIFF. + + GNU DIFF 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. + + GNU DIFF is distributed in the hope that 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; see the file COPYING. + If not, write to the Free Software Foundation, + 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + +/* The basic algorithm is described in: + "An O(ND) Difference Algorithm and its Variations", Eugene Myers, + Algorithmica Vol. 1 No. 2, 1986, pp. 251-266; + see especially section 4.2, which describes the variation used below. + Unless the --minimal option is specified, this code uses the TOO_EXPENSIVE + heuristic, by Paul Eggert, to limit the cost to O(N**1.5 log N) + at the price of producing suboptimal output for large inputs with + many differences. + + The basic algorithm was independently discovered as described in: + "Algorithms for Approximate String Matching", E. Ukkonen, + Information and Control Vol. 64, 1985, pp. 100-118. */ + +#include "diff.h" +#include +#include +#include +#include + +static lin *xvec, *yvec; /* Vectors being compared. */ +static lin *fdiag; /* Vector, indexed by diagonal, containing + 1 + the X coordinate of the point furthest + along the given diagonal in the forward + search of the edit matrix. */ +static lin *bdiag; /* Vector, indexed by diagonal, containing + the X coordinate of the point furthest + along the given diagonal in the backward + search of the edit matrix. */ +static lin too_expensive; /* Edit scripts longer than this are too + expensive to compute. */ + +#define SNAKE_LIMIT 20 /* Snakes bigger than this are considered `big'. */ + +struct partition +{ + lin xmid, ymid; /* Midpoints of this partition. */ + bool lo_minimal; /* Nonzero if low half will be analyzed minimally. */ + bool hi_minimal; /* Likewise for high half. */ +}; + +/* Find the midpoint of the shortest edit script for a specified + portion of the two files. + + Scan from the beginnings of the files, and simultaneously from the ends, + doing a breadth-first search through the space of edit-sequence. + When the two searches meet, we have found the midpoint of the shortest + edit sequence. + + If FIND_MINIMAL is nonzero, find the minimal edit script regardless + of expense. Otherwise, if the search is too expensive, use + heuristics to stop the search and report a suboptimal answer. + + Set PART->(xmid,ymid) to the midpoint (XMID,YMID). The diagonal number + XMID - YMID equals the number of inserted lines minus the number + of deleted lines (counting only lines before the midpoint). + Return the approximate edit cost; this is the total number of + lines inserted or deleted (counting only lines before the midpoint), + unless a heuristic is used to terminate the search prematurely. + + Set PART->lo_minimal to true iff the minimal edit script for the + left half of the partition is known; similarly for PART->hi_minimal. + + This function assumes that the first lines of the specified portions + of the two files do not match, and likewise that the last lines do not + match. The caller must trim matching lines from the beginning and end + of the portions it is going to specify. + + If we return the "wrong" partitions, + the worst this can do is cause suboptimal diff output. + It cannot cause incorrect diff output. */ + +static lin +diag (lin xoff, lin xlim, lin yoff, lin ylim, bool find_minimal, + struct partition *part) +{ + lin *const fd = fdiag; /* Give the compiler a chance. */ + lin *const bd = bdiag; /* Additional help for the compiler. */ + lin const *const xv = xvec; /* Still more help for the compiler. */ + lin const *const yv = yvec; /* And more and more . . . */ + lin const dmin = xoff - ylim; /* Minimum valid diagonal. */ + lin const dmax = xlim - yoff; /* Maximum valid diagonal. */ + lin const fmid = xoff - yoff; /* Center diagonal of top-down search. */ + lin const bmid = xlim - ylim; /* Center diagonal of bottom-up search. */ + lin fmin = fmid, fmax = fmid; /* Limits of top-down search. */ + lin bmin = bmid, bmax = bmid; /* Limits of bottom-up search. */ + lin c; /* Cost. */ + bool odd = (fmid - bmid) & 1; /* True if southeast corner is on an odd + diagonal with respect to the northwest. */ + + fd[fmid] = xoff; + bd[bmid] = xlim; + + for (c = 1;; ++c) + { + lin d; /* Active diagonal. */ + bool big_snake = 0; + + /* Extend the top-down search by an edit step in each diagonal. */ + fmin > dmin ? fd[--fmin - 1] = -1 : ++fmin; + fmax < dmax ? fd[++fmax + 1] = -1 : --fmax; + for (d = fmax; d >= fmin; d -= 2) + { + lin x, y, oldx, tlo = fd[d - 1], thi = fd[d + 1]; + + if (tlo >= thi) + x = tlo + 1; + else + x = thi; + oldx = x; + y = x - d; + while (x < xlim && y < ylim && xv[x] == yv[y]) + ++x, ++y; + if (x - oldx > SNAKE_LIMIT) + big_snake = 1; + fd[d] = x; + if (odd && bmin <= d && d <= bmax && bd[d] <= x) + { + part->xmid = x; + part->ymid = y; + part->lo_minimal = part->hi_minimal = 1; + return 2 * c - 1; + } + } + + /* Similarly extend the bottom-up search. */ + bmin > dmin ? bd[--bmin - 1] = LIN_MAX : ++bmin; + bmax < dmax ? bd[++bmax + 1] = LIN_MAX : --bmax; + for (d = bmax; d >= bmin; d -= 2) + { + lin x, y, oldx, tlo = bd[d - 1], thi = bd[d + 1]; + + if (tlo < thi) + x = tlo; + else + x = thi - 1; + oldx = x; + y = x - d; + while (x > xoff && y > yoff && xv[x - 1] == yv[y - 1]) + --x, --y; + if (oldx - x > SNAKE_LIMIT) + big_snake = 1; + bd[d] = x; + if (!odd && fmin <= d && d <= fmax && x <= fd[d]) + { + part->xmid = x; + part->ymid = y; + part->lo_minimal = part->hi_minimal = 1; + return 2 * c; + } + } + + if (find_minimal) + continue; + + /* Heuristic: check occasionally for a diagonal that has made + lots of progress compared with the edit distance. + If we have any such, find the one that has made the most + progress and return it as if it had succeeded. + + With this heuristic, for files with a constant small density + of changes, the algorithm is linear in the file size. */ + + if (200 < c && big_snake && speed_large_files) + { + lin best; + + best = 0; + for (d = fmax; d >= fmin; d -= 2) + { + lin dd = d - fmid; + lin x = fd[d]; + lin y = x - d; + lin v = (x - xoff) * 2 - dd; + if (v > 12 * (c + (dd < 0 ? -dd : dd))) + { + if (v > best + && xoff + SNAKE_LIMIT <= x && x < xlim + && yoff + SNAKE_LIMIT <= y && y < ylim) + { + /* We have a good enough best diagonal; + now insist that it end with a significant snake. */ + int k; + + for (k = 1; xv[x - k] == yv[y - k]; k++) + if (k == SNAKE_LIMIT) + { + best = v; + part->xmid = x; + part->ymid = y; + break; + } + } + } + } + if (best > 0) + { + part->lo_minimal = 1; + part->hi_minimal = 0; + return 2 * c - 1; + } + + best = 0; + for (d = bmax; d >= bmin; d -= 2) + { + lin dd = d - bmid; + lin x = bd[d]; + lin y = x - d; + lin v = (xlim - x) * 2 + dd; + if (v > 12 * (c + (dd < 0 ? -dd : dd))) + { + if (v > best + && xoff < x && x <= xlim - SNAKE_LIMIT + && yoff < y && y <= ylim - SNAKE_LIMIT) + { + /* We have a good enough best diagonal; + now insist that it end with a significant snake. */ + int k; + + for (k = 0; xv[x + k] == yv[y + k]; k++) + if (k == SNAKE_LIMIT - 1) + { + best = v; + part->xmid = x; + part->ymid = y; + break; + } + } + } + } + if (best > 0) + { + part->lo_minimal = 0; + part->hi_minimal = 1; + return 2 * c - 1; + } + } + + /* Heuristic: if we've gone well beyond the call of duty, + give up and report halfway between our best results so far. */ + if (c >= too_expensive) + { + lin fxybest, fxbest; + lin bxybest, bxbest; + + fxbest = bxbest = 0; /* Pacify `gcc -Wall'. */ + + /* Find forward diagonal that maximizes X + Y. */ + fxybest = -1; + for (d = fmax; d >= fmin; d -= 2) + { + lin x = MIN (fd[d], xlim); + lin y = x - d; + if (ylim < y) + x = ylim + d, y = ylim; + if (fxybest < x + y) + { + fxybest = x + y; + fxbest = x; + } + } + + /* Find backward diagonal that minimizes X + Y. */ + bxybest = LIN_MAX; + for (d = bmax; d >= bmin; d -= 2) + { + lin x = MAX (xoff, bd[d]); + lin y = x - d; + if (y < yoff) + x = yoff + d, y = yoff; + if (x + y < bxybest) + { + bxybest = x + y; + bxbest = x; + } + } + + /* Use the better of the two diagonals. */ + if ((xlim + ylim) - bxybest < fxybest - (xoff + yoff)) + { + part->xmid = fxbest; + part->ymid = fxybest - fxbest; + part->lo_minimal = 1; + part->hi_minimal = 0; + } + else + { + part->xmid = bxbest; + part->ymid = bxybest - bxbest; + part->lo_minimal = 0; + part->hi_minimal = 1; + } + return 2 * c - 1; + } + } +} + +/* Compare in detail contiguous subsequences of the two files + which are known, as a whole, to match each other. + + The results are recorded in the vectors files[N].changed, by + storing 1 in the element for each line that is an insertion or deletion. + + The subsequence of file 0 is [XOFF, XLIM) and likewise for file 1. + + Note that XLIM, YLIM are exclusive bounds. + All line numbers are origin-0 and discarded lines are not counted. + + If FIND_MINIMAL, find a minimal difference no matter how + expensive it is. */ + +static void +compareseq (lin xoff, lin xlim, lin yoff, lin ylim, bool find_minimal) +{ + lin * const xv = xvec; /* Help the compiler. */ + lin * const yv = yvec; + + /* Slide down the bottom initial diagonal. */ + while (xoff < xlim && yoff < ylim && xv[xoff] == yv[yoff]) + ++xoff, ++yoff; + /* Slide up the top initial diagonal. */ + while (xlim > xoff && ylim > yoff && xv[xlim - 1] == yv[ylim - 1]) + --xlim, --ylim; + + /* Handle simple cases. */ + if (xoff == xlim) + while (yoff < ylim) + files[1].changed[files[1].realindexes[yoff++]] = 1; + else if (yoff == ylim) + while (xoff < xlim) + files[0].changed[files[0].realindexes[xoff++]] = 1; + else + { + lin c; + struct partition part; + + /* Find a point of correspondence in the middle of the files. */ + + c = diag (xoff, xlim, yoff, ylim, find_minimal, &part); + + if (c == 1) + { + /* This should be impossible, because it implies that + one of the two subsequences is empty, + and that case was handled above without calling `diag'. + Let's verify that this is true. */ + abort (); +#if 0 + /* The two subsequences differ by a single insert or delete; + record it and we are done. */ + if (part.xmid - part.ymid < xoff - yoff) + files[1].changed[files[1].realindexes[part.ymid - 1]] = 1; + else + files[0].changed[files[0].realindexes[part.xmid]] = 1; +#endif + } + else + { + /* Use the partitions to split this problem into subproblems. */ + compareseq (xoff, part.xmid, yoff, part.ymid, part.lo_minimal); + compareseq (part.xmid, xlim, part.ymid, ylim, part.hi_minimal); + } + } +} + +/* Discard lines from one file that have no matches in the other file. + + A line which is discarded will not be considered by the actual + comparison algorithm; it will be as if that line were not in the file. + The file's `realindexes' table maps virtual line numbers + (which don't count the discarded lines) into real line numbers; + this is how the actual comparison algorithm produces results + that are comprehensible when the discarded lines are counted. + + When we discard a line, we also mark it as a deletion or insertion + so that it will be printed in the output. */ + +static void +discard_confusing_lines (struct file_data filevec[]) +{ + int f; + lin i; + char *discarded[2]; + lin *equiv_count[2]; + lin *p; + + /* Allocate our results. */ + p = xmalloc ((filevec[0].buffered_lines + filevec[1].buffered_lines) + * (2 * sizeof *p)); + for (f = 0; f < 2; f++) + { + filevec[f].undiscarded = p; p += filevec[f].buffered_lines; + filevec[f].realindexes = p; p += filevec[f].buffered_lines; + } + + /* Set up equiv_count[F][I] as the number of lines in file F + that fall in equivalence class I. */ + + p = zalloc (filevec[0].equiv_max * (2 * sizeof *p)); + equiv_count[0] = p; + equiv_count[1] = p + filevec[0].equiv_max; + + for (i = 0; i < filevec[0].buffered_lines; ++i) + ++equiv_count[0][filevec[0].equivs[i]]; + for (i = 0; i < filevec[1].buffered_lines; ++i) + ++equiv_count[1][filevec[1].equivs[i]]; + + /* Set up tables of which lines are going to be discarded. */ + + discarded[0] = zalloc (filevec[0].buffered_lines + + filevec[1].buffered_lines); + discarded[1] = discarded[0] + filevec[0].buffered_lines; + + /* Mark to be discarded each line that matches no line of the other file. + If a line matches many lines, mark it as provisionally discardable. */ + + for (f = 0; f < 2; f++) + { + size_t end = filevec[f].buffered_lines; + char *discards = discarded[f]; + lin *counts = equiv_count[1 - f]; + lin *equivs = filevec[f].equivs; + size_t many = 5; + size_t tem = end / 64; + + /* Multiply MANY by approximate square root of number of lines. + That is the threshold for provisionally discardable lines. */ + while ((tem = tem >> 2) > 0) + many *= 2; + + for (i = 0; i < end; i++) + { + lin nmatch; + if (equivs[i] == 0) + continue; + nmatch = counts[equivs[i]]; + if (nmatch == 0) + discards[i] = 1; + else if (nmatch > many) + discards[i] = 2; + } + } + + /* Don't really discard the provisional lines except when they occur + in a run of discardables, with nonprovisionals at the beginning + and end. */ + + for (f = 0; f < 2; f++) + { + lin end = filevec[f].buffered_lines; + register char *discards = discarded[f]; + + for (i = 0; i < end; i++) + { + /* Cancel provisional discards not in middle of run of discards. */ + if (discards[i] == 2) + discards[i] = 0; + else if (discards[i] != 0) + { + /* We have found a nonprovisional discard. */ + register lin j; + lin length; + lin provisional = 0; + + /* Find end of this run of discardable lines. + Count how many are provisionally discardable. */ + for (j = i; j < end; j++) + { + if (discards[j] == 0) + break; + if (discards[j] == 2) + ++provisional; + } + + /* Cancel provisional discards at end, and shrink the run. */ + while (j > i && discards[j - 1] == 2) + discards[--j] = 0, --provisional; + + /* Now we have the length of a run of discardable lines + whose first and last are not provisional. */ + length = j - i; + + /* If 1/4 of the lines in the run are provisional, + cancel discarding of all provisional lines in the run. */ + if (provisional * 4 > length) + { + while (j > i) + if (discards[--j] == 2) + discards[j] = 0; + } + else + { + register lin consec; + lin minimum = 1; + lin tem = length >> 2; + + /* MINIMUM is approximate square root of LENGTH/4. + A subrun of two or more provisionals can stand + when LENGTH is at least 16. + A subrun of 4 or more can stand when LENGTH >= 64. */ + while (0 < (tem >>= 2)) + minimum <<= 1; + minimum++; + + /* Cancel any subrun of MINIMUM or more provisionals + within the larger run. */ + for (j = 0, consec = 0; j < length; j++) + if (discards[i + j] != 2) + consec = 0; + else if (minimum == ++consec) + /* Back up to start of subrun, to cancel it all. */ + j -= consec; + else if (minimum < consec) + discards[i + j] = 0; + + /* Scan from beginning of run + until we find 3 or more nonprovisionals in a row + or until the first nonprovisional at least 8 lines in. + Until that point, cancel any provisionals. */ + for (j = 0, consec = 0; j < length; j++) + { + if (j >= 8 && discards[i + j] == 1) + break; + if (discards[i + j] == 2) + consec = 0, discards[i + j] = 0; + else if (discards[i + j] == 0) + consec = 0; + else + consec++; + if (consec == 3) + break; + } + + /* I advances to the last line of the run. */ + i += length - 1; + + /* Same thing, from end. */ + for (j = 0, consec = 0; j < length; j++) + { + if (j >= 8 && discards[i - j] == 1) + break; + if (discards[i - j] == 2) + consec = 0, discards[i - j] = 0; + else if (discards[i - j] == 0) + consec = 0; + else + consec++; + if (consec == 3) + break; + } + } + } + } + } + + /* Actually discard the lines. */ + for (f = 0; f < 2; f++) + { + char *discards = discarded[f]; + lin end = filevec[f].buffered_lines; + lin j = 0; + for (i = 0; i < end; ++i) + if (minimal || discards[i] == 0) + { + filevec[f].undiscarded[j] = filevec[f].equivs[i]; + filevec[f].realindexes[j++] = i; + } + else + filevec[f].changed[i] = 1; + filevec[f].nondiscarded_lines = j; + } + + free (discarded[0]); + free (equiv_count[0]); +} + +/* Adjust inserts/deletes of identical lines to join changes + as much as possible. + + We do something when a run of changed lines include a + line at one end and have an excluded, identical line at the other. + We are free to choose which identical line is included. + `compareseq' usually chooses the one at the beginning, + but usually it is cleaner to consider the following identical line + to be the "change". */ + +static void +shift_boundaries (struct file_data filevec[]) +{ + int f; + + for (f = 0; f < 2; f++) + { + bool *changed = filevec[f].changed; + bool const *other_changed = filevec[1 - f].changed; + lin const *equivs = filevec[f].equivs; + lin i = 0; + lin j = 0; + lin i_end = filevec[f].buffered_lines; + + while (1) + { + lin runlength, start, corresponding; + + /* Scan forwards to find beginning of another run of changes. + Also keep track of the corresponding point in the other file. */ + + while (i < i_end && !changed[i]) + { + while (other_changed[j++]) + continue; + i++; + } + + if (i == i_end) + break; + + start = i; + + /* Find the end of this run of changes. */ + + while (changed[++i]) + continue; + while (other_changed[j]) + j++; + + do + { + /* Record the length of this run of changes, so that + we can later determine whether the run has grown. */ + runlength = i - start; + + /* Move the changed region back, so long as the + previous unchanged line matches the last changed one. + This merges with previous changed regions. */ + + while (start && equivs[start - 1] == equivs[i - 1]) + { + changed[--start] = 1; + changed[--i] = 0; + while (changed[start - 1]) + start--; + while (other_changed[--j]) + continue; + } + + /* Set CORRESPONDING to the end of the changed run, at the last + point where it corresponds to a changed run in the other file. + CORRESPONDING == I_END means no such point has been found. */ + corresponding = other_changed[j - 1] ? i : i_end; + + /* Move the changed region forward, so long as the + first changed line matches the following unchanged one. + This merges with following changed regions. + Do this second, so that if there are no merges, + the changed region is moved forward as far as possible. */ + + while (i != i_end && equivs[start] == equivs[i]) + { + changed[start++] = 0; + changed[i++] = 1; + while (changed[i]) + i++; + while (other_changed[++j]) + corresponding = i; + } + } + while (runlength != i - start); + + /* If possible, move the fully-merged run of changes + back to a corresponding run in the other file. */ + + while (corresponding < i) + { + changed[--start] = 1; + changed[--i] = 0; + while (other_changed[--j]) + continue; + } + } + } +} + +/* Cons an additional entry onto the front of an edit script OLD. + LINE0 and LINE1 are the first affected lines in the two files (origin 0). + DELETED is the number of lines deleted here from file 0. + INSERTED is the number of lines inserted here in file 1. + + If DELETED is 0 then LINE0 is the number of the line before + which the insertion was done; vice versa for INSERTED and LINE1. */ + +static struct change * +add_change (lin line0, lin line1, lin deleted, lin inserted, + struct change *old) +{ + struct change *new = xmalloc (sizeof *new); + + new->line0 = line0; + new->line1 = line1; + new->inserted = inserted; + new->deleted = deleted; + new->link = old; + return new; +} + +/* Scan the tables of which lines are inserted and deleted, + producing an edit script in reverse order. */ + +static struct change * +build_reverse_script (struct file_data const filevec[]) +{ + struct change *script = 0; + bool *changed0 = filevec[0].changed; + bool *changed1 = filevec[1].changed; + lin len0 = filevec[0].buffered_lines; + lin len1 = filevec[1].buffered_lines; + + /* Note that changedN[len0] does exist, and is 0. */ + + lin i0 = 0, i1 = 0; + + while (i0 < len0 || i1 < len1) + { + if (changed0[i0] | changed1[i1]) + { + lin line0 = i0, line1 = i1; + + /* Find # lines changed here in each file. */ + while (changed0[i0]) ++i0; + while (changed1[i1]) ++i1; + + /* Record this change. */ + script = add_change (line0, line1, i0 - line0, i1 - line1, script); + } + + /* We have reached lines in the two files that match each other. */ + i0++, i1++; + } + + return script; +} + +/* Scan the tables of which lines are inserted and deleted, + producing an edit script in forward order. */ + +static struct change * +build_script (struct file_data const filevec[]) +{ + struct change *script = 0; + bool *changed0 = filevec[0].changed; + bool *changed1 = filevec[1].changed; + lin i0 = filevec[0].buffered_lines, i1 = filevec[1].buffered_lines; + + /* Note that changedN[-1] does exist, and is 0. */ + + while (i0 >= 0 || i1 >= 0) + { + if (changed0[i0 - 1] | changed1[i1 - 1]) + { + lin line0 = i0, line1 = i1; + + /* Find # lines changed here in each file. */ + while (changed0[i0 - 1]) --i0; + while (changed1[i1 - 1]) --i1; + + /* Record this change. */ + script = add_change (i0, i1, line0 - i0, line1 - i1, script); + } + + /* We have reached lines in the two files that match each other. */ + i0--, i1--; + } + + return script; +} + +/* If CHANGES, briefly report that two files differed. + Return 2 if trouble, CHANGES otherwise. */ +static int +briefly_report (int changes, struct file_data const filevec[]) +{ + if (changes) + { + char const *label0 = file_label[0] ? file_label[0] : filevec[0].name; + char const *label1 = file_label[1] ? file_label[1] : filevec[1].name; + + if (brief) + message ("Files %s and %s differ\n", label0, label1); + else + { + message ("Binary files %s and %s differ\n", label0, label1); + changes = 2; + } + } + + return changes; +} + +/* Report the differences of two files. */ +int +diff_2_files (struct comparison *cmp) +{ + lin diags; + int f; + struct change *e, *p; + struct change *script; + int changes; + + + /* If we have detected that either file is binary, + compare the two files as binary. This can happen + only when the first chunk is read. + Also, --brief without any --ignore-* options means + we can speed things up by treating the files as binary. */ + + if (read_files (cmp->file, files_can_be_treated_as_binary)) + { + /* Files with different lengths must be different. */ + if (cmp->file[0].stat.st_size != cmp->file[1].stat.st_size + && (cmp->file[0].desc < 0 || S_ISREG (cmp->file[0].stat.st_mode)) + && (cmp->file[1].desc < 0 || S_ISREG (cmp->file[1].stat.st_mode))) + changes = 1; + + /* Standard input equals itself. */ + else if (cmp->file[0].desc == cmp->file[1].desc) + changes = 0; + + else + /* Scan both files, a buffer at a time, looking for a difference. */ + { + /* Allocate same-sized buffers for both files. */ + size_t lcm_max = PTRDIFF_MAX - 1; + size_t buffer_size = + buffer_lcm (sizeof (word), + buffer_lcm (STAT_BLOCKSIZE (cmp->file[0].stat), + STAT_BLOCKSIZE (cmp->file[1].stat), + lcm_max), + lcm_max); + for (f = 0; f < 2; f++) + cmp->file[f].buffer = xrealloc (cmp->file[f].buffer, buffer_size); + + for (;; cmp->file[0].buffered = cmp->file[1].buffered = 0) + { + /* Read a buffer's worth from both files. */ + for (f = 0; f < 2; f++) + if (0 <= cmp->file[f].desc) + file_block_read (&cmp->file[f], + buffer_size - cmp->file[f].buffered); + + /* If the buffers differ, the files differ. */ + if (cmp->file[0].buffered != cmp->file[1].buffered + || memcmp (cmp->file[0].buffer, + cmp->file[1].buffer, + cmp->file[0].buffered)) + { + changes = 1; + break; + } + + /* If we reach end of file, the files are the same. */ + if (cmp->file[0].buffered != buffer_size) + { + changes = 0; + break; + } + } + } + + changes = briefly_report (changes, cmp->file); + } + else + { + /* Allocate vectors for the results of comparison: + a flag for each line of each file, saying whether that line + is an insertion or deletion. + Allocate an extra element, always 0, at each end of each vector. */ + + size_t s = cmp->file[0].buffered_lines + cmp->file[1].buffered_lines + 4; + bool *flag_space = zalloc (s * sizeof *flag_space); + cmp->file[0].changed = flag_space + 1; + cmp->file[1].changed = flag_space + cmp->file[0].buffered_lines + 3; + + /* Some lines are obviously insertions or deletions + because they don't match anything. Detect them now, and + avoid even thinking about them in the main comparison algorithm. */ + + discard_confusing_lines (cmp->file); + + /* Now do the main comparison algorithm, considering just the + undiscarded lines. */ + + xvec = cmp->file[0].undiscarded; + yvec = cmp->file[1].undiscarded; + diags = (cmp->file[0].nondiscarded_lines + + cmp->file[1].nondiscarded_lines + 3); + fdiag = xmalloc (diags * (2 * sizeof *fdiag)); + bdiag = fdiag + diags; + fdiag += cmp->file[1].nondiscarded_lines + 1; + bdiag += cmp->file[1].nondiscarded_lines + 1; + + /* Set TOO_EXPENSIVE to be approximate square root of input size, + bounded below by 256. */ + too_expensive = 1; + for (; diags != 0; diags >>= 2) + too_expensive <<= 1; + too_expensive = MAX (256, too_expensive); + + files[0] = cmp->file[0]; + files[1] = cmp->file[1]; + + compareseq (0, cmp->file[0].nondiscarded_lines, + 0, cmp->file[1].nondiscarded_lines, minimal); + + free (fdiag - (cmp->file[1].nondiscarded_lines + 1)); + + /* Modify the results slightly to make them prettier + in cases where that can validly be done. */ + + shift_boundaries (cmp->file); + + /* Get the results of comparison in the form of a chain + of `struct change's -- an edit script. */ + + if (output_style == OUTPUT_ED) + script = build_reverse_script (cmp->file); + else + script = build_script (cmp->file); + + /* Set CHANGES if we had any diffs. + If some changes are ignored, we must scan the script to decide. */ + if (ignore_blank_lines || ignore_regexp.fastmap) + { + struct change *next = script; + changes = 0; + + while (next && changes == 0) + { + struct change *this, *end; + lin first0, last0, first1, last1; + + /* Find a set of changes that belong together. */ + this = next; + end = find_change (next); + + /* Disconnect them from the rest of the changes, making them + a hunk, and remember the rest for next iteration. */ + next = end->link; + end->link = 0; + + /* Determine whether this hunk is really a difference. */ + if (analyze_hunk (this, &first0, &last0, &first1, &last1)) + changes = 1; + + /* Reconnect the script so it will all be freed properly. */ + end->link = next; + } + } + else + changes = (script != 0); + + if (brief) + changes = briefly_report (changes, cmp->file); + else + { + if (changes | !no_diff_means_no_output) + { + /* Record info for starting up output, + to be used if and when we have some output to print. */ + setup_output (file_label[0] ? file_label[0] : cmp->file[0].name, + file_label[1] ? file_label[1] : cmp->file[1].name, + cmp->parent != 0); + + switch (output_style) + { + case OUTPUT_CONTEXT: + print_context_script (script, 0); + break; + + case OUTPUT_UNIFIED: + print_context_script (script, 1); + break; + + case OUTPUT_ED: + print_ed_script (script); + break; + + case OUTPUT_FORWARD_ED: + pr_forward_ed_script (script); + break; + + case OUTPUT_RCS: + print_rcs_script (script); + break; + + case OUTPUT_NORMAL: + print_normal_script (script); + break; + + case OUTPUT_IFDEF: + print_ifdef_script (script); + break; + + case OUTPUT_SDIFF: + print_sdiff_script (script); + break; + + default: + abort (); + } + + finish_output (); + } + } + + free (cmp->file[0].undiscarded); + + free (flag_space); + + for (f = 0; f < 2; f++) + { + free (cmp->file[f].equivs); + free (cmp->file[f].linbuf + cmp->file[f].linbuf_base); + } + + for (e = script; e; e = p) + { + p = e->link; + free (e); + } + + if (! ROBUST_OUTPUT_STYLE (output_style)) + for (f = 0; f < 2; ++f) + if (cmp->file[f].missing_newline) + { + error (0, 0, "%s: %s\n", + file_label[f] ? file_label[f] : cmp->file[f].name, + _("No newline at end of file")); + changes = 2; + } + } + + if (cmp->file[0].buffer != cmp->file[1].buffer) + free (cmp->file[0].buffer); + free (cmp->file[1].buffer); + + return changes; +} diff --git a/src/apps/bin/diffutils-2.8.1/src/cmp.c b/src/apps/bin/diffutils-2.8.1/src/cmp.c new file mode 100644 index 0000000000..f978429504 --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/src/cmp.c @@ -0,0 +1,674 @@ +/* cmp - compare two files byte by byte + + Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1998, 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; see the file COPYING. + If not, write to the Free Software Foundation, + 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + +#include "system.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#if defined LC_MESSAGES && ENABLE_NLS +# define hard_locale_LC_MESSAGES hard_locale (LC_MESSAGES) +#else +# define hard_locale_LC_MESSAGES 0 +#endif + +static char const authorship_msgid[] = + N_("Written by Torbjorn Granlund and David MacKenzie."); + +static char const copyright_string[] = + "Copyright (C) 2002 Free Software Foundation, Inc."; + +extern char const version_string[]; + +static int cmp (void); +static off_t file_position (int); +static size_t block_compare (word const *, word const *); +static size_t block_compare_and_count (word const *, word const *, off_t *); +static void sprintc (char *, unsigned char); + +/* Name under which this program was invoked. */ +char *program_name; + +/* Filenames of the compared files. */ +static char const *file[2]; + +/* File descriptors of the files. */ +static int file_desc[2]; + +/* Status of the files. */ +static struct stat stat_buf[2]; + +/* Read buffers for the files. */ +static word *buffer[2]; + +/* Optimal block size for the files. */ +static size_t buf_size; + +/* Initial prefix to ignore for each file. */ +static off_t ignore_initial[2]; + +/* Number of bytes to compare. */ +static uintmax_t bytes = UINTMAX_MAX; + +/* Output format. */ +static enum comparison_type + { + type_first_diff, /* Print the first difference. */ + type_all_diffs, /* Print all differences. */ + type_status /* Exit status only. */ + } comparison_type; + +/* If nonzero, print values of bytes quoted like cat -t does. */ +static bool opt_print_bytes; + +/* Values for long options that do not have single-letter equivalents. */ +enum +{ + HELP_OPTION = CHAR_MAX + 1 +}; + +static struct option const long_options[] = +{ + {"print-bytes", 0, 0, 'b'}, + {"print-chars", 0, 0, 'c'}, /* obsolescent as of diffutils 2.7.3 */ + {"ignore-initial", 1, 0, 'i'}, + {"verbose", 0, 0, 'l'}, + {"bytes", 1, 0, 'n'}, + {"silent", 0, 0, 's'}, + {"quiet", 0, 0, 's'}, + {"version", 0, 0, 'v'}, + {"help", 0, 0, HELP_OPTION}, + {0, 0, 0, 0} +}; + +static void try_help (char const *, char const *) __attribute__((noreturn)); +static void +try_help (char const *reason_msgid, char const *operand) +{ + if (reason_msgid) + error (0, 0, _(reason_msgid), operand); + error (EXIT_TROUBLE, 0, + _("Try `%s --help' for more information."), program_name); + abort (); +} + +static char const valid_suffixes[] = "kKMGTPEZY0"; + +/* Parse an operand *ARGPTR of --ignore-initial, updating *ARGPTR to + point after the operand. If DELIMITER is nonzero, the operand may + be followed by DELIMITER; otherwise it must be null-terminated. */ +static off_t +parse_ignore_initial (char **argptr, char delimiter) +{ + uintmax_t val; + off_t o; + char const *arg = *argptr; + strtol_error e = xstrtoumax (arg, argptr, 0, &val, valid_suffixes); + if (! (e == LONGINT_OK + || (e == LONGINT_INVALID_SUFFIX_CHAR && **argptr == delimiter)) + || (o = val) < 0 || o != val || val == UINTMAX_MAX) + try_help ("invalid --ignore-initial value `%s'", arg); + return o; +} + +/* Specify the output format. */ +static void +specify_comparison_type (enum comparison_type t) +{ + if (comparison_type) + try_help ("options -l and -s are incompatible", 0); + comparison_type = t; +} + +static void +check_stdout (void) +{ + if (ferror (stdout)) + error (EXIT_TROUBLE, 0, "%s", _("write failed")); + else if (fclose (stdout) != 0) + error (EXIT_TROUBLE, errno, "%s", _("standard output")); +} + +static char const * const option_help_msgid[] = { + N_("-b --print-bytes Print differing bytes."), + N_("-i SKIP --ignore-initial=SKIP Skip the first SKIP bytes of input."), + N_("-i SKIP1:SKIP2 --ignore-initial=SKIP1:SKIP2"), + N_(" Skip the first SKIP1 bytes of FILE1 and the first SKIP2 bytes of FILE2."), + N_("-l --verbose Output byte numbers and values of all differing bytes."), + N_("-n LIMIT --bytes=LIMIT Compare at most LIMIT bytes."), + N_("-s --quiet --silent Output nothing; yield exit status only."), + N_("-v --version Output version info."), + N_("--help Output this help."), + 0 +}; + +static void +usage (void) +{ + char const * const *p; + + printf (_("Usage: %s [OPTION]... FILE1 [FILE2 [SKIP1 [SKIP2]]]\n"), + program_name); + printf ("%s\n\n", _("Compare two files byte by byte.")); + for (p = option_help_msgid; *p; p++) + printf (" %s\n", _(*p)); + printf ("\n%s\n%s\n\n%s\n\n%s\n", + _("SKIP1 and SKIP2 are the number of bytes to skip in each file."), + _("SKIP values may be followed by the following multiplicative suffixes:\n\ +kB 1000, K 1024, MB 1,000,000, M 1,048,576,\n\ +GB 1,000,000,000, G 1,073,741,824, and so on for T, P, E, Z, Y."), + _("If a FILE is `-' or missing, read standard input."), + _("Report bugs to .")); +} + +int +main (int argc, char **argv) +{ + int c, f, exit_status; + size_t words_per_buffer; + + exit_failure = EXIT_TROUBLE; + initialize_main (&argc, &argv); + program_name = argv[0]; + setlocale (LC_ALL, ""); + bindtextdomain (PACKAGE, LOCALEDIR); + textdomain (PACKAGE); + c_stack_action (c_stack_die); + + /* Parse command line options. */ + + while ((c = getopt_long (argc, argv, "bci:ln:sv", long_options, 0)) + != -1) + switch (c) + { + case 'b': + case 'c': /* 'c' is obsolescent as of diffutils 2.7.3 */ + opt_print_bytes = 1; + break; + + case 'i': + ignore_initial[0] = parse_ignore_initial (&optarg, ':'); + ignore_initial[1] = (*optarg++ == ':' + ? parse_ignore_initial (&optarg, 0) + : ignore_initial[0]); + break; + + case 'l': + specify_comparison_type (type_all_diffs); + break; + + case 'n': + { + uintmax_t n; + if (xstrtoumax (optarg, 0, 0, &n, valid_suffixes) != LONGINT_OK) + try_help ("invalid --bytes value `%s'", optarg); + if (n < bytes) + bytes = n; + } + break; + + case 's': + specify_comparison_type (type_status); + break; + + case 'v': + printf ("cmp %s\n%s\n\n%s\n\n%s\n", + version_string, copyright_string, + _(free_software_msgid), _(authorship_msgid)); + check_stdout (); + return EXIT_SUCCESS; + + case HELP_OPTION: + usage (); + check_stdout (); + return EXIT_SUCCESS; + + default: + try_help (0, 0); + } + + if (optind == argc) + try_help ("missing operand after `%s'", argv[argc - 1]); + + file[0] = argv[optind++]; + file[1] = optind < argc ? argv[optind++] : "-"; + + for (f = 0; f < 2 && optind < argc; f++) + { + char *arg = argv[optind++]; + ignore_initial[f] = parse_ignore_initial (&arg, 0); + } + + if (optind < argc) + try_help ("extra operand `%s'", argv[optind]); + + for (f = 0; f < 2; f++) + { + /* If file[1] is "-", treat it first; this avoids a misdiagnostic if + stdin is closed and opening file[0] yields file descriptor 0. */ + int f1 = f ^ (strcmp (file[1], "-") == 0); + + /* Two files with the same name are identical. + But wait until we open the file once, for proper diagnostics. */ + if (f && file_name_cmp (file[0], file[1]) == 0) + return EXIT_SUCCESS; + + file_desc[f1] = (strcmp (file[f1], "-") == 0 + ? STDIN_FILENO + : open (file[f1], O_RDONLY, 0)); + if (file_desc[f1] < 0 || fstat (file_desc[f1], stat_buf + f1) != 0) + { + if (file_desc[f1] < 0 && comparison_type == type_status) + exit (EXIT_TROUBLE); + else + error (EXIT_TROUBLE, errno, "%s", file[f1]); + } + + set_binary_mode (file_desc[f1], 1); + } + + /* If the files are links to the same inode and have the same file position, + they are identical. */ + + if (0 < same_file (&stat_buf[0], &stat_buf[1]) + && same_file_attributes (&stat_buf[0], &stat_buf[1]) + && file_position (0) == file_position (1)) + return EXIT_SUCCESS; + + /* If output is redirected to the null device, we may assume `-s'. */ + + if (comparison_type != type_status) + { + struct stat outstat, nullstat; + + if (fstat (STDOUT_FILENO, &outstat) == 0 + && stat (NULL_DEVICE, &nullstat) == 0 + && 0 < same_file (&outstat, &nullstat)) + comparison_type = type_status; + } + + /* If only a return code is needed, + and if both input descriptors are associated with plain files, + conclude that the files differ if they have different sizes + and if more bytes will be compared than are in the smaller file. */ + + if (comparison_type == type_status + && S_ISREG (stat_buf[0].st_mode) + && S_ISREG (stat_buf[1].st_mode)) + { + off_t s0 = stat_buf[0].st_size - file_position (0); + off_t s1 = stat_buf[1].st_size - file_position (1); + if (s0 < 0) + s0 = 0; + if (s1 < 0) + s1 = 0; + if (s0 != s1 && MIN (s0, s1) < bytes) + exit (EXIT_FAILURE); + } + + /* Get the optimal block size of the files. */ + + buf_size = buffer_lcm (STAT_BLOCKSIZE (stat_buf[0]), + STAT_BLOCKSIZE (stat_buf[1]), + PTRDIFF_MAX - sizeof (word)); + + /* Allocate word-aligned buffers, with space for sentinels at the end. */ + + words_per_buffer = (buf_size + 2 * sizeof (word) - 1) / sizeof (word); + buffer[0] = xmalloc (2 * sizeof (word) * words_per_buffer); + buffer[1] = buffer[0] + words_per_buffer; + + exit_status = cmp (); + + for (f = 0; f < 2; f++) + if (close (file_desc[f]) != 0) + error (EXIT_TROUBLE, errno, "%s", file[f]); + if (exit_status != 0 && comparison_type != type_status) + check_stdout (); + exit (exit_status); + return exit_status; +} + +/* Compare the two files already open on `file_desc[0]' and `file_desc[1]', + using `buffer[0]' and `buffer[1]'. + Return EXIT_SUCCESS if identical, EXIT_FAILURE if different, + >1 if error. */ + +static int +cmp (void) +{ + off_t line_number = 1; /* Line number (1...) of difference. */ + off_t byte_number = 1; /* Byte number (1...) of difference. */ + uintmax_t remaining = bytes; /* Remaining number of bytes to compare. */ + size_t read0, read1; /* Number of bytes read from each file. */ + size_t first_diff; /* Offset (0...) in buffers of 1st diff. */ + size_t smaller; /* The lesser of `read0' and `read1'. */ + word *buffer0 = buffer[0]; + word *buffer1 = buffer[1]; + char *buf0 = (char *) buffer0; + char *buf1 = (char *) buffer1; + int ret = EXIT_SUCCESS; + int f; + int offset_width; + + if (comparison_type == type_all_diffs) + { + off_t byte_number_max = MIN (bytes, TYPE_MAXIMUM (off_t)); + + for (f = 0; f < 2; f++) + if (S_ISREG (stat_buf[f].st_mode)) + { + off_t file_bytes = stat_buf[f].st_size - file_position (f); + if (file_bytes < byte_number_max) + byte_number_max = file_bytes; + } + + for (offset_width = 1; (byte_number_max /= 10) != 0; offset_width++) + continue; + } + + for (f = 0; f < 2; f++) + { + off_t ig = ignore_initial[f]; + if (ig && file_position (f) == -1) + { + /* lseek failed; read and discard the ignored initial prefix. */ + do + { + size_t bytes_to_read = MIN (ig, buf_size); + size_t r = block_read (file_desc[f], buf0, bytes_to_read); + if (r != bytes_to_read) + { + if (r == SIZE_MAX) + error (EXIT_TROUBLE, errno, "%s", file[f]); + break; + } + ig -= r; + } + while (ig); + } + } + + do + { + size_t bytes_to_read = buf_size; + + if (remaining != UINTMAX_MAX) + { + if (remaining < bytes_to_read) + bytes_to_read = remaining; + remaining -= bytes_to_read; + } + + read0 = block_read (file_desc[0], buf0, bytes_to_read); + if (read0 == SIZE_MAX) + error (EXIT_TROUBLE, errno, "%s", file[0]); + read1 = block_read (file_desc[1], buf1, bytes_to_read); + if (read1 == SIZE_MAX) + error (EXIT_TROUBLE, errno, "%s", file[1]); + + /* Insert sentinels for the block compare. */ + + buf0[read0] = ~buf1[read0]; + buf1[read1] = ~buf0[read1]; + + /* If the line number should be written for differing files, + compare the blocks and count the number of newlines + simultaneously. */ + first_diff = (comparison_type == type_first_diff + ? block_compare_and_count (buffer0, buffer1, &line_number) + : block_compare (buffer0, buffer1)); + + byte_number += first_diff; + smaller = MIN (read0, read1); + + if (first_diff < smaller) + { + switch (comparison_type) + { + case type_first_diff: + { + char byte_buf[INT_BUFSIZE_BOUND (off_t)]; + char line_buf[INT_BUFSIZE_BOUND (off_t)]; + char const *byte_num = offtostr (byte_number, byte_buf); + char const *line_num = offtostr (line_number, line_buf); + if (!opt_print_bytes) + { + /* See POSIX 1003.1-2001 for this format. This + message is used only in the POSIX locale, so it + need not be translated. */ + static char const char_message[] = + "%s %s differ: char %s, line %s\n"; + + /* The POSIX rationale recommends using the word + "byte" outside the POSIX locale. Some gettext + implementations translate even in the POSIX + locale if certain other environment variables + are set, so use "byte" if a translation is + available, or if outside the POSIX locale. */ + static char const byte_msgid[] = + N_("%s %s differ: byte %s, line %s\n"); + char const *byte_message = _(byte_msgid); + bool use_byte_message = (byte_message != byte_msgid + || hard_locale_LC_MESSAGES); + + printf ((use_byte_message + ? byte_message + : "%s %s differ: char %s, line %s\n"), + file[0], file[1], byte_num, line_num); + } + else + { + unsigned char c0 = buf0[first_diff]; + unsigned char c1 = buf1[first_diff]; + char s0[5]; + char s1[5]; + sprintc (s0, c0); + sprintc (s1, c1); + printf (_("%s %s differ: byte %s, line %s is %3o %s %3o %s\n"), + file[0], file[1], byte_num, line_num, + c0, s0, c1, s1); + } + } + /* Fall through. */ + case type_status: + return EXIT_FAILURE; + + case type_all_diffs: + do + { + unsigned char c0 = buf0[first_diff]; + unsigned char c1 = buf1[first_diff]; + if (c0 != c1) + { + char byte_buf[INT_BUFSIZE_BOUND (off_t)]; + char const *byte_num = offtostr (byte_number, byte_buf); + if (!opt_print_bytes) + { + /* See POSIX 1003.1-2001 for this format. */ + printf ("%*s %3o %3o\n", + offset_width, byte_num, c0, c1); + } + else + { + char s0[5]; + char s1[5]; + sprintc (s0, c0); + sprintc (s1, c1); + printf ("%*s %3o %-4s %3o %s\n", + offset_width, byte_num, c0, s0, c1, s1); + } + } + byte_number++; + first_diff++; + } + while (first_diff < smaller); + ret = EXIT_FAILURE; + break; + } + } + + if (read0 != read1) + { + if (comparison_type != type_status) + { + /* See POSIX 1003.1-2001 for this format. */ + fprintf (stderr, _("cmp: EOF on %s\n"), file[read1 < read0]); + } + + return EXIT_FAILURE; + } + } + while (read0 == buf_size); + + return ret; +} + +/* Compare two blocks of memory P0 and P1 until they differ, + and count the number of '\n' occurrences in the common + part of P0 and P1. + If the blocks are not guaranteed to be different, put sentinels at the ends + of the blocks before calling this function. + + Return the offset of the first byte that differs. + Increment *COUNT by the count of '\n' occurrences. */ + +static size_t +block_compare_and_count (word const *p0, word const *p1, off_t *count) +{ + word l; /* One word from first buffer. */ + word const *l0, *l1; /* Pointers into each buffer. */ + char const *c0, *c1; /* Pointers for finding exact address. */ + size_t cnt = 0; /* Number of '\n' occurrences. */ + word nnnn; /* Newline, sizeof (word) times. */ + int i; + + nnnn = 0; + for (i = 0; i < sizeof nnnn; i++) + nnnn = (nnnn << CHAR_BIT) | '\n'; + + /* Find the rough position of the first difference by reading words, + not bytes. */ + + for (l0 = p0, l1 = p1; (l = *l0) == *l1; l0++, l1++) + { + l ^= nnnn; + for (i = 0; i < sizeof l; i++) + { + cnt += ! (unsigned char) l; + l >>= CHAR_BIT; + } + } + + /* Find the exact differing position (endianness independent). */ + + for (c0 = (char const *) l0, c1 = (char const *) l1; + *c0 == *c1; + c0++, c1++) + cnt += *c0 == '\n'; + + *count += cnt; + return c0 - (char const *) p0; +} + +/* Compare two blocks of memory P0 and P1 until they differ. + If the blocks are not guaranteed to be different, put sentinels at the ends + of the blocks before calling this function. + + Return the offset of the first byte that differs. */ + +static size_t +block_compare (word const *p0, word const *p1) +{ + word const *l0, *l1; + char const *c0, *c1; + + /* Find the rough position of the first difference by reading words, + not bytes. */ + + for (l0 = p0, l1 = p1; *l0 == *l1; l0++, l1++) + continue; + + /* Find the exact differing position (endianness independent). */ + + for (c0 = (char const *) l0, c1 = (char const *) l1; + *c0 == *c1; + c0++, c1++) + continue; + + return c0 - (char const *) p0; +} + +/* Put into BUF the unsigned char C, making unprintable bytes + visible by quoting like cat -t does. */ + +static void +sprintc (char *buf, unsigned char c) +{ + if (! ISPRINT (c)) + { + if (c >= 128) + { + *buf++ = 'M'; + *buf++ = '-'; + c -= 128; + } + if (c < 32) + { + *buf++ = '^'; + c += 64; + } + else if (c == 127) + { + *buf++ = '^'; + c = '?'; + } + } + + *buf++ = c; + *buf = 0; +} + +/* Position file F to ignore_initial[F] bytes from its initial position, + and yield its new position. Don't try more than once. */ + +static off_t +file_position (int f) +{ + static bool positioned[2]; + static off_t position[2]; + + if (! positioned[f]) + { + positioned[f] = 1; + position[f] = lseek (file_desc[f], ignore_initial[f], SEEK_CUR); + } + return position[f]; +} diff --git a/src/apps/bin/diffutils-2.8.1/src/config.h b/src/apps/bin/diffutils-2.8.1/src/config.h new file mode 100644 index 0000000000..19a7a1b26b --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/src/config.h @@ -0,0 +1,1436 @@ +/* config.h. Generated by configure. */ +/* config.hin. Generated from configure.ac by autoheader. */ + +/* Define if you have the Andrew File System. */ +/* #undef AFS */ + +/* Define to the function xargmatch calls on failures. */ +#define ARGMATCH_DIE usage (1) + +/* Define to the declaration of the xargmatch failure function. */ +#define ARGMATCH_DIE_DECL extern void usage () + +/* 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 1 if using `getloadavg.c'. */ +#define C_GETLOADAVG 1 + +/* Define to 1 for DGUX with . */ +/* #undef DGUX */ + +/* the name of the file descriptor member of DIR */ +/* #undef DIR_FD_MEMBER_NAME */ + +#ifdef DIR_FD_MEMBER_NAME +# define DIR_TO_FD(Dir_p) ((Dir_p)->DIR_FD_MEMBER_NAME) +#else +# define DIR_TO_FD(Dir_p) -1 +#endif + +#define getpagesize() 4096 + +/* Define if there is a member named d_ino in the struct describing directory + headers. */ +#define D_INO_IN_DIRENT 1 + +/* Define to 1 if translation of program messages to the user's native + language is requested. */ +/* #undef ENABLE_NLS */ + +/* Define on systems for which file names may have a so-called `drive letter' + prefix, define this to compute the length of that prefix, including the + colon. */ +#define FILESYSTEM_ACCEPTS_DRIVE_LETTER_PREFIX 0 + +/* Define if the backslash character may also serve as a file name component + separator. */ +#define FILESYSTEM_BACKSLASH_IS_FILE_NAME_SEPARATOR 0 + +#if FILESYSTEM_ACCEPTS_DRIVE_LETTER_PREFIX +# define FILESYSTEM_PREFIX_LEN(Filename) \ + ((Filename)[0] && (Filename)[1] == ':' ? 2 : 0) +#else +# define FILESYSTEM_PREFIX_LEN(Filename) 0 +#endif + +/* Define to the type of elements in the array set by `getgroups'. Usually + this is either `int' or `gid_t'. */ +#define GETGROUPS_T gid_t + +/* Define to 1 if the `getloadavg' function needs to be run setuid or setgid. + */ +/* #undef GETLOADAVG_PRIVILEGED */ + +/* Define if gettimeofday clobbers localtime's static buffer. */ +/* #undef GETTIMEOFDAY_CLOBBERS_LOCALTIME_BUFFER */ + +/* The concatenation of the strings `GNU ', and PACKAGE. */ +#define GNU_PACKAGE "GNU coreutils" + +/* Define if your system defines TIOCGWINSZ in sys/ioctl.h. */ +/* #undef GWINSZ_IN_SYS_IOCTL */ + +/* Define if your system defines TIOCGWINSZ in sys/pty.h. */ +/* #undef GWINSZ_IN_SYS_PTY */ + +/* Define to 1 if you have the `acl' function. */ +/* #undef HAVE_ACL */ + +/* Define to 1 if you have the `alarm' function. */ +#define HAVE_ALARM 1 + +/* Define to 1 if you have `alloca', as a function or macro. */ +#define HAVE_ALLOCA 1 + +/* Define to 1 if you have and it should be used (not on Ultrix). + */ +#define HAVE_ALLOCA_H 1 + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_ARPA_INET_H */ + +/* Define to 1 if you have the `atexit' function. */ +#define HAVE_ATEXIT 1 + +/* Define to 1 if you have the `bcopy' function. */ +#define HAVE_BCOPY 1 + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_BP_SYM_H */ + +/* Define to 1 if you have the `btowc' function. */ +#define HAVE_BTOWC 1 + +/* Define to 1 if you have the `chroot' function. */ +/* #undef HAVE_CHROOT */ + +/* Define to 1 if you have the `chsize' function. */ +/* #undef HAVE_CHSIZE */ + +/* Define to 1 if you have the `clock_gettime' function. */ +/* #undef HAVE_CLOCK_GETTIME */ + +/* Define to 1 if you have the `clock_settime' function. */ +/* #undef HAVE_CLOCK_SETTIME */ + +/* Define if backslash-a works in C strings. */ +#define HAVE_C_BACKSLASH_A 1 + +/* FIXME */ +#define HAVE_C_LINE 1 + +/* Define if the GNU dcgettext() function is already present or preinstalled. + */ +/* #undef HAVE_DCGETTEXT */ + +/* Define to 1 if you have the declaration of `clearerr_unlocked', and to 0 if + you don't. */ +#define HAVE_DECL_CLEARERR_UNLOCKED 1 + +/* Define to 1 if you have the declaration of `dirfd', and to 0 if you don't. + */ +#define HAVE_DECL_DIRFD 0 + +/* Define to 1 if you have the declaration of `euidaccess', and to 0 if you + don't. */ +#define HAVE_DECL_EUIDACCESS 0 + +/* Define to 1 if you have the declaration of `feof_unlocked', and to 0 if you + don't. */ +#define HAVE_DECL_FEOF_UNLOCKED 1 + +/* Define to 1 if you have the declaration of `ferror_unlocked', and to 0 if + you don't. */ +#define HAVE_DECL_FERROR_UNLOCKED 1 + +/* Define to 1 if you have the declaration of `fflush_unlocked', and to 0 if + you don't. */ +#define HAVE_DECL_FFLUSH_UNLOCKED 1 + +/* Define to 1 if you have the declaration of `fgets_unlocked', and to 0 if + you don't. */ +#define HAVE_DECL_FGETS_UNLOCKED 0 + +/* Define to 1 if you have the declaration of `fputc_unlocked', and to 0 if + you don't. */ +#define HAVE_DECL_FPUTC_UNLOCKED 1 + +/* Define to 1 if you have the declaration of `fputs_unlocked', and to 0 if + you don't. */ +#define HAVE_DECL_FPUTS_UNLOCKED 0 + +/* Define to 1 if you have the declaration of `fread_unlocked', and to 0 if + you don't. */ +#define HAVE_DECL_FREAD_UNLOCKED 1 + +/* Define to 1 if you have the declaration of `free', and to 0 if you don't. + */ +#define HAVE_DECL_FREE 1 + +/* Define to 1 if you have the declaration of `fwrite_unlocked', and to 0 if + you don't. */ +#define HAVE_DECL_FWRITE_UNLOCKED 1 + +/* Define to 1 if you have the declaration of `getchar_unlocked', and to 0 if + you don't. */ +#define HAVE_DECL_GETCHAR_UNLOCKED 1 + +/* Define to 1 if you have the declaration of `getcwd', and to 0 if you don't. + */ +#define HAVE_DECL_GETCWD 1 + +/* Define to 1 if you have the declaration of `getc_unlocked', and to 0 if you + don't. */ +#define HAVE_DECL_GETC_UNLOCKED 1 + +/* Define to 1 if you have the declaration of `getenv', and to 0 if you don't. + */ +#define HAVE_DECL_GETENV 1 + +/* Define to 1 if you have the declaration of `geteuid', and to 0 if you + don't. */ +#define HAVE_DECL_GETEUID 1 + +/* Define to 1 if you have the declaration of `getgrgid', and to 0 if you + don't. */ +#define HAVE_DECL_GETGRGID 1 + +/* Define to 1 if you have the declaration of `getlogin', and to 0 if you + don't. */ +#define HAVE_DECL_GETLOGIN 1 + +/* Define to 1 if you have the declaration of `getpwuid', and to 0 if you + don't. */ +#define HAVE_DECL_GETPWUID 1 + +/* Define to 1 if you have the declaration of `getuid', and to 0 if you don't. + */ +#define HAVE_DECL_GETUID 1 + +/* Define to 1 if you have the declaration of `getutent', and to 0 if you + don't. */ +#define HAVE_DECL_GETUTENT 0 + +/* Define to 1 if you have the declaration of `lseek', and to 0 if you don't. + */ +#define HAVE_DECL_LSEEK 1 + +/* Define to 1 if you have the declaration of `malloc', and to 0 if you don't. + */ +#define HAVE_DECL_MALLOC 1 + +/* Define to 1 if you have the declaration of `memchr', and to 0 if you don't. + */ +#define HAVE_DECL_MEMCHR 1 + +/* Define to 1 if you have the declaration of `memrchr', and to 0 if you + don't. */ +#define HAVE_DECL_MEMRCHR 0 + +/* Define to 1 if you have the declaration of `nanosleep', and to 0 if you + don't. */ +#define HAVE_DECL_NANOSLEEP 0 + +/* Define to 1 if you have the declaration of `putchar_unlocked', and to 0 if + you don't. */ +#define HAVE_DECL_PUTCHAR_UNLOCKED 1 + +/* Define to 1 if you have the declaration of `putc_unlocked', and to 0 if you + don't. */ +#define HAVE_DECL_PUTC_UNLOCKED 1 + +/* Define to 1 if you have the declaration of `realloc', and to 0 if you + don't. */ +#define HAVE_DECL_REALLOC 1 + +/* Define to 1 if you have the declaration of `stpcpy', and to 0 if you don't. + */ +#define HAVE_DECL_STPCPY 1 + +/* Define to 1 if you have the declaration of `strerror', and to 0 if you + don't. */ +#define HAVE_DECL_STRERROR 1 + +/* Define to 1 if you have the declaration of `strerror_r', and to 0 if you + don't. */ +#define HAVE_DECL_STRERROR_R 1 + +/* Define to 1 if you have the declaration of `strndup', and to 0 if you + don't. */ +#define HAVE_DECL_STRNDUP 0 + +/* Define to 1 if you have the declaration of `strnlen', and to 0 if you + don't. */ +#define HAVE_DECL_STRNLEN 0 + +/* Define to 1 if you have the declaration of `strsignal', and to 0 if you + don't. */ +#define HAVE_DECL_STRSIGNAL 1 + +/* Define to 1 if you have the declaration of `strstr', and to 0 if you don't. + */ +#define HAVE_DECL_STRSTR 1 + +/* Define to 1 if you have the declaration of `strtoimax', and to 0 if you + don't. */ +#define HAVE_DECL_STRTOIMAX 1 + +/* Define to 1 if you have the declaration of `strtol', and to 0 if you don't. + */ +#define HAVE_DECL_STRTOL 1 + +/* Define to 1 if you have the declaration of `strtoll', and to 0 if you + don't. */ +#define HAVE_DECL_STRTOLL 1 + +/* Define to 1 if you have the declaration of `strtoul', and to 0 if you + don't. */ +#define HAVE_DECL_STRTOUL 1 + +/* Define to 1 if you have the declaration of `strtoull', and to 0 if you + don't. */ +#define HAVE_DECL_STRTOULL 1 + +/* Define to 1 if you have the declaration of `strtoumax', and to 0 if you + don't. */ +#define HAVE_DECL_STRTOUMAX 1 + +/* Define to 1 if you have the declaration of `sys_siglist', and to 0 if you + don't. */ +#define HAVE_DECL_SYS_SIGLIST 0 + +/* Define to 1 if you have the declaration of `ttyname', and to 0 if you + don't. */ +#define HAVE_DECL_TTYNAME 1 + +/* Define to 1 if you have the declaration of wcwidth(), and to 0 otherwise. + */ +#define HAVE_DECL_WCWIDTH 0 + +/* Define to 1 if you have the declaration of `_sys_siglist', and to 0 if you + don't. */ +#define HAVE_DECL__SYS_SIGLIST 0 + +/* Define to 1 if you have the declaration of `__fpending', and to 0 if you + don't. */ +#define HAVE_DECL___FPENDING 0 + +/* Define to 1 if you have the header file, and it defines `DIR'. + */ +#define HAVE_DIRENT_H 1 + +/* Define to 1 if you have the `dirfd' function. */ +#define HAVE_DIRFD 1 + +/* Define to 1 if you don't have `vprintf' but do have `_doprnt.' */ +/* #undef HAVE_DOPRNT */ + +/* Define to 1 if you have the `dup2' function. */ +#define HAVE_DUP2 1 + +/* Define to 1 if you have the `endgrent' function. */ +#define HAVE_ENDGRENT 1 + +/* Define to 1 if you have the `endpwent' function. */ +#define HAVE_ENDPWENT 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_ERRNO_H 1 + +/* Define to 1 if you have the `euidaccess' function. */ +/* #undef HAVE_EUIDACCESS */ + +/* Define to 1 if you have the `fchdir' function. */ +/* #undef HAVE_FCHDIR */ + +/* Define to 1 if you have the header file. */ +#define HAVE_FCNTL_H 1 + +/* Define to 1 if you have the `fdatasync' function. */ +/* #undef HAVE_FDATASYNC */ + +/* Define to 1 if you have the `fesetround' function. */ +#define HAVE_FESETROUND 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_FLOAT_H 1 + +/* Define to 1 if you have the `floor' function. */ +/* #undef HAVE_FLOOR */ + +/* Define to 1 if fseeko (and presumably ftello) exists and is declared. */ +/* #undef HAVE_FSEEKO */ + +/* Define to 1 if you have the header file. */ +#define HAVE_FS_INFO_H 1 + +/* Define to 1 if you have the `fs_stat_dev' function. */ +#define HAVE_FS_STAT_DEV 1 + +/* Define to 1 if you have the `ftime' function. */ +#define HAVE_FTIME 1 + +/* Define to 1 if you have the `ftruncate' function. */ +#define HAVE_FTRUNCATE 1 + +/* Define if struct statfs has the f_fstypename member. */ +/* #undef HAVE_F_FSTYPENAME_IN_STATFS */ + +/* Define to 1 if you have the `getcwd' function. */ +#define HAVE_GETCWD 1 + +/* Define if getcwd (NULL, 0) allocates memory for result. */ +#define HAVE_GETCWD_NULL 1 + +/* Define to 1 if you have the `getdelim' function. */ +/* #undef HAVE_GETDELIM */ + +/* Define to 1 if your system has a working `getgroups' function. */ +#define HAVE_GETGROUPS 1 + +/* Define to 1 if you have the `gethostbyaddr' function. */ +#define HAVE_GETHOSTBYADDR 1 + +/* Define to 1 if you have the `gethostbyname' function. */ +#define HAVE_GETHOSTBYNAME 1 + +/* Define to 1 if you have the `gethostid' function. */ +/* #undef HAVE_GETHOSTID */ + +/* Define to 1 if you have the `gethostname' function. */ +#define HAVE_GETHOSTNAME 1 + +/* Define to 1 if you have the `gethrtime' function. */ +/* #undef HAVE_GETHRTIME */ + +/* Define to 1 if you have the `getloadavg' function. */ +/* #undef HAVE_GETLOADAVG */ + +/* Define to 1 if you have the `getmntent' function. */ +/* #undef HAVE_GETMNTENT */ + +/* Define to 1 if you have the `getmntinfo' function. */ +/* #undef HAVE_GETMNTINFO */ + +/* Define to 1 if you have the `getpagesize' function. */ +/* #undef HAVE_GETPAGESIZE */ + +/* Define to 1 if you have the `getpass' function. */ +/* #undef HAVE_GETPASS */ + +/* Define to 1 if you have the `getspnam' function. */ +/* #undef HAVE_GETSPNAM */ + +/* Define to 1 if you have the `getsysinfo' function. */ +/* #undef HAVE_GETSYSINFO */ + +/* Define if the GNU gettext() function is already present or preinstalled. */ +/* #undef HAVE_GETTEXT */ + +/* Define to 1 if you have the `gettimeofday' function. */ +#define HAVE_GETTIMEOFDAY 1 + +/* Define to 1 if you have the `getusershell' function. */ +/* #undef HAVE_GETUSERSHELL */ + +/* Define to 1 if you have the header file. */ +#define HAVE_GRP_H 1 + +/* Define to 1 if you have the `hasmntopt' function. */ +/* #undef HAVE_HASMNTOPT */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_HURD_H */ + +/* Define if you have the iconv() function. */ +/* #undef HAVE_ICONV */ + +/* Define to 1 if you have the `inet_ntoa' function. */ +#define HAVE_INET_NTOA 1 + +/* Define to 1 if you have the `initgroups' function. */ +/* #undef HAVE_INITGROUPS */ + +/* Define to 1 if you have the header file. */ +#define HAVE_INTTYPES_H 1 + +/* Define to 1 if you have the `isascii' function. */ +#define HAVE_ISASCII 1 + +/* Define to 1 if you have the `iswcntrl' function. */ +#define HAVE_ISWCNTRL 1 + +/* Define to 1 if you have the `iswprint' function. */ +#define HAVE_ISWPRINT 1 + +/* Define to 1 if you have the `iswspace' function. */ +#define HAVE_ISWSPACE 1 + +/* Define if you have and nl_langinfo(CODESET). */ +/* #undef HAVE_LANGINFO_CODESET */ + +/* Define to 1 if you have the `lchown' function. */ +/* #undef HAVE_LCHOWN */ + +/* Define to 1 if you have the `dgc' library (-ldgc). */ +/* #undef HAVE_LIBDGC */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_LIBINTL_H */ + +/* Define to 1 if you have the `kstat' library (-lkstat). */ +/* #undef HAVE_LIBKSTAT */ + +/* Define to 1 if you have the `ldgc' library (-lldgc). */ +/* #undef HAVE_LIBLDGC */ + +/* Define to 1 if you have the `os' library (-los). */ +/* #undef HAVE_LIBOS */ + +/* Define to 1 if you have the `ypsec' library (-lypsec). */ +/* #undef HAVE_LIBYPSEC */ + +/* Define to 1 if you have the header file. */ +#define HAVE_LIMITS_H 1 + +/* Define to 1 if you have the `listmntent' function. */ +/* #undef HAVE_LISTMNTENT */ + +/* Define to 1 if you have the `localeconv' function. */ +#define HAVE_LOCALECONV 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_LOCALE_H 1 + +/* Define to 1 if you have the `localtime_r' function. */ +#define HAVE_LOCALTIME_R 1 + +/* Define to 1 if long double works and has more range or precision than + double. */ +/* #undef HAVE_LONG_DOUBLE */ + +/* Define to 1 if you support file names longer than 14 characters. */ +#define HAVE_LONG_FILE_NAMES 1 + +/* Define if you have the long long type. */ +#define HAVE_LONG_LONG 1 + +/* Define if lstat has the bug that it succeeds when given the zero-length + file name argument. The lstat from SunOS4.1.4 and the Hurd as of + 1998-11-01) do this. */ +/* #undef HAVE_LSTAT_EMPTY_STRING_BUG */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_MACHINE_HAL_SYSINFO_H */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_MACH_MACH_H */ + +/* Define to 1 if your system has a GNU libc compatible `malloc' function, and + to 0 otherwise. */ +#define HAVE_MALLOC 1 + +/* Define to 1 if you have the `mblen' function. */ +#define HAVE_MBLEN 1 + +/* Define to 1 if you have the `mbrlen' function. */ +#define HAVE_MBRLEN 1 + +/* Define to 1 if mbrtowc and mbstate_t are properly declared. */ +/* #undef HAVE_MBRTOWC */ + +/* Define to 1 if you have the `mbsinit' function. */ +#define HAVE_MBSINIT 1 + +/* Define to 1 if you have the `mbsrtowcs' function. */ +#define HAVE_MBSRTOWCS 1 + +/* Define to 1 if declares mbstate_t. */ +/* #undef HAVE_MBSTATE_T */ + +/* Define to 1 if you have the `memchr' function. */ +#define HAVE_MEMCHR 1 + +/* Define to 1 if you have the `memcmp' function. */ +#define HAVE_MEMCMP 1 + +/* Define to 1 if you have the `memcpy' function. */ +#define HAVE_MEMCPY 1 + +/* Define to 1 if you have the `memmove' function. */ +#define HAVE_MEMMOVE 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_MEMORY_H 1 + +/* Define to 1 if you have the `mempcpy' function. */ +/* #undef HAVE_MEMPCPY */ + +/* Define to 1 if you have the `memrchr' function. */ +/* #undef HAVE_MEMRCHR */ + +/* Define to 1 if you have the `memset' function. */ +#define HAVE_MEMSET 1 + +/* Define to 1 if you have the `mkfifo' function. */ +#define HAVE_MKFIFO 1 + +/* Define to 1 if you have the `mkstemp' function. */ +#define HAVE_MKSTEMP 1 + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_MNTENT_H */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_MNTTAB_H */ + +/* Define to 1 if you have the `modf' function. */ +/* #undef HAVE_MODF */ + +/* 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. */ +#define HAVE_NETDB_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_NETINET_IN_H 1 + +/* Define to 1 if you have the `next_dev' function. */ +#define HAVE_NEXT_DEV 1 + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_NLIST_H */ + +/* Define to 1 if libc includes obstacks. */ +#define HAVE_OBSTACK 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_OS_H 1 + +/* Define to 1 if you have the `pathconf' function. */ +#define HAVE_PATHCONF 1 + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_PATHS_H */ + +/* Define if your system has the /proc/uptime special file. */ +/* #undef HAVE_PROC_UPTIME */ + +/* Define to 1 if you have the `pstat_getdynamic' function. */ +/* #undef HAVE_PSTAT_GETDYNAMIC */ + +/* Define to 1 if you have the `pstat_getstatic' function. */ +/* #undef HAVE_PSTAT_GETSTATIC */ + +/* Define to 1 if you have the header file. */ +#define HAVE_PWD_H 1 + +/* Define to 1 if you have the `raise' function. */ +#define HAVE_RAISE 1 + +/* Define to 1 if your system has a GNU libc compatible `realloc' function, + and to 0 otherwise. */ +#define HAVE_REALLOC 1 + +/* Define to 1 if you have the `realpath' function. */ +/* #undef HAVE_REALPATH */ + +/* Define to 1 if you have the `resolvepath' function. */ +/* #undef HAVE_RESOLVEPATH */ + +/* Define to 1 if you have the `rint' function. */ +/* #undef HAVE_RINT */ + +/* Define to 1 if you have the `rmdir' function. */ +#define HAVE_RMDIR 1 + +/* Define to 1 if you have the `rpmatch' function. */ +/* #undef HAVE_RPMATCH */ + +/* Define to 1 if you have the `sethostname' function. */ +/* #undef HAVE_SETHOSTNAME */ + +/* Define to 1 if you have the `setlocale' function. */ +#define HAVE_SETLOCALE 1 + +/* Define to 1 if you have the `setregid' function. */ +/* #undef HAVE_SETREGID */ + +/* Define to 1 if you have the `setreuid' function. */ +/* #undef HAVE_SETREUID */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_SHADOW_H */ + +/* Define to 1 if you have the `sig2str' function. */ +/* #undef HAVE_SIG2STR */ + +/* Define to 1 if you have the `sqrt' function. */ +#define HAVE_SQRT 1 + +/* Define to 1 if you have the `statvfs' function. */ +#define HAVE_STATVFS 1 + +/* Define if stat has the bug that it succeeds when given the zero-length file + name argument. The stat from SunOS4.1.4 and the Hurd as of 1998-11-01) do + this. */ +/* #undef HAVE_STAT_EMPTY_STRING_BUG */ + +/* Define to 1 if stdbool.h conforms to C99. */ +// #define HAVE_STDBOOL_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STDDEF_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STDINT_H 1 + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_STDIO_EXT_H */ + +/* Define to 1 if you have the header file. */ +#define HAVE_STDLIB_H 1 + +/* Define to 1 if you have the `stpcpy' function. */ +#define HAVE_STPCPY 1 + +/* Define to 1 if you have the `strcasecmp' function. */ +#define HAVE_STRCASECMP 1 + +/* Define to 1 if you have the `strchr' function. */ +#define HAVE_STRCHR 1 + +/* Define to 1 if you have the `strcspn' function. */ +#define HAVE_STRCSPN 1 + +/* Define to 1 if you have the `strdup' function. */ +#define HAVE_STRDUP 1 + +/* Define to 1 if you have the `strerror' function. */ +#define HAVE_STRERROR 1 + +/* Define to 1 if you have the `strerror_r' function. */ +#define HAVE_STRERROR_R 1 + +/* Define to 1 if you have the `strftime' function. */ +#define HAVE_STRFTIME 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STRINGS_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STRING_H 1 + +/* Define to 1 if you have the `strncasecmp' function. */ +#define HAVE_STRNCASECMP 1 + +/* Define to 1 if you have the `strndup' function. */ +/* #undef HAVE_STRNDUP */ + +/* Define to 1 if you have the `strpbrk' function. */ +#define HAVE_STRPBRK 1 + +/* Define to 1 if you have the `strrchr' function. */ +#define HAVE_STRRCHR 1 + +/* Define to 1 if you have the `strstr' function. */ +#define HAVE_STRSTR 1 + +/* Define to 1 if you have the `strtoimax' function. */ +#define HAVE_STRTOIMAX 1 + +/* Define to 1 if you have the `strtol' function. */ +#define HAVE_STRTOL 1 + +/* Define to 1 if you have the `strtoll' function. */ +/* #undef HAVE_STRTOLL */ + +/* Define to 1 if you have the `strtoul' function. */ +#define HAVE_STRTOUL 1 + +/* Define to 1 if you have the `strtoull' function. */ +/* #undef HAVE_STRTOULL */ + +/* Define to 1 if you have the `strtoumax' function. */ +#define HAVE_STRTOUMAX 1 + +/* Define if there is a member named d_type in the struct describing directory + headers. */ +/* #undef HAVE_STRUCT_DIRENT_D_TYPE */ + +/* Define to 1 if `f_fstypename' is member of `struct fsstat'. */ +/* #undef HAVE_STRUCT_FSSTAT_F_FSTYPENAME */ + +/* Define to 1 if `n_un.n_name' is member of `struct nlist'. */ +/* #undef HAVE_STRUCT_NLIST_N_UN_N_NAME */ + +/* Define to 1 if `sp_pwdp' is member of `struct spwd'. */ +/* #undef HAVE_STRUCT_SPWD_SP_PWDP */ + +/* Define to 1 if `f_basetype' is member of `struct statfs'. */ +/* #undef HAVE_STRUCT_STATFS_F_BASETYPE */ + +/* Define to 1 if `f_fsid.__val' is member of `struct statfs'. */ +/* #undef HAVE_STRUCT_STATFS_F_FSID___VAL */ + +/* Define to 1 if `f_fstypename' is member of `struct statfs'. */ +/* #undef HAVE_STRUCT_STATFS_F_FSTYPENAME */ + +/* Define to 1 if `f_namelen' is member of `struct statfs'. */ +/* #undef HAVE_STRUCT_STATFS_F_NAMELEN */ + +/* Define to 1 if `f_namemax' is member of `struct statfs'. */ +/* #undef HAVE_STRUCT_STATFS_F_NAMEMAX */ + +/* Define to 1 if `f_type' is member of `struct statfs'. */ +/* #undef HAVE_STRUCT_STATFS_F_TYPE */ + +/* Define to 1 if `f_basetype' is member of `struct statvfs'. */ +/* #undef HAVE_STRUCT_STATVFS_F_BASETYPE */ + +/* Define to 1 if `f_fsid.__val' is member of `struct statvfs'. */ +/* #undef HAVE_STRUCT_STATVFS_F_FSID___VAL */ + +/* Define to 1 if `f_namelen' is member of `struct statvfs'. */ +/* #undef HAVE_STRUCT_STATVFS_F_NAMELEN */ + +/* Define to 1 if `f_namemax' is member of `struct statvfs'. */ +#define HAVE_STRUCT_STATVFS_F_NAMEMAX 1 + +/* Define to 1 if `f_type' is member of `struct statvfs'. */ +/* #undef HAVE_STRUCT_STATVFS_F_TYPE */ + +/* Define to 1 if `st_author' is member of `struct stat'. */ +/* #undef HAVE_STRUCT_STAT_ST_AUTHOR */ + +/* Define to 1 if `st_blksize' is member of `struct stat'. */ +#define HAVE_STRUCT_STAT_ST_BLKSIZE 1 + +/* Define to 1 if `st_blocks' is member of `struct stat'. */ +/* #undef HAVE_STRUCT_STAT_ST_BLOCKS */ + +/* Define if struct timespec is declared in . */ +#define HAVE_STRUCT_TIMESPEC 1 + +/* Define to 1 if `tm_zone' is member of `struct tm'. */ +#define HAVE_STRUCT_TM_TM_ZONE 1 + +/* Define if struct utimbuf is declared -- usually in . Some systems + have utime.h but don't declare the struct anywhere. */ +#define HAVE_STRUCT_UTIMBUF 1 + +/* Define to 1 if `ut_exit.e_exit' is member of `struct utmpx'. */ +/* #undef HAVE_STRUCT_UTMPX_UT_EXIT_E_EXIT */ + +/* Define to 1 if `ut_exit.e_termination' is member of `struct utmpx'. */ +/* #undef HAVE_STRUCT_UTMPX_UT_EXIT_E_TERMINATION */ + +/* Define to 1 if `ut_exit.ut_exit' is member of `struct utmpx'. */ +/* #undef HAVE_STRUCT_UTMPX_UT_EXIT_UT_EXIT */ + +/* Define to 1 if `ut_exit.ut_termination' is member of `struct utmpx'. */ +/* #undef HAVE_STRUCT_UTMPX_UT_EXIT_UT_TERMINATION */ + +/* Define to 1 if `ut_id' is member of `struct utmpx'. */ +/* #undef HAVE_STRUCT_UTMPX_UT_ID */ + +/* Define to 1 if `ut_name' is member of `struct utmpx'. */ +/* #undef HAVE_STRUCT_UTMPX_UT_NAME */ + +/* Define to 1 if `ut_pid' is member of `struct utmpx'. */ +/* #undef HAVE_STRUCT_UTMPX_UT_PID */ + +/* Define to 1 if `ut_type' is member of `struct utmpx'. */ +/* #undef HAVE_STRUCT_UTMPX_UT_TYPE */ + +/* Define to 1 if `ut_user' is member of `struct utmpx'. */ +/* #undef HAVE_STRUCT_UTMPX_UT_USER */ + +/* Define to 1 if `ut_exit.e_exit' is member of `struct utmp'. */ +/* #undef HAVE_STRUCT_UTMP_UT_EXIT_E_EXIT */ + +/* Define to 1 if `ut_exit.e_termination' is member of `struct utmp'. */ +/* #undef HAVE_STRUCT_UTMP_UT_EXIT_E_TERMINATION */ + +/* Define to 1 if `ut_exit.ut_exit' is member of `struct utmp'. */ +/* #undef HAVE_STRUCT_UTMP_UT_EXIT_UT_EXIT */ + +/* Define to 1 if `ut_exit.ut_termination' is member of `struct utmp'. */ +/* #undef HAVE_STRUCT_UTMP_UT_EXIT_UT_TERMINATION */ + +/* Define to 1 if `ut_id' is member of `struct utmp'. */ +/* #undef HAVE_STRUCT_UTMP_UT_ID */ + +/* Define to 1 if `ut_name' is member of `struct utmp'. */ +/* #undef HAVE_STRUCT_UTMP_UT_NAME */ + +/* Define to 1 if `ut_pid' is member of `struct utmp'. */ +/* #undef HAVE_STRUCT_UTMP_UT_PID */ + +/* Define to 1 if `ut_type' is member of `struct utmp'. */ +/* #undef HAVE_STRUCT_UTMP_UT_TYPE */ + +/* Define to 1 if `ut_user' is member of `struct utmp'. */ +/* #undef HAVE_STRUCT_UTMP_UT_USER */ + +/* Define to 1 if you have the `strverscmp' function. */ +/* #undef HAVE_STRVERSCMP */ + +/* Define to 1 if your `struct stat' has `st_blocks'. Deprecated, use + `HAVE_STRUCT_STAT_ST_BLOCKS' instead. */ +/* #undef HAVE_ST_BLOCKS */ + +/* Define if struct stat has an st_dm_mode member. */ +/* #undef HAVE_ST_DM_MODE */ + +/* Define to 1 if you have the `sysctl' function. */ +/* #undef HAVE_SYSCTL */ + +/* Define to 1 if you have the `sysinfo' function. */ +/* #undef HAVE_SYSINFO */ + +/* FIXME */ +/* #undef HAVE_SYSLOG */ + +/* Define to 1 if you have the header file. */ +#define HAVE_SYSLOG_H 1 + +/* Define to 1 if you have the `sysmp' function. */ +/* #undef HAVE_SYSMP */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_SYS_ACL_H */ + +/* 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. */ +/* #undef HAVE_SYS_FILSYS_H */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_SYS_FSTYP_H */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_SYS_FS_S5PARAM_H */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_SYS_FS_TYPES_H */ + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_IOCTL_H 1 + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_SYS_MNTENT_H */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_SYS_MOUNT_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. */ +#define HAVE_SYS_PARAM_H 1 + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_SYS_PSTAT_H */ + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_RESOURCE_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_SOCKET_H 1 + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_SYS_STATFS_H */ + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_STATVFS_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_STAT_H 1 + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_SYS_SYSCTL_H */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_SYS_SYSINFO_H */ + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_SYSMACROS_H 1 + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_SYS_SYSMP_H */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_SYS_SYSTEMCFG_H */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_SYS_SYSTEMINFO_H */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_SYS_TABLE_H */ + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_TIMEB_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_TIME_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_TYPES_H 1 + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_SYS_UCRED_H */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_SYS_VFS_H */ + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_WAIT_H 1 + +/* Define to 1 if you have the `table' function. */ +/* #undef HAVE_TABLE */ + +/* Define to 1 if you have the header file. */ +#define HAVE_TERMIOS_H 1 + +/* Define if struct tm has the tm_gmtoff member. */ +#define HAVE_TM_GMTOFF 1 + +/* Define to 1 if your `struct tm' has `tm_zone'. Deprecated, use + `HAVE_STRUCT_TM_TM_ZONE' instead. */ +#define HAVE_TM_ZONE 1 + +/* Define to 1 if you don't have `tm_zone' but do have the external array + `tzname'. */ +/* #undef HAVE_TZNAME */ + +/* Define to 1 if you have the `tzset' function. */ +#define HAVE_TZSET 1 + +/* Define to 1 if you have the `uname' function. */ +#define HAVE_UNAME 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_UNISTD_H 1 + +/* Define if you have the unsigned long long type. */ +#define HAVE_UNSIGNED_LONG_LONG 1 + +/* Define to 1 if you have the `utime' function. */ +/* #undef HAVE_UTIME */ +#define HAVE_UTIME 1 + +/* Define if utimes accepts a null argument */ +/* #undef HAVE_UTIMES_NULL */ + +/* Define to 1 if you have the header file. */ +#define HAVE_UTIME_H 1 + +/* Define to 1 if `utime(file, NULL)' sets file's timestamp to the present. */ +#define HAVE_UTIME_NULL 1 + +/* Define to 1 if you have the `utmpname' function. */ +/* #undef HAVE_UTMPNAME */ + +/* Define to 1 if you have the `utmpxname' function. */ +/* #undef HAVE_UTMPXNAME */ + +/* FIXME */ +/* #undef HAVE_UTMPX_H */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_UTMP_H */ + +/* FIXME */ +/* #undef HAVE_UT_HOST */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_VALUES_H */ + +/* Define to 1 if you have the `vprintf' function. */ +#define HAVE_VPRINTF 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_WCHAR_H 1 + +/* Define to 1 if you have the `wcrtomb' function. */ +#define HAVE_WCRTOMB 1 + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_WCTYPE_H */ + +/* Define to 1 if you have the `wcwidth' function. */ +/* #undef HAVE_WCWIDTH */ + +/* Define to 1 if you have the `wmempcpy' function. */ +/* #undef HAVE_WMEMPCPY */ + +/* Define to 1 if you have the external variable, _system_configuration with a + member named physmem. */ +/* #undef HAVE__SYSTEM_CONFIGURATION */ + +/* Define to 1 if you have the `__fpending' function. */ +/* #undef HAVE___FPENDING */ + +/* Define to 1 if you have the `__secure_getenv' function. */ +/* #undef HAVE___SECURE_GETENV */ + +/* The host operating system. */ +#define HOST_OPERATING_SYSTEM "BeOS" + +/* Define as const if the declaration of iconv() needs const. */ +/* #undef ICONV_CONST */ + +#if FILESYSTEM_BACKSLASH_IS_FILE_NAME_SEPARATOR +# define ISSLASH(C) ((C) == '/' || (C) == '\\') +#else +# define ISSLASH(C) ((C) == '/') +#endif + +/* Define if `link(2)' dereferences symbolic links. */ +/* #undef LINK_FOLLOWS_SYMLINKS */ + +/* FIXME */ +#define LOCALTIME_CACHE 1 + +/* Define to 1 if `lstat' dereferences a symlink specified with a trailing + slash. */ +#define LSTAT_FOLLOWS_SLASHED_SYMLINK 1 + +/* Define to 1 if `major', `minor', and `makedev' are declared in . + */ +/* #undef MAJOR_IN_MKDEV */ + +/* Define to 1 if `major', `minor', and `makedev' are declared in + . */ +#define MAJOR_IN_SYSMACROS 1 + +/* Define if there is no specific function for reading the list of mounted + filesystems. fread will be used to read /etc/mnttab. (SVR2) */ +/* #undef MOUNTED_FREAD */ + +/* Define if (like SVR2) there is no specific function for reading the list of + mounted filesystems, and your system has these header files: + and . (SVR3) */ +/* #undef MOUNTED_FREAD_FSTYP */ + +/* Define if there are functions named next_dev and fs_stat_dev for reading + the list of mounted filesystems. (BeOS) */ +#define MOUNTED_FS_STAT_DEV 1 + +/* Define if there is a function named getfsstat for reading the list of + mounted filesystems. (DEC Alpha running OSF/1) */ +/* #undef MOUNTED_GETFSSTAT */ + +/* Define if there is a function named getmnt for reading the list of mounted + filesystems. (Ultrix) */ +/* #undef MOUNTED_GETMNT */ + +/* Define if there is a function named getmntent for reading the list of + mounted filesystems, and that function takes a single argument. (4.3BSD, + SunOS, HP-UX, Dynix, Irix) */ +/* #undef MOUNTED_GETMNTENT1 */ + +/* Define if there is a function named getmntent for reading the list of + mounted filesystems, and that function takes two arguments. (SVR4) */ +/* #undef MOUNTED_GETMNTENT2 */ + +/* Define if there is a function named getmntinfo for reading the list of + mounted filesystems. (4.4BSD, Darwin) */ +/* #undef MOUNTED_GETMNTINFO */ + +/* Define if there is a function named listmntent that can be used to list all + mounted filesystems. (UNICOS) */ +/* #undef MOUNTED_LISTMNTENT */ + +/* Define if there is a function named mntctl that can be used to read the + list of mounted filesystems, and there is a system header file that + declares `struct vmount.' (AIX) */ +/* #undef MOUNTED_VMOUNT */ + +/* Define to 1 if assertions should be disabled. */ +/* #undef NDEBUG */ + +/* FIXME */ +/* #undef NICE_PRIORITY */ + +/* Define to 1 if your `struct nlist' has an `n_un' member. Obsolete, depend + on `HAVE_STRUCT_NLIST_N_UN_N_NAME */ +/* #undef NLIST_NAME_UNION */ + +/* Name of package */ +#define PACKAGE "coreutils" + +/* Define to the address where bug reports for this package should be sent. */ +#define PACKAGE_BUGREPORT "bug-coreutils@gnu.org" + +/* Define to the full name of this package. */ +#define PACKAGE_NAME "GNU coreutils" + +/* Define to the full name and version of this package. */ +#define PACKAGE_STRING "GNU coreutils 5.0" + +/* Define to the one symbol short name of this package. */ +#define PACKAGE_TARNAME "coreutils" + +/* Define to the version of this package. */ +#define PACKAGE_VERSION "5.0" + +/* the number of pending output bytes on stream `fp' */ +#define PENDING_OUTPUT_N_BYTES fp->_IO_write_ptr - fp->_IO_write_base + +/* Define if exists and defines unusable PRI* macros. */ +/* #undef PRI_MACROS_BROKEN */ + +/* Define to 1 if the C compiler supports function prototypes. */ +#define PROTOTYPES 1 + +/* Define if rename does not work for source paths with a trailing slash, like + the one from SunOS 4.1.1_U1. */ +#define RENAME_TRAILING_SLASH_BUG 1 + +/* Define as the return type of signal handlers (`int' or `void'). */ +#define RETSIGTYPE void + +/* the value to which errno is set when rmdir fails on a nonempty directory */ +#define RMDIR_ERRNO_NOT_EMPTY -2147459066 + +/* Define to 1 if the `setvbuf' function takes the buffering type as its + second argument and the buffer pointer as the third, as on System V before + release 3. */ +/* #undef SETVBUF_REVERSED */ + +/* If using the C implementation of alloca, define if you know the + direction of stack growth for your system; otherwise it will be + automatically deduced at run-time. + STACK_DIRECTION > 0 => grows toward higher addresses + STACK_DIRECTION < 0 => grows toward lower addresses + STACK_DIRECTION = 0 => direction of growth unknown */ +/* #undef STACK_DIRECTION */ + +/* Define if the block counts reported by statfs may be truncated to 2GB and + the correct values may be stored in the f_spare array. (SunOS 4.1.2, 4.1.3, + and 4.1.3_U1 are reported to have this problem. SunOS 4.1.1 seems not to be + affected.) */ +/* #undef STATFS_TRUNCATES_BLOCK_COUNTS */ + +/* Define to 1 if the `S_IS*' macros in do not work properly. */ +/* #undef STAT_MACROS_BROKEN */ + +/* Define if there is no specific function for reading filesystems usage + information and you have the header file. (SVR2) */ +/* #undef STAT_READ_FILSYS */ + +/* Define if statfs takes 2 args and struct statfs has a field named f_bsize. + (4.3BSD, SunOS 4, HP-UX, AIX PS/2) */ +/* #undef STAT_STATFS2_BSIZE */ + +/* Define if statfs takes 2 args and struct statfs has a field named f_fsize. + (4.4BSD, NetBSD) */ +/* #undef STAT_STATFS2_FSIZE */ + +/* Define if statfs takes 2 args and the second argument has type struct + fs_data. (Ultrix) */ +/* #undef STAT_STATFS2_FS_DATA */ + +/* Define if statfs takes 3 args. (DEC Alpha running OSF/1) */ +/* #undef STAT_STATFS3_OSF1 */ + +/* Define if statfs takes 4 args. (SVR3, Dynix, Irix, Dolphin) */ +/* #undef STAT_STATFS4 */ + +/* Define if there is a function named statvfs. (SVR4) */ +#define STAT_STATVFS 1 + +/* Define to 1 if you have the ANSI C header files. */ +#define STDC_HEADERS 1 + +/* Define to 1 if strerror_r returns char *. */ +#define STRERROR_R_CHAR_P 1 + +/* Define to be the nanoseconds member of struct stat's st_mtim, if it exists. + */ +/* #undef ST_MTIM_NSEC */ + +/* Define to 1 on System V Release 4. */ +/* #undef SVR4 */ + +/* FIXME */ +/* #undef TERMIOS_NEEDS_XOPEN_SOURCE */ + +/* Define to 1 if you can safely include both and . */ +#define TIME_WITH_SYS_TIME 1 + +/* Define to 1 if your declares `struct tm'. */ +/* #undef TM_IN_SYS_TIME */ + +/* Define to 1 for Encore UMAX. */ +/* #undef UMAX */ + +/* Define to 1 for Encore UMAX 4.3 that has instead of + . */ +/* #undef UMAX4_3 */ + +/* the maximum number of simultaneously open files per process */ +#define UTILS_OPEN_MAX 122 + +/* Version number of package */ +#define VERSION "5.0" + +/* Define if sys/ptem.h is required for struct winsize. */ +/* #undef WINSIZE_IN_PTEM */ + +/* 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 */ + +/* Enable GNU extensions on systems that have them. */ +#ifndef _GNU_SOURCE +# define _GNU_SOURCE 1 +#endif + +/* 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 like PROTOTYPES; this can be used by system headers. */ +#define __PROTOTYPES 1 + +/* Define to rpl_chown if the replacement function should be used. */ +#define chown rpl_chown + +/* Define to empty if `const' does not conform to ANSI C. */ +/* #undef const */ + +/* Define to rpl_fnmatch if the replacement function should be used. */ +#define fnmatch rpl_fnmatch + +/* Define to rpl_getcwd if the wrapper function should be used. */ +#define getcwd rpl_getcwd + +/* Define as rpl_getgroups if getgroups doesn't work right. */ +/* #undef getgroups */ + +/* Define to rpl_gettimeofday if the replacement function should be used. */ +/* #undef gettimeofday */ + +/* Define to `int' if doesn't define. */ +/* #undef gid_t */ + +/* Define as `__inline' if that's what the C compiler calls it, or to nothing + if it is not supported. */ +/* #undef inline */ + +/* Define to `unsigned long' if does not define. */ +/* #undef ino_t */ + +/* Define to widest signed type if doesn't define. */ +/* #undef intmax_t */ + +/* Define to rpl_localtime if the replacement function should be used. */ +/* #undef localtime */ + +/* Define to `unsigned int' if does not define. */ +#define major_t unsigned int + +/* Define to rpl_malloc if the replacement function should be used. */ +/* #undef malloc */ + +/* Define to a type if does not define. */ +#define mbstate_t int + +/* Define to rpl_memcmp if the replacement function should be used. */ +/* #undef memcmp */ + +/* Define to `unsigned int' if does not define. */ +#define minor_t unsigned int + +/* Define to rpl_mkdir if the replacement function should be used. */ +#define mkdir rpl_mkdir + +/* Define to rpl_mkstemp if the replacement function should be used. */ +/* #undef mkstemp */ + +/* Define to rpl_mktime if the replacement function should be used. */ +#define mktime rpl_mktime + +/* Define to `int' if does not define. */ +/* #undef mode_t */ + +/* Define to the name of the strftime replacement function. */ +#define my_strftime nstrftime + +/* Define to rpl_nanosleep if the replacement function should be used. */ +#define nanosleep rpl_nanosleep + +/* Define to `long' if does not define. */ +/* #undef off_t */ + +/* Define to `int' if does not define. */ +/* #undef pid_t */ + +/* Define to rpl_putenv if the replacement function should be used. */ +#define putenv rpl_putenv + +/* Define to rpl_realloc if the replacement function should be used. */ +/* #undef realloc */ + +/* Define to equivalent of C99 restrict keyword, or to nothing if this is not + supported. Do not define if restrict is supported directly. */ +#define restrict __restrict__ + +/* Define to `unsigned' if does not define. */ +/* #undef size_t */ + +/* Define to `int' if does not define. */ +/* #undef ssize_t */ + +/* Define to `int' if doesn't define. */ +/* #undef uid_t */ + +/* Define to widest unsigned type if doesn't define. */ +/* #undef uintmax_t */ + +/* Define to empty if the keyword `volatile' does not work. Warning: valid + code using `volatile' can become incorrect without. Disable with care. */ +/* #undef volatile */ + + + +#define HAVE_DONE_WORKING_MALLOC_CHECK 1 +#define HAVE_DONE_WORKING_REALLOC_CHECK 1 diff --git a/src/apps/bin/diffutils-2.8.1/src/context.c b/src/apps/bin/diffutils-2.8.1/src/context.c new file mode 100644 index 0000000000..18d70235ef --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/src/context.c @@ -0,0 +1,478 @@ +/* Context-format output routines for GNU DIFF. + + Copyright (C) 1988, 1989, 1991, 1992, 1993, 1994, 1995, 1998, 2001, + 2002 Free Software Foundation, Inc. + + This file is part of GNU DIFF. + + GNU DIFF 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. + + GNU DIFF is distributed in the hope that 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; see the file COPYING. + If not, write to the Free Software Foundation, + 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + +#include "diff.h" +#include +#include + +#ifdef ST_MTIM_NSEC +# define TIMESPEC_NS(timespec) ((timespec).ST_MTIM_NSEC) +#else +# define TIMESPEC_NS(timespec) 0 +#endif + +size_t nstrftime (char *, size_t, char const *, struct tm const *, int, int); + +static char const *find_function (char const * const *, lin); +static struct change *find_hunk (struct change *); +static void mark_ignorable (struct change *); +static void pr_context_hunk (struct change *); +static void pr_unidiff_hunk (struct change *); + +/* Last place find_function started searching from. */ +static lin find_function_last_search; + +/* The value find_function returned when it started searching there. */ +static lin find_function_last_match; + +/* Print a label for a context diff, with a file name and date or a label. */ + +static void +print_context_label (char const *mark, + struct file_data *inf, + char const *label) +{ + if (label) + fprintf (outfile, "%s %s\n", mark, label); + else + { + char buf[MAX (INT_STRLEN_BOUND (int) + 32, + INT_STRLEN_BOUND (time_t) + 11)]; + struct tm const *tm = localtime (&inf->stat.st_mtime); + int nsec = TIMESPEC_NS (inf->stat.st_mtim); + if (! (tm && nstrftime (buf, sizeof buf, time_format, tm, 0, nsec))) + { + long sec = inf->stat.st_mtime; + verify (info_preserved, sizeof inf->stat.st_mtime <= sizeof sec); + sprintf (buf, "%ld.%.9d", sec, nsec); + } + fprintf (outfile, "%s %s\t%s\n", mark, inf->name, buf); + } +} + +/* Print a header for a context diff, with the file names and dates. */ + +void +print_context_header (struct file_data inf[], bool unidiff) +{ + if (unidiff) + { + print_context_label ("---", &inf[0], file_label[0]); + print_context_label ("+++", &inf[1], file_label[1]); + } + else + { + print_context_label ("***", &inf[0], file_label[0]); + print_context_label ("---", &inf[1], file_label[1]); + } +} + +/* Print an edit script in context format. */ + +void +print_context_script (struct change *script, bool unidiff) +{ + if (ignore_blank_lines || ignore_regexp.fastmap) + mark_ignorable (script); + else + { + struct change *e; + for (e = script; e; e = e->link) + e->ignore = 0; + } + + find_function_last_search = - files[0].prefix_lines; + find_function_last_match = LIN_MAX; + + if (unidiff) + print_script (script, find_hunk, pr_unidiff_hunk); + else + print_script (script, find_hunk, pr_context_hunk); +} + +/* Print a pair of line numbers with a comma, translated for file FILE. + If the second number is not greater, use the first in place of it. + + Args A and B are internal line numbers. + We print the translated (real) line numbers. */ + +static void +print_context_number_range (struct file_data const *file, lin a, lin b) +{ + long trans_a, trans_b; + translate_range (file, a, b, &trans_a, &trans_b); + + /* We can have B <= A in the case of a range of no lines. + In this case, we should print the line number before the range, + which is B. + + POSIX 1003.1-2001 requires two line numbers separated by a comma + even if the line numbers are the same. However, this does not + match existing practice and is surely an error in the + specification. */ + + if (trans_b <= trans_a) + fprintf (outfile, "%ld", trans_b); + else + fprintf (outfile, "%ld,%ld", trans_a, trans_b); +} + +/* Print FUNCTION in a context header. */ +static void +print_context_function (FILE *out, char const *function) +{ + int i; + putc (' ', out); + for (i = 0; i < 40 && function[i] != '\n'; i++) + continue; + fwrite (function, 1, i, out); +} + +/* Print a portion of an edit script in context format. + HUNK is the beginning of the portion to be printed. + The end is marked by a `link' that has been nulled out. + + Prints out lines from both files, and precedes each + line with the appropriate flag-character. */ + +static void +pr_context_hunk (struct change *hunk) +{ + lin first0, last0, first1, last1, i; + char const *prefix; + char const *function; + FILE *out; + + /* Determine range of line numbers involved in each file. */ + + enum changes changes = analyze_hunk (hunk, &first0, &last0, &first1, &last1); + if (! changes) + return; + + /* Include a context's width before and after. */ + + i = - files[0].prefix_lines; + first0 = MAX (first0 - context, i); + first1 = MAX (first1 - context, i); + if (last0 < files[0].valid_lines - context) + last0 += context; + else + last0 = files[0].valid_lines - 1; + if (last1 < files[1].valid_lines - context) + last1 += context; + else + last1 = files[1].valid_lines - 1; + + /* If desired, find the preceding function definition line in file 0. */ + function = 0; + if (function_regexp.fastmap) + function = find_function (files[0].linbuf, first0); + + begin_output (); + out = outfile; + + fprintf (out, "***************"); + + if (function) + print_context_function (out, function); + + fprintf (out, "\n*** "); + print_context_number_range (&files[0], first0, last0); + fprintf (out, " ****\n"); + + if (changes & OLD) + { + struct change *next = hunk; + + for (i = first0; i <= last0; i++) + { + /* Skip past changes that apply (in file 0) + only to lines before line I. */ + + while (next && next->line0 + next->deleted <= i) + next = next->link; + + /* Compute the marking for line I. */ + + prefix = " "; + if (next && next->line0 <= i) + /* The change NEXT covers this line. + If lines were inserted here in file 1, this is "changed". + Otherwise it is "deleted". */ + prefix = (next->inserted > 0 ? "!" : "-"); + + print_1_line (prefix, &files[0].linbuf[i]); + } + } + + fprintf (out, "--- "); + print_context_number_range (&files[1], first1, last1); + fprintf (out, " ----\n"); + + if (changes & NEW) + { + struct change *next = hunk; + + for (i = first1; i <= last1; i++) + { + /* Skip past changes that apply (in file 1) + only to lines before line I. */ + + while (next && next->line1 + next->inserted <= i) + next = next->link; + + /* Compute the marking for line I. */ + + prefix = " "; + if (next && next->line1 <= i) + /* The change NEXT covers this line. + If lines were deleted here in file 0, this is "changed". + Otherwise it is "inserted". */ + prefix = (next->deleted > 0 ? "!" : "+"); + + print_1_line (prefix, &files[1].linbuf[i]); + } + } +} + +/* Print a pair of line numbers with a comma, translated for file FILE. + If the second number is smaller, use the first in place of it. + If the numbers are equal, print just one number. + + Args A and B are internal line numbers. + We print the translated (real) line numbers. */ + +static void +print_unidiff_number_range (struct file_data const *file, lin a, lin b) +{ + long trans_a, trans_b; + translate_range (file, a, b, &trans_a, &trans_b); + + /* We can have B < A in the case of a range of no lines. + In this case, we should print the line number before the range, + which is B. */ + if (trans_b <= trans_a) + fprintf (outfile, trans_b < trans_a ? "%ld,0" : "%ld", trans_b); + else + fprintf (outfile, "%ld,%ld", trans_a, trans_b - trans_a + 1); +} + +/* Print a portion of an edit script in unidiff format. + HUNK is the beginning of the portion to be printed. + The end is marked by a `link' that has been nulled out. + + Prints out lines from both files, and precedes each + line with the appropriate flag-character. */ + +static void +pr_unidiff_hunk (struct change *hunk) +{ + lin first0, last0, first1, last1; + lin i, j, k; + struct change *next; + char const *function; + FILE *out; + + /* Determine range of line numbers involved in each file. */ + + if (! analyze_hunk (hunk, &first0, &last0, &first1, &last1)) + return; + + /* Include a context's width before and after. */ + + i = - files[0].prefix_lines; + first0 = MAX (first0 - context, i); + first1 = MAX (first1 - context, i); + if (last0 < files[0].valid_lines - context) + last0 += context; + else + last0 = files[0].valid_lines - 1; + if (last1 < files[1].valid_lines - context) + last1 += context; + else + last1 = files[1].valid_lines - 1; + + /* If desired, find the preceding function definition line in file 0. */ + function = 0; + if (function_regexp.fastmap) + function = find_function (files[0].linbuf, first0); + + begin_output (); + out = outfile; + + fprintf (out, "@@ -"); + print_unidiff_number_range (&files[0], first0, last0); + fprintf (out, " +"); + print_unidiff_number_range (&files[1], first1, last1); + fprintf (out, " @@"); + + if (function) + print_context_function (out, function); + + putc ('\n', out); + + next = hunk; + i = first0; + j = first1; + + while (i <= last0 || j <= last1) + { + + /* If the line isn't a difference, output the context from file 0. */ + + if (!next || i < next->line0) + { + putc (initial_tab ? '\t' : ' ', out); + print_1_line (0, &files[0].linbuf[i++]); + j++; + } + else + { + /* For each difference, first output the deleted part. */ + + k = next->deleted; + while (k--) + { + putc ('-', out); + if (initial_tab) + putc ('\t', out); + print_1_line (0, &files[0].linbuf[i++]); + } + + /* Then output the inserted part. */ + + k = next->inserted; + while (k--) + { + putc ('+', out); + if (initial_tab) + putc ('\t', out); + print_1_line (0, &files[1].linbuf[j++]); + } + + /* We're done with this hunk, so on to the next! */ + + next = next->link; + } + } +} + +/* Scan a (forward-ordered) edit script for the first place that more than + 2*CONTEXT unchanged lines appear, and return a pointer + to the `struct change' for the last change before those lines. */ + +static struct change * +find_hunk (struct change *start) +{ + struct change *prev; + lin top0, top1; + lin thresh; + + /* Threshold distance is 2 * CONTEXT + 1 between two non-ignorable + changes, but only CONTEXT if one is ignorable. Watch out for + integer overflow, though. */ + lin non_ignorable_threshold = + (LIN_MAX - 1) / 2 < context ? LIN_MAX : 2 * context + 1; + lin ignorable_threshold = context; + + do + { + /* Compute number of first line in each file beyond this changed. */ + top0 = start->line0 + start->deleted; + top1 = start->line1 + start->inserted; + prev = start; + start = start->link; + thresh = (prev->ignore || (start && start->ignore) + ? ignorable_threshold + : non_ignorable_threshold); + /* It is not supposed to matter which file we check in the end-test. + If it would matter, crash. */ + if (start && start->line0 - top0 != start->line1 - top1) + abort (); + } while (start + /* Keep going if less than THRESH lines + elapse before the affected line. */ + && start->line0 - top0 < thresh); + + return prev; +} + +/* Set the `ignore' flag properly in each change in SCRIPT. + It should be 1 if all the lines inserted or deleted in that change + are ignorable lines. */ + +static void +mark_ignorable (struct change *script) +{ + while (script) + { + struct change *next = script->link; + lin first0, last0, first1, last1; + + /* Turn this change into a hunk: detach it from the others. */ + script->link = 0; + + /* Determine whether this change is ignorable. */ + script->ignore = ! analyze_hunk (script, + &first0, &last0, &first1, &last1); + + /* Reconnect the chain as before. */ + script->link = next; + + /* Advance to the following change. */ + script = next; + } +} + +/* Find the last function-header line in LINBUF prior to line number LINENUM. + This is a line containing a match for the regexp in `function_regexp'. + Return the address of the text, or 0 if no function-header is found. */ + +static char const * +find_function (char const * const *linbuf, lin linenum) +{ + lin i = linenum; + lin last = find_function_last_search; + find_function_last_search = i; + + while (last <= --i) + { + /* See if this line is what we want. */ + char const *line = linbuf[i]; + size_t linelen = linbuf[i + 1] - line - 1; + + /* FIXME: re_search's size args should be size_t, not int. */ + int len = MIN (linelen, INT_MAX); + + if (0 <= re_search (&function_regexp, line, len, 0, len, 0)) + { + find_function_last_match = i; + return line; + } + } + /* If we search back to where we started searching the previous time, + find the line we found last time. */ + if (find_function_last_match != LIN_MAX) + return linbuf[find_function_last_match]; + + return 0; +} diff --git a/src/apps/bin/diffutils-2.8.1/src/diff.c b/src/apps/bin/diffutils-2.8.1/src/diff.c new file mode 100644 index 0000000000..4dc4044176 --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/src/diff.c @@ -0,0 +1,1363 @@ +/* diff - compare files line by line + + Copyright (C) 1988, 1989, 1992, 1993, 1994, 1996, 1998, 2001, 2002 + Free Software Foundation, Inc. + + This file is part of GNU DIFF. + + GNU DIFF 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. + + GNU DIFF is distributed in the hope that 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 GNU DIFF; see the file COPYING. + If not, write to the Free Software Foundation, + 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + +#define GDIFF_MAIN +#include "diff.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +static char const authorship_msgid[] = + N_("Written by Paul Eggert, Mike Haertel, David Hayes,\n\ +Richard Stallman, and Len Tower."); + +static char const copyright_string[] = + "Copyright (C) 2002 Free Software Foundation, Inc."; + +#ifndef GUTTER_WIDTH_MINIMUM +# define GUTTER_WIDTH_MINIMUM 3 +#endif + +struct regexp_list +{ + char *regexps; /* chars representing disjunction of the regexps */ + size_t len; /* chars used in `regexps' */ + size_t size; /* size malloc'ed for `regexps'; 0 if not malloc'ed */ + bool multiple_regexps;/* Does `regexps' represent a disjunction? */ + struct re_pattern_buffer *buf; +}; + +static int compare_files (struct comparison const *, char const *, char const *); +static void add_regexp (struct regexp_list *, char const *); +static void summarize_regexp_list (struct regexp_list *); +static void specify_style (enum output_style); +static void specify_value (char const **, char const *, char const *); +static void try_help (char const *, char const *) __attribute__((noreturn)); +static void check_stdout (void); +static void usage (void); + +/* If comparing directories, compare their common subdirectories + recursively. */ +static bool recursive; + +/* In context diffs, show previous lines that match these regexps. */ +static struct regexp_list function_regexp_list; + +/* Ignore changes affecting only lines that match these regexps. */ +static struct regexp_list ignore_regexp_list; + +#if HAVE_SETMODE_DOS +/* Use binary I/O when reading and writing data (--binary). + On POSIX hosts, this has no effect. */ +static bool binary; +#endif + +/* When comparing directories, if a file appears only in one + directory, treat it as present but empty in the other (-N). + Then `patch' would create the file with appropriate contents. */ +static bool new_file; + +/* When comparing directories, if a file appears only in the second + directory of the two, treat it as present but empty in the other + (--unidirectional-new-file). + Then `patch' would create the file with appropriate contents. */ +static bool unidirectional_new_file; + +/* Report files compared that are the same (-s). + Normally nothing is output when that happens. */ +static bool report_identical_files; + + +/* Return a string containing the command options with which diff was invoked. + Spaces appear between what were separate ARGV-elements. + There is a space at the beginning but none at the end. + If there were no options, the result is an empty string. + + Arguments: OPTIONVEC, a vector containing separate ARGV-elements, and COUNT, + the length of that vector. */ + +static char * +option_list (char **optionvec, int count) +{ + int i; + size_t size = 1; + char *result; + char *p; + + for (i = 0; i < count; i++) + size += 1 + quote_system_arg ((char *) 0, optionvec[i]); + + p = result = xmalloc (size); + + for (i = 0; i < count; i++) + { + *p++ = ' '; + p += quote_system_arg (p, optionvec[i]); + } + + *p = 0; + return result; +} + + +/* Return an option value suitable for add_exclude. */ + +static int +exclude_options (void) +{ + return EXCLUDE_WILDCARDS | (ignore_file_name_case ? FNM_CASEFOLD : 0); +} + +static char const shortopts[] = +"0123456789abBcC:dD:eEfF:hHiI:lL:nNpPqrsS:tTuU:vwW:x:X:y"; + +/* Values for long options that do not have single-letter equivalents. */ +enum +{ + BINARY_OPTION = CHAR_MAX + 1, + FROM_FILE_OPTION, + HELP_OPTION, + HORIZON_LINES_OPTION, + IGNORE_FILE_NAME_CASE_OPTION, + INHIBIT_HUNK_MERGE_OPTION, + LEFT_COLUMN_OPTION, + LINE_FORMAT_OPTION, + NO_IGNORE_FILE_NAME_CASE_OPTION, + NORMAL_OPTION, + SDIFF_MERGE_ASSIST_OPTION, + STRIP_TRAILING_CR_OPTION, + SUPPRESS_COMMON_LINES_OPTION, + TO_FILE_OPTION, + + /* These options must be in sequence. */ + UNCHANGED_LINE_FORMAT_OPTION, + OLD_LINE_FORMAT_OPTION, + NEW_LINE_FORMAT_OPTION, + + /* These options must be in sequence. */ + UNCHANGED_GROUP_FORMAT_OPTION, + OLD_GROUP_FORMAT_OPTION, + NEW_GROUP_FORMAT_OPTION, + CHANGED_GROUP_FORMAT_OPTION +}; + +static char const group_format_option[][sizeof "--unchanged-group-format"] = + { + "--unchanged-group-format", + "--old-group-format", + "--new-group-format", + "--changed-group-format" + }; + +static char const line_format_option[][sizeof "--unchanged-line-format"] = + { + "--unchanged-line-format", + "--old-line-format", + "--new-line-format" + }; + +static struct option const longopts[] = +{ + {"binary", 0, 0, BINARY_OPTION}, + {"brief", 0, 0, 'q'}, + {"changed-group-format", 1, 0, CHANGED_GROUP_FORMAT_OPTION}, + {"context", 2, 0, 'C'}, + {"ed", 0, 0, 'e'}, + {"exclude", 1, 0, 'x'}, + {"exclude-from", 1, 0, 'X'}, + {"expand-tabs", 0, 0, 't'}, + {"forward-ed", 0, 0, 'f'}, + {"from-file", 1, 0, FROM_FILE_OPTION}, + {"help", 0, 0, HELP_OPTION}, + {"horizon-lines", 1, 0, HORIZON_LINES_OPTION}, + {"ifdef", 1, 0, 'D'}, + {"ignore-all-space", 0, 0, 'w'}, + {"ignore-blank-lines", 0, 0, 'B'}, + {"ignore-case", 0, 0, 'i'}, + {"ignore-file-name-case", 0, 0, IGNORE_FILE_NAME_CASE_OPTION}, + {"ignore-matching-lines", 1, 0, 'I'}, + {"ignore-space-change", 0, 0, 'b'}, + {"ignore-tab-expansion", 0, 0, 'E'}, + {"inhibit-hunk-merge", 0, 0, INHIBIT_HUNK_MERGE_OPTION}, + {"initial-tab", 0, 0, 'T'}, + {"label", 1, 0, 'L'}, + {"left-column", 0, 0, LEFT_COLUMN_OPTION}, + {"line-format", 1, 0, LINE_FORMAT_OPTION}, + {"minimal", 0, 0, 'd'}, + {"new-file", 0, 0, 'N'}, + {"new-group-format", 1, 0, NEW_GROUP_FORMAT_OPTION}, + {"new-line-format", 1, 0, NEW_LINE_FORMAT_OPTION}, + {"no-ignore-file-name-case", 0, 0, NO_IGNORE_FILE_NAME_CASE_OPTION}, + {"normal", 0, 0, NORMAL_OPTION}, + {"old-group-format", 1, 0, OLD_GROUP_FORMAT_OPTION}, + {"old-line-format", 1, 0, OLD_LINE_FORMAT_OPTION}, + {"paginate", 0, 0, 'l'}, + {"rcs", 0, 0, 'n'}, + {"recursive", 0, 0, 'r'}, + {"report-identical-files", 0, 0, 's'}, + {"sdiff-merge-assist", 0, 0, SDIFF_MERGE_ASSIST_OPTION}, + {"show-c-function", 0, 0, 'p'}, + {"show-function-line", 1, 0, 'F'}, + {"side-by-side", 0, 0, 'y'}, + {"speed-large-files", 0, 0, 'H'}, + {"starting-file", 1, 0, 'S'}, + {"strip-trailing-cr", 0, 0, STRIP_TRAILING_CR_OPTION}, + {"suppress-common-lines", 0, 0, SUPPRESS_COMMON_LINES_OPTION}, + {"text", 0, 0, 'a'}, + {"to-file", 1, 0, TO_FILE_OPTION}, + {"unchanged-group-format", 1, 0, UNCHANGED_GROUP_FORMAT_OPTION}, + {"unchanged-line-format", 1, 0, UNCHANGED_LINE_FORMAT_OPTION}, + {"unidirectional-new-file", 0, 0, 'P'}, + {"unified", 2, 0, 'U'}, + {"version", 0, 0, 'v'}, + {"width", 1, 0, 'W'}, + {0, 0, 0, 0} +}; + +int +main (int argc, char **argv) +{ + int exit_status = EXIT_SUCCESS; + int c; + int i; + int prev = -1; + lin ocontext = -1; + bool explicit_context = 0; + int width = 0; + bool show_c_function = 0; + char const *from_file = 0; + char const *to_file = 0; + uintmax_t numval; + char *numend; + + /* Do our initializations. */ + exit_failure = 2; + initialize_main (&argc, &argv); + program_name = argv[0]; + setlocale (LC_ALL, ""); + bindtextdomain (PACKAGE, LOCALEDIR); + textdomain (PACKAGE); + c_stack_action (c_stack_die); + function_regexp_list.buf = &function_regexp; + ignore_regexp_list.buf = &ignore_regexp; + re_set_syntax (RE_SYNTAX_GREP | RE_NO_POSIX_BACKTRACKING); + excluded = new_exclude (); + + /* Decode the options. */ + + while ((c = getopt_long (argc, argv, shortopts, longopts, 0)) != -1) + { + switch (c) + { + case 0: + break; + + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + if (! ISDIGIT (prev)) + ocontext = c - '0'; + else if (LIN_MAX / 10 < ocontext + || ((ocontext = 10 * ocontext + c - '0') < 0)) + ocontext = LIN_MAX; + break; + + case 'a': + text = 1; + break; + + case 'b': + if (ignore_white_space < IGNORE_SPACE_CHANGE) + ignore_white_space = IGNORE_SPACE_CHANGE; + break; + + case 'B': + ignore_blank_lines = 1; + break; + + case 'C': /* +context[=lines] */ + case 'U': /* +unified[=lines] */ + { + if (optarg) + { + numval = strtoumax (optarg, &numend, 10); + if (*numend) + try_help ("invalid context length `%s'", optarg); + if (LIN_MAX < numval) + numval = LIN_MAX; + } + else + numval = 3; + + specify_style (c == 'U' ? OUTPUT_UNIFIED : OUTPUT_CONTEXT); + if (context < numval) + context = numval; + explicit_context = 1; + } + break; + + case 'c': + specify_style (OUTPUT_CONTEXT); + if (context < 3) + context = 3; + break; + + case 'd': + minimal = 1; + break; + + case 'D': + specify_style (OUTPUT_IFDEF); + { + static char const C_ifdef_group_formats[] = + "%%=%c#ifndef %s\n%%<#endif /* ! %s */\n%c#ifdef %s\n%%>#endif /* %s */\n%c#ifndef %s\n%%<#else /* %s */\n%%>#endif /* %s */\n"; + char *b = xmalloc (sizeof C_ifdef_group_formats + + 7 * strlen (optarg) - 14 /* 7*"%s" */ + - 8 /* 5*"%%" + 3*"%c" */); + sprintf (b, C_ifdef_group_formats, + 0, + optarg, optarg, 0, + optarg, optarg, 0, + optarg, optarg, optarg); + for (i = 0; i < sizeof group_format / sizeof *group_format; i++) + { + specify_value (&group_format[i], b, "-D"); + b += strlen (b) + 1; + } + } + break; + + case 'e': + specify_style (OUTPUT_ED); + break; + + case 'E': + if (ignore_white_space < IGNORE_TAB_EXPANSION) + ignore_white_space = IGNORE_TAB_EXPANSION; + break; + + case 'f': + specify_style (OUTPUT_FORWARD_ED); + break; + + case 'F': + add_regexp (&function_regexp_list, optarg); + break; + + case 'h': + /* Split the files into chunks for faster processing. + Usually does not change the result. + + This currently has no effect. */ + break; + + case 'H': + speed_large_files = 1; + break; + + case 'i': + ignore_case = 1; + break; + + case 'I': + add_regexp (&ignore_regexp_list, optarg); + break; + + case 'l': + if (!pr_program[0]) + try_help ("pagination not supported on this host", 0); + paginate = 1; +#ifdef SIGCHLD + /* Pagination requires forking and waiting, and + System V fork+wait does not work if SIGCHLD is ignored. */ + signal (SIGCHLD, SIG_DFL); +#endif + break; + + case 'L': + if (!file_label[0]) + file_label[0] = optarg; + else if (!file_label[1]) + file_label[1] = optarg; + else + fatal ("too many file label options"); + break; + + case 'n': + specify_style (OUTPUT_RCS); + break; + + case 'N': + new_file = 1; + break; + + case 'p': + show_c_function = 1; + add_regexp (&function_regexp_list, "^[[:alpha:]$_]"); + break; + + case 'P': + unidirectional_new_file = 1; + break; + + case 'q': + brief = 1; + break; + + case 'r': + recursive = 1; + break; + + case 's': + report_identical_files = 1; + break; + + case 'S': + specify_value (&starting_file, optarg, "-S"); + break; + + case 't': + expand_tabs = 1; + break; + + case 'T': + initial_tab = 1; + break; + + case 'u': + specify_style (OUTPUT_UNIFIED); + if (context < 3) + context = 3; + break; + + case 'v': + printf ("diff %s\n%s\n\n%s\n\n%s\n", + version_string, copyright_string, + _(free_software_msgid), _(authorship_msgid)); + check_stdout (); + return EXIT_SUCCESS; + + case 'w': + ignore_white_space = IGNORE_ALL_SPACE; + break; + + case 'x': + add_exclude (excluded, optarg, exclude_options ()); + break; + + case 'X': + if (add_exclude_file (add_exclude, excluded, optarg, + exclude_options (), '\n')) + pfatal_with_name (optarg); + break; + + case 'y': + specify_style (OUTPUT_SDIFF); + break; + + case 'W': + numval = strtoumax (optarg, &numend, 10); + if (! (0 < numval && numval <= INT_MAX) || *numend) + try_help ("invalid width `%s'", optarg); + if (width != numval) + { + if (width) + fatal ("conflicting width options"); + width = numval; + } + break; + + case BINARY_OPTION: +#if HAVE_SETMODE_DOS + binary = 1; + set_binary_mode (STDOUT_FILENO, 1); +#endif + break; + + case FROM_FILE_OPTION: + specify_value (&from_file, optarg, "--from-file"); + break; + + case HELP_OPTION: + usage (); + check_stdout (); + return EXIT_SUCCESS; + + case HORIZON_LINES_OPTION: + numval = strtoumax (optarg, &numend, 10); + if (*numend) + try_help ("invalid horizon length `%s'", optarg); + horizon_lines = MAX (horizon_lines, MIN (numval, LIN_MAX)); + break; + + case IGNORE_FILE_NAME_CASE_OPTION: + ignore_file_name_case = 1; + break; + + case INHIBIT_HUNK_MERGE_OPTION: + /* This option is obsolete, but accept it for backward + compatibility. */ + break; + + case LEFT_COLUMN_OPTION: + left_column = 1; + break; + + case LINE_FORMAT_OPTION: + specify_style (OUTPUT_IFDEF); + for (i = 0; i < sizeof line_format / sizeof *line_format; i++) + specify_value (&line_format[i], optarg, "--line-format"); + break; + + case NO_IGNORE_FILE_NAME_CASE_OPTION: + ignore_file_name_case = 0; + break; + + case NORMAL_OPTION: + specify_style (OUTPUT_NORMAL); + break; + + case SDIFF_MERGE_ASSIST_OPTION: + specify_style (OUTPUT_SDIFF); + sdiff_merge_assist = 1; + break; + + case STRIP_TRAILING_CR_OPTION: + strip_trailing_cr = 1; + break; + + case SUPPRESS_COMMON_LINES_OPTION: + suppress_common_lines = 1; + break; + + case TO_FILE_OPTION: + specify_value (&to_file, optarg, "--to-file"); + break; + + case UNCHANGED_LINE_FORMAT_OPTION: + case OLD_LINE_FORMAT_OPTION: + case NEW_LINE_FORMAT_OPTION: + specify_style (OUTPUT_IFDEF); + c -= UNCHANGED_LINE_FORMAT_OPTION; + specify_value (&line_format[c], optarg, line_format_option[c]); + break; + + case UNCHANGED_GROUP_FORMAT_OPTION: + case OLD_GROUP_FORMAT_OPTION: + case NEW_GROUP_FORMAT_OPTION: + case CHANGED_GROUP_FORMAT_OPTION: + specify_style (OUTPUT_IFDEF); + c -= UNCHANGED_GROUP_FORMAT_OPTION; + specify_value (&group_format[c], optarg, group_format_option[c]); + break; + + default: + try_help (0, 0); + } + prev = c; + } + + if (output_style == OUTPUT_UNSPECIFIED) + { + if (show_c_function) + { + specify_style (OUTPUT_CONTEXT); + if (ocontext < 0) + context = 3; + } + else + specify_style (OUTPUT_NORMAL); + } + + if (output_style != OUTPUT_CONTEXT || hard_locale (LC_TIME)) + time_format = "%Y-%m-%d %H:%M:%S.%N %z"; + else + { + /* See POSIX 1003.1-2001 for this format. */ + time_format = "%a %b %e %T %Y"; + } + + if (0 <= ocontext) + { + bool modern_usage = 200112 <= posix2_version (); + + if ((output_style == OUTPUT_CONTEXT + || output_style == OUTPUT_UNIFIED) + && (context < ocontext + || (ocontext < context && ! explicit_context))) + { + if (modern_usage) + { + error (0, 0, + _("`-%ld' option is obsolete; use `-%c %ld'"), + (long) ocontext, + output_style == OUTPUT_CONTEXT ? 'C' : 'U', + (long) ocontext); + try_help (0, 0); + } + context = ocontext; + } + else + { + if (modern_usage) + { + error (0, 0, _("`-%ld' option is obsolete; omit it"), + (long) ocontext); + try_help (0, 0); + } + } + } + + { + /* + * We maximize first the half line width, and then the gutter width, + * according to the following constraints: + * 1. Two half lines plus a gutter must fit in a line. + * 2. If the half line width is nonzero: + * a. The gutter width is at least GUTTER_WIDTH_MINIMUM. + * b. If tabs are not expanded to spaces, + * a half line plus a gutter is an integral number of tabs, + * so that tabs in the right column line up. + */ + unsigned int t = expand_tabs ? 1 : TAB_WIDTH; + int w = width ? width : 130; + int off = (w + t + GUTTER_WIDTH_MINIMUM) / (2 * t) * t; + sdiff_half_width = MAX (0, MIN (off - GUTTER_WIDTH_MINIMUM, w - off)), + sdiff_column2_offset = sdiff_half_width ? off : w; + } + + /* Make the horizon at least as large as the context, so that + shift_boundaries has more freedom to shift the first and last hunks. */ + if (horizon_lines < context) + horizon_lines = context; + + summarize_regexp_list (&function_regexp_list); + summarize_regexp_list (&ignore_regexp_list); + + if (output_style == OUTPUT_IFDEF) + { + for (i = 0; i < sizeof line_format / sizeof *line_format; i++) + if (!line_format[i]) + line_format[i] = "%l\n"; + if (!group_format[OLD]) + group_format[OLD] + = group_format[CHANGED] ? group_format[CHANGED] : "%<"; + if (!group_format[NEW]) + group_format[NEW] + = group_format[CHANGED] ? group_format[CHANGED] : "%>"; + if (!group_format[UNCHANGED]) + group_format[UNCHANGED] = "%="; + if (!group_format[CHANGED]) + group_format[CHANGED] = concat (group_format[OLD], + group_format[NEW], ""); + } + + no_diff_means_no_output = + (output_style == OUTPUT_IFDEF ? + (!*group_format[UNCHANGED] + || (strcmp (group_format[UNCHANGED], "%=") == 0 + && !*line_format[UNCHANGED])) + : (output_style != OUTPUT_SDIFF) | suppress_common_lines); + + files_can_be_treated_as_binary = + (brief + & ~ (ignore_blank_lines | ignore_case | strip_trailing_cr + | (ignore_regexp_list.regexps || ignore_white_space))); + + switch_string = option_list (argv + 1, optind - 1); + + if (from_file) + { + if (to_file) + fatal ("--from-file and --to-file both specified"); + else + for (; optind < argc; optind++) + { + int status = compare_files ((struct comparison *) 0, + from_file, argv[optind]); + if (exit_status < status) + exit_status = status; + } + } + else + { + if (to_file) + for (; optind < argc; optind++) + { + int status = compare_files ((struct comparison *) 0, + argv[optind], to_file); + if (exit_status < status) + exit_status = status; + } + else + { + if (argc - optind != 2) + { + if (argc - optind < 2) + try_help ("missing operand after `%s'", argv[argc - 1]); + else + try_help ("extra operand `%s'", argv[optind + 2]); + } + + exit_status = compare_files ((struct comparison *) 0, + argv[optind], argv[optind + 1]); + } + } + + /* Print any messages that were saved up for last. */ + print_message_queue (); + + check_stdout (); + exit (exit_status); + return exit_status; +} + +/* Append to REGLIST the regexp PATTERN. */ + +static void +add_regexp (struct regexp_list *reglist, char const *pattern) +{ + size_t patlen = strlen (pattern); + char const *m = re_compile_pattern (pattern, patlen, reglist->buf); + + if (m != 0) + error (0, 0, "%s: %s", pattern, m); + else + { + char *regexps = reglist->regexps; + size_t len = reglist->len; + bool multiple_regexps = reglist->multiple_regexps = regexps != 0; + size_t newlen = reglist->len = len + 2 * multiple_regexps + patlen; + size_t size = reglist->size; + + if (size <= newlen) + { + if (!size) + size = 1; + + do size *= 2; + while (size <= newlen); + + reglist->size = size; + reglist->regexps = regexps = xrealloc (regexps, size); + } + if (multiple_regexps) + { + regexps[len++] = '\\'; + regexps[len++] = '|'; + } + memcpy (regexps + len, pattern, patlen + 1); + } +} + +/* Ensure that REGLIST represents the disjunction of its regexps. + This is done here, rather than earlier, to avoid O(N^2) behavior. */ + +static void +summarize_regexp_list (struct regexp_list *reglist) +{ + if (reglist->regexps) + { + /* At least one regexp was specified. Allocate a fastmap for it. */ + reglist->buf->fastmap = xmalloc (1 << CHAR_BIT); + if (reglist->multiple_regexps) + { + /* Compile the disjunction of the regexps. + (If just one regexp was specified, it is already compiled.) */ + char const *m = re_compile_pattern (reglist->regexps, reglist->len, + reglist->buf); + if (m != 0) + error (EXIT_TROUBLE, 0, "%s: %s", reglist->regexps, m); + } + } +} + +static void +try_help (char const *reason_msgid, char const *operand) +{ + if (reason_msgid) + error (0, 0, _(reason_msgid), operand); + error (EXIT_TROUBLE, 0, _("Try `%s --help' for more information."), + program_name); + abort (); +} + +static void +check_stdout (void) +{ + if (ferror (stdout)) + fatal ("write failed"); + else if (fclose (stdout) != 0) + pfatal_with_name (_("standard output")); +} + +static char const * const option_help_msgid[] = { + N_("Compare files line by line."), + "", + N_("-i --ignore-case Ignore case differences in file contents."), + N_("--ignore-file-name-case Ignore case when comparing file names."), + N_("--no-ignore-file-name-case Consider case when comparing file names."), + N_("-E --ignore-tab-expansion Ignore changes due to tab expansion."), + N_("-b --ignore-space-change Ignore changes in the amount of white space."), + N_("-w --ignore-all-space Ignore all white space."), + N_("-B --ignore-blank-lines Ignore changes whose lines are all blank."), + N_("-I RE --ignore-matching-lines=RE Ignore changes whose lines all match RE."), + N_("--strip-trailing-cr Strip trailing carriage return on input."), +#if HAVE_SETMODE_DOS + N_("--binary Read and write data in binary mode."), +#endif + N_("-a --text Treat all files as text."), + "", + N_("-c -C NUM --context[=NUM] Output NUM (default 3) lines of copied context.\n\ +-u -U NUM --unified[=NUM] Output NUM (default 3) lines of unified context.\n\ + --label LABEL Use LABEL instead of file name.\n\ + -p --show-c-function Show which C function each change is in.\n\ + -F RE --show-function-line=RE Show the most recent line matching RE."), + N_("-q --brief Output only whether files differ."), + N_("-e --ed Output an ed script."), + N_("--normal Output a normal diff."), + N_("-n --rcs Output an RCS format diff."), + N_("-y --side-by-side Output in two columns.\n\ + -W NUM --width=NUM Output at most NUM (default 130) print columns.\n\ + --left-column Output only the left column of common lines.\n\ + --suppress-common-lines Do not output common lines."), + N_("-D NAME --ifdef=NAME Output merged file to show `#ifdef NAME' diffs."), + N_("--GTYPE-group-format=GFMT Similar, but format GTYPE input groups with GFMT."), + N_("--line-format=LFMT Similar, but format all input lines with LFMT."), + N_("--LTYPE-line-format=LFMT Similar, but format LTYPE input lines with LFMT."), + N_(" LTYPE is `old', `new', or `unchanged'. GTYPE is LTYPE or `changed'."), + N_(" GFMT may contain:\n\ + %< lines from FILE1\n\ + %> lines from FILE2\n\ + %= lines common to FILE1 and FILE2\n\ + %[-][WIDTH][.[PREC]]{doxX}LETTER printf-style spec for LETTER\n\ + LETTERs are as follows for new group, lower case for old group:\n\ + F first line number\n\ + L last line number\n\ + N number of lines = L-F+1\n\ + E F-1\n\ + M L+1"), + N_(" LFMT may contain:\n\ + %L contents of line\n\ + %l contents of line, excluding any trailing newline\n\ + %[-][WIDTH][.[PREC]]{doxX}n printf-style spec for input line number"), + N_(" Either GFMT or LFMT may contain:\n\ + %% %\n\ + %c'C' the single character C\n\ + %c'\\OOO' the character with octal code OOO"), + "", + N_("-l --paginate Pass the output through `pr' to paginate it."), + N_("-t --expand-tabs Expand tabs to spaces in output."), + N_("-T --initial-tab Make tabs line up by prepending a tab."), + "", + N_("-r --recursive Recursively compare any subdirectories found."), + N_("-N --new-file Treat absent files as empty."), + N_("--unidirectional-new-file Treat absent first files as empty."), + N_("-s --report-identical-files Report when two files are the same."), + N_("-x PAT --exclude=PAT Exclude files that match PAT."), + N_("-X FILE --exclude-from=FILE Exclude files that match any pattern in FILE."), + N_("-S FILE --starting-file=FILE Start with FILE when comparing directories."), + N_("--from-file=FILE1 Compare FILE1 to all operands. FILE1 can be a directory."), + N_("--to-file=FILE2 Compare all operands to FILE2. FILE2 can be a directory."), + "", + N_("--horizon-lines=NUM Keep NUM lines of the common prefix and suffix."), + N_("-d --minimal Try hard to find a smaller set of changes."), + N_("--speed-large-files Assume large files and many scattered small changes."), + "", + N_("-v --version Output version info."), + N_("--help Output this help."), + "", + N_("FILES are `FILE1 FILE2' or `DIR1 DIR2' or `DIR FILE...' or `FILE... DIR'."), + N_("If --from-file or --to-file is given, there are no restrictions on FILES."), + N_("If a FILE is `-', read standard input."), + "", + N_("Report bugs to ."), + 0 +}; + +static void +usage (void) +{ + char const * const *p; + + printf (_("Usage: %s [OPTION]... FILES\n"), program_name); + + for (p = option_help_msgid; *p; p++) + { + if (!**p) + putchar ('\n'); + else + { + char const *msg = _(*p); + char const *nl; + while ((nl = strchr (msg, '\n'))) + { + int msglen = nl + 1 - msg; + printf (" %.*s", msglen, msg); + msg = nl + 1; + } + + printf (" %s\n" + 2 * (*msg != ' ' && *msg != '-'), msg); + } + } +} + +/* Set VAR to VALUE, reporting an OPTION error if this is a + conflict. */ +static void +specify_value (char const **var, char const *value, char const *option) +{ + if (*var && strcmp (*var, value) != 0) + { + error (0, 0, _("conflicting %s option value `%s'"), option, value); + try_help (0, 0); + } + *var = value; +} + +/* Set the output style to STYLE, diagnosing conflicts. */ +static void +specify_style (enum output_style style) +{ + if (output_style != style) + { + if (output_style != OUTPUT_UNSPECIFIED) + try_help ("conflicting output style options", 0); + output_style = style; + } +} + +static char const * +filetype (struct stat const *st) +{ + /* See POSIX 1003.1-2001 for these formats. + + To keep diagnostics grammatical in English, the returned string + must start with a consonant. */ + + if (S_ISREG (st->st_mode)) + return st->st_size == 0 ? _("regular empty file") : _("regular file"); + + if (S_ISDIR (st->st_mode)) return _("directory"); + +#ifdef S_ISBLK + if (S_ISBLK (st->st_mode)) return _("block special file"); +#endif +#ifdef S_ISCHR + if (S_ISCHR (st->st_mode)) return _("character special file"); +#endif +#ifdef S_ISFIFO + if (S_ISFIFO (st->st_mode)) return _("fifo"); +#endif + /* S_ISLNK is impossible with `fstat' and `stat'. */ +#ifdef S_ISSOCK + if (S_ISSOCK (st->st_mode)) return _("socket"); +#endif +#ifdef S_TYPEISMQ + if (S_TYPEISMQ (st)) return _("message queue"); +#endif +#ifdef S_TYPEISSEM + if (S_TYPEISSEM (st)) return _("semaphore"); +#endif +#ifdef S_TYPEISSHM + if (S_TYPEISSHM (st)) return _("shared memory object"); +#endif +#ifdef S_TYPEISTMO + if (S_TYPEISTMO (st)) return _("typed memory object"); +#endif + + return _("weird file"); +} + +/* Set the last-modified time of *ST to be the current time. */ + +static void +set_mtime_to_now (struct stat *st) +{ +#ifdef ST_MTIM_NSEC + +# if HAVE_CLOCK_GETTIME && defined CLOCK_REALTIME + if (clock_gettime (CLOCK_REALTIME, &st->st_mtim) == 0) + return; +# endif + +# if HAVE_GETTIMEOFDAY + { + struct timeval timeval; + if (gettimeofday (&timeval, NULL) == 0) + { + st->st_mtime = timeval.tv_sec; + st->st_mtim.ST_MTIM_NSEC = timeval.tv_usec * 1000; + return; + } + } +# endif + +#endif /* ST_MTIM_NSEC */ + + time (&st->st_mtime); +} + +/* Compare two files (or dirs) with parent comparison PARENT + and names NAME0 and NAME1. + (If PARENT is 0, then the first name is just NAME0, etc.) + This is self-contained; it opens the files and closes them. + + Value is EXIT_SUCCESS if files are the same, EXIT_FAILURE if + different, EXIT_TROUBLE if there is a problem opening them. */ + +static int +compare_files (struct comparison const *parent, + char const *name0, + char const *name1) +{ + struct comparison cmp; +#define DIR_P(f) (S_ISDIR (cmp.file[f].stat.st_mode) != 0) + register int f; + int status = EXIT_SUCCESS; + bool same_files; + char *free0, *free1; + + /* If this is directory comparison, perhaps we have a file + that exists only in one of the directories. + If so, just print a message to that effect. */ + + if (! ((name0 && name1) + || (unidirectional_new_file && name1) + || new_file)) + { + char const *name = name0 == 0 ? name1 : name0; + char const *dir = parent->file[name0 == 0].name; + + /* See POSIX 1003.1-2001 for this format. */ + message ("Only in %s: %s\n", dir, name); + + /* Return EXIT_FAILURE so that diff_dirs will return + EXIT_FAILURE ("some files differ"). */ + return EXIT_FAILURE; + } + + memset (cmp.file, 0, sizeof cmp.file); + cmp.parent = parent; + + /* cmp.file[f].desc markers */ +#define NONEXISTENT (-1) /* nonexistent file */ +#define UNOPENED (-2) /* unopened file (e.g. directory) */ +#define ERRNO_ENCODE(errno) (-3 - (errno)) /* encoded errno value */ + +#define ERRNO_DECODE(desc) (-3 - (desc)) /* inverse of ERRNO_ENCODE */ + + cmp.file[0].desc = name0 == 0 ? NONEXISTENT : UNOPENED; + cmp.file[1].desc = name1 == 0 ? NONEXISTENT : UNOPENED; + + /* Now record the full name of each file, including nonexistent ones. */ + + if (name0 == 0) + name0 = name1; + if (name1 == 0) + name1 = name0; + + if (!parent) + { + free0 = 0; + free1 = 0; + cmp.file[0].name = name0; + cmp.file[1].name = name1; + } + else + { + cmp.file[0].name = free0 + = dir_file_pathname (parent->file[0].name, name0); + cmp.file[1].name = free1 + = dir_file_pathname (parent->file[1].name, name1); + } + + /* Stat the files. */ + + for (f = 0; f < 2; f++) + { + if (cmp.file[f].desc != NONEXISTENT) + { + if (f && file_name_cmp (cmp.file[f].name, cmp.file[0].name) == 0) + { + cmp.file[f].desc = cmp.file[0].desc; + cmp.file[f].stat = cmp.file[0].stat; + } + else if (strcmp (cmp.file[f].name, "-") == 0) + { + cmp.file[f].desc = STDIN_FILENO; + if (fstat (STDIN_FILENO, &cmp.file[f].stat) != 0) + cmp.file[f].desc = ERRNO_ENCODE (errno); + else + { + if (S_ISREG (cmp.file[f].stat.st_mode)) + { + off_t pos = lseek (STDIN_FILENO, (off_t) 0, SEEK_CUR); + if (pos < 0) + cmp.file[f].desc = ERRNO_ENCODE (errno); + else + cmp.file[f].stat.st_size = + MAX (0, cmp.file[f].stat.st_size - pos); + } + + /* POSIX 1003.1-2001 requires current time for + stdin. */ + set_mtime_to_now (&cmp.file[f].stat); + } + } + else if (stat (cmp.file[f].name, &cmp.file[f].stat) != 0) + cmp.file[f].desc = ERRNO_ENCODE (errno); + } + } + + /* Mark files as nonexistent at the top level as needed for -N and + --unidirectional-new-file. */ + if (! parent) + { + if ((new_file | unidirectional_new_file) + && cmp.file[0].desc == ERRNO_ENCODE (ENOENT) + && cmp.file[1].desc == UNOPENED) + cmp.file[0].desc = NONEXISTENT; + + if (new_file + && cmp.file[0].desc == UNOPENED + && cmp.file[1].desc == ERRNO_ENCODE (ENOENT)) + cmp.file[1].desc = NONEXISTENT; + } + + for (f = 0; f < 2; f++) + if (cmp.file[f].desc == NONEXISTENT) + cmp.file[f].stat.st_mode = cmp.file[1 - f].stat.st_mode; + + for (f = 0; f < 2; f++) + { + int e = ERRNO_DECODE (cmp.file[f].desc); + if (0 <= e) + { + errno = e; + perror_with_name (cmp.file[f].name); + status = EXIT_TROUBLE; + } + } + + if (status == EXIT_SUCCESS && ! parent && DIR_P (0) != DIR_P (1)) + { + /* If one is a directory, and it was specified in the command line, + use the file in that dir with the other file's basename. */ + + int fnm_arg = DIR_P (0); + int dir_arg = 1 - fnm_arg; + char const *fnm = cmp.file[fnm_arg].name; + char const *dir = cmp.file[dir_arg].name; + char const *filename = cmp.file[dir_arg].name = free0 + = dir_file_pathname (dir, base_name (fnm)); + + if (strcmp (fnm, "-") == 0) + fatal ("cannot compare `-' to a directory"); + + if (stat (filename, &cmp.file[dir_arg].stat) != 0) + { + perror_with_name (filename); + status = EXIT_TROUBLE; + } + } + + if (status != EXIT_SUCCESS) + { + /* One of the files should exist but does not. */ + } + else if ((same_files + = (cmp.file[0].desc != NONEXISTENT + && cmp.file[1].desc != NONEXISTENT + && 0 < same_file (&cmp.file[0].stat, &cmp.file[1].stat) + && same_file_attributes (&cmp.file[0].stat, + &cmp.file[1].stat))) + && no_diff_means_no_output) + { + /* The two named files are actually the same physical file. + We know they are identical without actually reading them. */ + } + else if (DIR_P (0) & DIR_P (1)) + { + if (output_style == OUTPUT_IFDEF) + fatal ("-D option not supported with directories"); + + /* If both are directories, compare the files in them. */ + + if (parent && !recursive) + { + /* But don't compare dir contents one level down + unless -r was specified. + See POSIX 1003.1-2001 for this format. */ + message ("Common subdirectories: %s and %s\n", + cmp.file[0].name, cmp.file[1].name); + } + else + status = diff_dirs (&cmp, compare_files); + } + else if ((DIR_P (0) | DIR_P (1)) + || (parent + && (! S_ISREG (cmp.file[0].stat.st_mode) + || ! S_ISREG (cmp.file[1].stat.st_mode)))) + { + if (cmp.file[0].desc == NONEXISTENT || cmp.file[1].desc == NONEXISTENT) + { + /* We have a subdirectory that exists only in one directory. */ + + if ((DIR_P (0) | DIR_P (1)) + && recursive + && (new_file + || (unidirectional_new_file + && cmp.file[0].desc == NONEXISTENT))) + status = diff_dirs (&cmp, compare_files); + else + { + char const *dir + = parent->file[cmp.file[0].desc == NONEXISTENT].name; + + /* See POSIX 1003.1-2001 for this format. */ + message ("Only in %s: %s\n", dir, name0); + + status = EXIT_FAILURE; + } + } + else + { + /* We have two files that are not to be compared. */ + + /* See POSIX 1003.1-2001 for this format. */ + message5 ("File %s is a %s while file %s is a %s\n", + file_label[0] ? file_label[0] : cmp.file[0].name, + filetype (&cmp.file[0].stat), + file_label[1] ? file_label[1] : cmp.file[1].name, + filetype (&cmp.file[1].stat)); + + /* This is a difference. */ + status = EXIT_FAILURE; + } + } + else if (files_can_be_treated_as_binary + && cmp.file[0].stat.st_size != cmp.file[1].stat.st_size + && (cmp.file[0].desc == NONEXISTENT + || S_ISREG (cmp.file[0].stat.st_mode)) + && (cmp.file[1].desc == NONEXISTENT + || S_ISREG (cmp.file[1].stat.st_mode))) + { + message ("Files %s and %s differ\n", + file_label[0] ? file_label[0] : cmp.file[0].name, + file_label[1] ? file_label[1] : cmp.file[1].name); + status = EXIT_FAILURE; + } + else + { + /* Both exist and neither is a directory. */ + + /* Open the files and record their descriptors. */ + + if (cmp.file[0].desc == UNOPENED) + if ((cmp.file[0].desc = open (cmp.file[0].name, O_RDONLY, 0)) < 0) + { + perror_with_name (cmp.file[0].name); + status = EXIT_TROUBLE; + } + if (cmp.file[1].desc == UNOPENED) + { + if (same_files) + cmp.file[1].desc = cmp.file[0].desc; + else if ((cmp.file[1].desc = open (cmp.file[1].name, O_RDONLY, 0)) + < 0) + { + perror_with_name (cmp.file[1].name); + status = EXIT_TROUBLE; + } + } + +#if HAVE_SETMODE_DOS + if (binary) + for (f = 0; f < 2; f++) + if (0 <= cmp.file[f].desc) + set_binary_mode (cmp.file[f].desc, 1); +#endif + + /* Compare the files, if no error was found. */ + + if (status == EXIT_SUCCESS) + status = diff_2_files (&cmp); + + /* Close the file descriptors. */ + + if (0 <= cmp.file[0].desc && close (cmp.file[0].desc) != 0) + { + perror_with_name (cmp.file[0].name); + status = EXIT_TROUBLE; + } + if (0 <= cmp.file[1].desc && cmp.file[0].desc != cmp.file[1].desc + && close (cmp.file[1].desc) != 0) + { + perror_with_name (cmp.file[1].name); + status = EXIT_TROUBLE; + } + } + + /* Now the comparison has been done, if no error prevented it, + and STATUS is the value this function will return. */ + + if (status == EXIT_SUCCESS) + { + if (report_identical_files && !DIR_P (0)) + message ("Files %s and %s are identical\n", + file_label[0] ? file_label[0] : cmp.file[0].name, + file_label[1] ? file_label[1] : cmp.file[1].name); + } + else + { + /* Flush stdout so that the user sees differences immediately. + This can hurt performance, unfortunately. */ + if (fflush (stdout) != 0) + pfatal_with_name (_("standard output")); + } + + if (free0) + free (free0); + if (free1) + free (free1); + + return status; +} diff --git a/src/apps/bin/diffutils-2.8.1/src/diff.h b/src/apps/bin/diffutils-2.8.1/src/diff.h new file mode 100644 index 0000000000..b7c76a642d --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/src/diff.h @@ -0,0 +1,375 @@ +/* Shared definitions for GNU DIFF + + Copyright (C) 1988, 1989, 1991, 1992, 1993, 1994, 1995, 1998, 2001, + 2002 Free Software Foundation, Inc. + + This file is part of GNU DIFF. + + GNU DIFF 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. + + GNU DIFF is distributed in the hope that 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; see the file COPYING. + If not, write to the Free Software Foundation, + 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + +#include "system.h" +#include + +#define TAB_WIDTH 8 + +/* What kind of changes a hunk contains. */ +enum changes +{ + /* No changes: lines common to both files. */ + UNCHANGED, + + /* Deletes only: lines taken from just the first file. */ + OLD, + + /* Inserts only: lines taken from just the second file. */ + NEW, + + /* Both deletes and inserts: a hunk containing both old and new lines. */ + CHANGED +}; + +/* Variables for command line options */ + +#ifndef GDIFF_MAIN +# define XTERN extern +#else +# define XTERN +#endif + +enum output_style +{ + /* No output style specified. */ + OUTPUT_UNSPECIFIED, + + /* Default output style. */ + OUTPUT_NORMAL, + + /* Output the differences with lines of context before and after (-c). */ + OUTPUT_CONTEXT, + + /* Output the differences in a unified context diff format (-u). */ + OUTPUT_UNIFIED, + + /* Output the differences as commands suitable for `ed' (-e). */ + OUTPUT_ED, + + /* Output the diff as a forward ed script (-f). */ + OUTPUT_FORWARD_ED, + + /* Like -f, but output a count of changed lines in each "command" (-n). */ + OUTPUT_RCS, + + /* Output merged #ifdef'd file (-D). */ + OUTPUT_IFDEF, + + /* Output sdiff style (-y). */ + OUTPUT_SDIFF +}; + +/* True for output styles that are robust, + i.e. can handle a file that ends in a non-newline. */ +#define ROBUST_OUTPUT_STYLE(S) ((S) != OUTPUT_ED && (S) != OUTPUT_FORWARD_ED) + +XTERN enum output_style output_style; + +/* Nonzero if output cannot be generated for identical files. */ +XTERN bool no_diff_means_no_output; + +/* Number of lines of context to show in each set of diffs. + This is zero when context is not to be shown. */ +XTERN lin context; + +/* Consider all files as text files (-a). + Don't interpret codes over 0177 as implying a "binary file". */ +XTERN bool text; + +/* Number of lines to keep in identical prefix and suffix. */ +XTERN lin horizon_lines; + +/* The significance of white space during comparisons. */ +XTERN enum +{ + /* All white space is significant (the default). */ + IGNORE_NO_WHITE_SPACE, + + /* Ignore changes due to tab expansion (-E). */ + IGNORE_TAB_EXPANSION, + + /* Ignore changes in horizontal white space (-b). */ + IGNORE_SPACE_CHANGE, + + /* Ignore all horizontal white space (-w). */ + IGNORE_ALL_SPACE +} ignore_white_space; + +/* Ignore changes that affect only blank lines (-B). */ +XTERN bool ignore_blank_lines; + +/* Files can be compared byte-by-byte, as if they were binary. + This depends on various options. */ +XTERN bool files_can_be_treated_as_binary; + +/* Ignore differences in case of letters (-i). */ +XTERN bool ignore_case; + +/* Ignore differences in case of letters in file names. */ +XTERN bool ignore_file_name_case; + +/* File labels for `-c' output headers (--label). */ +XTERN char *file_label[2]; + +/* Regexp to identify function-header lines (-F). */ +XTERN struct re_pattern_buffer function_regexp; + +/* Ignore changes that affect only lines matching this regexp (-I). */ +XTERN struct re_pattern_buffer ignore_regexp; + +/* Say only whether files differ, not how (-q). */ +XTERN bool brief; + +/* Expand tabs in the output so the text lines up properly + despite the characters added to the front of each line (-t). */ +XTERN bool expand_tabs; + +/* Use a tab in the output, rather than a space, before the text of an + input line, so as to keep the proper alignment in the input line + without changing the characters in it (-T). */ +XTERN bool initial_tab; + +/* Remove trailing carriage returns from input. */ +XTERN bool strip_trailing_cr; + +/* In directory comparison, specify file to start with (-S). + This is used for resuming an aborted comparison. + All file names less than this name are ignored. */ +XTERN char const *starting_file; + +/* Pipe each file's output through pr (-l). */ +XTERN bool paginate; + +/* Line group formats for unchanged, old, new, and changed groups. */ +XTERN char const *group_format[CHANGED + 1]; + +/* Line formats for unchanged, old, and new lines. */ +XTERN char const *line_format[NEW + 1]; + +/* If using OUTPUT_SDIFF print extra information to help the sdiff filter. */ +XTERN bool sdiff_merge_assist; + +/* Tell OUTPUT_SDIFF to show only the left version of common lines. */ +XTERN bool left_column; + +/* Tell OUTPUT_SDIFF to not show common lines. */ +XTERN bool suppress_common_lines; + +/* The half line width and column 2 offset for OUTPUT_SDIFF. */ +XTERN unsigned int sdiff_half_width; +XTERN unsigned int sdiff_column2_offset; + +/* String containing all the command options diff received, + with spaces between and at the beginning but none at the end. + If there were no options given, this string is empty. */ +XTERN char *switch_string; + +/* Use heuristics for better speed with large files with a small + density of changes. */ +XTERN bool speed_large_files; + +/* Patterns that match file names to be excluded. */ +XTERN struct exclude *excluded; + +/* Don't discard lines. This makes things slower (sometimes much + slower) but will find a guaranteed minimal set of changes. */ +XTERN bool minimal; + +/* Name of program the user invoked (for error messages). */ +XTERN char *program_name; + +/* The strftime format to use for time strings. */ +XTERN char const *time_format; + +/* The result of comparison is an "edit script": a chain of `struct change'. + Each `struct change' represents one place where some lines are deleted + and some are inserted. + + LINE0 and LINE1 are the first affected lines in the two files (origin 0). + DELETED is the number of lines deleted here from file 0. + INSERTED is the number of lines inserted here in file 1. + + If DELETED is 0 then LINE0 is the number of the line before + which the insertion was done; vice versa for INSERTED and LINE1. */ + +struct change +{ + struct change *link; /* Previous or next edit command */ + lin inserted; /* # lines of file 1 changed here. */ + lin deleted; /* # lines of file 0 changed here. */ + lin line0; /* Line number of 1st deleted line. */ + lin line1; /* Line number of 1st inserted line. */ + bool ignore; /* Flag used in context.c. */ +}; + +/* Structures that describe the input files. */ + +/* Data on one input file being compared. */ + +struct file_data { + int desc; /* File descriptor */ + char const *name; /* File name */ + struct stat stat; /* File status */ + + /* Buffer in which text of file is read. */ + word *buffer; + + /* Allocated size of buffer, in bytes. Always a multiple of + sizeof *buffer. */ + size_t bufsize; + + /* Number of valid bytes now in the buffer. */ + size_t buffered; + + /* Array of pointers to lines in the file. */ + char const **linbuf; + + /* linbuf_base <= buffered_lines <= valid_lines <= alloc_lines. + linebuf[linbuf_base ... buffered_lines - 1] are possibly differing. + linebuf[linbuf_base ... valid_lines - 1] contain valid data. + linebuf[linbuf_base ... alloc_lines - 1] are allocated. */ + lin linbuf_base, buffered_lines, valid_lines, alloc_lines; + + /* Pointer to end of prefix of this file to ignore when hashing. */ + char const *prefix_end; + + /* Count of lines in the prefix. + There are this many lines in the file before linbuf[0]. */ + lin prefix_lines; + + /* Pointer to start of suffix of this file to ignore when hashing. */ + char const *suffix_begin; + + /* Vector, indexed by line number, containing an equivalence code for + each line. It is this vector that is actually compared with that + of another file to generate differences. */ + lin *equivs; + + /* Vector, like the previous one except that + the elements for discarded lines have been squeezed out. */ + lin *undiscarded; + + /* Vector mapping virtual line numbers (not counting discarded lines) + to real ones (counting those lines). Both are origin-0. */ + lin *realindexes; + + /* Total number of nondiscarded lines. */ + lin nondiscarded_lines; + + /* Vector, indexed by real origin-0 line number, + containing TRUE for a line that is an insertion or a deletion. + The results of comparison are stored here. */ + bool *changed; + + /* 1 if file ends in a line with no final newline. */ + bool missing_newline; + + /* 1 if at end of file. */ + bool eof; + + /* 1 more than the maximum equivalence value used for this or its + sibling file. */ + lin equiv_max; +}; + +/* The file buffer, considered as an array of bytes rather than + as an array of words. */ +#define FILE_BUFFER(f) ((char *) (f)->buffer) + +/* Data on two input files being compared. */ + +struct comparison + { + struct file_data file[2]; + struct comparison const *parent; /* parent, if a recursive comparison */ + }; + +/* Describe the two files currently being compared. */ + +XTERN struct file_data files[2]; + +/* Stdio stream to output diffs to. */ + +XTERN FILE *outfile; + +/* Declare various functions. */ + +/* analyze.c */ +int diff_2_files (struct comparison *); + +/* context.c */ +void print_context_header (struct file_data[], bool); +void print_context_script (struct change *, bool); + +/* dir.c */ +int diff_dirs (struct comparison const *, int (*) (struct comparison const *, char const *, char const *)); + +/* ed.c */ +void print_ed_script (struct change *); +void pr_forward_ed_script (struct change *); + +/* ifdef.c */ +void print_ifdef_script (struct change *); + +/* io.c */ +void file_block_read (struct file_data *, size_t); +bool read_files (struct file_data[], bool); + +/* normal.c */ +void print_normal_script (struct change *); + +/* rcs.c */ +void print_rcs_script (struct change *); + +/* side.c */ +void print_sdiff_script (struct change *); + +/* util.c */ +extern char const change_letter[4]; +extern char const pr_program[]; +char *concat (char const *, char const *, char const *); +char *dir_file_pathname (char const *, char const *); +bool lines_differ (char const *, char const *); +lin translate_line_number (struct file_data const *, lin); +struct change *find_change (struct change *); +struct change *find_reverse_change (struct change *); +void *zalloc (size_t); +enum changes analyze_hunk (struct change *, lin *, lin *, lin *, lin *); +void begin_output (void); +void debug_script (struct change *); +void fatal (char const *) __attribute__((noreturn)); +void finish_output (void); +void message (char const *, char const *, char const *); +void message5 (char const *, char const *, char const *, char const *, char const *); +void output_1_line (char const *, char const *, char const *, char const *); +void perror_with_name (char const *); +void pfatal_with_name (char const *) __attribute__((noreturn)); +void print_1_line (char const *, char const * const *); +void print_message_queue (void); +void print_number_range (char, struct file_data *, lin, lin); +void print_script (struct change *, struct change * (*) (struct change *), void (*) (struct change *)); +void setup_output (char const *, char const *, bool); +void translate_range (struct file_data const *, lin, lin, long *, long *); + +/* version.c */ +extern char const version_string[]; diff --git a/src/apps/bin/diffutils-2.8.1/src/diff3.c b/src/apps/bin/diffutils-2.8.1/src/diff3.c new file mode 100644 index 0000000000..f3d3dcf7f9 --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/src/diff3.c @@ -0,0 +1,1745 @@ +/* diff3 - compare three files line by line + + Copyright (C) 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1998, 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; see the file COPYING. + If not, write to the Free Software Foundation, + 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + +#include "system.h" + +static char const copyright_string[] = + "Copyright (C) 2002 Free Software Foundation, Inc."; + +static char const authorship_msgid[] = N_("Written by Randy Smith."); + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +extern char const version_string[]; + +/* + * Internal data structures and macros for the diff3 program; includes + * data structures for both diff3 diffs and normal diffs. + */ + +/* Different files within a three way diff. */ +#define FILE0 0 +#define FILE1 1 +#define FILE2 2 + +/* + * A three way diff is built from two two-way diffs; the file which + * the two two-way diffs share is: + */ +#define FILEC FILE2 + +/* + * Different files within a two way diff. + * FC is the common file, FO the other file. + */ +#define FO 0 +#define FC 1 + +/* The ranges are indexed by */ +#define RANGE_START 0 +#define RANGE_END 1 + +enum diff_type { + ERROR, /* Should not be used */ + ADD, /* Two way diff add */ + CHANGE, /* Two way diff change */ + DELETE, /* Two way diff delete */ + DIFF_ALL, /* All three are different */ + DIFF_1ST, /* Only the first is different */ + DIFF_2ND, /* Only the second */ + DIFF_3RD /* Only the third */ +}; + +/* Two way diff */ +struct diff_block { + lin ranges[2][2]; /* Ranges are inclusive */ + char **lines[2]; /* The actual lines (may contain nulls) */ + size_t *lengths[2]; /* Line lengths (including newlines, if any) */ + struct diff_block *next; +}; + +/* Three way diff */ + +struct diff3_block { + enum diff_type correspond; /* Type of diff */ + lin ranges[3][2]; /* Ranges are inclusive */ + char **lines[3]; /* The actual lines (may contain nulls) */ + size_t *lengths[3]; /* Line lengths (including newlines, if any) */ + struct diff3_block *next; +}; + +/* + * Access the ranges on a diff block. + */ +#define D_LOWLINE(diff, filenum) \ + ((diff)->ranges[filenum][RANGE_START]) +#define D_HIGHLINE(diff, filenum) \ + ((diff)->ranges[filenum][RANGE_END]) +#define D_NUMLINES(diff, filenum) \ + (D_HIGHLINE (diff, filenum) - D_LOWLINE (diff, filenum) + 1) + +/* + * Access the line numbers in a file in a diff by relative line + * numbers (i.e. line number within the diff itself). Note that these + * are lvalues and can be used for assignment. + */ +#define D_RELNUM(diff, filenum, linenum) \ + ((diff)->lines[filenum][linenum]) +#define D_RELLEN(diff, filenum, linenum) \ + ((diff)->lengths[filenum][linenum]) + +/* + * And get at them directly, when that should be necessary. + */ +#define D_LINEARRAY(diff, filenum) \ + ((diff)->lines[filenum]) +#define D_LENARRAY(diff, filenum) \ + ((diff)->lengths[filenum]) + +/* + * Next block. + */ +#define D_NEXT(diff) ((diff)->next) + +/* + * Access the type of a diff3 block. + */ +#define D3_TYPE(diff) ((diff)->correspond) + +/* + * Line mappings based on diffs. The first maps off the top of the + * diff, the second off of the bottom. + */ +#define D_HIGH_MAPLINE(diff, fromfile, tofile, linenum) \ + ((linenum) \ + - D_HIGHLINE ((diff), (fromfile)) \ + + D_HIGHLINE ((diff), (tofile))) + +#define D_LOW_MAPLINE(diff, fromfile, tofile, linenum) \ + ((linenum) \ + - D_LOWLINE ((diff), (fromfile)) \ + + D_LOWLINE ((diff), (tofile))) + +/* Options variables for flags set on command line. */ + +/* If nonzero, treat all files as text files, never as binary. */ +static bool text; + +/* If nonzero, write out an ed script instead of the standard diff3 format. */ +static bool edscript; + +/* If nonzero, in the case of overlapping diffs (type DIFF_ALL), + preserve the lines which would normally be deleted from + file 1 with a special flagging mechanism. */ +static bool flagging; + +/* Use a tab to align output lines (-T). */ +static bool initial_tab; + +/* If nonzero, do not output information for overlapping diffs. */ +static bool simple_only; + +/* If nonzero, do not output information for non-overlapping diffs. */ +static bool overlap_only; + +/* If nonzero, show information for DIFF_2ND diffs. */ +static bool show_2nd; + +/* If nonzero, include `:wq' at the end of the script + to write out the file being edited. */ +static bool finalwrite; + +/* If nonzero, output a merged file. */ +static bool merge; + +char *program_name; + +static char *read_diff (char const *, char const *, char **); +static char *scan_diff_line (char *, char **, size_t *, char *, char); +static enum diff_type process_diff_control (char **, struct diff_block *); +static bool compare_line_list (char * const[], size_t const[], char * const[], size_t const[], lin); +static bool copy_stringlist (char * const[], size_t const[], char *[], size_t[], lin); +static bool output_diff3_edscript (FILE *, struct diff3_block *, int const[3], int const[3], char const *, char const *, char const *); +static bool output_diff3_merge (FILE *, FILE *, struct diff3_block *, int const[3], int const[3], char const *, char const *, char const *); +static struct diff3_block *create_diff3_block (lin, lin, lin, lin, lin, lin); +static struct diff3_block *make_3way_diff (struct diff_block *, struct diff_block *); +static struct diff3_block *reverse_diff3_blocklist (struct diff3_block *); +static struct diff3_block *using_to_diff3_block (struct diff_block *[2], struct diff_block *[2], int, int, struct diff3_block const *); +static struct diff_block *process_diff (char const *, char const *, struct diff_block **); +static void check_stdout (void); +static void fatal (char const *) __attribute__((noreturn)); +static void output_diff3 (FILE *, struct diff3_block *, int const[3], int const[3]); +static void perror_with_exit (char const *) __attribute__((noreturn)); +static void try_help (char const *, char const *) __attribute__((noreturn)); +static void usage (void); + +static char const *diff_program = DEFAULT_DIFF_PROGRAM; + +/* Values for long options that do not have single-letter equivalents. */ +enum +{ + DIFF_PROGRAM_OPTION = CHAR_MAX + 1, + HELP_OPTION +}; + +static struct option const longopts[] = +{ + {"text", 0, 0, 'a'}, + {"show-all", 0, 0, 'A'}, + {"ed", 0, 0, 'e'}, + {"diff-program", 1, 0, DIFF_PROGRAM_OPTION}, + {"show-overlap", 0, 0, 'E'}, + {"label", 1, 0, 'L'}, + {"merge", 0, 0, 'm'}, + {"initial-tab", 0, 0, 'T'}, + {"overlap-only", 0, 0, 'x'}, + {"easy-only", 0, 0, '3'}, + {"version", 0, 0, 'v'}, + {"help", 0, 0, HELP_OPTION}, + {0, 0, 0, 0} +}; + +/* + * Main program. Calls diff twice on two pairs of input files, + * combines the two diffs, and outputs them. + */ +int +main (int argc, char **argv) +{ + int c, i; + int common; + int mapping[3]; + int rev_mapping[3]; + int incompat = 0; + bool conflicts_found; + struct diff_block *thread0, *thread1, *last_block; + struct diff3_block *diff3; + int tag_count = 0; + char *tag_strings[3]; + char *commonname; + char **file; + struct stat statb; + + exit_failure = 2; + initialize_main (&argc, &argv); + program_name = argv[0]; + setlocale (LC_ALL, ""); + bindtextdomain (PACKAGE, LOCALEDIR); + textdomain (PACKAGE); + c_stack_action (c_stack_die); + + while ((c = getopt_long (argc, argv, "aeimvx3AEL:TX", longopts, 0)) != -1) + { + switch (c) + { + case 'a': + text = 1; + break; + case 'A': + show_2nd = 1; + flagging = 1; + incompat++; + break; + case 'x': + overlap_only = 1; + incompat++; + break; + case '3': + simple_only = 1; + incompat++; + break; + case 'i': + finalwrite = 1; + break; + case 'm': + merge = 1; + break; + case 'X': + overlap_only = 1; + /* Fall through. */ + case 'E': + flagging = 1; + /* Fall through. */ + case 'e': + incompat++; + break; + case 'T': + initial_tab = 1; + break; + case 'v': + printf ("diff3 %s\n%s\n\n%s\n\n%s\n", + version_string, copyright_string, + _(free_software_msgid), _(authorship_msgid)); + check_stdout (); + return EXIT_SUCCESS; + case DIFF_PROGRAM_OPTION: + diff_program = optarg; + break; + case HELP_OPTION: + usage (); + check_stdout (); + return EXIT_SUCCESS; + case 'L': + /* Handle up to three -L options. */ + if (tag_count < 3) + { + tag_strings[tag_count++] = optarg; + break; + } + try_help ("too many file label options", 0); + default: + try_help (0, 0); + } + } + + edscript = incompat & ~merge; /* -AeExX3 without -m implies ed script. */ + show_2nd |= ~incompat & merge; /* -m without -AeExX3 implies -A. */ + flagging |= ~incompat & merge; + + if (incompat > 1 /* Ensure at most one of -AeExX3. */ + || finalwrite & merge /* -i -m would rewrite input file. */ + || (tag_count && ! flagging)) /* -L requires one of -AEX. */ + try_help ("incompatible options", 0); + + if (argc - optind != 3) + { + if (argc - optind < 3) + try_help ("missing operand after `%s'", argv[argc - 1]); + else + try_help ("extra operand `%s'", argv[optind + 3]); + } + + file = &argv[optind]; + + for (i = tag_count; i < 3; i++) + tag_strings[i] = file[i]; + + /* Always compare file1 to file2, even if file2 is "-". + This is needed for -mAeExX3. Using the file0 as + the common file would produce wrong results, because if the + file0-file1 diffs didn't line up with the file0-file2 diffs + (which is entirely possible since we don't use diff's -n option), + diff3 might report phantom changes from file1 to file2. + + Also, try to compare file0 to file1, because this is where + changes are expected to come from. Diffing between these pairs + of files is more likely to avoid phantom changes from file0 to file1. + + Historically, the default common file was file2, so some older + applications (e.g. Emacs ediff) used file2 as the ancestor. So, + for compatibility, if this is a 3-way diff (not a merge or + edscript), prefer file2 as the common file. */ + + common = 2 - (edscript | merge); + + if (strcmp (file[common], "-") == 0) + { + /* Sigh. We've got standard input as the common file. We can't + call diff twice on stdin. Use the other arg as the common + file instead. */ + common = 3 - common; + if (strcmp (file[0], "-") == 0 || strcmp (file[common], "-") == 0) + fatal ("`-' specified for more than one input file"); + } + + mapping[0] = 0; + mapping[1] = 3 - common; + mapping[2] = common; + + for (i = 0; i < 3; i++) + rev_mapping[mapping[i]] = i; + + for (i = 0; i < 3; i++) + if (strcmp (file[i], "-") != 0) + { + if (stat (file[i], &statb) < 0) + perror_with_exit (file[i]); + else if (S_ISDIR (statb.st_mode)) + error (EXIT_TROUBLE, EISDIR, "%s", file[i]); + } + +#ifdef SIGCHLD + /* System V fork+wait does not work if SIGCHLD is ignored. */ + signal (SIGCHLD, SIG_DFL); +#endif + + commonname = file[rev_mapping[FILEC]]; + thread1 = process_diff (file[rev_mapping[FILE1]], commonname, &last_block); + thread0 = process_diff (file[rev_mapping[FILE0]], commonname, &last_block); + diff3 = make_3way_diff (thread0, thread1); + if (edscript) + conflicts_found + = output_diff3_edscript (stdout, diff3, mapping, rev_mapping, + tag_strings[0], tag_strings[1], tag_strings[2]); + else if (merge) + { + if (! freopen (file[rev_mapping[FILE0]], "r", stdin)) + perror_with_exit (file[rev_mapping[FILE0]]); + conflicts_found + = output_diff3_merge (stdin, stdout, diff3, mapping, rev_mapping, + tag_strings[0], tag_strings[1], tag_strings[2]); + if (ferror (stdin)) + fatal ("read failed"); + } + else + { + output_diff3 (stdout, diff3, mapping, rev_mapping); + conflicts_found = 0; + } + + check_stdout (); + exit (conflicts_found); + return conflicts_found; +} + +static void +try_help (char const *reason_msgid, char const *operand) +{ + if (reason_msgid) + error (0, 0, _(reason_msgid), operand); + error (EXIT_TROUBLE, 0, + _("Try `%s --help' for more information."), program_name); + abort (); +} + +static void +check_stdout (void) +{ + if (ferror (stdout)) + fatal ("write failed"); + else if (fclose (stdout) != 0) + perror_with_exit (_("standard output")); +} + +static char const * const option_help_msgid[] = { + N_("-e --ed Output unmerged changes from OLDFILE to YOURFILE into MYFILE."), + N_("-E --show-overlap Output unmerged changes, bracketing conflicts."), + N_("-A --show-all Output all changes, bracketing conflicts."), + N_("-x --overlap-only Output overlapping changes."), + N_("-X Output overlapping changes, bracketing them."), + N_("-3 --easy-only Output unmerged nonoverlapping changes."), + "", + N_("-m --merge Output merged file instead of ed script (default -A)."), + N_("-L LABEL --label=LABEL Use LABEL instead of file name."), + N_("-i Append `w' and `q' commands to ed scripts."), + N_("-a --text Treat all files as text."), + N_("-T --initial-tab Make tabs line up by prepending a tab."), + N_("--diff-program=PROGRAM Use PROGRAM to compare files."), + "", + N_("-v --version Output version info."), + N_("--help Output this help."), + 0 +}; + +static void +usage (void) +{ + char const * const *p; + + printf (_("Usage: %s [OPTION]... MYFILE OLDFILE YOURFILE\n"), + program_name); + printf ("%s\n\n", _("Compare three files line by line.")); + for (p = option_help_msgid; *p; p++) + if (**p) + printf (" %s\n", _(*p)); + else + putchar ('\n'); + printf ("\n%s\n\n%s\n", + _("If a FILE is `-', read standard input."), + _("Report bugs to .")); +} + +/* + * Routines that combine the two diffs together into one. The + * algorithm used follows: + * + * File2 is shared in common between the two diffs. + * Diff02 is the diff between 0 and 2. + * Diff12 is the diff between 1 and 2. + * + * 1) Find the range for the first block in File2. + * a) Take the lowest of the two ranges (in File2) in the two + * current blocks (one from each diff) as being the low + * water mark. Assign the upper end of this block as + * being the high water mark and move the current block up + * one. Mark the block just moved over as to be used. + * b) Check the next block in the diff that the high water + * mark is *not* from. + * + * *If* the high water mark is above + * the low end of the range in that block, + * + * mark that block as to be used and move the current + * block up. Set the high water mark to the max of + * the high end of this block and the current. Repeat b. + * + * 2) Find the corresponding ranges in File0 (from the blocks + * in diff02; line per line outside of diffs) and in File1. + * Create a diff3_block, reserving space as indicated by the ranges. + * + * 3) Copy all of the pointers for file2 in. At least for now, + * do memcmp's between corresponding strings in the two diffs. + * + * 4) Copy all of the pointers for file0 and 1 in. Get what you + * need from file2 (when there isn't a diff block, it's + * identical to file2 within the range between diff blocks). + * + * 5) If the diff blocks you used came from only one of the two + * strings of diffs, then that file (i.e. the one other than + * the common file in that diff) is the odd person out. If you used + * diff blocks from both sets, check to see if files 0 and 1 match: + * + * Same number of lines? If so, do a set of memcmp's (if a + * memcmp matches; copy the pointer over; it'll be easier later + * if you have to do any compares). If they match, 0 & 1 are + * the same. If not, all three different. + * + * Then you do it again, until you run out of blocks. + * + */ + +/* + * This routine makes a three way diff (chain of diff3_block's) from two + * two way diffs (chains of diff_block's). It is assumed that each of + * the two diffs passed are onto the same file (i.e. that each of the + * diffs were made "to" the same file). The three way diff pointer + * returned will have numbering FILE0--the other file in diff02, + * FILE1--the other file in diff12, and FILEC--the common file. + */ +static struct diff3_block * +make_3way_diff (struct diff_block *thread0, struct diff_block *thread1) +{ +/* + * This routine works on the two diffs passed to it as threads. + * Thread number 0 is diff02, thread number 1 is diff12. The USING + * array is set to the base of the list of blocks to be used to + * construct each block of the three way diff; if no blocks from a + * particular thread are to be used, that element of the using array + * is set to 0. The elements LAST_USING array are set to the last + * elements on each of the using lists. + * + * The HIGH_WATER_MARK is set to the highest line number in the common file + * described in any of the diffs in either of the USING lists. The + * HIGH_WATER_THREAD names the thread. Similarly the BASE_WATER_MARK + * and BASE_WATER_THREAD describe the lowest line number in the common file + * described in any of the diffs in either of the USING lists. The + * HIGH_WATER_DIFF is the diff from which the HIGH_WATER_MARK was + * taken. + * + * The HIGH_WATER_DIFF should always be equal to LAST_USING + * [HIGH_WATER_THREAD]. The OTHER_DIFF is the next diff to check for + * higher water, and should always be equal to + * CURRENT[HIGH_WATER_THREAD ^ 0x1]. The OTHER_THREAD is the thread + * in which the OTHER_DIFF is, and hence should always be equal to + * HIGH_WATER_THREAD ^ 0x1. + * + * The variable LAST_DIFF is kept set to the last diff block produced + * by this routine, for line correspondence purposes between that diff + * and the one currently being worked on. It is initialized to + * ZERO_DIFF before any blocks have been created. + */ + + struct diff_block *using[2]; + struct diff_block *last_using[2]; + struct diff_block *current[2]; + + lin high_water_mark; + + int high_water_thread; + int base_water_thread; + int other_thread; + + struct diff_block *high_water_diff; + struct diff_block *other_diff; + + struct diff3_block *result; + struct diff3_block *tmpblock; + struct diff3_block **result_end; + + struct diff3_block const *last_diff3; + + static struct diff3_block const zero_diff3; + + /* Initialization */ + result = 0; + result_end = &result; + current[0] = thread0; current[1] = thread1; + last_diff3 = &zero_diff3; + + /* Sniff up the threads until we reach the end */ + + while (current[0] || current[1]) + { + using[0] = using[1] = last_using[0] = last_using[1] = 0; + + /* Setup low and high water threads, diffs, and marks. */ + if (!current[0]) + base_water_thread = 1; + else if (!current[1]) + base_water_thread = 0; + else + base_water_thread = + (D_LOWLINE (current[0], FC) > D_LOWLINE (current[1], FC)); + + high_water_thread = base_water_thread; + + high_water_diff = current[high_water_thread]; + + high_water_mark = D_HIGHLINE (high_water_diff, FC); + + /* Make the diff you just got info from into the using class */ + using[high_water_thread] + = last_using[high_water_thread] + = high_water_diff; + current[high_water_thread] = high_water_diff->next; + last_using[high_water_thread]->next = 0; + + /* And mark the other diff */ + other_thread = high_water_thread ^ 0x1; + other_diff = current[other_thread]; + + /* Shuffle up the ladder, checking the other diff to see if it + needs to be incorporated. */ + while (other_diff + && D_LOWLINE (other_diff, FC) <= high_water_mark + 1) + { + + /* Incorporate this diff into the using list. Note that + this doesn't take it off the current list */ + if (using[other_thread]) + last_using[other_thread]->next = other_diff; + else + using[other_thread] = other_diff; + last_using[other_thread] = other_diff; + + /* Take it off the current list. Note that this following + code assumes that other_diff enters it equal to + current[high_water_thread ^ 0x1] */ + current[other_thread] = current[other_thread]->next; + other_diff->next = 0; + + /* Set the high_water stuff + If this comparison is equal, then this is the last pass + through this loop; since diff blocks within a given + thread cannot overlap, the high_water_mark will be + *below* the range_start of either of the next diffs. */ + + if (high_water_mark < D_HIGHLINE (other_diff, FC)) + { + high_water_thread ^= 1; + high_water_diff = other_diff; + high_water_mark = D_HIGHLINE (other_diff, FC); + } + + /* Set the other diff */ + other_thread = high_water_thread ^ 0x1; + other_diff = current[other_thread]; + } + + /* The using lists contain a list of all of the blocks to be + included in this diff3_block. Create it. */ + + tmpblock = using_to_diff3_block (using, last_using, + base_water_thread, high_water_thread, + last_diff3); + + if (!tmpblock) + fatal ("internal error: screwup in format of diff blocks"); + + /* Put it on the list. */ + *result_end = tmpblock; + result_end = &tmpblock->next; + + /* Set up corresponding lines correctly. */ + last_diff3 = tmpblock; + } + return result; +} + +/* + * using_to_diff3_block: + * This routine takes two lists of blocks (from two separate diff + * threads) and puts them together into one diff3 block. + * It then returns a pointer to this diff3 block or 0 for failure. + * + * All arguments besides using are for the convenience of the routine; + * they could be derived from the using array. + * LAST_USING is a pair of pointers to the last blocks in the using + * structure. + * LOW_THREAD and HIGH_THREAD tell which threads contain the lowest + * and highest line numbers for File0. + * last_diff3 contains the last diff produced in the calling routine. + * This is used for lines mappings which would still be identical to + * the state that diff ended in. + * + * A distinction should be made in this routine between the two diffs + * that are part of a normal two diff block, and the three diffs that + * are part of a diff3_block. + */ +static struct diff3_block * +using_to_diff3_block (struct diff_block *using[2], + struct diff_block *last_using[2], + int low_thread, int high_thread, + struct diff3_block const *last_diff3) +{ + lin low[2], high[2]; + struct diff3_block *result; + struct diff_block *ptr; + int d; + lin i; + + /* Find the range in the common file. */ + lin lowc = D_LOWLINE (using[low_thread], FC); + lin highc = D_HIGHLINE (last_using[high_thread], FC); + + /* Find the ranges in the other files. + If using[d] is null, that means that the file to which that diff + refers is equivalent to the common file over this range. */ + + for (d = 0; d < 2; d++) + if (using[d]) + { + low[d] = D_LOW_MAPLINE (using[d], FC, FO, lowc); + high[d] = D_HIGH_MAPLINE (last_using[d], FC, FO, highc); + } + else + { + low[d] = D_HIGH_MAPLINE (last_diff3, FILEC, FILE0 + d, lowc); + high[d] = D_HIGH_MAPLINE (last_diff3, FILEC, FILE0 + d, highc); + } + + /* Create a block with the appropriate sizes */ + result = create_diff3_block (low[0], high[0], low[1], high[1], lowc, highc); + + /* Copy information for the common file. + Return with a zero if any of the compares failed. */ + + for (d = 0; d < 2; d++) + for (ptr = using[d]; ptr; ptr = D_NEXT (ptr)) + { + lin result_offset = D_LOWLINE (ptr, FC) - lowc; + + if (!copy_stringlist (D_LINEARRAY (ptr, FC), + D_LENARRAY (ptr, FC), + D_LINEARRAY (result, FILEC) + result_offset, + D_LENARRAY (result, FILEC) + result_offset, + D_NUMLINES (ptr, FC))) + return 0; + } + + /* Copy information for file d. First deal with anything that might be + before the first diff. */ + + for (d = 0; d < 2; d++) + { + struct diff_block *u = using[d]; + lin lo = low[d], hi = high[d]; + + for (i = 0; + i + lo < (u ? D_LOWLINE (u, FO) : hi + 1); + i++) + { + D_RELNUM (result, FILE0 + d, i) = D_RELNUM (result, FILEC, i); + D_RELLEN (result, FILE0 + d, i) = D_RELLEN (result, FILEC, i); + } + + for (ptr = u; ptr; ptr = D_NEXT (ptr)) + { + lin result_offset = D_LOWLINE (ptr, FO) - lo; + lin linec; + + if (!copy_stringlist (D_LINEARRAY (ptr, FO), + D_LENARRAY (ptr, FO), + D_LINEARRAY (result, FILE0 + d) + result_offset, + D_LENARRAY (result, FILE0 + d) + result_offset, + D_NUMLINES (ptr, FO))) + return 0; + + /* Catch the lines between here and the next diff */ + linec = D_HIGHLINE (ptr, FC) + 1 - lowc; + for (i = D_HIGHLINE (ptr, FO) + 1 - lo; + i < (D_NEXT (ptr) ? D_LOWLINE (D_NEXT (ptr), FO) : hi + 1) - lo; + i++) + { + D_RELNUM (result, FILE0 + d, i) = D_RELNUM (result, FILEC, linec); + D_RELLEN (result, FILE0 + d, i) = D_RELLEN (result, FILEC, linec); + linec++; + } + } + } + + /* Set correspond */ + if (!using[0]) + D3_TYPE (result) = DIFF_2ND; + else if (!using[1]) + D3_TYPE (result) = DIFF_1ST; + else + { + lin nl0 = D_NUMLINES (result, FILE0); + lin nl1 = D_NUMLINES (result, FILE1); + + if (nl0 != nl1 + || !compare_line_list (D_LINEARRAY (result, FILE0), + D_LENARRAY (result, FILE0), + D_LINEARRAY (result, FILE1), + D_LENARRAY (result, FILE1), + nl0)) + D3_TYPE (result) = DIFF_ALL; + else + D3_TYPE (result) = DIFF_3RD; + } + + return result; +} + +/* + * This routine copies pointers from a list of strings to a different list + * of strings. If a spot in the second list is already filled, it + * makes sure that it is filled with the same string; if not it + * returns 0, the copy incomplete. + * Upon successful completion of the copy, it returns 1. + */ +static bool +copy_stringlist (char * const fromptrs[], size_t const fromlengths[], + char *toptrs[], size_t tolengths[], + lin copynum) +{ + register char * const *f = fromptrs; + register char **t = toptrs; + register size_t const *fl = fromlengths; + register size_t *tl = tolengths; + + while (copynum--) + { + if (*t) + { if (*fl != *tl || memcmp (*f, *t, *fl)) return 0; } + else + { *t = *f ; *tl = *fl; } + + t++; f++; tl++; fl++; + } + return 1; +} + +/* + * Create a diff3_block, with ranges as specified in the arguments. + * Allocate the arrays for the various pointers (and zero them) based + * on the arguments passed. Return the block as a result. + */ +static struct diff3_block * +create_diff3_block (lin low0, lin high0, + lin low1, lin high1, + lin low2, lin high2) +{ + struct diff3_block *result = xmalloc (sizeof *result); + lin numlines; + + D3_TYPE (result) = ERROR; + D_NEXT (result) = 0; + + /* Assign ranges */ + D_LOWLINE (result, FILE0) = low0; + D_HIGHLINE (result, FILE0) = high0; + D_LOWLINE (result, FILE1) = low1; + D_HIGHLINE (result, FILE1) = high1; + D_LOWLINE (result, FILE2) = low2; + D_HIGHLINE (result, FILE2) = high2; + + /* Allocate and zero space */ + numlines = D_NUMLINES (result, FILE0); + if (numlines) + { + D_LINEARRAY (result, FILE0) = xcalloc (numlines, sizeof (char *)); + D_LENARRAY (result, FILE0) = xcalloc (numlines, sizeof (size_t)); + } + else + { + D_LINEARRAY (result, FILE0) = 0; + D_LENARRAY (result, FILE0) = 0; + } + + numlines = D_NUMLINES (result, FILE1); + if (numlines) + { + D_LINEARRAY (result, FILE1) = xcalloc (numlines, sizeof (char *)); + D_LENARRAY (result, FILE1) = xcalloc (numlines, sizeof (size_t)); + } + else + { + D_LINEARRAY (result, FILE1) = 0; + D_LENARRAY (result, FILE1) = 0; + } + + numlines = D_NUMLINES (result, FILE2); + if (numlines) + { + D_LINEARRAY (result, FILE2) = xcalloc (numlines, sizeof (char *)); + D_LENARRAY (result, FILE2) = xcalloc (numlines, sizeof (size_t)); + } + else + { + D_LINEARRAY (result, FILE2) = 0; + D_LENARRAY (result, FILE2) = 0; + } + + /* Return */ + return result; +} + +/* + * Compare two lists of lines of text. + * Return 1 if they are equivalent, 0 if not. + */ +static bool +compare_line_list (char * const list1[], size_t const lengths1[], + char * const list2[], size_t const lengths2[], + lin nl) +{ + char + * const *l1 = list1, + * const *l2 = list2; + size_t const + *lgths1 = lengths1, + *lgths2 = lengths2; + + while (nl--) + if (!*l1 || !*l2 || *lgths1 != *lgths2++ + || memcmp (*l1++, *l2++, *lgths1++)) + return 0; + return 1; +} + +/* + * Routines to input and parse two way diffs. + */ + +static struct diff_block * +process_diff (char const *filea, + char const *fileb, + struct diff_block **last_block) +{ + char *diff_contents; + char *diff_limit; + char *scan_diff; + enum diff_type dt; + lin i; + struct diff_block *block_list, **block_list_end, *bptr; + size_t too_many_lines = (PTRDIFF_MAX + / MIN (sizeof *bptr->lines[1], + sizeof *bptr->lengths[1])); + + diff_limit = read_diff (filea, fileb, &diff_contents); + scan_diff = diff_contents; + block_list_end = &block_list; + bptr = 0; /* Pacify `gcc -W'. */ + + while (scan_diff < diff_limit) + { + bptr = xmalloc (sizeof *bptr); + bptr->lines[0] = bptr->lines[1] = 0; + bptr->lengths[0] = bptr->lengths[1] = 0; + + dt = process_diff_control (&scan_diff, bptr); + if (dt == ERROR || *scan_diff != '\n') + { + fprintf (stderr, _("%s: diff failed: "), program_name); + do + { + putc (*scan_diff, stderr); + } + while (*scan_diff++ != '\n'); + exit (EXIT_TROUBLE); + } + scan_diff++; + + /* Force appropriate ranges to be null, if necessary */ + switch (dt) + { + case ADD: + bptr->ranges[0][0]++; + break; + case DELETE: + bptr->ranges[1][0]++; + break; + case CHANGE: + break; + default: + fatal ("internal error: invalid diff type in process_diff"); + break; + } + + /* Allocate space for the pointers for the lines from filea, and + parcel them out among these pointers */ + if (dt != ADD) + { + lin numlines = D_NUMLINES (bptr, 0); + if (too_many_lines <= numlines) + xalloc_die (); + bptr->lines[0] = xmalloc (numlines * sizeof *bptr->lines[0]); + bptr->lengths[0] = xmalloc (numlines * sizeof *bptr->lengths[0]); + for (i = 0; i < numlines; i++) + scan_diff = scan_diff_line (scan_diff, + &(bptr->lines[0][i]), + &(bptr->lengths[0][i]), + diff_limit, + '<'); + } + + /* Get past the separator for changes */ + if (dt == CHANGE) + { + if (strncmp (scan_diff, "---\n", 4)) + fatal ("invalid diff format; invalid change separator"); + scan_diff += 4; + } + + /* Allocate space for the pointers for the lines from fileb, and + parcel them out among these pointers */ + if (dt != DELETE) + { + lin numlines = D_NUMLINES (bptr, 1); + if (too_many_lines <= numlines) + xalloc_die (); + bptr->lines[1] = xmalloc (numlines * sizeof *bptr->lines[1]); + bptr->lengths[1] = xmalloc (numlines * sizeof *bptr->lengths[1]); + for (i = 0; i < numlines; i++) + scan_diff = scan_diff_line (scan_diff, + &(bptr->lines[1][i]), + &(bptr->lengths[1][i]), + diff_limit, + '>'); + } + + /* Place this block on the blocklist. */ + *block_list_end = bptr; + block_list_end = &bptr->next; + } + + *block_list_end = 0; + *last_block = bptr; + return block_list; +} + +/* + * This routine will parse a normal format diff control string. It + * returns the type of the diff (ERROR if the format is bad). All of + * the other important information is filled into to the structure + * pointed to by db, and the string pointer (whose location is passed + * to this routine) is updated to point beyond the end of the string + * parsed. Note that only the ranges in the diff_block will be set by + * this routine. + * + * If some specific pair of numbers has been reduced to a single + * number, then both corresponding numbers in the diff block are set + * to that number. In general these numbers are interpreted as ranges + * inclusive, unless being used by the ADD or DELETE commands. It is + * assumed that these will be special cased in a superior routine. + */ + +static enum diff_type +process_diff_control (char **string, struct diff_block *db) +{ + char *s = *string; + lin holdnum; + enum diff_type type; + +/* These macros are defined here because they can use variables + defined in this function. Don't try this at home kids, we're + trained professionals! + + Also note that SKIPWHITE only recognizes tabs and spaces, and + that READNUM can only read positive, integral numbers */ + +#define SKIPWHITE(s) { while (*s == ' ' || *s == '\t') s++; } +#define READNUM(s, num) \ + { unsigned char c = *s; if (!ISDIGIT (c)) return ERROR; holdnum = 0; \ + do { holdnum = (c - '0' + holdnum * 10); } \ + while (ISDIGIT (c = *++s)); (num) = holdnum; } + + /* Read first set of digits */ + SKIPWHITE (s); + READNUM (s, db->ranges[0][RANGE_START]); + + /* Was that the only digit? */ + SKIPWHITE (s); + if (*s == ',') + { + /* Get the next digit */ + s++; + READNUM (s, db->ranges[0][RANGE_END]); + } + else + db->ranges[0][RANGE_END] = db->ranges[0][RANGE_START]; + + /* Get the letter */ + SKIPWHITE (s); + switch (*s) + { + case 'a': + type = ADD; + break; + case 'c': + type = CHANGE; + break; + case 'd': + type = DELETE; + break; + default: + return ERROR; /* Bad format */ + } + s++; /* Past letter */ + + /* Read second set of digits */ + SKIPWHITE (s); + READNUM (s, db->ranges[1][RANGE_START]); + + /* Was that the only digit? */ + SKIPWHITE (s); + if (*s == ',') + { + /* Get the next digit */ + s++; + READNUM (s, db->ranges[1][RANGE_END]); + SKIPWHITE (s); /* To move to end */ + } + else + db->ranges[1][RANGE_END] = db->ranges[1][RANGE_START]; + + *string = s; + return type; +} + +static char * +read_diff (char const *filea, + char const *fileb, + char **output_placement) +{ + char *diff_result; + size_t current_chunk_size, total; + int fd, wstatus; + int werrno = 0; + struct stat pipestat; + +#if HAVE_WORKING_FORK || HAVE_WORKING_VFORK + + char const *argv[8]; + char const **ap; + int fds[2]; + pid_t pid; + + ap = argv; + *ap++ = diff_program; + if (text) + *ap++ = "-a"; + *ap++ = "--horizon-lines=100"; + *ap++ = "--"; + *ap++ = filea; + *ap++ = fileb; + *ap = 0; + + if (pipe (fds) != 0) + perror_with_exit ("pipe"); + + pid = vfork (); + if (pid == 0) + { + /* Child */ + close (fds[0]); + if (fds[1] != STDOUT_FILENO) + { + dup2 (fds[1], STDOUT_FILENO); + close (fds[1]); + } + + /* The cast to (char **) is needed for portability to older + hosts with a nonstandard prototype for execvp. */ + execvp (diff_program, (char **) argv); + + _exit (errno == ENOEXEC ? 126 : 127); + } + + if (pid == -1) + perror_with_exit ("fork"); + + close (fds[1]); /* Prevent erroneous lack of EOF */ + fd = fds[0]; + +#else + + FILE *fpipe; + char const args[] = " -a --horizon-lines=100 -- "; + char *command = xmalloc (quote_system_arg (0, diff_program) + + sizeof args - 1 + + quote_system_arg (0, filea) + 1 + + quote_system_arg (0, fileb) + 1); + char *p = command; + p += quote_system_arg (p, diff_program); + strcpy (p, args + (text ? 0 : 3)); + p += strlen (p); + p += quote_system_arg (p, filea); + *p++ = ' '; + p += quote_system_arg (p, fileb); + *p = 0; + errno = 0; + fpipe = popen (command, "r"); + if (!fpipe) + perror_with_exit (command); + free (command); + fd = fileno (fpipe); + +#endif + + if (fstat (fd, &pipestat) != 0) + perror_with_exit ("fstat"); + current_chunk_size = MAX (1, STAT_BLOCKSIZE (pipestat)); + diff_result = xmalloc (current_chunk_size); + total = 0; + + for (;;) + { + size_t bytes_to_read = current_chunk_size - total; + size_t bytes = block_read (fd, diff_result + total, bytes_to_read); + total += bytes; + if (bytes != bytes_to_read) + { + if (bytes == SIZE_MAX) + perror_with_exit (_("read failed")); + break; + } + if (PTRDIFF_MAX / 2 <= current_chunk_size) + xalloc_die (); + current_chunk_size *= 2; + diff_result = xrealloc (diff_result, current_chunk_size); + } + + if (total != 0 && diff_result[total-1] != '\n') + fatal ("invalid diff format; incomplete last line"); + + *output_placement = diff_result; + +#if ! (HAVE_WORKING_FORK || HAVE_WORKING_VFORK) + + wstatus = pclose (fpipe); + if (wstatus == -1) + werrno = errno; + +#else + + if (close (fd) != 0) + perror_with_exit ("close"); + if (waitpid (pid, &wstatus, 0) < 0) + perror_with_exit ("waitpid"); + +#endif + + if (! werrno && WIFEXITED (wstatus)) + switch (WEXITSTATUS (wstatus)) + { + case 126: + error (EXIT_TROUBLE, 0, _("subsidiary program `%s' not executable"), + diff_program); + case 127: + error (EXIT_TROUBLE, 0, _("subsidiary program `%s' not found"), + diff_program); + } + if (werrno || ! (WIFEXITED (wstatus) && WEXITSTATUS (wstatus) < 2)) + error (EXIT_TROUBLE, werrno, _("subsidiary program `%s' failed"), + diff_program); + + return diff_result + total; +} + + +/* + * Scan a regular diff line (consisting of > or <, followed by a + * space, followed by text (including nulls) up to a newline. + * + * This next routine began life as a macro and many parameters in it + * are used as call-by-reference values. + */ +static char * +scan_diff_line (char *scan_ptr, char **set_start, size_t *set_length, + char *limit, char leadingchar) +{ + char *line_ptr; + + if (!(scan_ptr[0] == leadingchar + && scan_ptr[1] == ' ')) + fatal ("invalid diff format; incorrect leading line chars"); + + *set_start = line_ptr = scan_ptr + 2; + while (*line_ptr++ != '\n') + continue; + + /* Include newline if the original line ended in a newline, + or if an edit script is being generated. + Copy any missing newline message to stderr if an edit script is being + generated, because edit scripts cannot handle missing newlines. + Return the beginning of the next line. */ + *set_length = line_ptr - *set_start; + if (line_ptr < limit && *line_ptr == '\\') + { + if (edscript) + fprintf (stderr, "%s:", program_name); + else + --*set_length; + line_ptr++; + do + { + if (edscript) + putc (*line_ptr, stderr); + } + while (*line_ptr++ != '\n'); + } + + return line_ptr; +} + +/* + * This routine outputs a three way diff passed as a list of + * diff3_block's. + * The argument MAPPING is indexed by external file number (in the + * argument list) and contains the internal file number (from the + * diff passed). This is important because the user expects his + * outputs in terms of the argument list number, and the diff passed + * may have been done slightly differently (if the last argument + * was "-", for example). + * REV_MAPPING is the inverse of MAPPING. + */ +static void +output_diff3 (FILE *outputfile, struct diff3_block *diff, + int const mapping[3], int const rev_mapping[3]) +{ + int i; + int oddoneout; + char *cp; + struct diff3_block *ptr; + lin line; + size_t length; + int dontprint; + static int skew_increment[3] = { 2, 3, 1 }; /* 0==>2==>1==>3 */ + char const *line_prefix = initial_tab ? "\t" : " "; + + for (ptr = diff; ptr; ptr = D_NEXT (ptr)) + { + char x[2]; + + switch (ptr->correspond) + { + case DIFF_ALL: + x[0] = 0; + dontprint = 3; /* Print them all */ + oddoneout = 3; /* Nobody's odder than anyone else */ + break; + case DIFF_1ST: + case DIFF_2ND: + case DIFF_3RD: + oddoneout = rev_mapping[ptr->correspond - DIFF_1ST]; + + x[0] = oddoneout + '1'; + x[1] = 0; + dontprint = oddoneout == 0; + break; + default: + fatal ("internal error: invalid diff type passed to output"); + } + fprintf (outputfile, "====%s\n", x); + + /* Go 0, 2, 1 if the first and third outputs are equivalent. */ + for (i = 0; i < 3; + i = (oddoneout == 1 ? skew_increment[i] : i + 1)) + { + int realfile = mapping[i]; + lin lowt = D_LOWLINE (ptr, realfile); + lin hight = D_HIGHLINE (ptr, realfile); + long llowt = lowt; + long lhight = hight; + + fprintf (outputfile, "%d:", i + 1); + switch (lowt - hight) + { + case 1: + fprintf (outputfile, "%lda\n", llowt - 1); + break; + case 0: + fprintf (outputfile, "%ldc\n", llowt); + break; + default: + fprintf (outputfile, "%ld,%ldc\n", llowt, lhight); + break; + } + + if (i == dontprint) continue; + + if (lowt <= hight) + { + line = 0; + do + { + fprintf (outputfile, line_prefix); + cp = D_RELNUM (ptr, realfile, line); + length = D_RELLEN (ptr, realfile, line); + fwrite (cp, sizeof (char), length, outputfile); + } + while (++line < hight - lowt + 1); + if (cp[length - 1] != '\n') + fprintf (outputfile, "\n\\ %s\n", + _("No newline at end of file")); + } + } + } +} + + +/* + * Output to OUTPUTFILE the lines of B taken from FILENUM. + * Double any initial '.'s; yield nonzero if any initial '.'s were doubled. + */ +static bool +dotlines (FILE *outputfile, struct diff3_block *b, int filenum) +{ + lin i; + bool leading_dot = 0; + + for (i = 0; + i < D_NUMLINES (b, filenum); + i++) + { + char *line = D_RELNUM (b, filenum, i); + if (line[0] == '.') + { + leading_dot = 1; + fprintf (outputfile, "."); + } + fwrite (line, sizeof (char), + D_RELLEN (b, filenum, i), outputfile); + } + + return leading_dot; +} + +/* + * Output to OUTPUTFILE a '.' line. If LEADING_DOT is nonzero, + * also output a command that removes initial '.'s + * starting with line START and continuing for NUM lines. + * (START is long, not lin, for convenience with printf %ld formats.) + */ +static void +undotlines (FILE *outputfile, bool leading_dot, long start, lin num) +{ + fprintf (outputfile, ".\n"); + if (leading_dot) + { + if (num == 1) + fprintf (outputfile, "%lds/^\\.//\n", start); + else + fprintf (outputfile, "%ld,%lds/^\\.//\n", start, start + num - 1); + } +} + +/* + * This routine outputs a diff3 set of blocks as an ed script. This + * script applies the changes between file's 2 & 3 to file 1. It + * takes the precise format of the ed script to be output from global + * variables set during options processing. Note that it does + * destructive things to the set of diff3 blocks it is passed; it + * reverses their order (this gets around the problems involved with + * changing line numbers in an ed script). + * + * Note that this routine has the same problem of mapping as the last + * one did; the variable MAPPING maps from file number according to + * the argument list to file number according to the diff passed. All + * files listed below are in terms of the argument list. + * REV_MAPPING is the inverse of MAPPING. + * + * The arguments FILE0, FILE1 and FILE2 are the strings to print + * as the names of the three files. These may be the actual names, + * or may be the arguments specified with -L. + * + * Returns 1 if conflicts were found. + */ + +static bool +output_diff3_edscript (FILE *outputfile, struct diff3_block *diff, + int const mapping[3], int const rev_mapping[3], + char const *file0, char const *file1, char const *file2) +{ + bool leading_dot; + bool conflicts_found = 0, conflict; + struct diff3_block *b; + + for (b = reverse_diff3_blocklist (diff); b; b = b->next) + { + /* Must do mapping correctly. */ + enum diff_type type + = (b->correspond == DIFF_ALL + ? DIFF_ALL + : DIFF_1ST + rev_mapping[b->correspond - DIFF_1ST]); + + long low0, high0; + + /* If we aren't supposed to do this output block, skip it. */ + switch (type) + { + default: continue; + case DIFF_2ND: if (!show_2nd) continue; conflict = 1; break; + case DIFF_3RD: if (overlap_only) continue; conflict = 0; break; + case DIFF_ALL: if (simple_only) continue; conflict = flagging; break; + } + + low0 = D_LOWLINE (b, mapping[FILE0]); + high0 = D_HIGHLINE (b, mapping[FILE0]); + + if (conflict) + { + conflicts_found = 1; + + + /* Mark end of conflict. */ + + fprintf (outputfile, "%lda\n", high0); + leading_dot = 0; + if (type == DIFF_ALL) + { + if (show_2nd) + { + /* Append lines from FILE1. */ + fprintf (outputfile, "||||||| %s\n", file1); + leading_dot = dotlines (outputfile, b, mapping[FILE1]); + } + /* Append lines from FILE2. */ + fprintf (outputfile, "=======\n"); + leading_dot |= dotlines (outputfile, b, mapping[FILE2]); + } + fprintf (outputfile, ">>>>>>> %s\n", file2); + undotlines (outputfile, leading_dot, high0 + 2, + (D_NUMLINES (b, mapping[FILE1]) + + D_NUMLINES (b, mapping[FILE2]) + 1)); + + + /* Mark start of conflict. */ + + fprintf (outputfile, "%lda\n<<<<<<< %s\n", low0 - 1, + type == DIFF_ALL ? file0 : file1); + leading_dot = 0; + if (type == DIFF_2ND) + { + /* Prepend lines from FILE1. */ + leading_dot = dotlines (outputfile, b, mapping[FILE1]); + fprintf (outputfile, "=======\n"); + } + undotlines (outputfile, leading_dot, low0 + 1, + D_NUMLINES (b, mapping[FILE1])); + } + else if (D_NUMLINES (b, mapping[FILE2]) == 0) + /* Write out a delete */ + { + if (low0 == high0) + fprintf (outputfile, "%ldd\n", low0); + else + fprintf (outputfile, "%ld,%ldd\n", low0, high0); + } + else + /* Write out an add or change */ + { + switch (high0 - low0) + { + case -1: + fprintf (outputfile, "%lda\n", high0); + break; + case 0: + fprintf (outputfile, "%ldc\n", high0); + break; + default: + fprintf (outputfile, "%ld,%ldc\n", low0, high0); + break; + } + + undotlines (outputfile, dotlines (outputfile, b, mapping[FILE2]), + low0, D_NUMLINES (b, mapping[FILE2])); + } + } + if (finalwrite) fprintf (outputfile, "w\nq\n"); + return conflicts_found; +} + +/* + * Read from INFILE and output to OUTPUTFILE a set of diff3_ blocks DIFF + * as a merged file. This acts like 'ed file0 <[output_diff3_edscript]', + * except that it works even for binary data or incomplete lines. + * + * As before, MAPPING maps from arg list file number to diff file number, + * REV_MAPPING is its inverse, + * and FILE0, FILE1, and FILE2 are the names of the files. + * + * Returns 1 if conflicts were found. + */ + +static bool +output_diff3_merge (FILE *infile, FILE *outputfile, struct diff3_block *diff, + int const mapping[3], int const rev_mapping[3], + char const *file0, char const *file1, char const *file2) +{ + int c; + lin i; + bool conflicts_found = 0, conflict; + struct diff3_block *b; + lin linesread = 0; + + for (b = diff; b; b = b->next) + { + /* Must do mapping correctly. */ + enum diff_type type + = ((b->correspond == DIFF_ALL) + ? DIFF_ALL + : DIFF_1ST + rev_mapping[b->correspond - DIFF_1ST]); + char const *format_2nd = "<<<<<<< %s\n"; + + /* If we aren't supposed to do this output block, skip it. */ + switch (type) + { + default: continue; + case DIFF_2ND: if (!show_2nd) continue; conflict = 1; break; + case DIFF_3RD: if (overlap_only) continue; conflict = 0; break; + case DIFF_ALL: if (simple_only) continue; conflict = flagging; + format_2nd = "||||||| %s\n"; + break; + } + + /* Copy I lines from file 0. */ + i = D_LOWLINE (b, FILE0) - linesread - 1; + linesread += i; + while (0 <= --i) + do + { + c = getc (infile); + if (c == EOF) + { + if (ferror (infile)) + perror_with_exit (_("read failed")); + else if (feof (infile)) + fatal ("input file shrank"); + } + putc (c, outputfile); + } + while (c != '\n'); + + if (conflict) + { + conflicts_found = 1; + + if (type == DIFF_ALL) + { + /* Put in lines from FILE0 with bracket. */ + fprintf (outputfile, "<<<<<<< %s\n", file0); + for (i = 0; + i < D_NUMLINES (b, mapping[FILE0]); + i++) + fwrite (D_RELNUM (b, mapping[FILE0], i), sizeof (char), + D_RELLEN (b, mapping[FILE0], i), outputfile); + } + + if (show_2nd) + { + /* Put in lines from FILE1 with bracket. */ + fprintf (outputfile, format_2nd, file1); + for (i = 0; + i < D_NUMLINES (b, mapping[FILE1]); + i++) + fwrite (D_RELNUM (b, mapping[FILE1], i), sizeof (char), + D_RELLEN (b, mapping[FILE1], i), outputfile); + } + + fprintf (outputfile, "=======\n"); + } + + /* Put in lines from FILE2. */ + for (i = 0; + i < D_NUMLINES (b, mapping[FILE2]); + i++) + fwrite (D_RELNUM (b, mapping[FILE2], i), sizeof (char), + D_RELLEN (b, mapping[FILE2], i), outputfile); + + if (conflict) + fprintf (outputfile, ">>>>>>> %s\n", file2); + + /* Skip I lines in file 0. */ + i = D_NUMLINES (b, FILE0); + linesread += i; + while (0 <= --i) + while ((c = getc (infile)) != '\n') + if (c == EOF) + { + if (ferror (infile)) + perror_with_exit (_("read failed")); + else if (feof (infile)) + { + if (i || b->next) + fatal ("input file shrank"); + return conflicts_found; + } + } + } + /* Copy rest of common file. */ + while ((c = getc (infile)) != EOF || !(ferror (infile) | feof (infile))) + putc (c, outputfile); + return conflicts_found; +} + +/* + * Reverse the order of the list of diff3 blocks. + */ +static struct diff3_block * +reverse_diff3_blocklist (struct diff3_block *diff) +{ + register struct diff3_block *tmp, *next, *prev; + + for (tmp = diff, prev = 0; tmp; tmp = next) + { + next = tmp->next; + tmp->next = prev; + prev = tmp; + } + + return prev; +} + +static void +fatal (char const *msgid) +{ + error (EXIT_TROUBLE, 0, "%s", _(msgid)); + abort (); +} + +static void +perror_with_exit (char const *string) +{ + error (EXIT_TROUBLE, errno, "%s", string); + abort (); +} diff --git a/src/apps/bin/diffutils-2.8.1/src/dir.c b/src/apps/bin/diffutils-2.8.1/src/dir.c new file mode 100644 index 0000000000..8cc82e6188 --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/src/dir.c @@ -0,0 +1,289 @@ +/* Read, sort and compare two directories. Used for GNU DIFF. + + Copyright (C) 1988, 1989, 1992, 1993, 1994, 1995, 1998, 2001, 2002 + Free Software Foundation, Inc. + + This file is part of GNU DIFF. + + GNU DIFF 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. + + GNU DIFF is distributed in the hope that 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; see the file COPYING. + If not, write to the Free Software Foundation, + 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + +#include "diff.h" +#include +#include +#include +#include + +/* Read the directory named by DIR and store into DIRDATA a sorted vector + of filenames for its contents. DIR->desc == -1 means this directory is + known to be nonexistent, so set DIRDATA to an empty vector. + Return -1 (setting errno) if error, 0 otherwise. */ + +struct dirdata +{ + size_t nnames; /* Number of names. */ + char const **names; /* Sorted names of files in dir, followed by 0. */ + char *data; /* Allocated storage for file names. */ +}; + +/* Whether file names in directories should be compared with strcoll. */ +static bool locale_specific_sorting; + +/* Where to go if strcoll fails. */ +static jmp_buf failed_strcoll; + +static bool dir_loop (struct comparison const *, int); +static int compare_names_for_qsort (void const *, void const *); + + +/* Read a directory and get its vector of names. */ + +static bool +dir_read (struct file_data const *dir, struct dirdata *dirdata) +{ + register struct dirent *next; + register size_t i; + + /* Address of block containing the files that are described. */ + char const **names; + + /* Number of files in directory. */ + size_t nnames; + + /* Allocated and used storage for file name data. */ + char *data; + size_t data_alloc, data_used; + + dirdata->names = 0; + dirdata->data = 0; + nnames = 0; + data = 0; + + if (dir->desc != -1) + { + /* Open the directory and check for errors. */ + register DIR *reading = opendir (dir->name); + if (!reading) + return 0; + + /* Initialize the table of filenames. */ + + data_alloc = 512; + data_used = 0; + dirdata->data = data = xmalloc (data_alloc); + + /* Read the directory entries, and insert the subfiles + into the `data' table. */ + + while ((errno = 0, (next = readdir (reading)) != 0)) + { + char *d_name = next->d_name; + size_t d_size = NAMLEN (next) + 1; + + /* Ignore "." and "..". */ + if (d_name[0] == '.' + && (d_name[1] == 0 || (d_name[1] == '.' && d_name[2] == 0))) + continue; + + if (excluded_filename (excluded, d_name)) + continue; + + while (data_alloc < data_used + d_size) + { + if (PTRDIFF_MAX / 2 <= data_alloc) + xalloc_die (); + dirdata->data = data = xrealloc (data, data_alloc *= 2); + } + + memcpy (data + data_used, d_name, d_size); + data_used += d_size; + nnames++; + } + if (errno) + { + int e = errno; + closedir (reading); + errno = e; + return 0; + } +#if CLOSEDIR_VOID + closedir (reading); +#else + if (closedir (reading) != 0) + return 0; +#endif + } + + /* Create the `names' table from the `data' table. */ + if (PTRDIFF_MAX / sizeof *names - 1 <= nnames) + xalloc_die (); + dirdata->names = names = xmalloc ((nnames + 1) * sizeof *names); + dirdata->nnames = nnames; + for (i = 0; i < nnames; i++) + { + names[i] = data; + data += strlen (data) + 1; + } + names[nnames] = 0; + return 1; +} + +/* Compare file names, returning a value compatible with strcmp. */ + +static int +compare_names (char const *name1, char const *name2) +{ + if (ignore_file_name_case) + { + int r = strcasecmp (name1, name2); + if (r) + return r; + } + + if (locale_specific_sorting) + { + int r; + errno = 0; + r = strcoll (name1, name2); + if (errno) + { + error (0, errno, _("cannot compare file names `%s' and `%s'"), + name1, name2); + longjmp (failed_strcoll, 1); + } + if (r) + return r; + } + + return file_name_cmp (name1, name2); +} + +/* A wrapper for compare_names suitable as an argument for qsort. */ + +static int +compare_names_for_qsort (void const *file1, void const *file2) +{ + char const *const *f1 = file1; + char const *const *f2 = file2; + return compare_names (*f1, *f2); +} + +/* Compare the contents of two directories named in CMP. + This is a top-level routine; it does everything necessary for diff + on two directories. + + CMP->file[0].desc == -1 says directory CMP->file[0] doesn't exist, + but pretend it is empty. Likewise for CMP->file[1]. + + HANDLE_FILE is a caller-provided subroutine called to handle each file. + It gets three operands: CMP, name of file in dir 0, name of file in dir 1. + These names are relative to the original working directory. + + For a file that appears in only one of the dirs, one of the name-args + to HANDLE_FILE is zero. + + Returns the maximum of all the values returned by HANDLE_FILE, + or EXIT_TROUBLE if trouble is encountered in opening files. */ + +int +diff_dirs (struct comparison const *cmp, + int (*handle_file) (struct comparison const *, + char const *, char const *)) +{ + struct dirdata dirdata[2]; + int volatile val = EXIT_SUCCESS; + int i; + + if ((cmp->file[0].desc == -1 || dir_loop (cmp, 0)) + && (cmp->file[1].desc == -1 || dir_loop (cmp, 1))) + { + error (0, 0, "%s: recursive directory loop", + cmp->file[cmp->file[0].desc == -1].name); + return EXIT_TROUBLE; + } + + /* Get contents of both dirs. */ + for (i = 0; i < 2; i++) + if (! dir_read (&cmp->file[i], &dirdata[i])) + { + perror_with_name (cmp->file[i].name); + val = EXIT_TROUBLE; + } + + if (val == EXIT_SUCCESS) + { + char const **volatile names[2]; + names[0] = dirdata[0].names; + names[1] = dirdata[1].names; + + /* Use locale-specific sorting if possible, else native byte order. */ + locale_specific_sorting = 1; + if (setjmp (failed_strcoll)) + locale_specific_sorting = 0; + + /* Sort the directories. */ + for (i = 0; i < 2; i++) + qsort (names[i], dirdata[i].nnames, sizeof *dirdata[i].names, + compare_names_for_qsort); + + /* If `-S name' was given, and this is the topmost level of comparison, + ignore all file names less than the specified starting name. */ + + if (starting_file && ! cmp->parent) + { + while (*names[0] && compare_names (*names[0], starting_file) < 0) + names[0]++; + while (*names[1] && compare_names (*names[1], starting_file) < 0) + names[1]++; + } + + /* Loop while files remain in one or both dirs. */ + while (*names[0] || *names[1]) + { + /* Compare next name in dir 0 with next name in dir 1. + At the end of a dir, + pretend the "next name" in that dir is very large. */ + int nameorder = (!*names[0] ? 1 : !*names[1] ? -1 + : compare_names (*names[0], *names[1])); + int v1 = (*handle_file) (cmp, + 0 < nameorder ? 0 : *names[0]++, + nameorder < 0 ? 0 : *names[1]++); + if (val < v1) + val = v1; + } + } + + for (i = 0; i < 2; i++) + { + if (dirdata[i].names) + free (dirdata[i].names); + if (dirdata[i].data) + free (dirdata[i].data); + } + + return val; +} + +/* Return nonzero if CMP is looping recursively in argument I. */ + +static bool +dir_loop (struct comparison const *cmp, int i) +{ + struct comparison const *p = cmp; + while ((p = p->parent)) + if (0 < same_file (&p->file[i].stat, &cmp->file[i].stat)) + return 1; + return 0; +} diff --git a/src/apps/bin/diffutils-2.8.1/src/ed.c b/src/apps/bin/diffutils-2.8.1/src/ed.c new file mode 100644 index 0000000000..5ac58a2163 --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/src/ed.c @@ -0,0 +1,169 @@ +/* Output routines for ed-script format. + + Copyright (C) 1988, 1989, 1991, 1992, 1993, 1995, 1998, 2001 Free + Software Foundation, Inc. + + This file is part of GNU DIFF. + + GNU DIFF 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. + + GNU DIFF is distributed in the hope that 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; see the file COPYING. + If not, write to the Free Software Foundation, + 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + +#include "diff.h" + +static void print_ed_hunk (struct change *); +static void print_rcs_hunk (struct change *); +static void pr_forward_ed_hunk (struct change *); + +/* Print our script as ed commands. */ + +void +print_ed_script (struct change *script) +{ + print_script (script, find_reverse_change, print_ed_hunk); +} + +/* Print a hunk of an ed diff */ + +static void +print_ed_hunk (struct change *hunk) +{ + lin f0, l0, f1, l1; + enum changes changes; + +#ifdef DEBUG + debug_script (hunk); +#endif + + /* Determine range of line numbers involved in each file. */ + changes = analyze_hunk (hunk, &f0, &l0, &f1, &l1); + if (!changes) + return; + + begin_output (); + + /* Print out the line number header for this hunk */ + print_number_range (',', &files[0], f0, l0); + fprintf (outfile, "%c\n", change_letter[changes]); + + /* Print new/changed lines from second file, if needed */ + if (changes != OLD) + { + lin i; + for (i = f1; i <= l1; i++) + { + if (files[1].linbuf[i][0] == '.' && files[1].linbuf[i][1] == '\n') + { + /* The file's line is just a dot, and it would exit + insert mode. Precede the dot with another dot, exit + insert mode, remove the extra dot, and then resume + insert mode. */ + fprintf (outfile, "..\n.\ns/.//\na\n"); + } + else + print_1_line ("", &files[1].linbuf[i]); + } + + fprintf (outfile, ".\n"); + } +} + +/* Print change script in the style of ed commands, + but print the changes in the order they appear in the input files, + which means that the commands are not truly useful with ed. */ + +void +pr_forward_ed_script (struct change *script) +{ + print_script (script, find_change, pr_forward_ed_hunk); +} + +static void +pr_forward_ed_hunk (struct change *hunk) +{ + lin i, f0, l0, f1, l1; + + /* Determine range of line numbers involved in each file. */ + enum changes changes = analyze_hunk (hunk, &f0, &l0, &f1, &l1); + if (!changes) + return; + + begin_output (); + + fprintf (outfile, "%c", change_letter[changes]); + print_number_range (' ', files, f0, l0); + fprintf (outfile, "\n"); + + /* If deletion only, print just the number range. */ + + if (changes == OLD) + return; + + /* For insertion (with or without deletion), print the number range + and the lines from file 2. */ + + for (i = f1; i <= l1; i++) + print_1_line ("", &files[1].linbuf[i]); + + fprintf (outfile, ".\n"); +} + +/* Print in a format somewhat like ed commands + except that each insert command states the number of lines it inserts. + This format is used for RCS. */ + +void +print_rcs_script (struct change *script) +{ + print_script (script, find_change, print_rcs_hunk); +} + +/* Print a hunk of an RCS diff */ + +static void +print_rcs_hunk (struct change *hunk) +{ + lin i, f0, l0, f1, l1; + long tf0, tl0, tf1, tl1; + + /* Determine range of line numbers involved in each file. */ + enum changes changes = analyze_hunk (hunk, &f0, &l0, &f1, &l1); + if (!changes) + return; + + begin_output (); + + translate_range (&files[0], f0, l0, &tf0, &tl0); + + if (changes & OLD) + { + fprintf (outfile, "d"); + /* For deletion, print just the starting line number from file 0 + and the number of lines deleted. */ + fprintf (outfile, "%ld %ld\n", tf0, tf0 <= tl0 ? tl0 - tf0 + 1 : 1); + } + + if (changes & NEW) + { + fprintf (outfile, "a"); + + /* Take last-line-number from file 0 and # lines from file 1. */ + translate_range (&files[1], f1, l1, &tf1, &tl1); + fprintf (outfile, "%ld %ld\n", tl0, tf1 <= tl1 ? tl1 - tf1 + 1 : 1); + + /* Print the inserted lines. */ + for (i = f1; i <= l1; i++) + print_1_line ("", &files[1].linbuf[i]); + } +} diff --git a/src/apps/bin/diffutils-2.8.1/src/ifdef.c b/src/apps/bin/diffutils-2.8.1/src/ifdef.c new file mode 100644 index 0000000000..69c2cf8e99 --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/src/ifdef.c @@ -0,0 +1,424 @@ +/* #ifdef-format output routines for GNU DIFF. + + Copyright (C) 1989, 1991, 1992, 1993, 1994, 2001, 2002 Free + Software Foundation, Inc. + + This file is part of GNU DIFF. + + GNU DIFF 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 DIFF General Public + License for full details. + + Everyone is granted permission to copy, modify and redistribute + GNU DIFF, but only under the conditions described in the + GNU DIFF General Public License. A copy of this license is + supposed to have been given to you along with GNU DIFF so you + can know your rights and responsibilities. It should be in a + file named COPYING. Among other things, the copyright notice + and this notice must be preserved on all copies. */ + +#include "diff.h" + +#include + +struct group +{ + struct file_data const *file; + lin from, upto; /* start and limit lines for this group of lines */ +}; + +static char const *format_group (FILE *, char const *, char, + struct group const *); +static char const *do_printf_spec (FILE *, char const *, + struct file_data const *, lin, + struct group const *); +static char const *scan_char_literal (char const *, char *); +static lin groups_letter_value (struct group const *, char); +static void format_ifdef (char const *, lin, lin, lin, lin); +static void print_ifdef_hunk (struct change *); +static void print_ifdef_lines (FILE *, char const *, struct group const *); + +static lin next_line; + +/* Print the edit-script SCRIPT as a merged #ifdef file. */ + +void +print_ifdef_script (struct change *script) +{ + next_line = - files[0].prefix_lines; + print_script (script, find_change, print_ifdef_hunk); + if (next_line < files[0].valid_lines) + { + begin_output (); + format_ifdef (group_format[UNCHANGED], next_line, files[0].valid_lines, + next_line - files[0].valid_lines + files[1].valid_lines, + files[1].valid_lines); + } +} + +/* Print a hunk of an ifdef diff. + This is a contiguous portion of a complete edit script, + describing changes in consecutive lines. */ + +static void +print_ifdef_hunk (struct change *hunk) +{ + lin first0, last0, first1, last1; + + /* Determine range of line numbers involved in each file. */ + enum changes changes = analyze_hunk (hunk, &first0, &last0, &first1, &last1); + if (!changes) + return; + + begin_output (); + + /* Print lines up to this change. */ + if (next_line < first0) + format_ifdef (group_format[UNCHANGED], next_line, first0, + next_line - first0 + first1, first1); + + /* Print this change. */ + next_line = last0 + 1; + format_ifdef (group_format[changes], first0, next_line, first1, last1 + 1); +} + +/* Print a set of lines according to FORMAT. + Lines BEG0 up to END0 are from the first file; + lines BEG1 up to END1 are from the second file. */ + +static void +format_ifdef (char const *format, lin beg0, lin end0, lin beg1, lin end1) +{ + struct group groups[2]; + + groups[0].file = &files[0]; + groups[0].from = beg0; + groups[0].upto = end0; + groups[1].file = &files[1]; + groups[1].from = beg1; + groups[1].upto = end1; + format_group (outfile, format, 0, groups); +} + +/* Print to file OUT a set of lines according to FORMAT. + The format ends at the first free instance of ENDCHAR. + Yield the address of the terminating character. + GROUPS specifies which lines to print. + If OUT is zero, do not actually print anything; just scan the format. */ + +static char const * +format_group (register FILE *out, char const *format, char endchar, + struct group const *groups) +{ + register char c; + register char const *f = format; + + while ((c = *f) != endchar && c != 0) + { + char const *f1 = ++f; + if (c == '%') + switch ((c = *f++)) + { + case '%': + break; + + case '(': + /* Print if-then-else format e.g. `%(n=1?thenpart:elsepart)'. */ + { + int i; + uintmax_t value[2]; + FILE *thenout, *elseout; + + for (i = 0; i < 2; i++) + { + if (ISDIGIT (*f)) + { + char *fend; + errno = 0; + value[i] = strtoumax (f, &fend, 10); + if (errno) + goto bad_format; + f = fend; + } + else + { + value[i] = groups_letter_value (groups, *f); + if (value[i] == -1) + goto bad_format; + f++; + } + if (*f++ != "=?"[i]) + goto bad_format; + } + if (value[0] == value[1]) + thenout = out, elseout = 0; + else + thenout = 0, elseout = out; + f = format_group (thenout, f, ':', groups); + if (*f) + { + f = format_group (elseout, f + 1, ')', groups); + if (*f) + f++; + } + } + continue; + + case '<': + /* Print lines deleted from first file. */ + print_ifdef_lines (out, line_format[OLD], &groups[0]); + continue; + + case '=': + /* Print common lines. */ + print_ifdef_lines (out, line_format[UNCHANGED], &groups[0]); + continue; + + case '>': + /* Print lines inserted from second file. */ + print_ifdef_lines (out, line_format[NEW], &groups[1]); + continue; + + default: + f = do_printf_spec (out, f - 2, 0, 0, groups); + if (f) + continue; + /* Fall through. */ + bad_format: + c = '%'; + f = f1; + break; + } + + if (out) + putc (c, out); + } + + return f; +} + +/* For the line group pair G, return the number corresponding to LETTER. + Return -1 if LETTER is not a group format letter. */ +static lin +groups_letter_value (struct group const *g, char letter) +{ + switch (letter) + { + case 'E': letter = 'e'; g++; break; + case 'F': letter = 'f'; g++; break; + case 'L': letter = 'l'; g++; break; + case 'M': letter = 'm'; g++; break; + case 'N': letter = 'n'; g++; break; + } + + switch (letter) + { + case 'e': return translate_line_number (g->file, g->from) - 1; + case 'f': return translate_line_number (g->file, g->from); + case 'l': return translate_line_number (g->file, g->upto) - 1; + case 'm': return translate_line_number (g->file, g->upto); + case 'n': return g->upto - g->from; + default: return -1; + } +} + +/* Print to file OUT, using FORMAT to print the line group GROUP. + But do nothing if OUT is zero. */ +static void +print_ifdef_lines (register FILE *out, char const *format, + struct group const *group) +{ + struct file_data const *file = group->file; + char const * const *linbuf = file->linbuf; + lin from = group->from, upto = group->upto; + + if (!out) + return; + + /* If possible, use a single fwrite; it's faster. */ + if (!expand_tabs && format[0] == '%') + { + if (format[1] == 'l' && format[2] == '\n' && !format[3] && from < upto) + { + fwrite (linbuf[from], sizeof (char), + linbuf[upto] + (linbuf[upto][-1] != '\n') - linbuf[from], + out); + return; + } + if (format[1] == 'L' && !format[2]) + { + fwrite (linbuf[from], sizeof (char), + linbuf[upto] - linbuf[from], out); + return; + } + } + + for (; from < upto; from++) + { + register char c; + register char const *f = format; + + while ((c = *f++) != 0) + { + char const *f1 = f; + if (c == '%') + switch ((c = *f++)) + { + case '%': + break; + + case 'l': + output_1_line (linbuf[from], + (linbuf[from + 1] + - (linbuf[from + 1][-1] == '\n')), + 0, 0); + continue; + + case 'L': + output_1_line (linbuf[from], linbuf[from + 1], 0, 0); + continue; + + default: + f = do_printf_spec (out, f - 2, file, from, 0); + if (f) + continue; + c = '%'; + f = f1; + break; + } + + putc (c, out); + } + } +} + +static char const * +do_printf_spec (FILE *out, char const *spec, + struct file_data const *file, lin n, + struct group const *groups) +{ + char const *f = spec; + char c; + char c1; + + /* Scan printf-style SPEC of the form %[-'0]*[0-9]*(.[0-9]*)?[cdoxX]. */ + /* assert (*f == '%'); */ + f++; + while ((c = *f++) == '-' || c == '\'' || c == '0') + continue; + while (ISDIGIT (c)) + c = *f++; + if (c == '.') + while (ISDIGIT (c = *f++)) + continue; + c1 = *f++; + + switch (c) + { + case 'c': + if (c1 != '\'') + return 0; + else + { + char value; + f = scan_char_literal (f, &value); + if (!f) + return 0; + if (out) + putc (value, out); + } + break; + + case 'd': case 'o': case 'x': case 'X': + { + lin value; + + if (file) + { + if (c1 != 'n') + return 0; + value = translate_line_number (file, n); + } + else + { + value = groups_letter_value (groups, c1); + if (value < 0) + return 0; + } + + if (out) + { + /* For example, if the spec is "%3xn", use the printf + format spec "%3lx". Here the spec prefix is "%3". */ + long long_value = value; + size_t spec_prefix_len = f - spec - 2; +#if HAVE_C_VARARRAYS + char format[spec_prefix_len + 3]; +#else + char *format = xmalloc (spec_prefix_len + 3); +#endif + char *p = format + spec_prefix_len; + memcpy (format, spec, spec_prefix_len); + *p++ = 'l'; + *p++ = c; + *p = '\0'; + fprintf (out, format, long_value); +#if ! HAVE_C_VARARRAYS + free (format); +#endif + } + } + break; + + default: + return 0; + } + + return f; +} + +/* Scan the character literal represented in the string LIT; LIT points just + after the initial apostrophe. Put the literal's value into *VALPTR. + Yield the address of the first character after the closing apostrophe, + or zero if the literal is ill-formed. */ +static char const * +scan_char_literal (char const *lit, char *valptr) +{ + register char const *p = lit; + char value; + ptrdiff_t digits; + char c = *p++; + + switch (c) + { + case 0: + case '\'': + return 0; + + case '\\': + value = 0; + while ((c = *p++) != '\'') + { + unsigned int digit = c - '0'; + if (8 <= digit) + return 0; + value = 8 * value + digit; + } + digits = p - lit - 2; + if (! (1 <= digits && digits <= 3)) + return 0; + break; + + default: + value = c; + if (*p++ != '\'') + return 0; + break; + } + + *valptr = value; + return p; +} diff --git a/src/apps/bin/diffutils-2.8.1/src/io.c b/src/apps/bin/diffutils-2.8.1/src/io.c new file mode 100644 index 0000000000..3fee8836d6 --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/src/io.c @@ -0,0 +1,855 @@ +/* File I/O for GNU DIFF. + + Copyright (C) 1988, 1989, 1992, 1993, 1994, 1995, 1998, 2001, 2002 + Free Software Foundation, Inc. + + This file is part of GNU DIFF. + + GNU DIFF 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. + + GNU DIFF is distributed in the hope that 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; see the file COPYING. + If not, write to the Free Software Foundation, + 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + +#include "diff.h" +#include +#include +#include +#include + +/* Rotate an unsigned value to the left. */ +#define ROL(v, n) ((v) << (n) | (v) >> (sizeof (v) * CHAR_BIT - (n))) + +/* Given a hash value and a new character, return a new hash value. */ +#define HASH(h, c) ((c) + ROL (h, 7)) + +/* The type of a hash value. */ +typedef size_t hash_value; +verify (hash_value_is_unsigned, ! TYPE_SIGNED (hash_value)); + +/* Lines are put into equivalence classes of lines that match in lines_differ. + Each equivalence class is represented by one of these structures, + but only while the classes are being computed. + Afterward, each class is represented by a number. */ +struct equivclass +{ + lin next; /* Next item in this bucket. */ + hash_value hash; /* Hash of lines in this class. */ + char const *line; /* A line that fits this class. */ + size_t length; /* That line's length, not counting its newline. */ +}; + +/* Hash-table: array of buckets, each being a chain of equivalence classes. + buckets[-1] is reserved for incomplete lines. */ +static lin *buckets; + +/* Number of buckets in the hash table array, not counting buckets[-1]. */ +static size_t nbuckets; + +/* Array in which the equivalence classes are allocated. + The bucket-chains go through the elements in this array. + The number of an equivalence class is its index in this array. */ +static struct equivclass *equivs; + +/* Index of first free element in the array `equivs'. */ +static lin equivs_index; + +/* Number of elements allocated in the array `equivs'. */ +static lin equivs_alloc; + +/* Read a block of data into a file buffer, checking for EOF and error. */ + +void +file_block_read (struct file_data *current, size_t size) +{ + if (size && ! current->eof) + { + size_t s = block_read (current->desc, + FILE_BUFFER (current) + current->buffered, size); + if (s == SIZE_MAX) + pfatal_with_name (current->name); + current->buffered += s; + current->eof = s < size; + } +} + +/* Check for binary files and compare them for exact identity. */ + +/* Return 1 if BUF contains a non text character. + SIZE is the number of characters in BUF. */ + +#define binary_file_p(buf, size) (memchr (buf, 0, size) != 0) + +/* Get ready to read the current file. + Return nonzero if SKIP_TEST is zero, + and if it appears to be a binary file. */ + +static bool +sip (struct file_data *current, bool skip_test) +{ + /* If we have a nonexistent file at this stage, treat it as empty. */ + if (current->desc < 0) + { + /* Leave room for a sentinel. */ + current->bufsize = sizeof (word); + current->buffer = xmalloc (current->bufsize); + } + else + { + current->bufsize = buffer_lcm (sizeof (word), + STAT_BLOCKSIZE (current->stat), + PTRDIFF_MAX - 2 * sizeof (word)); + current->buffer = xmalloc (current->bufsize); + + if (! skip_test) + { + /* Check first part of file to see if it's a binary file. */ + + bool was_binary = set_binary_mode (current->desc, 1); + off_t buffered; + file_block_read (current, current->bufsize); + buffered = current->buffered; + + if (! was_binary) + { + /* Revert to text mode and seek back to the beginning to + reread the file. Use relative seek, since file + descriptors like stdin might not start at offset + zero. */ + + if (lseek (current->desc, - buffered, SEEK_CUR) == -1) + pfatal_with_name (current->name); + set_binary_mode (current->desc, 0); + current->buffered = 0; + current->eof = 0; + } + + return binary_file_p (current->buffer, buffered); + } + } + + current->buffered = 0; + current->eof = 0; + return 0; +} + +/* Slurp the rest of the current file completely into memory. */ + +static void +slurp (struct file_data *current) +{ + size_t cc; + + if (current->desc < 0) + { + /* The file is nonexistent. */ + return; + } + + if (S_ISREG (current->stat.st_mode)) + { + /* It's a regular file; slurp in the rest all at once. */ + + /* Get the size out of the stat block. + Allocate just enough room for appended newline plus word sentinel, + plus word-alignment since we want the buffer word-aligned. */ + size_t file_size = current->stat.st_size; + cc = file_size + 2 * sizeof (word) - file_size % sizeof (word); + if (file_size != current->stat.st_size || cc < file_size + || PTRDIFF_MAX <= cc) + xalloc_die (); + + if (current->bufsize < cc) + { + current->bufsize = cc; + current->buffer = xrealloc (current->buffer, cc); + } + + /* Try to read at least 1 more byte than the size indicates, to + detect whether the file is growing. This is a nicety for + users who run 'diff' on files while they are changing. */ + + if (current->buffered <= file_size) + { + file_block_read (current, file_size + 1 - current->buffered); + if (current->buffered <= file_size) + return; + } + } + + /* It's not a regular file, or it's a growing regular file; read it, + growing the buffer as needed. */ + + file_block_read (current, current->bufsize - current->buffered); + + if (current->buffered) + { + while (current->buffered == current->bufsize) + { + if (PTRDIFF_MAX / 2 - sizeof (word) < current->bufsize) + xalloc_die (); + current->bufsize *= 2; + current->buffer = xrealloc (current->buffer, current->bufsize); + file_block_read (current, current->bufsize - current->buffered); + } + + /* Allocate just enough room for appended newline plus word + sentinel, plus word-alignment. */ + cc = current->buffered + 2 * sizeof (word); + current->bufsize = cc - cc % sizeof (word); + current->buffer = xrealloc (current->buffer, current->bufsize); + } +} + +/* Split the file into lines, simultaneously computing the equivalence + class for each line. */ + +static void +find_and_hash_each_line (struct file_data *current) +{ + hash_value h; + unsigned char const *p = (unsigned char const *) current->prefix_end; + unsigned char c; + lin i, *bucket; + size_t length; + + /* Cache often-used quantities in local variables to help the compiler. */ + char const **linbuf = current->linbuf; + lin alloc_lines = current->alloc_lines; + lin line = 0; + lin linbuf_base = current->linbuf_base; + lin *cureqs = xmalloc (alloc_lines * sizeof *cureqs); + struct equivclass *eqs = equivs; + lin eqs_index = equivs_index; + lin eqs_alloc = equivs_alloc; + char const *suffix_begin = current->suffix_begin; + char const *bufend = FILE_BUFFER (current) + current->buffered; + bool diff_length_compare_anyway = + ignore_white_space != IGNORE_NO_WHITE_SPACE; + bool same_length_diff_contents_compare_anyway = + diff_length_compare_anyway | ignore_case; + + while ((char const *) p < suffix_begin) + { + char const *ip = (char const *) p; + + h = 0; + + /* Hash this line until we find a newline. */ + if (ignore_case) + switch (ignore_white_space) + { + case IGNORE_ALL_SPACE: + while ((c = *p++) != '\n') + if (! ISSPACE (c)) + h = HASH (h, TOLOWER (c)); + break; + + case IGNORE_SPACE_CHANGE: + while ((c = *p++) != '\n') + { + if (ISSPACE (c)) + { + do + if ((c = *p++) == '\n') + goto hashing_done; + while (ISSPACE (c)); + + h = HASH (h, ' '); + } + + /* C is now the first non-space. */ + h = HASH (h, TOLOWER (c)); + } + break; + + case IGNORE_TAB_EXPANSION: + { + size_t column = 0; + while ((c = *p++) != '\n') + { + int repetitions = 1; + + switch (c) + { + case '\b': + column -= 0 < column; + break; + + case '\t': + c = ' '; + repetitions = TAB_WIDTH - column % TAB_WIDTH; + column += repetitions; + break; + + case '\r': + column = 0; + break; + + default: + c = TOLOWER (c); + column++; + break; + } + + do + h = HASH (h, c); + while (--repetitions != 0); + } + } + break; + + default: + while ((c = *p++) != '\n') + h = HASH (h, TOLOWER (c)); + break; + } + else + switch (ignore_white_space) + { + case IGNORE_ALL_SPACE: + while ((c = *p++) != '\n') + if (! ISSPACE (c)) + h = HASH (h, c); + break; + + case IGNORE_SPACE_CHANGE: + while ((c = *p++) != '\n') + { + if (ISSPACE (c)) + { + do + if ((c = *p++) == '\n') + goto hashing_done; + while (ISSPACE (c)); + + h = HASH (h, ' '); + } + + /* C is now the first non-space. */ + h = HASH (h, c); + } + break; + + case IGNORE_TAB_EXPANSION: + { + size_t column = 0; + while ((c = *p++) != '\n') + { + int repetitions = 1; + + switch (c) + { + case '\b': + column -= 0 < column; + break; + + case '\t': + c = ' '; + repetitions = TAB_WIDTH - column % TAB_WIDTH; + column += repetitions; + break; + + case '\r': + column = 0; + break; + + default: + column++; + break; + } + + do + h = HASH (h, c); + while (--repetitions != 0); + } + } + break; + + default: + while ((c = *p++) != '\n') + h = HASH (h, c); + break; + } + + hashing_done:; + + bucket = &buckets[h % nbuckets]; + length = (char const *) p - ip - 1; + + if ((char const *) p == bufend + && current->missing_newline + && ROBUST_OUTPUT_STYLE (output_style)) + { + /* This line is incomplete. If this is significant, + put the line into buckets[-1]. */ + if (ignore_white_space < IGNORE_SPACE_CHANGE) + bucket = &buckets[-1]; + + /* Omit the inserted newline when computing linbuf later. */ + p--; + bufend = suffix_begin = (char const *) p; + } + + for (i = *bucket; ; i = eqs[i].next) + if (!i) + { + /* Create a new equivalence class in this bucket. */ + i = eqs_index++; + if (i == eqs_alloc) + { + if (PTRDIFF_MAX / (2 * sizeof *eqs) <= eqs_alloc) + xalloc_die (); + eqs_alloc *= 2; + eqs = xrealloc (eqs, eqs_alloc * sizeof *eqs); + } + eqs[i].next = *bucket; + eqs[i].hash = h; + eqs[i].line = ip; + eqs[i].length = length; + *bucket = i; + break; + } + else if (eqs[i].hash == h) + { + char const *eqline = eqs[i].line; + + /* Reuse existing class if lines_differ reports the lines + equal. */ + if (eqs[i].length == length) + { + /* Reuse existing equivalence class if the lines are identical. + This detects the common case of exact identity + faster than lines_differ would. */ + if (memcmp (eqline, ip, length) == 0) + break; + if (!same_length_diff_contents_compare_anyway) + continue; + } + else if (!diff_length_compare_anyway) + continue; + + if (! lines_differ (eqline, ip)) + break; + } + + /* Maybe increase the size of the line table. */ + if (line == alloc_lines) + { + /* Double (alloc_lines - linbuf_base) by adding to alloc_lines. */ + if (PTRDIFF_MAX / 3 <= alloc_lines + || PTRDIFF_MAX / sizeof *cureqs <= 2 * alloc_lines - linbuf_base + || PTRDIFF_MAX / sizeof *linbuf <= alloc_lines - linbuf_base) + xalloc_die (); + alloc_lines = 2 * alloc_lines - linbuf_base; + cureqs = xrealloc (cureqs, alloc_lines * sizeof *cureqs); + linbuf += linbuf_base; + linbuf = xrealloc (linbuf, + (alloc_lines - linbuf_base) * sizeof *linbuf); + linbuf -= linbuf_base; + } + linbuf[line] = ip; + cureqs[line] = i; + ++line; + } + + current->buffered_lines = line; + + for (i = 0; ; i++) + { + /* Record the line start for lines in the suffix that we care about. + Record one more line start than lines, + so that we can compute the length of any buffered line. */ + if (line == alloc_lines) + { + /* Double (alloc_lines - linbuf_base) by adding to alloc_lines. */ + if (PTRDIFF_MAX / 3 <= alloc_lines + || PTRDIFF_MAX / sizeof *cureqs <= 2 * alloc_lines - linbuf_base + || PTRDIFF_MAX / sizeof *linbuf <= alloc_lines - linbuf_base) + xalloc_die (); + alloc_lines = 2 * alloc_lines - linbuf_base; + linbuf += linbuf_base; + linbuf = xrealloc (linbuf, + (alloc_lines - linbuf_base) * sizeof *linbuf); + linbuf -= linbuf_base; + } + linbuf[line] = (char const *) p; + + if ((char const *) p == bufend) + break; + + if (context <= i && no_diff_means_no_output) + break; + + line++; + + while (*p++ != '\n') + continue; + } + + /* Done with cache in local variables. */ + current->linbuf = linbuf; + current->valid_lines = line; + current->alloc_lines = alloc_lines; + current->equivs = cureqs; + equivs = eqs; + equivs_alloc = eqs_alloc; + equivs_index = eqs_index; +} + +/* Prepare the text. Make sure the text end is initialized. + Make sure text ends in a newline, + but remember that we had to add one. + Strip trailing CRs, if that was requested. */ + +static void +prepare_text (struct file_data *current) +{ + size_t buffered = current->buffered; + char *p = FILE_BUFFER (current); + char *dst; + + if (buffered == 0 || p[buffered - 1] == '\n') + current->missing_newline = 0; + else + { + p[buffered++] = '\n'; + current->missing_newline = 1; + } + + if (!p) + return; + + /* Don't use uninitialized storage when planting or using sentinels. */ + memset (p + buffered, 0, sizeof (word)); + + if (strip_trailing_cr && (dst = memchr (p, '\r', buffered))) + { + char const *src = dst; + char const *srclim = p + buffered; + + do + dst += ! ((*dst = *src++) == '\r' && *src == '\n'); + while (src < srclim); + + buffered -= src - dst; + } + + current->buffered = buffered; +} + +/* We have found N lines in a buffer of size S; guess the + proportionate number of lines that will be found in a buffer of + size T. However, do not guess a number of lines so large that the + resulting line table might cause overflow in size calculations. */ +static lin +guess_lines (lin n, size_t s, size_t t) +{ + size_t guessed_bytes_per_line = n < 10 ? 32 : s / (n - 1); + lin guessed_lines = MAX (1, t / guessed_bytes_per_line); + return MIN (guessed_lines, PTRDIFF_MAX / (2 * sizeof (char *) + 1) - 5) + 5; +} + +/* Given a vector of two file_data objects, find the identical + prefixes and suffixes of each object. */ + +static void +find_identical_ends (struct file_data filevec[]) +{ + word *w0, *w1; + char *p0, *p1, *buffer0, *buffer1; + char const *end0, *beg0; + char const **linbuf0, **linbuf1; + lin i, lines; + size_t n0, n1; + lin alloc_lines0, alloc_lines1; + lin buffered_prefix, prefix_count, prefix_mask; + lin middle_guess, suffix_guess; + + slurp (&filevec[0]); + prepare_text (&filevec[0]); + if (filevec[0].desc != filevec[1].desc) + { + slurp (&filevec[1]); + prepare_text (&filevec[1]); + } + else + { + filevec[1].buffer = filevec[0].buffer; + filevec[1].bufsize = filevec[0].bufsize; + filevec[1].buffered = filevec[0].buffered; + filevec[1].missing_newline = filevec[0].missing_newline; + } + + /* Find identical prefix. */ + + w0 = filevec[0].buffer; + w1 = filevec[1].buffer; + p0 = buffer0 = (char *) w0; + p1 = buffer1 = (char *) w1; + n0 = filevec[0].buffered; + n1 = filevec[1].buffered; + + if (p0 == p1) + /* The buffers are the same; sentinels won't work. */ + p0 = p1 += n1; + else + { + /* Insert end sentinels, in this case characters that are guaranteed + to make the equality test false, and thus terminate the loop. */ + + if (n0 < n1) + p0[n0] = ~p1[n0]; + else + p1[n1] = ~p0[n1]; + + /* Loop until first mismatch, or to the sentinel characters. */ + + /* Compare a word at a time for speed. */ + while (*w0 == *w1) + w0++, w1++; + + /* Do the last few bytes of comparison a byte at a time. */ + p0 = (char *) w0; + p1 = (char *) w1; + while (*p0 == *p1) + p0++, p1++; + + /* Don't mistakenly count missing newline as part of prefix. */ + if (ROBUST_OUTPUT_STYLE (output_style) + && ((buffer0 + n0 - filevec[0].missing_newline < p0) + != + (buffer1 + n1 - filevec[1].missing_newline < p1))) + p0--, p1--; + } + + /* Now P0 and P1 point at the first nonmatching characters. */ + + /* Skip back to last line-beginning in the prefix, + and then discard up to HORIZON_LINES lines from the prefix. */ + i = horizon_lines; + while (p0 != buffer0 && (p0[-1] != '\n' || i--)) + p0--, p1--; + + /* Record the prefix. */ + filevec[0].prefix_end = p0; + filevec[1].prefix_end = p1; + + /* Find identical suffix. */ + + /* P0 and P1 point beyond the last chars not yet compared. */ + p0 = buffer0 + n0; + p1 = buffer1 + n1; + + if (! ROBUST_OUTPUT_STYLE (output_style) + || filevec[0].missing_newline == filevec[1].missing_newline) + { + end0 = p0; /* Addr of last char in file 0. */ + + /* Get value of P0 at which we should stop scanning backward: + this is when either P0 or P1 points just past the last char + of the identical prefix. */ + beg0 = filevec[0].prefix_end + (n0 < n1 ? 0 : n0 - n1); + + /* Scan back until chars don't match or we reach that point. */ + for (; p0 != beg0; p0--, p1--) + if (*p0 != *p1) + { + /* Point at the first char of the matching suffix. */ + beg0 = p0; + break; + } + + /* Are we at a line-beginning in both files? If not, add the rest of + this line to the main body. Discard up to HORIZON_LINES lines from + the identical suffix. Also, discard one extra line, + because shift_boundaries may need it. */ + i = horizon_lines + !((buffer0 == p0 || p0[-1] == '\n') + && + (buffer1 == p1 || p1[-1] == '\n')); + while (i-- && p0 != end0) + while (*p0++ != '\n') + continue; + + p1 += p0 - beg0; + } + + /* Record the suffix. */ + filevec[0].suffix_begin = p0; + filevec[1].suffix_begin = p1; + + /* Calculate number of lines of prefix to save. + + prefix_count == 0 means save the whole prefix; + we need this for options like -D that output the whole file, + or for enormous contexts (to avoid worrying about arithmetic overflow). + We also need it for options like -F that output some preceding line; + at least we will need to find the last few lines, + but since we don't know how many, it's easiest to find them all. + + Otherwise, prefix_count != 0. Save just prefix_count lines at start + of the line buffer; they'll be moved to the proper location later. + Handle 1 more line than the context says (because we count 1 too many), + rounded up to the next power of 2 to speed index computation. */ + + if (no_diff_means_no_output && ! function_regexp.fastmap + && context < LIN_MAX / 4 && context < n0) + { + middle_guess = guess_lines (0, 0, p0 - filevec[0].prefix_end); + suffix_guess = guess_lines (0, 0, buffer0 + n0 - p0); + for (prefix_count = 1; prefix_count <= context; prefix_count *= 2) + continue; + alloc_lines0 = (prefix_count + middle_guess + + MIN (context, suffix_guess)); + } + else + { + prefix_count = 0; + alloc_lines0 = guess_lines (0, 0, n0); + } + + prefix_mask = prefix_count - 1; + lines = 0; + linbuf0 = xmalloc (alloc_lines0 * sizeof *linbuf0); + p0 = buffer0; + + /* If the prefix is needed, find the prefix lines. */ + if (! (no_diff_means_no_output + && filevec[0].prefix_end == p0 + && filevec[1].prefix_end == p1)) + { + end0 = filevec[0].prefix_end; + while (p0 != end0) + { + lin l = lines++ & prefix_mask; + if (l == alloc_lines0) + { + if (PTRDIFF_MAX / (2 * sizeof *linbuf0) <= alloc_lines0) + xalloc_die (); + alloc_lines0 *= 2; + linbuf0 = xrealloc (linbuf0, alloc_lines0 * sizeof *linbuf0); + } + linbuf0[l] = p0; + while (*p0++ != '\n') + continue; + } + } + buffered_prefix = prefix_count && context < lines ? context : lines; + + /* Allocate line buffer 1. */ + + middle_guess = guess_lines (lines, p0 - buffer0, p1 - filevec[1].prefix_end); + suffix_guess = guess_lines (lines, p0 - buffer0, buffer1 + n1 - p1); + alloc_lines1 = buffered_prefix + middle_guess + MIN (context, suffix_guess); + if (alloc_lines1 < buffered_prefix + || PTRDIFF_MAX / sizeof *linbuf1 <= alloc_lines1) + xalloc_die (); + linbuf1 = xmalloc (alloc_lines1 * sizeof *linbuf1); + + if (buffered_prefix != lines) + { + /* Rotate prefix lines to proper location. */ + for (i = 0; i < buffered_prefix; i++) + linbuf1[i] = linbuf0[(lines - context + i) & prefix_mask]; + for (i = 0; i < buffered_prefix; i++) + linbuf0[i] = linbuf1[i]; + } + + /* Initialize line buffer 1 from line buffer 0. */ + for (i = 0; i < buffered_prefix; i++) + linbuf1[i] = linbuf0[i] - buffer0 + buffer1; + + /* Record the line buffer, adjusted so that + linbuf[0] points at the first differing line. */ + filevec[0].linbuf = linbuf0 + buffered_prefix; + filevec[1].linbuf = linbuf1 + buffered_prefix; + filevec[0].linbuf_base = filevec[1].linbuf_base = - buffered_prefix; + filevec[0].alloc_lines = alloc_lines0 - buffered_prefix; + filevec[1].alloc_lines = alloc_lines1 - buffered_prefix; + filevec[0].prefix_lines = filevec[1].prefix_lines = lines; +} + +/* If 1 < k, then (2**k - prime_offset[k]) is the largest prime less + than 2**k. This table is derived from Chris K. Caldwell's list + . */ + +static unsigned char const prime_offset[] = +{ + 0, 0, 1, 1, 3, 1, 3, 1, 5, 3, 3, 9, 3, 1, 3, 19, 15, 1, 5, 1, 3, 9, 3, + 15, 3, 39, 5, 39, 57, 3, 35, 1, 5, 9, 41, 31, 5, 25, 45, 7, 87, 21, + 11, 57, 17, 55, 21, 115, 59, 81, 27, 129, 47, 111, 33, 55, 5, 13, 27, + 55, 93, 1, 57, 25 +}; + +/* Verify that this host's size_t is not too wide for the above table. */ + +verify (enough_prime_offsets, + sizeof (size_t) * CHAR_BIT <= sizeof prime_offset); + +/* Given a vector of two file_data objects, read the file associated + with each one, and build the table of equivalence classes. + Return nonzero if either file appears to be a binary file. + If PRETEND_BINARY is nonzero, pretend they are binary regardless. */ + +bool +read_files (struct file_data filevec[], bool pretend_binary) +{ + int i; + bool skip_test = text | pretend_binary; + bool appears_binary = pretend_binary | sip (&filevec[0], skip_test); + + if (filevec[0].desc != filevec[1].desc) + appears_binary |= sip (&filevec[1], skip_test | appears_binary); + else + { + filevec[1].buffer = filevec[0].buffer; + filevec[1].bufsize = filevec[0].bufsize; + filevec[1].buffered = filevec[0].buffered; + } + if (appears_binary) + { + set_binary_mode (filevec[0].desc, 1); + set_binary_mode (filevec[1].desc, 1); + return 1; + } + + find_identical_ends (filevec); + + equivs_alloc = filevec[0].alloc_lines + filevec[1].alloc_lines + 1; + if (PTRDIFF_MAX / sizeof *equivs <= equivs_alloc) + xalloc_die (); + equivs = xmalloc (equivs_alloc * sizeof *equivs); + /* Equivalence class 0 is permanently safe for lines that were not + hashed. Real equivalence classes start at 1. */ + equivs_index = 1; + + /* Allocate (one plus) a prime number of hash buckets. Use a prime + number between 1/3 and 2/3 of the value of equiv_allocs, + approximately. */ + for (i = 9; (size_t) 1 << i < equivs_alloc / 3; i++) + continue; + nbuckets = ((size_t) 1 << i) - prime_offset[i]; + if (PTRDIFF_MAX / sizeof *buckets <= nbuckets) + xalloc_die (); + buckets = zalloc ((nbuckets + 1) * sizeof *buckets); + buckets++; + + for (i = 0; i < 2; i++) + find_and_hash_each_line (&filevec[i]); + + filevec[0].equiv_max = filevec[1].equiv_max = equivs_index; + + free (equivs); + free (buckets - 1); + + return 0; +} diff --git a/src/apps/bin/diffutils-2.8.1/src/normal.c b/src/apps/bin/diffutils-2.8.1/src/normal.c new file mode 100644 index 0000000000..4a01596544 --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/src/normal.c @@ -0,0 +1,71 @@ +/* Normal-format output routines for GNU DIFF. + + Copyright (C) 1988, 1989, 1993, 1995, 1998, 2001 Free Software + Foundation, Inc. + + This file is part of GNU DIFF. + + GNU DIFF 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. + + GNU DIFF is distributed in the hope that 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; see the file COPYING. + If not, write to the Free Software Foundation, + 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + +#include "diff.h" + +static void print_normal_hunk (struct change *); + +/* Print the edit-script SCRIPT as a normal diff. + INF points to an array of descriptions of the two files. */ + +void +print_normal_script (struct change *script) +{ + print_script (script, find_change, print_normal_hunk); +} + +/* Print a hunk of a normal diff. + This is a contiguous portion of a complete edit script, + describing changes in consecutive lines. */ + +static void +print_normal_hunk (struct change *hunk) +{ + lin first0, last0, first1, last1; + register lin i; + + /* Determine range of line numbers involved in each file. */ + enum changes changes = analyze_hunk (hunk, &first0, &last0, &first1, &last1); + if (!changes) + return; + + begin_output (); + + /* Print out the line number header for this hunk */ + print_number_range (',', &files[0], first0, last0); + fprintf (outfile, "%c", change_letter[changes]); + print_number_range (',', &files[1], first1, last1); + fprintf (outfile, "\n"); + + /* Print the lines that the first file has. */ + if (changes & OLD) + for (i = first0; i <= last0; i++) + print_1_line ("<", &files[0].linbuf[i]); + + if (changes == CHANGED) + fprintf (outfile, "---\n"); + + /* Print the lines that the second file has. */ + if (changes & NEW) + for (i = first1; i <= last1; i++) + print_1_line (">", &files[1].linbuf[i]); +} diff --git a/src/apps/bin/diffutils-2.8.1/src/sdiff.c b/src/apps/bin/diffutils-2.8.1/src/sdiff.c new file mode 100644 index 0000000000..45fc52d474 --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/src/sdiff.c @@ -0,0 +1,1220 @@ +/* sdiff - side-by-side merge of file differences + + Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 2001, 2002 Free + Software Foundation, Inc. + + This file is part of GNU DIFF. + + GNU DIFF 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. + + GNU DIFF is distributed in the hope that 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; see the file COPYING. + If not, write to the Free Software Foundation, + 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + +#include "system.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +static char const authorship_msgid[] = N_("Written by Thomas Lord."); + +static char const copyright_string[] = + "Copyright (C) 2002 Free Software Foundation, Inc."; + +extern char const version_string[]; + +/* Size of chunks read from files which must be parsed into lines. */ +#define SDIFF_BUFSIZE ((size_t) 65536) + +char *program_name; + +static char const *editor_program = DEFAULT_EDITOR_PROGRAM; +static char const **diffargv; + +static char * volatile tmpname; +static FILE *tmp; + +#if HAVE_WORKING_FORK || HAVE_WORKING_VFORK +static pid_t volatile diffpid; +#endif + +struct line_filter; + +static RETSIGTYPE catchsig (int); +static bool edit (struct line_filter *, char const *, lin, lin, struct line_filter *, char const *, lin, lin, FILE *); +static bool interact (struct line_filter *, struct line_filter *, char const *, struct line_filter *, char const *, FILE *); +static void checksigs (void); +static void diffarg (char const *); +static void fatal (char const *) __attribute__((noreturn)); +static void perror_fatal (char const *) __attribute__((noreturn)); +static void trapsigs (void); +static void untrapsig (int); + +#define NUM_SIGS (sizeof sigs / sizeof *sigs) +static int const sigs[] = { +#ifdef SIGHUP + SIGHUP, +#endif +#ifdef SIGQUIT + SIGQUIT, +#endif +#ifdef SIGTERM + SIGTERM, +#endif +#ifdef SIGXCPU + SIGXCPU, +#endif +#ifdef SIGXFSZ + SIGXFSZ, +#endif + SIGINT, + SIGPIPE +}; +#define handler_index_of_SIGINT (NUM_SIGS - 2) +#define handler_index_of_SIGPIPE (NUM_SIGS - 1) + +#if HAVE_SIGACTION + /* Prefer `sigaction' if available, since `signal' can lose signals. */ + static struct sigaction initial_action[NUM_SIGS]; +# define initial_handler(i) (initial_action[i].sa_handler) + static void signal_handler (int, RETSIGTYPE (*) (int)); +#else + static RETSIGTYPE (*initial_action[NUM_SIGS]) (); +# define initial_handler(i) (initial_action[i]) +# define signal_handler(sig, handler) signal (sig, handler) +#endif + +#if ! HAVE_SIGPROCMASK +# define sigset_t int +# define sigemptyset(s) (*(s) = 0) +# ifndef sigmask +# define sigmask(sig) (1 << ((sig) - 1)) +# endif +# define sigaddset(s, sig) (*(s) |= sigmask (sig)) +# ifndef SIG_BLOCK +# define SIG_BLOCK 0 +# endif +# ifndef SIG_SETMASK +# define SIG_SETMASK (! SIG_BLOCK) +# endif +# define sigprocmask(how, n, o) \ + ((how) == SIG_BLOCK ? *(o) = sigblock (*(n)) : sigsetmask (*(n))) +#endif + +static bool diraccess (char const *); +static int temporary_file (void); + +/* Options: */ + +/* Name of output file if -o specified. */ +static char const *output; + +/* Do not print common lines. */ +static bool suppress_common_lines; + +/* Value for the long option that does not have single-letter equivalents. */ +enum +{ + DIFF_PROGRAM_OPTION = CHAR_MAX + 1, + HELP_OPTION, + STRIP_TRAILING_CR_OPTION +}; + +static struct option const longopts[] = +{ + {"diff-program", 1, 0, DIFF_PROGRAM_OPTION}, + {"expand-tabs", 0, 0, 't'}, + {"help", 0, 0, HELP_OPTION}, + {"ignore-all-space", 0, 0, 'W'}, /* swap W and w for historical reasons */ + {"ignore-blank-lines", 0, 0, 'B'}, + {"ignore-case", 0, 0, 'i'}, + {"ignore-matching-lines", 1, 0, 'I'}, + {"ignore-space-change", 0, 0, 'b'}, + {"ignore-tab-expansion", 0, 0, 'E'}, + {"left-column", 0, 0, 'l'}, + {"minimal", 0, 0, 'd'}, + {"output", 1, 0, 'o'}, + {"speed-large-files", 0, 0, 'H'}, + {"strip-trailing-cr", 0, 0, STRIP_TRAILING_CR_OPTION}, + {"suppress-common-lines", 0, 0, 's'}, + {"text", 0, 0, 'a'}, + {"version", 0, 0, 'v'}, + {"width", 1, 0, 'w'}, + {0, 0, 0, 0} +}; + +static void try_help (char const *, char const *) __attribute__((noreturn)); +static void +try_help (char const *reason_msgid, char const *operand) +{ + if (reason_msgid) + error (0, 0, _(reason_msgid), operand); + error (EXIT_TROUBLE, 0, _("Try `%s --help' for more information."), + program_name); + abort (); +} + +static void +check_stdout (void) +{ + if (ferror (stdout)) + fatal ("write failed"); + else if (fclose (stdout) != 0) + perror_fatal (_("standard output")); +} + +static char const * const option_help_msgid[] = { + N_("-o FILE --output=FILE Operate interactively, sending output to FILE."), + "", + N_("-i --ignore-case Consider upper- and lower-case to be the same."), + N_("-E --ignore-tab-expansion Ignore changes due to tab expansion."), + N_("-b --ignore-space-change Ignore changes in the amount of white space."), + N_("-W --ignore-all-space Ignore all white space."), + N_("-B --ignore-blank-lines Ignore changes whose lines are all blank."), + N_("-I RE --ignore-matching-lines=RE Ignore changes whose lines all match RE."), + N_("--strip-trailing-cr Strip trailing carriage return on input."), + N_("-a --text Treat all files as text."), + "", + N_("-w NUM --width=NUM Output at most NUM (default 130) columns per line."), + N_("-l --left-column Output only the left column of common lines."), + N_("-s --suppress-common-lines Do not output common lines."), + "", + N_("-t --expand-tabs Expand tabs to spaces in output."), + "", + N_("-d --minimal Try hard to find a smaller set of changes."), + N_("-H --speed-large-files Assume large files and many scattered small changes."), + N_("--diff-program=PROGRAM Use PROGRAM to compare files."), + "", + N_("-v --version Output version info."), + N_("--help Output this help."), + 0 +}; + +static void +usage (void) +{ + char const * const *p; + + printf (_("Usage: %s [OPTION]... FILE1 FILE2\n"), program_name); + printf ("%s\n\n", _("Side-by-side merge of file differences.")); + for (p = option_help_msgid; *p; p++) + if (**p) + printf (" %s\n", _(*p)); + else + putchar ('\n'); + printf ("\n%s\n\n%s\n", + _("If a FILE is `-', read standard input."), + _("Report bugs to .")); +} + +static void +cleanup (void) +{ +#if HAVE_WORKING_FORK || HAVE_WORKING_VFORK + if (0 < diffpid) + kill (diffpid, SIGPIPE); +#endif + if (tmpname) + unlink (tmpname); +} + +static void exiterr (void) __attribute__((noreturn)); +static void +exiterr (void) +{ + cleanup (); + untrapsig (0); + checksigs (); + exit (EXIT_TROUBLE); +} + +static void +fatal (char const *msgid) +{ + error (0, 0, "%s", _(msgid)); + exiterr (); +} + +static void +perror_fatal (char const *msg) +{ + int e = errno; + checksigs (); + error (0, e, "%s", msg); + exiterr (); +} + +static void +ck_editor_status (int errnum, int status) +{ + if (errnum | status) + { + char const *failure_msgid = N_("subsidiary program `%s' failed"); + if (! errnum && WIFEXITED (status)) + switch (WEXITSTATUS (status)) + { + case 126: + failure_msgid = N_("subsidiary program `%s' not executable"); + break; + case 127: + failure_msgid = N_("subsidiary program `%s' not found"); + break; + } + error (0, errnum, _(failure_msgid), editor_program); + exiterr (); + } +} + +static FILE * +ck_fopen (char const *fname, char const *type) +{ + FILE *r = fopen (fname, type); + if (! r) + perror_fatal (fname); + return r; +} + +static void +ck_fclose (FILE *f) +{ + if (fclose (f)) + perror_fatal ("fclose"); +} + +static size_t +ck_fread (char *buf, size_t size, FILE *f) +{ + size_t r = fread (buf, sizeof (char), size, f); + if (r == 0 && ferror (f)) + perror_fatal (_("read failed")); + return r; +} + +static void +ck_fwrite (char const *buf, size_t size, FILE *f) +{ + if (fwrite (buf, sizeof (char), size, f) != size) + perror_fatal (_("write failed")); +} + +static void +ck_fflush (FILE *f) +{ + if (fflush (f) != 0) + perror_fatal (_("write failed")); +} + +static char const * +expand_name (char *name, bool is_dir, char const *other_name) +{ + if (strcmp (name, "-") == 0) + fatal ("cannot interactively merge standard input"); + if (! is_dir) + return name; + else + { + /* Yield NAME/BASE, where BASE is OTHER_NAME's basename. */ + char const *base = base_name (other_name); + size_t namelen = strlen (name), baselen = strlen (base); + bool insert_slash = *base_name (name) && name[namelen - 1] != '/'; + char *r = xmalloc (namelen + insert_slash + baselen + 1); + memcpy (r, name, namelen); + r[namelen] = '/'; + memcpy (r + namelen + insert_slash, base, baselen + 1); + return r; + } +} + + + +struct line_filter { + FILE *infile; + char *bufpos; + char *buffer; + char *buflim; +}; + +static void +lf_init (struct line_filter *lf, FILE *infile) +{ + lf->infile = infile; + lf->bufpos = lf->buffer = lf->buflim = xmalloc (SDIFF_BUFSIZE + 1); + lf->buflim[0] = '\n'; +} + +/* Fill an exhausted line_filter buffer from its INFILE */ +static size_t +lf_refill (struct line_filter *lf) +{ + size_t s = ck_fread (lf->buffer, SDIFF_BUFSIZE, lf->infile); + lf->bufpos = lf->buffer; + lf->buflim = lf->buffer + s; + lf->buflim[0] = '\n'; + checksigs (); + return s; +} + +/* Advance LINES on LF's infile, copying lines to OUTFILE */ +static void +lf_copy (struct line_filter *lf, lin lines, FILE *outfile) +{ + char *start = lf->bufpos; + + while (lines) + { + lf->bufpos = (char *) memchr (lf->bufpos, '\n', lf->buflim - lf->bufpos); + if (! lf->bufpos) + { + ck_fwrite (start, lf->buflim - start, outfile); + if (! lf_refill (lf)) + return; + start = lf->bufpos; + } + else + { + --lines; + ++lf->bufpos; + } + } + + ck_fwrite (start, lf->bufpos - start, outfile); +} + +/* Advance LINES on LF's infile without doing output */ +static void +lf_skip (struct line_filter *lf, lin lines) +{ + while (lines) + { + lf->bufpos = (char *) memchr (lf->bufpos, '\n', lf->buflim - lf->bufpos); + if (! lf->bufpos) + { + if (! lf_refill (lf)) + break; + } + else + { + --lines; + ++lf->bufpos; + } + } +} + +/* Snarf a line into a buffer. Return EOF if EOF, 0 if error, 1 if OK. */ +static int +lf_snarf (struct line_filter *lf, char *buffer, size_t bufsize) +{ + for (;;) + { + char *start = lf->bufpos; + char *next = (char *) memchr (start, '\n', lf->buflim + 1 - start); + size_t s = next - start; + if (bufsize <= s) + return 0; + memcpy (buffer, start, s); + if (next < lf->buflim) + { + buffer[s] = 0; + lf->bufpos = next + 1; + return 1; + } + if (! lf_refill (lf)) + return s ? 0 : EOF; + buffer += s; + bufsize -= s; + } +} + + + +int +main (int argc, char *argv[]) +{ + int opt; + char const *prog; + + exit_failure = EXIT_TROUBLE; + initialize_main (&argc, &argv); + program_name = argv[0]; + setlocale (LC_ALL, ""); + bindtextdomain (PACKAGE, LOCALEDIR); + textdomain (PACKAGE); + c_stack_action (c_stack_die); + + prog = getenv ("EDITOR"); + if (prog) + editor_program = prog; + + diffarg (DEFAULT_DIFF_PROGRAM); + + /* parse command line args */ + while ((opt = getopt_long (argc, argv, "abBdHiI:lo:stvw:W", longopts, 0)) + != -1) + { + switch (opt) + { + case 'a': + diffarg ("-a"); + break; + + case 'b': + diffarg ("-b"); + break; + + case 'B': + diffarg ("-B"); + break; + + case 'd': + diffarg ("-d"); + break; + + case 'E': + diffarg ("-E"); + break; + + case 'H': + diffarg ("-H"); + break; + + case 'i': + diffarg ("-i"); + break; + + case 'I': + diffarg ("-I"); + diffarg (optarg); + break; + + case 'l': + diffarg ("--left-column"); + break; + + case 'o': + output = optarg; + break; + + case 's': + suppress_common_lines = 1; + break; + + case 't': + diffarg ("-t"); + break; + + case 'v': + printf ("sdiff %s\n%s\n\n%s\n\n%s\n", + version_string, copyright_string, + _(free_software_msgid), _(authorship_msgid)); + check_stdout (); + return EXIT_SUCCESS; + + case 'w': + diffarg ("-W"); + diffarg (optarg); + break; + + case 'W': + diffarg ("-w"); + break; + + case DIFF_PROGRAM_OPTION: + diffargv[0] = optarg; + break; + + case HELP_OPTION: + usage (); + check_stdout (); + return EXIT_SUCCESS; + + case STRIP_TRAILING_CR_OPTION: + diffarg ("--strip-trailing-cr"); + break; + + default: + try_help (0, 0); + } + } + + if (argc - optind != 2) + { + if (argc - optind < 2) + try_help ("missing operand after `%s'", argv[argc - 1]); + else + try_help ("extra operand `%s'", argv[optind + 2]); + } + + if (! output) + { + /* easy case: diff does everything for us */ + if (suppress_common_lines) + diffarg ("--suppress-common-lines"); + diffarg ("-y"); + diffarg ("--"); + diffarg (argv[optind]); + diffarg (argv[optind + 1]); + diffarg (0); + execvp (diffargv[0], (char **) diffargv); + perror_fatal (diffargv[0]); + } + else + { + char const *lname, *rname; + FILE *left, *right, *out, *diffout; + bool interact_ok; + struct line_filter lfilt; + struct line_filter rfilt; + struct line_filter diff_filt; + bool leftdir = diraccess (argv[optind]); + bool rightdir = diraccess (argv[optind + 1]); + + if (leftdir & rightdir) + fatal ("both files to be compared are directories"); + + lname = expand_name (argv[optind], leftdir, argv[optind + 1]); + left = ck_fopen (lname, "r"); + rname = expand_name (argv[optind + 1], rightdir, argv[optind]); + right = ck_fopen (rname, "r"); + out = ck_fopen (output, "w"); + + diffarg ("--sdiff-merge-assist"); + diffarg ("--"); + diffarg (argv[optind]); + diffarg (argv[optind + 1]); + diffarg (0); + + trapsigs (); + +#if ! (HAVE_WORKING_FORK || HAVE_WORKING_VFORK) + { + size_t cmdsize = 1; + char *p, *command; + int i; + + for (i = 0; diffargv[i]; i++) + cmdsize += quote_system_arg (0, diffargv[i]) + 1; + command = p = xmalloc (cmdsize); + for (i = 0; diffargv[i]; i++) + { + p += quote_system_arg (p, diffargv[i]); + *p++ = ' '; + } + p[-1] = 0; + errno = 0; + diffout = popen (command, "r"); + if (! diffout) + perror_fatal (command); + free (command); + } +#else + { + int diff_fds[2]; +# if HAVE_WORKING_VFORK + sigset_t procmask; + sigset_t blocked; +# endif + + if (pipe (diff_fds) != 0) + perror_fatal ("pipe"); + +# if HAVE_WORKING_VFORK + /* Block SIGINT and SIGPIPE. */ + sigemptyset (&blocked); + sigaddset (&blocked, SIGINT); + sigaddset (&blocked, SIGPIPE); + sigprocmask (SIG_BLOCK, &blocked, &procmask); +# endif + diffpid = vfork (); + if (diffpid < 0) + perror_fatal ("fork"); + if (! diffpid) + { + /* Alter the child's SIGINT and SIGPIPE handlers; + this may munge the parent. + The child ignores SIGINT in case the user interrupts the editor. + The child does not ignore SIGPIPE, even if the parent does. */ + if (initial_handler (handler_index_of_SIGINT) != SIG_IGN) + signal_handler (SIGINT, SIG_IGN); + signal_handler (SIGPIPE, SIG_DFL); +# if HAVE_WORKING_VFORK + /* Stop blocking SIGINT and SIGPIPE in the child. */ + sigprocmask (SIG_SETMASK, &procmask, 0); +# endif + close (diff_fds[0]); + if (diff_fds[1] != STDOUT_FILENO) + { + dup2 (diff_fds[1], STDOUT_FILENO); + close (diff_fds[1]); + } + + execvp (diffargv[0], (char **) diffargv); + _exit (errno == ENOEXEC ? 126 : 127); + } + +# if HAVE_WORKING_VFORK + /* Restore the parent's SIGINT and SIGPIPE behavior. */ + if (initial_handler (handler_index_of_SIGINT) != SIG_IGN) + signal_handler (SIGINT, catchsig); + if (initial_handler (handler_index_of_SIGPIPE) != SIG_IGN) + signal_handler (SIGPIPE, catchsig); + else + signal_handler (SIGPIPE, SIG_IGN); + + /* Stop blocking SIGINT and SIGPIPE in the parent. */ + sigprocmask (SIG_SETMASK, &procmask, 0); +# endif + + close (diff_fds[1]); + diffout = fdopen (diff_fds[0], "r"); + if (! diffout) + perror_fatal ("fdopen"); + } +#endif + + lf_init (&diff_filt, diffout); + lf_init (&lfilt, left); + lf_init (&rfilt, right); + + interact_ok = interact (&diff_filt, &lfilt, lname, &rfilt, rname, out); + + ck_fclose (left); + ck_fclose (right); + ck_fclose (out); + + { + int wstatus; + int werrno = 0; + +#if ! (HAVE_WORKING_FORK || HAVE_WORKING_VFORK) + wstatus = pclose (diffout); + if (wstatus == -1) + werrno = errno; +#else + ck_fclose (diffout); + while (waitpid (diffpid, &wstatus, 0) < 0) + if (errno == EINTR) + checksigs (); + else + perror_fatal ("waitpid"); + diffpid = 0; +#endif + + if (tmpname) + { + unlink (tmpname); + tmpname = 0; + } + + if (! interact_ok) + exiterr (); + + ck_editor_status (werrno, wstatus); + untrapsig (0); + checksigs (); + exit (WEXITSTATUS (wstatus)); + } + } + return EXIT_SUCCESS; /* Fool `-Wall'. */ +} + +static void +diffarg (char const *a) +{ + static size_t diffargs, diffarglim; + + if (diffargs == diffarglim) + { + if (! diffarglim) + diffarglim = 16; + else if (PTRDIFF_MAX / (2 * sizeof *diffargv) <= diffarglim) + xalloc_die (); + else + diffarglim *= 2; + diffargv = xrealloc (diffargv, diffarglim * sizeof *diffargv); + } + diffargv[diffargs++] = a; +} + + + + +/* Signal handling */ + +static bool volatile ignore_SIGINT; +static int volatile signal_received; +static bool sigs_trapped; + +static RETSIGTYPE +catchsig (int s) +{ +#if ! HAVE_SIGACTION + signal (s, SIG_IGN); +#endif + if (! (s == SIGINT && ignore_SIGINT)) + signal_received = s; +} + +#if HAVE_SIGACTION +static struct sigaction catchaction; + +static void +signal_handler (int sig, RETSIGTYPE (*handler) (int)) +{ + catchaction.sa_handler = handler; + sigaction (sig, &catchaction, 0); +} +#endif + +static void +trapsigs (void) +{ + int i; + +#if HAVE_SIGACTION + catchaction.sa_flags = SA_RESTART; + sigemptyset (&catchaction.sa_mask); + for (i = 0; i < NUM_SIGS; i++) + sigaddset (&catchaction.sa_mask, sigs[i]); +#endif + + for (i = 0; i < NUM_SIGS; i++) + { +#if HAVE_SIGACTION + sigaction (sigs[i], 0, &initial_action[i]); +#else + initial_action[i] = signal (sigs[i], SIG_IGN); +#endif + if (initial_handler (i) != SIG_IGN) + signal_handler (sigs[i], catchsig); + } + +#ifdef SIGCHLD + /* System V fork+wait does not work if SIGCHLD is ignored. */ + signal (SIGCHLD, SIG_DFL); +#endif + + sigs_trapped = 1; +} + +/* Untrap signal S, or all trapped signals if S is zero. */ +static void +untrapsig (int s) +{ + int i; + + if (sigs_trapped) + for (i = 0; i < NUM_SIGS; i++) + if ((! s || sigs[i] == s) && initial_handler (i) != SIG_IGN) +#if HAVE_SIGACTION + sigaction (sigs[i], &initial_action[i], 0); +#else + signal (sigs[i], initial_action[i]); +#endif +} + +/* Exit if a signal has been received. */ +static void +checksigs (void) +{ + int s = signal_received; + if (s) + { + cleanup (); + + /* Yield an exit status indicating that a signal was received. */ + untrapsig (s); + kill (getpid (), s); + + /* That didn't work, so exit with error status. */ + exit (EXIT_TROUBLE); + } +} + + +static void +give_help (void) +{ + fprintf (stderr, "%s", _("\ +ed:\tEdit then use both versions, each decorated with a header.\n\ +eb:\tEdit then use both versions.\n\ +el:\tEdit then use the left version.\n\ +er:\tEdit then use the right version.\n\ +e:\tEdit a new version.\n\ +l:\tUse the left version.\n\ +r:\tUse the right version.\n\ +s:\tSilently include common lines.\n\ +v:\tVerbosely include common lines.\n\ +q:\tQuit.\n\ +")); +} + +static int +skip_white (void) +{ + int c; + for (;;) + { + c = getchar (); + if (! ISSPACE (c) || c == '\n') + break; + checksigs (); + } + if (ferror (stdin)) + perror_fatal (_("read failed")); + return c; +} + +static void +flush_line (void) +{ + int c; + while ((c = getchar ()) != '\n' && c != EOF) + continue; + if (ferror (stdin)) + perror_fatal (_("read failed")); +} + + +/* interpret an edit command */ +static bool +edit (struct line_filter *left, char const *lname, lin lline, lin llen, + struct line_filter *right, char const *rname, lin rline, lin rlen, + FILE *outfile) +{ + for (;;) + { + int cmd0, cmd1; + bool gotcmd = 0; + + cmd1 = 0; /* Pacify `gcc -W'. */ + + while (! gotcmd) + { + if (putchar ('%') != '%') + perror_fatal (_("write failed")); + ck_fflush (stdout); + + cmd0 = skip_white (); + switch (cmd0) + { + case 'l': case 'r': case 's': case 'v': case 'q': + if (skip_white () != '\n') + { + give_help (); + flush_line (); + continue; + } + gotcmd = 1; + break; + + case 'e': + cmd1 = skip_white (); + switch (cmd1) + { + case 'b': case 'd': case 'l': case 'r': + if (skip_white () != '\n') + { + give_help (); + flush_line (); + continue; + } + gotcmd = 1; + break; + case '\n': + gotcmd = 1; + break; + default: + give_help (); + flush_line (); + continue; + } + break; + + case EOF: + if (feof (stdin)) + { + gotcmd = 1; + cmd0 = 'q'; + break; + } + /* Fall through. */ + default: + flush_line (); + /* Fall through. */ + case '\n': + give_help (); + continue; + } + } + + switch (cmd0) + { + case 'l': + lf_copy (left, llen, outfile); + lf_skip (right, rlen); + return 1; + case 'r': + lf_copy (right, rlen, outfile); + lf_skip (left, llen); + return 1; + case 's': + suppress_common_lines = 1; + break; + case 'v': + suppress_common_lines = 0; + break; + case 'q': + return 0; + case 'e': + { + int fd; + + if (tmpname) + tmp = fopen (tmpname, "w"); + else + { + if ((fd = temporary_file ()) < 0) + perror_fatal ("mkstemp"); + tmp = fdopen (fd, "w"); + } + + if (! tmp) + perror_fatal (tmpname); + + switch (cmd1) + { + case 'd': + if (llen) + { + if (llen == 1) + fprintf (tmp, "--- %s %ld\n", lname, (long) lline); + else + fprintf (tmp, "--- %s %ld,%ld\n", lname, + (long) lline, (long) (lline + llen - 1)); + } + /* Fall through. */ + case 'b': case 'l': + lf_copy (left, llen, tmp); + break; + + default: + lf_skip (left, llen); + break; + } + + switch (cmd1) + { + case 'd': + if (rlen) + { + if (rlen == 1) + fprintf (tmp, "+++ %s %ld\n", rname, (long) rline); + else + fprintf (tmp, "+++ %s %ld,%ld\n", rname, + (long) rline, (long) (rline + rlen - 1)); + } + /* Fall through. */ + case 'b': case 'r': + lf_copy (right, rlen, tmp); + break; + + default: + lf_skip (right, rlen); + break; + } + + ck_fclose (tmp); + + { + int wstatus; + int werrno = 0; + ignore_SIGINT = 1; + checksigs (); + + { +#if ! (HAVE_WORKING_FORK || HAVE_WORKING_VFORK) + char *command = + xmalloc (quote_system_arg (0, editor_program) + + 1 + strlen (tmpname) + 1); + sprintf (command + quote_system_arg (command, editor_program), + " %s", tmpname); + wstatus = system (command); + if (wstatus == -1) + werrno = errno; + free (command); +#else + pid_t pid; + + pid = vfork (); + if (pid == 0) + { + char const *argv[3]; + int i = 0; + + argv[i++] = editor_program; + argv[i++] = tmpname; + argv[i] = 0; + + execvp (editor_program, (char **) argv); + _exit (errno == ENOEXEC ? 126 : 127); + } + + if (pid < 0) + perror_fatal ("fork"); + + while (waitpid (pid, &wstatus, 0) < 0) + if (errno == EINTR) + checksigs (); + else + perror_fatal ("waitpid"); +#endif + } + + ignore_SIGINT = 0; + ck_editor_status (werrno, wstatus); + } + + { + char buf[SDIFF_BUFSIZE]; + size_t size; + tmp = ck_fopen (tmpname, "r"); + while ((size = ck_fread (buf, SDIFF_BUFSIZE, tmp)) != 0) + { + checksigs (); + ck_fwrite (buf, size, outfile); + } + ck_fclose (tmp); + } + return 1; + } + default: + give_help (); + break; + } + } +} + + + +/* Alternately reveal bursts of diff output and handle user commands. */ +static bool +interact (struct line_filter *diff, + struct line_filter *left, char const *lname, + struct line_filter *right, char const *rname, + FILE *outfile) +{ + lin lline = 1, rline = 1; + + for (;;) + { + char diff_help[256]; + int snarfed = lf_snarf (diff, diff_help, sizeof diff_help); + + if (snarfed <= 0) + return snarfed != 0; + + checksigs (); + + if (diff_help[0] == ' ') + puts (diff_help + 1); + else + { + char *numend; + uintmax_t val; + lin llen, rlen, lenmax; + errno = 0; + llen = val = strtoumax (diff_help + 1, &numend, 10); + if (llen < 0 || llen != val || errno || *numend != ',') + fatal (diff_help); + rlen = val = strtoumax (numend + 1, &numend, 10); + if (rlen < 0 || rlen != val || errno || *numend) + fatal (diff_help); + + lenmax = MAX (llen, rlen); + + switch (diff_help[0]) + { + case 'i': + if (suppress_common_lines) + lf_skip (diff, lenmax); + else + lf_copy (diff, lenmax, stdout); + + lf_copy (left, llen, outfile); + lf_skip (right, rlen); + break; + + case 'c': + lf_copy (diff, lenmax, stdout); + if (! edit (left, lname, lline, llen, + right, rname, rline, rlen, + outfile)) + return 0; + break; + + default: + fatal (diff_help); + } + + lline += llen; + rline += rlen; + } + } +} + +/* Return nonzero if DIR is an existing directory. */ +static bool +diraccess (char const *dir) +{ + struct stat buf; + return stat (dir, &buf) == 0 && S_ISDIR (buf.st_mode); +} + +#ifndef P_tmpdir +# define P_tmpdir "/tmp" +#endif +#ifndef TMPDIR_ENV +# define TMPDIR_ENV "TMPDIR" +#endif + +/* Open a temporary file and return its file descriptor. Put into + tmpname the address of a newly allocated buffer that holds the + file's name. Use the prefix "sdiff". */ +static int +temporary_file (void) +{ + char const *tmpdir = getenv (TMPDIR_ENV); + char const *dir = tmpdir ? tmpdir : P_tmpdir; + char *buf = xmalloc (strlen (dir) + 1 + 5 + 6 + 1); + int fd; + int e; + sigset_t procmask; + sigset_t blocked; + sprintf (buf, "%s/sdiffXXXXXX", dir); + sigemptyset (&blocked); + sigaddset (&blocked, SIGINT); + sigprocmask (SIG_BLOCK, &blocked, &procmask); + fd = mkstemp (buf); + e = errno; + if (0 <= fd) + tmpname = buf; + sigprocmask (SIG_SETMASK, &procmask, 0); + errno = e; + return fd; +} diff --git a/src/apps/bin/diffutils-2.8.1/src/side.c b/src/apps/bin/diffutils-2.8.1/src/side.c new file mode 100644 index 0000000000..ad91d3bbdb --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/src/side.c @@ -0,0 +1,283 @@ +/* sdiff-format output routines for GNU DIFF. + + Copyright (C) 1991, 1992, 1993, 1998, 2001, 2002 Free Software + Foundation, Inc. + + This file is part of GNU DIFF. + + GNU DIFF 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 DIFF General Public + License for full details. + + Everyone is granted permission to copy, modify and redistribute + GNU DIFF, but only under the conditions described in the + GNU DIFF General Public License. A copy of this license is + supposed to have been given to you along with GNU DIFF so you + can know your rights and responsibilities. It should be in a + file named COPYING. Among other things, the copyright notice + and this notice must be preserved on all copies. */ + +#include "diff.h" + +static void print_sdiff_common_lines (lin, lin); +static void print_sdiff_hunk (struct change *); + +/* Next line number to be printed in the two input files. */ +static lin next0, next1; + +/* Print the edit-script SCRIPT as a sdiff style output. */ + +void +print_sdiff_script (struct change *script) +{ + begin_output (); + + next0 = next1 = - files[0].prefix_lines; + print_script (script, find_change, print_sdiff_hunk); + + print_sdiff_common_lines (files[0].valid_lines, files[1].valid_lines); +} + +/* Tab from column FROM to column TO, where FROM <= TO. Yield TO. */ + +static unsigned int +tab_from_to (unsigned int from, unsigned int to) +{ + FILE *out = outfile; + unsigned int tab; + + if (!expand_tabs) + for (tab = from + TAB_WIDTH - from % TAB_WIDTH; tab <= to; tab += TAB_WIDTH) + { + putc ('\t', out); + from = tab; + } + while (from++ < to) + putc (' ', out); + return to; +} + +/* + * Print the text for half an sdiff line. This means truncate to width + * observing tabs, and trim a trailing newline. Returns the last column + * written (not the number of chars). + */ +static unsigned int +print_half_line (char const *const *line, unsigned int indent, + unsigned int out_bound) +{ + FILE *out = outfile; + register unsigned int in_position = 0; + register unsigned int out_position = 0; + register char const *text_pointer = line[0]; + register char const *text_limit = line[1]; + + while (text_pointer < text_limit) + { + register unsigned char c = *text_pointer++; + + switch (c) + { + case '\t': + { + unsigned int spaces = TAB_WIDTH - in_position % TAB_WIDTH; + if (in_position == out_position) + { + unsigned int tabstop = out_position + spaces; + if (expand_tabs) + { + if (out_bound < tabstop) + tabstop = out_bound; + for (; out_position < tabstop; out_position++) + putc (' ', out); + } + else + if (tabstop < out_bound) + { + out_position = tabstop; + putc (c, out); + } + } + in_position += spaces; + } + break; + + case '\r': + { + putc (c, out); + tab_from_to (0, indent); + in_position = out_position = 0; + } + break; + + case '\b': + if (in_position != 0 && --in_position < out_bound) + { + if (out_position <= in_position) + /* Add spaces to make up for suppressed tab past out_bound. */ + for (; out_position < in_position; out_position++) + putc (' ', out); + else + { + out_position = in_position; + putc (c, out); + } + } + break; + + case '\f': + case '\v': + control_char: + if (in_position < out_bound) + putc (c, out); + break; + + default: + if (! ISPRINT (c)) + goto control_char; + /* falls through */ + case ' ': + if (in_position++ < out_bound) + { + out_position = in_position; + putc (c, out); + } + break; + + case '\n': + return out_position; + } + } + + return out_position; +} + +/* + * Print side by side lines with a separator in the middle. + * 0 parameters are taken to indicate white space text. + * Blank lines that can easily be caught are reduced to a single newline. + */ + +static void +print_1sdiff_line (char const *const *left, char sep, + char const *const *right) +{ + FILE *out = outfile; + unsigned int hw = sdiff_half_width, c2o = sdiff_column2_offset; + unsigned int col = 0; + bool put_newline = 0; + + if (left) + { + put_newline |= left[1][-1] == '\n'; + col = print_half_line (left, 0, hw); + } + + if (sep != ' ') + { + col = tab_from_to (col, (hw + c2o - 1) / 2) + 1; + if (sep == '|' && put_newline != (right[1][-1] == '\n')) + sep = put_newline ? '/' : '\\'; + putc (sep, out); + } + + if (right) + { + put_newline |= right[1][-1] == '\n'; + if (**right != '\n') + { + col = tab_from_to (col, c2o); + print_half_line (right, col, hw); + } + } + + if (put_newline) + putc ('\n', out); +} + +/* Print lines common to both files in side-by-side format. */ +static void +print_sdiff_common_lines (lin limit0, lin limit1) +{ + lin i0 = next0, i1 = next1; + + if (!suppress_common_lines && (i0 != limit0 || i1 != limit1)) + { + if (sdiff_merge_assist) + { + long len0 = limit0 - i0; + long len1 = limit1 - i1; + fprintf (outfile, "i%ld,%ld\n", len0, len1); + } + + if (!left_column) + { + while (i0 != limit0 && i1 != limit1) + print_1sdiff_line (&files[0].linbuf[i0++], ' ', + &files[1].linbuf[i1++]); + while (i1 != limit1) + print_1sdiff_line (0, ')', &files[1].linbuf[i1++]); + } + while (i0 != limit0) + print_1sdiff_line (&files[0].linbuf[i0++], '(', 0); + } + + next0 = limit0; + next1 = limit1; +} + +/* Print a hunk of an sdiff diff. + This is a contiguous portion of a complete edit script, + describing changes in consecutive lines. */ + +static void +print_sdiff_hunk (struct change *hunk) +{ + lin first0, last0, first1, last1; + register lin i, j; + + /* Determine range of line numbers involved in each file. */ + enum changes changes = + analyze_hunk (hunk, &first0, &last0, &first1, &last1); + if (!changes) + return; + + /* Print out lines up to this change. */ + print_sdiff_common_lines (first0, first1); + + if (sdiff_merge_assist) + { + long len0 = last0 - first0 + 1; + long len1 = last1 - first1 + 1; + fprintf (outfile, "c%ld,%ld\n", len0, len1); + } + + /* Print ``xxx | xxx '' lines */ + if (changes == CHANGED) + { + for (i = first0, j = first1; i <= last0 && j <= last1; i++, j++) + print_1sdiff_line (&files[0].linbuf[i], '|', &files[1].linbuf[j]); + changes = (i <= last0 ? OLD : 0) + (j <= last1 ? NEW : 0); + next0 = first0 = i; + next1 = first1 = j; + } + + /* Print `` > xxx '' lines */ + if (changes & NEW) + { + for (j = first1; j <= last1; ++j) + print_1sdiff_line (0, '>', &files[1].linbuf[j]); + next1 = j; + } + + /* Print ``xxx < '' lines */ + if (changes & OLD) + { + for (i = first0; i <= last0; ++i) + print_1sdiff_line (&files[0].linbuf[i], '<', 0); + next0 = i; + } +} diff --git a/src/apps/bin/diffutils-2.8.1/src/system.h b/src/apps/bin/diffutils-2.8.1/src/system.h new file mode 100644 index 0000000000..7594982c00 --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/src/system.h @@ -0,0 +1,401 @@ +/* System dependent declarations. + + Copyright (C) 1988, 1989, 1992, 1993, 1994, 1995, 1998, 2001, 2002 + Free Software Foundation, Inc. + + This file is part of GNU DIFF. + + GNU DIFF 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. + + GNU DIFF is distributed in the hope that 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; see the file COPYING. + If not, write to the Free Software Foundation, + 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + +#include + +/* Don't bother to support K&R C compilers any more; it's not worth + the trouble. These macros prevent some library modules from being + compiled in K&R C mode. */ +#define PARAMS(Args) Args +#define PROTOTYPES 1 + +/* Define `__attribute__' and `volatile' first + so that they're used consistently in all system includes. */ +#if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 6) || __STRICT_ANSI__ +# define __attribute__(x) +#endif +#if defined const && !defined volatile +# define volatile +#endif + +/* Verify a requirement at compile-time (unlike assert, which is runtime). */ +#define verify(name, assertion) struct name { char a[(assertion) ? 1 : -1]; } + + +/* 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 + +#include +#include + +#if STAT_MACROS_BROKEN +# undef S_ISBLK +# undef S_ISCHR +# undef S_ISDIR +# undef S_ISFIFO +# undef S_ISREG +# undef S_ISSOCK +#endif +#ifndef S_ISDIR +# define S_ISDIR(mode) (((mode) & S_IFMT) == S_IFDIR) +#endif +#ifndef S_ISREG +# define S_ISREG(mode) (((mode) & S_IFMT) == S_IFREG) +#endif +#if !defined S_ISBLK && defined S_IFBLK +# define S_ISBLK(mode) (((mode) & S_IFMT) == S_IFBLK) +#endif +#if !defined S_ISCHR && defined S_IFCHR +# define S_ISCHR(mode) (((mode) & S_IFMT) == S_IFCHR) +#endif +#if !defined S_ISFIFO && defined S_IFFIFO +# define S_ISFIFO(mode) (((mode) & S_IFMT) == S_IFFIFO) +#endif +#if !defined S_ISSOCK && defined S_IFSOCK +# define S_ISSOCK(mode) (((mode) & S_IFMT) == S_IFSOCK) +#endif +#ifndef S_IXUSR +# define S_IXUSR 0100 +#endif +#ifndef S_IXGRP +# define S_IXGRP 0010 +#endif +#ifndef S_IXOTH +# define S_IXOTH 0001 +#endif + +#if HAVE_UNISTD_H +# include +#endif + +#ifndef SEEK_SET +# define SEEK_SET 0 +#endif +#ifndef SEEK_CUR +# define SEEK_CUR 1 +#endif + +#ifndef STDIN_FILENO +# define STDIN_FILENO 0 +#endif +#ifndef STDOUT_FILENO +# define STDOUT_FILENO 1 +#endif +#ifndef STDERR_FILENO +# define STDERR_FILENO 2 +#endif + +#if HAVE_TIME_H +# include +#else +# include +#endif + +#if HAVE_FCNTL_H +# include +#else +# if HAVE_SYS_FILE_H +# include +# endif +#endif + +#if !HAVE_DUP2 +# define dup2(f, t) (close (t), fcntl (f, F_DUPFD, t)) +#endif + +#ifndef O_RDONLY +# define O_RDONLY 0 +#endif +#ifndef O_RDWR +# define O_RDWR 2 +#endif +#ifndef S_IRUSR +# define S_IRUSR 0400 +#endif +#ifndef S_IWUSR +# define S_IWUSR 0200 +#endif + +#if HAVE_SYS_WAIT_H +# include +#endif +#ifndef WEXITSTATUS +# define WEXITSTATUS(stat_val) ((unsigned int) (stat_val) >> 8) +#endif +#ifndef WIFEXITED +# define WIFEXITED(stat_val) (((stat_val) & 255) == 0) +#endif + +#ifndef STAT_BLOCKSIZE +# if HAVE_STRUCT_STAT_ST_BLKSIZE +# define STAT_BLOCKSIZE(s) ((s).st_blksize) +# else +# define STAT_BLOCKSIZE(s) (8 * 1024) +# endif +#endif + +#if HAVE_DIRENT_H +# include +# define NAMLEN(dirent) strlen ((dirent)->d_name) +#else +# define dirent direct +# define NAMLEN(dirent) ((dirent)->d_namlen) +# if HAVE_SYS_NDIR_H +# include +# endif +# if HAVE_SYS_DIR_H +# include +# endif +# if HAVE_NDIR_H +# include +# endif +#endif + +#if HAVE_STDLIB_H +# include +#else +# ifndef getenv + char *getenv (); +# endif +#endif +#ifndef EXIT_SUCCESS +# define EXIT_SUCCESS 0 +#endif +#if !EXIT_FAILURE +# undef EXIT_FAILURE /* Sony NEWS-OS 4.0C defines EXIT_FAILURE to 0. */ +# define EXIT_FAILURE 1 +#endif +#define EXIT_TROUBLE 2 + +#include +#ifndef SSIZE_MAX +# define SSIZE_MAX TYPE_MAXIMUM (ssize_t) +#endif + +#if HAVE_INTTYPES_H +# include +#endif +#ifndef PTRDIFF_MAX +# define PTRDIFF_MAX TYPE_MAXIMUM (ptrdiff_t) +#endif +#ifndef SIZE_MAX +# define SIZE_MAX TYPE_MAXIMUM (size_t) +#endif +#ifndef UINTMAX_MAX +# define UINTMAX_MAX TYPE_MAXIMUM (uintmax_t) +#endif +#if ! HAVE_STRTOUMAX && ! defined strtoumax +uintmax_t strtoumax (char const *, char **, int); +#endif + +#include + +#if STDC_HEADERS || HAVE_STRING_H +# include +#else +# if !HAVE_STRCHR +# define strchr index +# define strrchr rindex +# endif +char *strchr (), *strrchr (); +# if !HAVE_MEMCHR +# define memcmp(s1, s2, n) bcmp (s1, s2, n) +# define memcpy(d, s, n) bcopy (s, d, n) +void *memchr (); +# endif +#endif + +#if HAVE_LOCALE_H +# include +#else +# define setlocale(category, locale) +#endif + +#include + +#define _(msgid) gettext (msgid) +#define N_(msgid) msgid + +#include + +/* CTYPE_DOMAIN (C) is nonzero if the unsigned char C can safely be given + as an argument to macros like `isspace'. */ +#if STDC_HEADERS +# define CTYPE_DOMAIN(c) 1 +#else +# define CTYPE_DOMAIN(c) ((unsigned int) (c) <= 0177) +#endif +#define ISPRINT(c) (CTYPE_DOMAIN (c) && isprint (c)) +#define ISSPACE(c) (CTYPE_DOMAIN (c) && isspace (c)) + +#if STDC_HEADERS +# define TOLOWER(c) tolower (c) +#else +# ifndef _tolower +# define _tolower(c) tolower (c) +# endif +# define TOLOWER(c) (CTYPE_DOMAIN (c) && isupper (c) ? _tolower (c) : (c)) +#endif + +/* ISDIGIT differs from isdigit, as follows: + - Its arg may be any int or unsigned int; it need not be an unsigned char. + - It's guaranteed to evaluate its argument exactly once. + - It's typically faster. + POSIX 1003.1-2001 says that only '0' through '9' are digits. + Prefer ISDIGIT to isdigit unless it's important to use the locale's + definition of `digit' even when the host does not conform to POSIX. */ +#define ISDIGIT(c) ((unsigned int) (c) - '0' <= 9) + +#include +#if !STDC_HEADERS + extern int errno; +#endif + +#include +#ifndef SA_RESTART +# ifdef SA_INTERRUPT /* e.g. SunOS 4.1.x */ +# define SA_RESTART SA_INTERRUPT +# else +# define SA_RESTART 0 +# endif +#endif +#if !defined SIGCHLD && defined SIGCLD +# define SIGCHLD SIGCLD +#endif + +#undef MIN +#undef MAX +#define MIN(a, b) ((a) <= (b) ? (a) : (b)) +#define MAX(a, b) ((a) >= (b) ? (a) : (b)) + +#if HAVE_STDBOOL_H +# include +#else +# define bool unsigned char +#endif + +#if HAVE_VFORK_H +# include +#endif + +#if ! HAVE_WORKING_VFORK +# define vfork fork +#endif + +/* Type used for fast comparison of several bytes at a time. */ + +#ifndef word +# define word uintmax_t +#endif + +/* The integer type of a line number. Since files are read into main + memory, ptrdiff_t should be wide enough. */ + +typedef ptrdiff_t lin; +#define LIN_MAX PTRDIFF_MAX +verify (lin_is_signed, TYPE_SIGNED (lin)); +verify (lin_is_wide_enough, sizeof (ptrdiff_t) <= sizeof (lin)); +verify (lin_is_printable_as_long, sizeof (lin) <= sizeof (long)); + +/* This section contains POSIX-compliant defaults for macros + that are meant to be overridden by hand in config.h as needed. */ + +#ifndef file_name_cmp +# define file_name_cmp strcmp +#endif + +#ifndef initialize_main +# define initialize_main(argcp, argvp) +#endif + +#ifndef NULL_DEVICE +# define NULL_DEVICE "/dev/null" +#endif + +/* Do struct stat *S, *T describe the same special file? */ +#ifndef same_special_file +# if HAVE_ST_RDEV && defined S_ISBLK && defined S_ISCHR +# define same_special_file(s, t) \ + (((S_ISBLK ((s)->st_mode) && S_ISBLK ((t)->st_mode)) \ + || (S_ISCHR ((s)->st_mode) && S_ISCHR ((t)->st_mode))) \ + && (s)->st_rdev == (t)->st_rdev) +# else +# define same_special_file(s, t) 0 +# endif +#endif + +/* Do struct stat *S, *T describe the same file? Answer -1 if unknown. */ +#ifndef same_file +# define same_file(s, t) \ + ((((s)->st_ino == (t)->st_ino) && ((s)->st_dev == (t)->st_dev)) \ + || same_special_file (s, t)) +#endif + +/* Do struct stat *S, *T have the same file attributes? + + POSIX says that two files are identical if st_ino and st_dev are + the same, but many filesystems incorrectly assign the same (device, + inode) pair to two distinct files, including: + + - GNU/Linux NFS servers that export all local filesystems as a + single NFS filesystem, if a local device number (st_dev) exceeds + 255, or if a local inode number (st_ino) exceeds 16777215. + + - Network Appliance NFS servers in snapshot directories; see + Network Appliance bug #195. + + - ClearCase MVFS; see bug id ATRia04618. + + Check whether two files that purport to be the same have the same + attributes, to work around instances of this common bug. Do not + inspect all attributes, only attributes useful in checking for this + bug. + + It's possible for two distinct files on a buggy filesystem to have + the same attributes, but it's not worth slowing down all + implementations (or complicating the configuration) to cater to + these rare cases in buggy implementations. */ + +#ifndef same_file_attributes +# define same_file_attributes(s, t) \ + ((s)->st_mode == (t)->st_mode \ + && (s)->st_nlink == (t)->st_nlink \ + && (s)->st_uid == (t)->st_uid \ + && (s)->st_gid == (t)->st_gid \ + && (s)->st_size == (t)->st_size \ + && (s)->st_mtime == (t)->st_mtime \ + && (s)->st_ctime == (t)->st_ctime) +#endif diff --git a/src/apps/bin/diffutils-2.8.1/src/util.c b/src/apps/bin/diffutils-2.8.1/src/util.c new file mode 100644 index 0000000000..70f841284f --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/src/util.c @@ -0,0 +1,756 @@ +/* Support routines for GNU DIFF. + + Copyright (C) 1988, 1989, 1992, 1993, 1994, 1995, 1998, 2001, 2002 + Free Software Foundation, Inc. + + This file is part of GNU DIFF. + + GNU DIFF 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. + + GNU DIFF is distributed in the hope that 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; see the file COPYING. + If not, write to the Free Software Foundation, + 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + +#include "diff.h" +#include +#include +#include +#include +#include + +char const pr_program[] = PR_PROGRAM; + +/* Queue up one-line messages to be printed at the end, + when -l is specified. Each message is recorded with a `struct msg'. */ + +struct msg +{ + struct msg *next; + char args[1]; /* Format + 4 args, each '\0' terminated, concatenated. */ +}; + +/* Head of the chain of queues messages. */ + +static struct msg *msg_chain; + +/* Tail of the chain of queues messages. */ + +static struct msg **msg_chain_end = &msg_chain; + +/* Use when a system call returns non-zero status. + NAME should normally be the file name. */ + +void +perror_with_name (char const *name) +{ + error (0, errno, "%s", name); +} + +/* Use when a system call returns non-zero status and that is fatal. */ + +void +pfatal_with_name (char const *name) +{ + int e = errno; + print_message_queue (); + error (EXIT_TROUBLE, e, "%s", name); + abort (); +} + +/* Print an error message containing MSGID, then exit. */ + +void +fatal (char const *msgid) +{ + print_message_queue (); + error (EXIT_TROUBLE, 0, "%s", _(msgid)); + abort (); +} + +/* Like printf, except if -l in effect then save the message and print later. + This is used for things like "Only in ...". */ + +void +message (char const *format_msgid, char const *arg1, char const *arg2) +{ + message5 (format_msgid, arg1, arg2, 0, 0); +} + +void +message5 (char const *format_msgid, char const *arg1, char const *arg2, + char const *arg3, char const *arg4) +{ + if (paginate) + { + char *p; + char const *arg[5]; + int i; + size_t size[5]; + size_t total_size = offsetof (struct msg, args); + struct msg *new; + + arg[0] = format_msgid; + arg[1] = arg1; + arg[2] = arg2; + arg[3] = arg3 ? arg3 : ""; + arg[4] = arg4 ? arg4 : ""; + + for (i = 0; i < 5; i++) + total_size += size[i] = strlen (arg[i]) + 1; + + new = xmalloc (total_size); + + for (i = 0, p = new->args; i < 5; p += size[i++]) + memcpy (p, arg[i], size[i]); + + *msg_chain_end = new; + new->next = 0; + msg_chain_end = &new->next; + } + else + { + if (sdiff_merge_assist) + putchar (' '); + printf (_(format_msgid), arg1, arg2, arg3, arg4); + } +} + +/* Output all the messages that were saved up by calls to `message'. */ + +void +print_message_queue (void) +{ + char const *arg[5]; + int i; + struct msg *m = msg_chain; + + while (m) + { + struct msg *next = m->next; + arg[0] = m->args; + for (i = 0; i < 4; i++) + arg[i + 1] = arg[i] + strlen (arg[i]) + 1; + printf (_(arg[0]), arg[1], arg[2], arg[3], arg[4]); + free (m); + m = next; + } +} + +/* Call before outputting the results of comparing files NAME0 and NAME1 + to set up OUTFILE, the stdio stream for the output to go to. + + Usually, OUTFILE is just stdout. But when -l was specified + we fork off a `pr' and make OUTFILE a pipe to it. + `pr' then outputs to our stdout. */ + +static char const *current_name0; +static char const *current_name1; +static bool currently_recursive; + +void +setup_output (char const *name0, char const *name1, bool recursive) +{ + current_name0 = name0; + current_name1 = name1; + currently_recursive = recursive; + outfile = 0; +} + +#if HAVE_WORKING_FORK || HAVE_WORKING_VFORK +static pid_t pr_pid; +#endif + +void +begin_output (void) +{ + char *name; + + if (outfile != 0) + return; + + /* Construct the header of this piece of diff. */ + name = xmalloc (strlen (current_name0) + strlen (current_name1) + + strlen (switch_string) + 7); + + /* POSIX 1003.1-2001 specifies this format. But there are some bugs in + the standard: it says that we must print only the last component + of the pathnames, and it requires two spaces after "diff" if + there are no options. These requirements are silly and do not + match historical practice. */ + sprintf (name, "diff%s %s %s", switch_string, current_name0, current_name1); + + if (paginate) + { + if (fflush (stdout) != 0) + pfatal_with_name (_("write failed")); + + /* Make OUTFILE a pipe to a subsidiary `pr'. */ + { +#if HAVE_WORKING_FORK || HAVE_WORKING_VFORK + int pipes[2]; + + if (pipe (pipes) != 0) + pfatal_with_name ("pipe"); + + pr_pid = vfork (); + if (pr_pid < 0) + pfatal_with_name ("fork"); + + if (pr_pid == 0) + { + close (pipes[1]); + if (pipes[0] != STDIN_FILENO) + { + if (dup2 (pipes[0], STDIN_FILENO) < 0) + pfatal_with_name ("dup2"); + close (pipes[0]); + } + + execl (pr_program, pr_program, "-h", name, 0); + _exit (errno == ENOEXEC ? 126 : 127); + } + else + { + close (pipes[0]); + outfile = fdopen (pipes[1], "w"); + if (!outfile) + pfatal_with_name ("fdopen"); + } +#else + char *command = xmalloc (sizeof pr_program - 1 + 7 + + quote_system_arg ((char *) 0, name) + 1); + char *p; + sprintf (command, "%s -f -h ", pr_program); + p = command + sizeof pr_program - 1 + 7; + p += quote_system_arg (p, name); + *p = 0; + errno = 0; + outfile = popen (command, "w"); + if (!outfile) + pfatal_with_name (command); + free (command); +#endif + } + } + else + { + + /* If -l was not specified, output the diff straight to `stdout'. */ + + outfile = stdout; + + /* If handling multiple files (because scanning a directory), + print which files the following output is about. */ + if (currently_recursive) + printf ("%s\n", name); + } + + free (name); + + /* A special header is needed at the beginning of context output. */ + switch (output_style) + { + case OUTPUT_CONTEXT: + print_context_header (files, 0); + break; + + case OUTPUT_UNIFIED: + print_context_header (files, 1); + break; + + default: + break; + } +} + +/* Call after the end of output of diffs for one file. + Close OUTFILE and get rid of the `pr' subfork. */ + +void +finish_output (void) +{ + if (outfile != 0 && outfile != stdout) + { + int wstatus; + int werrno = 0; + if (ferror (outfile)) + fatal ("write failed"); +#if ! (HAVE_WORKING_FORK || HAVE_WORKING_VFORK) + wstatus = pclose (outfile); + if (wstatus == -1) + werrno = errno; +#else + if (fclose (outfile) != 0) + pfatal_with_name (_("write failed")); + if (waitpid (pr_pid, &wstatus, 0) < 0) + pfatal_with_name ("waitpid"); +#endif + if (! werrno && WIFEXITED (wstatus) && WEXITSTATUS (wstatus) == 127) + error (EXIT_TROUBLE, 0, _("subsidiary program `%s' not found"), + pr_program); + if (wstatus != 0) + error (EXIT_TROUBLE, werrno, _("subsidiary program `%s' failed"), + pr_program); + } + + outfile = 0; +} + +/* Compare two lines (typically one from each input file) + according to the command line options. + For efficiency, this is invoked only when the lines do not match exactly + but an option like -i might cause us to ignore the difference. + Return nonzero if the lines differ. */ + +bool +lines_differ (char const *s1, char const *s2) +{ + register unsigned char const *t1 = (unsigned char const *) s1; + register unsigned char const *t2 = (unsigned char const *) s2; + size_t column = 0; + + while (1) + { + register unsigned char c1 = *t1++; + register unsigned char c2 = *t2++; + + /* Test for exact char equality first, since it's a common case. */ + if (c1 != c2) + { + switch (ignore_white_space) + { + case IGNORE_ALL_SPACE: + /* For -w, just skip past any white space. */ + while (ISSPACE (c1) && c1 != '\n') c1 = *t1++; + while (ISSPACE (c2) && c2 != '\n') c2 = *t2++; + break; + + case IGNORE_SPACE_CHANGE: + /* For -b, advance past any sequence of white space in + line 1 and consider it just one space, or nothing at + all if it is at the end of the line. */ + if (ISSPACE (c1)) + { + while (c1 != '\n') + { + c1 = *t1++; + if (! ISSPACE (c1)) + { + --t1; + c1 = ' '; + break; + } + } + } + + /* Likewise for line 2. */ + if (ISSPACE (c2)) + { + while (c2 != '\n') + { + c2 = *t2++; + if (! ISSPACE (c2)) + { + --t2; + c2 = ' '; + break; + } + } + } + + if (c1 != c2) + { + /* If we went too far when doing the simple test + for equality, go back to the first non-white-space + character in both sides and try again. */ + if (c2 == ' ' && c1 != '\n' + && (unsigned char const *) s1 + 1 < t1 + && ISSPACE (t1[-2])) + { + --t1; + continue; + } + if (c1 == ' ' && c2 != '\n' + && (unsigned char const *) s2 + 1 < t2 + && ISSPACE (t2[-2])) + { + --t2; + continue; + } + } + + break; + + case IGNORE_TAB_EXPANSION: + if ((c1 == ' ' && c2 == '\t') + || (c1 == '\t' && c2 == ' ')) + { + size_t column2 = column; + for (;; c1 = *t1++) + { + if (c1 == ' ') + column++; + else if (c1 == '\t') + column += TAB_WIDTH - column % TAB_WIDTH; + else + break; + } + for (;; c2 = *t2++) + { + if (c2 == ' ') + column2++; + else if (c2 == '\t') + column2 += TAB_WIDTH - column2 % TAB_WIDTH; + else + break; + } + if (column != column2) + return 1; + } + break; + + case IGNORE_NO_WHITE_SPACE: + break; + } + + /* Lowercase all letters if -i is specified. */ + + if (ignore_case) + { + c1 = TOLOWER (c1); + c2 = TOLOWER (c2); + } + + if (c1 != c2) + break; + } + if (c1 == '\n') + return 0; + + column += c1 == '\t' ? TAB_WIDTH - column % TAB_WIDTH : 1; + } + + return 1; +} + +/* Find the consecutive changes at the start of the script START. + Return the last link before the first gap. */ + +struct change * +find_change (struct change *start) +{ + return start; +} + +struct change * +find_reverse_change (struct change *start) +{ + return start; +} + +/* Divide SCRIPT into pieces by calling HUNKFUN and + print each piece with PRINTFUN. + Both functions take one arg, an edit script. + + HUNKFUN is called with the tail of the script + and returns the last link that belongs together with the start + of the tail. + + PRINTFUN takes a subscript which belongs together (with a null + link at the end) and prints it. */ + +void +print_script (struct change *script, + struct change * (*hunkfun) (struct change *), + void (*printfun) (struct change *)) +{ + struct change *next = script; + + while (next) + { + struct change *this, *end; + + /* Find a set of changes that belong together. */ + this = next; + end = (*hunkfun) (next); + + /* Disconnect them from the rest of the changes, + making them a hunk, and remember the rest for next iteration. */ + next = end->link; + end->link = 0; +#ifdef DEBUG + debug_script (this); +#endif + + /* Print this hunk. */ + (*printfun) (this); + + /* Reconnect the script so it will all be freed properly. */ + end->link = next; + } +} + +/* Print the text of a single line LINE, + flagging it with the characters in LINE_FLAG (which say whether + the line is inserted, deleted, changed, etc.). */ + +void +print_1_line (char const *line_flag, char const *const *line) +{ + char const *base = line[0], *limit = line[1]; /* Help the compiler. */ + FILE *out = outfile; /* Help the compiler some more. */ + char const *flag_format = 0; + + /* If -T was specified, use a Tab between the line-flag and the text. + Otherwise use a Space (as Unix diff does). + Print neither space nor tab if line-flags are empty. */ + + if (line_flag && *line_flag) + { + flag_format = initial_tab ? "%s\t" : "%s "; + fprintf (out, flag_format, line_flag); + } + + output_1_line (base, limit, flag_format, line_flag); + + if ((!line_flag || line_flag[0]) && limit[-1] != '\n') + fprintf (out, "\n\\ %s\n", _("No newline at end of file")); +} + +/* Output a line from BASE up to LIMIT. + With -t, expand white space characters to spaces, and if FLAG_FORMAT + is nonzero, output it with argument LINE_FLAG after every + internal carriage return, so that tab stops continue to line up. */ + +void +output_1_line (char const *base, char const *limit, char const *flag_format, + char const *line_flag) +{ + if (!expand_tabs) + fwrite (base, limit - base, 1, outfile); + else + { + register FILE *out = outfile; + register unsigned char c; + register char const *t = base; + register unsigned int column = 0; + + while (t < limit) + switch ((c = *t++)) + { + case '\t': + { + unsigned int spaces = TAB_WIDTH - column % TAB_WIDTH; + column += spaces; + do + putc (' ', out); + while (--spaces); + } + break; + + case '\r': + putc (c, out); + if (flag_format && t < limit && *t != '\n') + fprintf (out, flag_format, line_flag); + column = 0; + break; + + case '\b': + if (column == 0) + continue; + column--; + putc (c, out); + break; + + default: + if (ISPRINT (c)) + column++; + putc (c, out); + break; + } + } +} + +char const change_letter[] = { 0, 'd', 'a', 'c' }; + +/* Translate an internal line number (an index into diff's table of lines) + into an actual line number in the input file. + The internal line number is I. FILE points to the data on the file. + + Internal line numbers count from 0 starting after the prefix. + Actual line numbers count from 1 within the entire file. */ + +lin +translate_line_number (struct file_data const *file, lin i) +{ + return i + file->prefix_lines + 1; +} + +/* Translate a line number range. This is always done for printing, + so for convenience translate to long rather than lin, so that the + caller can use printf with "%ld" without casting. */ + +void +translate_range (struct file_data const *file, + lin a, lin b, + long *aptr, long *bptr) +{ + *aptr = translate_line_number (file, a - 1) + 1; + *bptr = translate_line_number (file, b + 1) - 1; +} + +/* Print a pair of line numbers with SEPCHAR, translated for file FILE. + If the two numbers are identical, print just one number. + + Args A and B are internal line numbers. + We print the translated (real) line numbers. */ + +void +print_number_range (char sepchar, struct file_data *file, lin a, lin b) +{ + long trans_a, trans_b; + translate_range (file, a, b, &trans_a, &trans_b); + + /* Note: we can have B < A in the case of a range of no lines. + In this case, we should print the line number before the range, + which is B. */ + if (trans_b > trans_a) + fprintf (outfile, "%ld%c%ld", trans_a, sepchar, trans_b); + else + fprintf (outfile, "%ld", trans_b); +} + +/* Look at a hunk of edit script and report the range of lines in each file + that it applies to. HUNK is the start of the hunk, which is a chain + of `struct change'. The first and last line numbers of file 0 are stored in + *FIRST0 and *LAST0, and likewise for file 1 in *FIRST1 and *LAST1. + Note that these are internal line numbers that count from 0. + + If no lines from file 0 are deleted, then FIRST0 is LAST0+1. + + Return UNCHANGED if only ignorable lines are inserted or deleted, + OLD if lines of file 0 are deleted, + NEW if lines of file 1 are inserted, + and CHANGED if both kinds of changes are found. */ + +enum changes +analyze_hunk (struct change *hunk, + lin *first0, lin *last0, + lin *first1, lin *last1) +{ + struct change *next; + lin l0, l1; + lin show_from, show_to; + lin i; + bool trivial = ignore_blank_lines || ignore_regexp.fastmap; + size_t trivial_length = (int) ignore_blank_lines - 1; + /* If 0, ignore zero-length lines; + if SIZE_MAX, do not ignore lines just because of their length. */ + + char const * const *linbuf0 = files[0].linbuf; /* Help the compiler. */ + char const * const *linbuf1 = files[1].linbuf; + + show_from = show_to = 0; + + *first0 = hunk->line0; + *first1 = hunk->line1; + + next = hunk; + do + { + l0 = next->line0 + next->deleted - 1; + l1 = next->line1 + next->inserted - 1; + show_from += next->deleted; + show_to += next->inserted; + + for (i = next->line0; i <= l0 && trivial; i++) + { + char const *line = linbuf0[i]; + size_t len = linbuf0[i + 1] - line - 1; + if (len != trivial_length + && (! ignore_regexp.fastmap + || re_search (&ignore_regexp, line, len, 0, len, 0) < 0)) + trivial = 0; + } + + for (i = next->line1; i <= l1 && trivial; i++) + { + char const *line = linbuf1[i]; + size_t len = linbuf1[i + 1] - line - 1; + if (len != trivial_length + && (! ignore_regexp.fastmap + || re_search (&ignore_regexp, line, len, 0, len, 0) < 0)) + trivial = 0; + } + } + while ((next = next->link) != 0); + + *last0 = l0; + *last1 = l1; + + /* If all inserted or deleted lines are ignorable, + tell the caller to ignore this hunk. */ + + if (trivial) + return UNCHANGED; + + return (show_from ? OLD : UNCHANGED) | (show_to ? NEW : UNCHANGED); +} + +/* Concatenate three strings, returning a newly malloc'd string. */ + +char * +concat (char const *s1, char const *s2, char const *s3) +{ + char *new = xmalloc (strlen (s1) + strlen (s2) + strlen (s3) + 1); + sprintf (new, "%s%s%s", s1, s2, s3); + return new; +} + +/* Yield a new block of SIZE bytes, initialized to zero. */ + +void * +zalloc (size_t size) +{ + void *p = xmalloc (size); + memset (p, 0, size); + return p; +} + +/* Yield the newly malloc'd pathname + of the file in DIR whose filename is FILE. */ + +char * +dir_file_pathname (char const *dir, char const *file) +{ + char const *base = base_name (dir); + bool omit_slash = !*base || base[strlen (base) - 1] == '/'; + return concat (dir, "/" + omit_slash, file); +} + +void +debug_script (struct change *sp) +{ + fflush (stdout); + + for (; sp; sp = sp->link) + { + long line0 = sp->line0; + long line1 = sp->line1; + long deleted = sp->deleted; + long inserted = sp->inserted; + fprintf (stderr, "%3ld %3ld delete %ld insert %ld\n", + line0, line1, deleted, inserted); + } + + fflush (stderr); +} diff --git a/src/apps/bin/diffutils-2.8.1/src/version.c b/src/apps/bin/diffutils-2.8.1/src/version.c new file mode 100644 index 0000000000..229621f0d4 --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/src/version.c @@ -0,0 +1,2 @@ +#include +char const version_string[] = "(GNU diffutils) 2.8.1"; diff --git a/src/apps/bin/diffutils-2.8.1/stamp-h b/src/apps/bin/diffutils-2.8.1/stamp-h new file mode 100644 index 0000000000..efb5edd92f --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/stamp-h @@ -0,0 +1 @@ +Mon Feb 16 12:15:36 EST 2004 diff --git a/src/apps/bin/diffutils-2.8.1/stamp-h1 b/src/apps/bin/diffutils-2.8.1/stamp-h1 new file mode 100644 index 0000000000..3bd2b7e53e --- /dev/null +++ b/src/apps/bin/diffutils-2.8.1/stamp-h1 @@ -0,0 +1 @@ +timestamp for config.h:config.hin