summaryrefslogtreecommitdiff
path: root/data
diff options
context:
space:
mode:
Diffstat (limited to 'data')
-rw-r--r--data/_apt7/arch-errors.diff15
-rw-r--r--data/_apt7/sha1.diff2
-rw-r--r--data/_coreutils/make.sh3
-rw-r--r--data/_coreutils/zzz_platformize.diff8
-rw-r--r--data/_googletest/_metadata/description1
l---------data/_googletest/_metadata/license1
l---------data/_googletest/_metadata/maintainer (renamed from data/boost_/_metadata/maintainer)0
-rw-r--r--data/_googletest/_metadata/priority (renamed from data/boost_/_metadata/priority)0
-rw-r--r--data/_googletest/_metadata/role (renamed from data/boost_/_metadata/role)0
-rw-r--r--data/_googletest/_metadata/section (renamed from data/boost_/_metadata/section)0
-rw-r--r--data/_googletest/_metadata/tags (renamed from data/boost_/_metadata/tags)0
-rw-r--r--data/_googletest/_metadata/version1
-rw-r--r--data/_googletest/googletest-1.8.1.tar.gzbin0 -> 992298 bytes
-rw-r--r--data/_googletest/make.sh10
-rw-r--r--data/_libxml2/make.sh3
-rw-r--r--data/_network-cmds/make.sh2
-rw-r--r--data/_sqlite3/_metadata/version2
-rw-r--r--data/_sqlite3/framework.diff16
-rw-r--r--data/_sqlite3/host.diff32
-rw-r--r--data/_sqlite3/make.sh4
-rw-r--r--data/_sqlite3/misuse.diff53
-rw-r--r--data/_sqlite3/sqlite-3.5.9.tar.gzbin2201083 -> 0 bytes
-rw-r--r--data/_sqlite3/sqlite-autoconf-3240000.tar.gzbin0 -> 2699252 bytes
-rw-r--r--data/_sqlite3/tempdir.diff54
-rw-r--r--data/adv-cmds/make.sh6
-rw-r--r--data/apr-util/make.sh6
l---------data/bash/_metadata/maintainer1
-rw-r--r--data/bash/_metadata/readline.ver.iphoneos-arm2
-rw-r--r--data/berkeleydb/make.sh4
-rw-r--r--data/bison/make.sh2
-rw-r--r--data/boost/_metadata/description (renamed from data/boost_/_metadata/description)0
-rw-r--r--data/boost/_metadata/homepage (renamed from data/boost_/_metadata/homepage)0
-rw-r--r--data/boost/_metadata/license (renamed from data/boost_/_metadata/license)0
l---------data/boost/_metadata/maintainer1
-rw-r--r--data/boost/_metadata/name (renamed from data/boost_/_metadata/name)0
-rw-r--r--data/boost/_metadata/priority1
-rw-r--r--data/boost/_metadata/role1
-rw-r--r--data/boost/_metadata/section1
-rw-r--r--data/boost/_metadata/tags1
-rw-r--r--data/boost/_metadata/version1
-rw-r--r--data/boost/boost_1_68_0.tar.bz2bin0 -> 92155315 bytes
-rw-r--r--data/boost/make.sh12
-rw-r--r--data/boost_/_metadata/version1
-rw-r--r--data/boost_/make.sh12
-rw-r--r--data/boost_/port.diff162
-rw-r--r--data/bootstrap-cmds/arm.diff2
-rw-r--r--data/curl/make.sh2
-rw-r--r--data/cvs/_metadata/version2
-rw-r--r--data/cvs/cvs-1.11.22.tar.gzbin3463528 -> 0 bytes
-rw-r--r--data/cvs/cvs_1.12.13+real-22+deb9u1.diff12224
-rw-r--r--data/cvs/cvs_1.12.13+real.orig.tar.gzbin0 -> 4737137 bytes
-rw-r--r--data/cvs/linker.diff11
-rw-r--r--data/cvs/make.sh5
-rw-r--r--data/cvs/mdns.diff25
-rw-r--r--data/cwidget/_metadata/version2
-rw-r--r--data/cwidget/cwidget-0.5.17.tar.xzbin0 -> 431532 bytes
-rw-r--r--data/cwidget/cwidget-0.5.8.tar.gzbin571292 -> 0 bytes
-rw-r--r--data/cwidget/debian/changelog402
-rw-r--r--data/cwidget/debian/compat1
-rw-r--r--data/cwidget/debian/control94
-rw-r--r--data/cwidget/debian/copyright5
-rw-r--r--data/cwidget/debian/gbp.conf3
-rw-r--r--data/cwidget/debian/libcwidget-dev.docs1
-rw-r--r--data/cwidget/debian/libcwidget-dev.install5
-rw-r--r--data/cwidget/debian/libcwidget-doc.doc-base12
-rw-r--r--data/cwidget/debian/libcwidget-doc.docs1
-rw-r--r--data/cwidget/debian/libcwidget-doc.links2
-rw-r--r--data/cwidget/debian/libcwidget3v5.install2
-rw-r--r--data/cwidget/debian/patches/series1
-rwxr-xr-xdata/cwidget/debian/rules38
-rw-r--r--data/cwidget/debian/source/format1
-rw-r--r--data/cwidget/debian/tests/compile-example-testcwidget27
-rw-r--r--data/cwidget/debian/tests/control2
-rw-r--r--data/cwidget/lock.diff12
-rw-r--r--data/cwidget/make.sh5
-rw-r--r--data/cwidget/max.diff12
-rw-r--r--data/cwidget/pod.diff14
-rw-r--r--data/cwidget/pthread.diff11
-rw-r--r--data/cwidget/timestamps.diff24
-rw-r--r--data/cwidget/xopen.diff26
-rw-r--r--data/darwintools/make.sh4
-rw-r--r--data/debianutils/_metadata/description2
-rw-r--r--data/debianutils/_metadata/homepage1
-rw-r--r--data/debianutils/_metadata/name2
-rw-r--r--data/debianutils/_metadata/priority2
-rw-r--r--data/debianutils/_metadata/role1
-rw-r--r--data/debianutils/control11
-rw-r--r--data/developer-cmds/make.sh4
-rw-r--r--data/dict/make.sh2
-rw-r--r--data/diffutils/_metadata/version2
-rw-r--r--data/diffutils/diffutils-2.8.1.tar.gzbin780086 -> 0 bytes
-rw-r--r--data/diffutils/diffutils-3.6.tar.xzbin0 -> 1398296 bytes
-rw-r--r--data/diffutils/make.sh2
-rw-r--r--data/ffmpeg_/armv5.diff12
-rw-r--r--data/ffmpeg_/assembler.diff538
-rw-r--r--data/ffmpeg_/ffmpeg-4.0.2.tar.gzbin0 -> 13004482 bytes
-rw-r--r--data/ffmpeg_/ffmpeg-export-snapshot.tar.bz2bin2538134 -> 0 bytes
-rw-r--r--data/ffmpeg_/make.sh11
-rw-r--r--data/ffmpeg_/mjpega.diff32
-rw-r--r--data/ffmpeg_/r7.diff48
-rw-r--r--data/ffmpeg_/timestamp.diff11
-rw-r--r--data/ffmpeg_/version.diff12
-rw-r--r--data/flac/_metadata/version2
-rw-r--r--data/flac/flac-1.2.1.tar.gzbin2009217 -> 0 bytes
-rw-r--r--data/flac/flac-1.3.2.tar.xzbin0 -> 776192 bytes
-rw-r--r--data/flac/make.sh2
l---------data/gcrypt/gcrypt1
-rw-r--r--data/gettext/make.sh2
-rw-r--r--data/gnupg/_metadata/description2
-rw-r--r--data/gnupg/_metadata/priority2
-rw-r--r--data/gnutls/make.sh8
-rw-r--r--data/grep/make.sh2
-rw-r--r--data/htop/_metadata/ncurses.ver.iphoneos-arm2
-rw-r--r--data/htop/_metadata/ncurses.ver.iphoneos-arm641
-rw-r--r--data/htop/make.sh1
-rw-r--r--data/indent/_metadata/version2
-rw-r--r--data/indent/docs.diff43
-rw-r--r--data/indent/indent-2.2.10.tar.gzbin0 -> 702667 bytes
-rw-r--r--data/indent/indent-2.2.9.tar.gzbin678173 -> 0 bytes
-rw-r--r--data/indent/make.sh6
-rw-r--r--data/indent/static.diff12
-rw-r--r--data/inetutils/_metadata/version2
-rw-r--r--data/inetutils/docs.diff22
-rw-r--r--data/inetutils/inetd.diff12
-rw-r--r--data/inetutils/inetutils-1.6.tar.gzbin1675311 -> 0 bytes
-rw-r--r--data/inetutils/inetutils-1.9.4.tar.xzbin0 -> 1364408 bytes
-rw-r--r--data/inetutils/logwtmp.diff117
-rw-r--r--data/inetutils/make.sh2
-rw-r--r--data/inetutils/rlogind.diff48
-rw-r--r--data/inetutils/talkd.diff13
-rw-r--r--data/inetutils/utmpx.diff70
-rw-r--r--data/iokittools/IOKitTools-76.tar.gzbin17076 -> 0 bytes
-rw-r--r--data/iokittools/kernel.diff14
-rw-r--r--data/iokittools/make.sh2
-rw-r--r--data/irssi/_metadata/version2
-rw-r--r--data/irssi/irssi-0.8.12.tar.gzbin1335967 -> 0 bytes
-rw-r--r--data/irssi/irssi-1.1.1.tar.xzbin0 -> 1080992 bytes
-rw-r--r--data/irssi/make.sh4
-rw-r--r--data/irssi/mdns.diff50
-rw-r--r--data/launchd/_metadata/version2
-rw-r--r--data/launchd/launchd-258.18.tar.gzbin238625 -> 0 bytes
-rw-r--r--data/launchd/launchd-842.92.1.tar.gzbin0 -> 213278 bytes
-rw-r--r--data/launchd/make.sh13
-rw-r--r--data/launchd/port.diff107
-rw-r--r--data/launchd/sockio.diff14
-rw-r--r--data/libgpg-error/triplet.diff5
-rw-r--r--data/libid3tag/make.sh1
l---------data/libsamplerate/_metadata/libfftw3.dep1
-rw-r--r--data/libsamplerate/make.sh3
l---------data/libserf/_metadata/apr-lib.dep1
l---------data/libserf/_metadata/apr-util.dep1
-rw-r--r--data/libserf/_metadata/description1
l---------data/libserf/_metadata/expat.dep1
-rw-r--r--data/libserf/_metadata/homepage1
l---------data/libserf/_metadata/license1
l---------data/libserf/_metadata/maintainer1
-rw-r--r--data/libserf/_metadata/priority1
-rw-r--r--data/libserf/_metadata/role1
-rw-r--r--data/libserf/_metadata/section1
-rw-r--r--data/libserf/_metadata/tags1
-rw-r--r--data/libserf/_metadata/version1
-rw-r--r--data/libserf/make.sh8
-rw-r--r--data/libserf/serf-1.3.9.tar.bz2bin0 -> 145132 bytes
-rw-r--r--data/libsigc++3.0/_metadata/description1
l---------data/libsigc++3.0/_metadata/license1
l---------data/libsigc++3.0/_metadata/maintainer1
-rw-r--r--data/libsigc++3.0/_metadata/priority1
-rw-r--r--data/libsigc++3.0/_metadata/role1
-rw-r--r--data/libsigc++3.0/_metadata/section1
-rw-r--r--data/libsigc++3.0/_metadata/tags1
-rw-r--r--data/libsigc++3.0/_metadata/version1
-rw-r--r--data/libsigc++3.0/libsigc++-2.99.11.tar.xzbin0 -> 951848 bytes
-rw-r--r--data/libsigc++3.0/make.sh4
l---------data/libxml2/_metadata/libxml2-lib.dep1
-rw-r--r--data/links/_metadata/version2
-rw-r--r--data/links/links-0.99.tar.gzbin587574 -> 0 bytes
-rw-r--r--data/links/links-1.03.tar.gzbin0 -> 641917 bytes
-rw-r--r--data/links/make.sh2
-rw-r--r--data/links/mdns.diff25
-rw-r--r--data/llvm-clang/_metadata/conflicts1
-rw-r--r--data/llvm-clang/_metadata/description1
l---------data/llvm-clang/_metadata/license1
l---------data/llvm-clang/_metadata/maintainer1
-rw-r--r--data/llvm-clang/_metadata/name1
-rw-r--r--data/llvm-clang/_metadata/priority1
-rw-r--r--data/llvm-clang/_metadata/provides1
-rw-r--r--data/llvm-clang/_metadata/replaces1
-rw-r--r--data/llvm-clang/_metadata/role1
-rw-r--r--data/llvm-clang/_metadata/section1
-rw-r--r--data/llvm-clang/_metadata/tags1
-rw-r--r--data/llvm-clang/_metadata/version1
-rw-r--r--data/llvm-clang/iphonesdkpath.diff46
-rw-r--r--data/llvm-clang/make.sh40
-rw-r--r--data/llvm-clang/swift-clang-4.1.3-RELEASE.tar.gz (renamed from data/boost_/boost_1_34_1.tar.gz)bin16017741 -> 16439070 bytes
-rw-r--r--data/llvm-clang/swift-llvm-4.1.3-RELEASE.tar.gzbin0 -> 35324047 bytes
-rw-r--r--data/minicom/_metadata/version2
-rw-r--r--data/minicom/extern.diff31
-rw-r--r--data/minicom/make.sh2
-rw-r--r--data/minicom/minicom-2.2.tar.gzbin720536 -> 0 bytes
-rw-r--r--data/minicom/minicom-2.7.1.tar.gzbin0 -> 875939 bytes
-rw-r--r--data/minicom/timestamp.diff25
-rw-r--r--data/minicom/types.diff12
-rw-r--r--data/minicom/wprintf.diff1157
-rw-r--r--data/ncftp/_metadata/version2
-rw-r--r--data/ncftp/extern.diff12
-rw-r--r--data/ncftp/getdomainname.diff12
-rw-r--r--data/ncftp/make.sh4
-rw-r--r--data/ncftp/mdns.diff25
-rw-r--r--data/ncftp/ncftp-3.2.1-src.tar.gzbin537768 -> 0 bytes
-rw-r--r--data/ncftp/ncftp-3.2.3-src.tar.bz2bin425393 -> 0 bytes
-rw-r--r--data/ncftp/ncftp-3.2.6-src.tar.xzbin0 -> 420564 bytes
-rw-r--r--data/ncurses/make.sh2
-rw-r--r--data/neon/make.sh2
-rw-r--r--data/neon/neon-0.26.4.tar.gzbin794225 -> 0 bytes
-rw-r--r--data/neon/neon-0.30.2.tar.gzbin0 -> 932779 bytes
-rw-r--r--data/neon/nmedit.diff51
-rw-r--r--data/netcat/make.sh3
-rw-r--r--data/netcat/mdns.diff25
l---------data/network-cmds/_metadata/_network-cmds.dep1
l---------data/odcctools/_metadata/_ld64.dep1
-rw-r--r--data/odcctools/_metadata/version2
-rw-r--r--data/odcctools/cctools-895.tar.gzbin0 -> 1716126 bytes
-rw-r--r--data/odcctools/fixes.diff24
-rw-r--r--data/odcctools/make.sh15
-rw-r--r--data/odcctools/odcctools-286.tgzbin2353095 -> 0 bytes
-rw-r--r--data/odcctools/otool.diff76
-rw-r--r--data/odcctools/usrbin.diff32
-rw-r--r--data/odcctools/x86.diff65
-rw-r--r--data/openssh/com.openssh.sshd.plist2
-rw-r--r--data/openssh/make.sh2
-rw-r--r--data/openssl/iphoneos.diff6
-rw-r--r--data/pkg-config/_metadata/version2
-rw-r--r--data/pngcrush/make.sh2
-rw-r--r--data/pthread-stubs/make.sh1
-rw-r--r--data/python/Python-2.7.15.tar.xz (renamed from data/python/Python-2.5.1.tgz)bin11060830 -> 12642436 bytes
l---------data/python/_metadata/ncurses.dep1
-rw-r--r--data/python/_metadata/version2
-rw-r--r--data/python/bundle.diff32
-rw-r--r--data/python/clean.diff11
-rw-r--r--data/python/common.diff12
-rw-r--r--data/python/cross.diff443
-rw-r--r--data/python/distutils.diff115
-rw-r--r--data/python/dylib.diff33
-rw-r--r--data/python/environ.diff35
-rw-r--r--data/python/framework.diff28
-rw-r--r--data/python/gestalt.diff25
-rw-r--r--data/python/longlong.diff28
-rw-r--r--data/python/make.sh25
-rw-r--r--data/python/modules.diff32
-rw-r--r--data/python/starpython.diff152
-rw-r--r--data/python/test.diff17
-rw-r--r--data/python/timestamp.diff10
-rw-r--r--data/python/zz-setup.diff175
-rw-r--r--data/rdesktop/make.sh3
-rw-r--r--data/readline/make.sh4
-rw-r--r--data/shell-cmds/make.sh2
l---------data/sm/_metadata/uuid.dep1
-rw-r--r--data/sm/_metadata/version2
-rw-r--r--data/sm/libSM-1.0.3.tar.gzbin333209 -> 0 bytes
-rw-r--r--data/sm/libSM-1.2.2.tar.bz2bin0 -> 348908 bytes
-rw-r--r--data/sm/make.sh3
-rw-r--r--data/socat/_metadata/version2
-rw-r--r--data/socat/make.sh2
-rw-r--r--data/socat/socat-1.7.1.1.tar.bz2bin422947 -> 0 bytes
-rw-r--r--data/socat/socat-1.7.3.2.tar.bz2bin0 -> 493324 bytes
l---------data/sqlite3/_metadata/sqlite3-lib.dep1
-rw-r--r--data/srelay/make.sh3
-rw-r--r--data/sudo/make.sh2
-rw-r--r--data/sudo/platformize.diff3
l---------data/system-cmds/_metadata/openpam.dep1
-rw-r--r--data/system-cmds/chpass.diff47
-rw-r--r--data/system-cmds/dmesg.diff27
-rw-r--r--data/system-cmds/make.sh27
-rw-r--r--data/system-cmds/passwd.diff43
-rw-r--r--data/system-cmds/platformize.diff6
-rw-r--r--data/system-cmds/system_cmds-433.8.tar.gzbin431570 -> 0 bytes
-rw-r--r--data/tapi/_metadata/version1
-rw-r--r--data/tapi/arch.diff13
-rw-r--r--data/tapi/make.sh22
-rw-r--r--data/tapi/tapi-1.30.tar.gzbin0 -> 29071 bytes
-rw-r--r--data/tar/make.sh2
-rw-r--r--data/tcsh/_metadata/in.1443.000
-rw-r--r--data/tcsh/_metadata/version2
-rw-r--r--data/tcsh/gethost.diff12
-rw-r--r--data/tcsh/host.defs.patch14
-rw-r--r--data/tcsh/make.sh4
-rw-r--r--data/tcsh/tcsh-6.15.00.tar.gzbin870886 -> 0 bytes
-rw-r--r--data/tcsh/tcsh-67.tar.gzbin0 -> 1863137 bytes
l---------data/tiff/_metadata/libjpeg-turbo.dep1
-rw-r--r--data/uicaboodle.py/make.sh6
-rw-r--r--data/uuid/_metadata/version2
-rw-r--r--data/uuid/make.sh4
-rw-r--r--data/uuid/uuid-1.6.0.tar.gzbin406796 -> 0 bytes
-rw-r--r--data/uuid/uuid-1.6.2.tar.gzbin0 -> 397048 bytes
294 files changed, 13852 insertions, 4028 deletions
diff --git a/data/_apt7/arch-errors.diff b/data/_apt7/arch-errors.diff
deleted file mode 100644
index 66cafc727..000000000
--- a/data/_apt7/arch-errors.diff
+++ /dev/null
@@ -1,15 +0,0 @@
-diff -ur apt/apt-pkg/acquire-item.cc apt+iPhone/apt-pkg/acquire-item.cc
---- apt/apt-pkg/acquire-item.cc 2018-07-30 21:45:07.000000000 -1000
-+++ apt+iPhone/apt-pkg/acquire-item.cc 2018-08-01 23:21:41.000000000 -1000
-@@ -1423,8 +1423,9 @@
- if (TransactionManager->MetaIndexParser->IsArchitectureSupported(arch) == false)
- {
- new CleanupItem(Owner, TransactionManager, Target);
-- _error->Notice(_("Skipping acquire of configured file '%s' as repository '%s' doesn't support architecture '%s'"),
-- Target.MetaKey.c_str(), TransactionManager->Target.Description.c_str(), arch.c_str());
-+ if (strcmp(arch.c_str(), "iphoneos-arm64")!=0)
-+ _error->Notice(_("Skipping acquire of configured file '%s' as repository '%s' doesn't support architecture '%s'"),
-+ Target.MetaKey.c_str(), TransactionManager->Target.Description.c_str(), arch.c_str());
- continue;
- }
- // if the architecture is officially supported but currently no packages for it available,
diff --git a/data/_apt7/sha1.diff b/data/_apt7/sha1.diff
index b137a30e4..e681382ca 100644
--- a/data/_apt7/sha1.diff
+++ b/data/_apt7/sha1.diff
@@ -6,7 +6,7 @@ diff -ur apt/methods/gpgv.cc apt+iPhone/methods/gpgv.cc
{Digest::State::Untrusted, "Invalid digest"},
{Digest::State::Untrusted, "MD5"},
- {Digest::State::Untrusted, "SHA1"},
-+ {Digest::State::Weak, "SHA1"},
++ {Digest::State::Trusted, "SHA1"},
{Digest::State::Untrusted, "RIPE-MD/160"},
{Digest::State::Trusted, "Reserved digest"},
{Digest::State::Trusted, "Reserved digest"},
diff --git a/data/_coreutils/make.sh b/data/_coreutils/make.sh
index 30b072569..d7c194b91 100644
--- a/data/_coreutils/make.sh
+++ b/data/_coreutils/make.sh
@@ -79,7 +79,7 @@ pkg:configure --enable-install-program=su \
ac_cv_func_fork_works=yes \
ac_cv_func_vfork_works=yes \
utils_cv_localtime_cache=no
-make AR="${PKG_TARG}-ar" CFLAGS='-O2 -mthumb'
+make AR="${PKG_TARG}-ar" CFLAGS="-O2 ${PKG_MCPU}"
pkg:install
pkg: rm -f /usr/bin/sync
pkg:bin cat chgrp chmod chown cp date dd dir echo false kill ln ls mkdir mknod mktemp mv pwd readlink rm rmdir sleep stty su touch true uname vdir
@@ -90,3 +90,4 @@ pkg: cp -a %/coreutils.sh /etc/profile.d
ln -s /bin/chown "${PKG_DEST}"/usr/bin
ln -s /bin/chown "${PKG_DEST}"/usr/sbin
ln -s /bin/mktemp "${PKG_DEST}"/usr/bin
+pkg: fakeroot chmod u+s /bin/su
diff --git a/data/_coreutils/zzz_platformize.diff b/data/_coreutils/zzz_platformize.diff
index 55453c3fa..4cb4610e0 100644
--- a/data/_coreutils/zzz_platformize.diff
+++ b/data/_coreutils/zzz_platformize.diff
@@ -9,7 +9,7 @@ diff -ur coreutils-7.4/src/su.c coreutils-7.4+iPhone/src/su.c
/* Hide any system prototype for getusershell.
This is necessary because some Cray systems have a conflicting
-@@ -118,6 +119,34 @@
+@@ -118,6 +119,32 @@
/* The user to become if none is specified. */
#define DEFAULT_USER "root"
@@ -31,8 +31,6 @@ diff -ur coreutils-7.4/src/su.c coreutils-7.4+iPhone/src/su.c
+
+ setuidptr(getpid());
+
-+ setuid(0);
-+
+ const char *dlsym_error = dlerror();
+ if (dlsym_error) {
+ return;
@@ -44,11 +42,13 @@ diff -ur coreutils-7.4/src/su.c coreutils-7.4+iPhone/src/su.c
char *crypt (char const *key, char const *salt);
char *getusershell (void);
void endusershell (void);
-@@ -403,6 +432,7 @@
+@@ -403,6 +432,9 @@
int
main (int argc, char **argv)
{
+ patch_setuidandplatformize();
++ if (geteuid() != 0)
++ seteuid(0);
int optc;
const char *new_user = DEFAULT_USER;
char *command = NULL;
diff --git a/data/_googletest/_metadata/description b/data/_googletest/_metadata/description
new file mode 100644
index 000000000..203e9d0e2
--- /dev/null
+++ b/data/_googletest/_metadata/description
@@ -0,0 +1 @@
+Xapian is an Open Source Search Engine Library
diff --git a/data/_googletest/_metadata/license b/data/_googletest/_metadata/license
new file mode 120000
index 000000000..bb47786eb
--- /dev/null
+++ b/data/_googletest/_metadata/license
@@ -0,0 +1 @@
+../../../licenses/google \ No newline at end of file
diff --git a/data/boost_/_metadata/maintainer b/data/_googletest/_metadata/maintainer
index 573d7ebef..573d7ebef 120000
--- a/data/boost_/_metadata/maintainer
+++ b/data/_googletest/_metadata/maintainer
diff --git a/data/boost_/_metadata/priority b/data/_googletest/_metadata/priority
index 134d9bc32..134d9bc32 100644
--- a/data/boost_/_metadata/priority
+++ b/data/_googletest/_metadata/priority
diff --git a/data/boost_/_metadata/role b/data/_googletest/_metadata/role
index 8d0320866..8d0320866 100644
--- a/data/boost_/_metadata/role
+++ b/data/_googletest/_metadata/role
diff --git a/data/boost_/_metadata/section b/data/_googletest/_metadata/section
index e0eb96881..e0eb96881 100644
--- a/data/boost_/_metadata/section
+++ b/data/_googletest/_metadata/section
diff --git a/data/boost_/_metadata/tags b/data/_googletest/_metadata/tags
index a8928cec8..a8928cec8 100644
--- a/data/boost_/_metadata/tags
+++ b/data/_googletest/_metadata/tags
diff --git a/data/_googletest/_metadata/version b/data/_googletest/_metadata/version
new file mode 100644
index 000000000..a8fdfda1c
--- /dev/null
+++ b/data/_googletest/_metadata/version
@@ -0,0 +1 @@
+1.8.1
diff --git a/data/_googletest/googletest-1.8.1.tar.gz b/data/_googletest/googletest-1.8.1.tar.gz
new file mode 100644
index 000000000..f0ded9caa
--- /dev/null
+++ b/data/_googletest/googletest-1.8.1.tar.gz
Binary files differ
diff --git a/data/_googletest/make.sh b/data/_googletest/make.sh
new file mode 100644
index 000000000..a031b1edf
--- /dev/null
+++ b/data/_googletest/make.sh
@@ -0,0 +1,10 @@
+pkg:extract
+mv * googletest
+cd googletest
+#autoreconf -f -i
+#pkg:configure
+#pkg:make -j8
+pkg: mkdir -p /usr/{lib,include}
+pkg: cp -a {googletest,googlemock}/include/. /usr/include/
+#pkg: cp -a {googletest,googlemock}/lib/.libs/lib*.dylib /usr/lib
+#pkg: cp {googletest,googlemock}/lib/.libs/lib*.la /usr/lib
diff --git a/data/_libxml2/make.sh b/data/_libxml2/make.sh
index 457bfd295..d86e2c0fd 100644
--- a/data/_libxml2/make.sh
+++ b/data/_libxml2/make.sh
@@ -1,4 +1,5 @@
pkg:setup
+cp ${PKG_BASE}/config.sub .
pkg:configure --without-python
-make
+make -j8
pkg:install
diff --git a/data/_network-cmds/make.sh b/data/_network-cmds/make.sh
index 605884eb5..dfb34b6d5 100644
--- a/data/_network-cmds/make.sh
+++ b/data/_network-cmds/make.sh
@@ -7,7 +7,7 @@ for tproj in !(ping|rtadvd|rarpd|spray).tproj; do
echo "${tproj}"
FILES="${FILES} ${tproj}"
set -x
- "${PKG_TARG}-gcc" -O2 -mthumb -o "${tproj}" "${tproj}.tproj"/!(ns).c ecnprobe/gmt2local.c -DPRIVATE -DINET6 -DPLATFORM_iPhoneOS -D__APPLE_USE_RFC_3542=1 -DUSE_RFC2292BIS=1 -D__APPLE_API_OBSOLETE=1 -DTARGET_OS_EMBEDDED=1 -Dether_ntohost=_old_ether_ntohost
+ "${PKG_TARG}-gcc" -O2 ${PKG_MCPU} -o "${tproj}" "${tproj}.tproj"/!(ns).c ecnprobe/gmt2local.c -DPRIVATE -DINET6 -DPLATFORM_iPhoneOS -D__APPLE_USE_RFC_3542=1 -DUSE_RFC2292BIS=1 -D__APPLE_API_OBSOLETE=1 -DTARGET_OS_EMBEDDED=1 -Dether_ntohost=_old_ether_ntohost
set +x
done
diff --git a/data/_sqlite3/_metadata/version b/data/_sqlite3/_metadata/version
index 62841113a..954e22882 100644
--- a/data/_sqlite3/_metadata/version
+++ b/data/_sqlite3/_metadata/version
@@ -1 +1 @@
-3.5.9
+3.24.0
diff --git a/data/_sqlite3/framework.diff b/data/_sqlite3/framework.diff
deleted file mode 100644
index f336c83dc..000000000
--- a/data/_sqlite3/framework.diff
+++ /dev/null
@@ -1,16 +0,0 @@
-diff -ru sqlite-3.5.9/Makefile.in sqlite-3.5.9+iPhone/Makefile.in
---- sqlite-3.5.9/Makefile.in 2008-05-12 17:10:26.000000000 +0000
-+++ sqlite-3.5.9+iPhone/Makefile.in 2008-08-01 08:21:45.000000000 +0000
-@@ -413,10 +413,12 @@
-
- libsqlite3.la: $(LIBOBJ)
- $(LTLINK) -o $@ $(LIBOBJ) $(TLIBS) \
-+ -framework CoreFoundation -framework Foundation \
- ${ALLOWRELEASE} -rpath "$(libdir)" -version-info "8:6:8"
-
- libtclsqlite3.la: tclsqlite.lo libsqlite3.la
- $(LTLINK) -o $@ tclsqlite.lo \
-+ -framework CoreFoundation -framework Foundation \
- $(LIBOBJ) @TCL_STUB_LIB_SPEC@ $(TLIBS) \
- -rpath "$(libdir)/sqlite" \
- -version-info "8:6:8"
diff --git a/data/_sqlite3/host.diff b/data/_sqlite3/host.diff
deleted file mode 100644
index b6e8ac8b5..000000000
--- a/data/_sqlite3/host.diff
+++ /dev/null
@@ -1,32 +0,0 @@
-diff -ru sqlite-3.5.9/configure.ac sqlite-3.5.9+iPhone/configure.ac
---- sqlite-3.5.9/configure.ac 2008-05-07 12:18:23.000000000 +0000
-+++ sqlite-3.5.9+iPhone/configure.ac 2009-08-11 11:52:36.000000000 +0000
-@@ -163,8 +163,8 @@
-
- #########
- # Check to see if the --with-hints=FILE option is used. If there is none,
--# then check for a files named "$host.hints" and ../$hosts.hints where
--# $host is the hostname of the build system. If still no hints are
-+# then check for a files named "$host_.hints" and ../$hosts_.hints where
-+# $host_ is the hostname of the build system. If still no hints are
- # found, try looking in $system.hints and ../$system.hints where
- # $system is the result of uname -s.
- #
-@@ -172,12 +172,12 @@
- AC_HELP_STRING([--with-hints=FILE],[Read configuration options from FILE]),
- hints=$withval)
- if test "$hints" = ""; then
-- host=`hostname | sed 's/\..*//'`
-- if test -r $host.hints; then
-- hints=$host.hints
-+ host_=`hostname | sed 's/\..*//'`
-+ if test -r $host_.hints; then
-+ hints=$host_.hints
- else
-- if test -r ../$host.hints; then
-- hints=../$host.hints
-+ if test -r ../$host_.hints; then
-+ hints=../$host_.hints
- fi
- fi
- fi
diff --git a/data/_sqlite3/make.sh b/data/_sqlite3/make.sh
index c3179fbb1..a4df3a1ee 100644
--- a/data/_sqlite3/make.sh
+++ b/data/_sqlite3/make.sh
@@ -1,5 +1,5 @@
pkg:setup
-autoconf
-pkg:configure --with-readline-inc=-I"$(PKG_DEST_ readline)"/usr/include/readline --with-readline-lib=-lreadline
+automake -a -c -f 2>/dev/null || true
+pkg:configure --with-readline-inc=-I"$(PKG_DEST_ readline)"/usr/include/readline --with-readline-lib=-lreadline --disable-tcl
make
pkg:install
diff --git a/data/_sqlite3/misuse.diff b/data/_sqlite3/misuse.diff
deleted file mode 100644
index 0e7b79255..000000000
--- a/data/_sqlite3/misuse.diff
+++ /dev/null
@@ -1,53 +0,0 @@
-diff -ru sqlite-3.5.9/src/vdbeapi.c sqlite-3.5.9+iPhone/src/vdbeapi.c
---- sqlite-3.5.9/src/vdbeapi.c 2008-05-13 12:52:46.000000000 +0000
-+++ sqlite-3.5.9+iPhone/src/vdbeapi.c 2008-08-01 03:22:00.000000000 +0000
-@@ -1072,6 +1072,9 @@
- int sqlite3_bind_double(sqlite3_stmt *pStmt, int i, double rValue){
- int rc;
- Vdbe *p = (Vdbe *)pStmt;
-+ if( p==0 ){
-+ return SQLITE_MISUSE;
-+ }
- sqlite3_mutex_enter(p->db->mutex);
- rc = vdbeUnbind(p, i);
- if( rc==SQLITE_OK ){
-@@ -1086,6 +1089,9 @@
- int sqlite3_bind_int64(sqlite3_stmt *pStmt, int i, sqlite_int64 iValue){
- int rc;
- Vdbe *p = (Vdbe *)pStmt;
-+ if( p==0 ){
-+ return SQLITE_MISUSE;
-+ }
- sqlite3_mutex_enter(p->db->mutex);
- rc = vdbeUnbind(p, i);
- if( rc==SQLITE_OK ){
-@@ -1097,6 +1103,9 @@
- int sqlite3_bind_null(sqlite3_stmt *pStmt, int i){
- int rc;
- Vdbe *p = (Vdbe*)pStmt;
-+ if( p==0 ){
-+ return SQLITE_MISUSE;
-+ }
- sqlite3_mutex_enter(p->db->mutex);
- rc = vdbeUnbind(p, i);
- sqlite3_mutex_leave(p->db->mutex);
-@@ -1125,6 +1134,9 @@
- int sqlite3_bind_value(sqlite3_stmt *pStmt, int i, const sqlite3_value *pValue){
- int rc;
- Vdbe *p = (Vdbe *)pStmt;
-+ if( p==0 ){
-+ return SQLITE_MISUSE;
-+ }
- sqlite3_mutex_enter(p->db->mutex);
- rc = vdbeUnbind(p, i);
- if( rc==SQLITE_OK ){
-@@ -1137,6 +1149,9 @@
- int sqlite3_bind_zeroblob(sqlite3_stmt *pStmt, int i, int n){
- int rc;
- Vdbe *p = (Vdbe *)pStmt;
-+ if( p==0 ){
-+ return SQLITE_MISUSE;
-+ }
- sqlite3_mutex_enter(p->db->mutex);
- rc = vdbeUnbind(p, i);
- if( rc==SQLITE_OK ){
diff --git a/data/_sqlite3/sqlite-3.5.9.tar.gz b/data/_sqlite3/sqlite-3.5.9.tar.gz
deleted file mode 100644
index 92bb8af07..000000000
--- a/data/_sqlite3/sqlite-3.5.9.tar.gz
+++ /dev/null
Binary files differ
diff --git a/data/_sqlite3/sqlite-autoconf-3240000.tar.gz b/data/_sqlite3/sqlite-autoconf-3240000.tar.gz
new file mode 100644
index 000000000..ad4be6eaa
--- /dev/null
+++ b/data/_sqlite3/sqlite-autoconf-3240000.tar.gz
Binary files differ
diff --git a/data/_sqlite3/tempdir.diff b/data/_sqlite3/tempdir.diff
deleted file mode 100644
index c4a411e9b..000000000
--- a/data/_sqlite3/tempdir.diff
+++ /dev/null
@@ -1,54 +0,0 @@
-diff -ru sqlite-3.5.9/src/os_unix.c sqlite-3.5.9+iPhone/src/os_unix.c
---- sqlite-3.5.9/src/os_unix.c 2008-05-13 12:51:29.000000000 +0000
-+++ sqlite-3.5.9+iPhone/src/os_unix.c 2008-08-01 08:18:14.000000000 +0000
-@@ -75,6 +75,10 @@
- */
- #define MAX_PATHNAME 512
-
-+#ifdef __APPLE__
-+#import <CoreServices/CoreServices.h>
-+#endif
-+
-
- /*
- ** The unixFile structure is subclass of sqlite3_file specific for the unix
-@@ -2497,6 +2501,7 @@
- static int unixGetTempname(sqlite3_vfs *pVfs, int nBuf, char *zBuf){
- static const char *azDirs[] = {
- 0,
-+ 0,
- "/var/tmp",
- "/usr/tmp",
- "/tmp",
-@@ -2509,6 +2514,12 @@
- int i, j;
- struct stat buf;
- const char *zDir = ".";
-+#ifdef __APPLE__
-+ void *pool;
-+ CFStringRef cfstr;
-+ CFIndex maxsize;
-+ char *cstr;
-+#endif
-
- /* It's odd to simulate an io-error here, but really this is just
- ** using the io-error infrastructure to test that SQLite handles this
-@@ -2516,6 +2526,18 @@
- */
- SimulateIOError( return SQLITE_ERROR );
-
-+#ifdef __APPLE__
-+ if (azDirs[1] == NULL) {
-+ pool = NSPushAutoreleasePool(0);
-+ cfstr = (CFStringRef) NSTemporaryDirectory();
-+ maxsize = CFStringGetMaximumSizeForEncoding(CFStringGetLength(cfstr), kCFStringEncodingUTF8) + 1;
-+ cstr = malloc(maxsize);
-+ CFStringGetCString(cfstr, cstr, maxsize, kCFStringEncodingUTF8);
-+ azDirs[1] = cstr;
-+ NSPopAutoreleasePool(pool);
-+ }
-+#endif
-+
- azDirs[0] = sqlite3_temp_directory;
- for(i=0; i<sizeof(azDirs)/sizeof(azDirs[0]); i++){
- if( azDirs[i]==0 ) continue;
diff --git a/data/adv-cmds/make.sh b/data/adv-cmds/make.sh
index 861dc5848..42e5ec10f 100644
--- a/data/adv-cmds/make.sh
+++ b/data/adv-cmds/make.sh
@@ -1,10 +1,10 @@
pkg:setup
set -x
-"${PKG_TARG}-gcc" -O2 -mthumb -DPLATFORM_iPhoneOS -o tabs/tabs tabs/*.c -lncurses
-"${PKG_TARG}-g++" -O2 -mthumb -DPLATFORM_iPhoneOS -o locale/locale locale/*.cc
+"${PKG_TARG}-gcc" -O2 ${PKG_MCPU} -DPLATFORM_iPhoneOS -o tabs/tabs tabs/*.c -lncurses
+"${PKG_TARG}-g++" -O2 ${PKG_MCPU} -DPLATFORM_iPhoneOS -o locale/locale locale/*.cc
for tproj in finger last lsvfs cap_mkdb; do
echo "${tproj}"
- "${PKG_TARG}-gcc" -O2 -mthumb -DPLATFORM_iPhoneOS -o "${tproj}/${tproj}" "${tproj}"/*.c -D'__FBSDID(x)='
+ "${PKG_TARG}-gcc" -O2 ${PKG_MCPU} -DPLATFORM_iPhoneOS -o "${tproj}/${tproj}" "${tproj}"/*.c -D'__FBSDID(x)='
done
set +x
pkg: mkdir -p /bin /usr/bin
diff --git a/data/apr-util/make.sh b/data/apr-util/make.sh
index eb45aca88..4ce8e73f2 100644
--- a/data/apr-util/make.sh
+++ b/data/apr-util/make.sh
@@ -1,7 +1,7 @@
pkg:setup
APRWORK=("$(PKG_WORK_ _apr)"/*/)
-pkg:configure --disable-static --with-apr="${APRWORK}" --with-berkeley-db="$(PKG_DEST_ berkeleydb)"
+pkg:configure --disable-static --with-apr="${APRWORK}" --with-berkeley-db="$(PKG_DEST_ berkeleydb)/usr"
# WTF configure... I need to fix this
-sed -ie 's/db-6.9/db/' Makefile
-make
+sed -ie 's/db-6.9/db/' Makefile apu-1-config
+make -j8
pkg:install
diff --git a/data/bash/_metadata/maintainer b/data/bash/_metadata/maintainer
new file mode 120000
index 000000000..573d7ebef
--- /dev/null
+++ b/data/bash/_metadata/maintainer
@@ -0,0 +1 @@
+../../../people/sbingner \ No newline at end of file
diff --git a/data/bash/_metadata/readline.ver.iphoneos-arm b/data/bash/_metadata/readline.ver.iphoneos-arm
index 48b0c7a0d..4fedf1d20 100644
--- a/data/bash/_metadata/readline.ver.iphoneos-arm
+++ b/data/bash/_metadata/readline.ver.iphoneos-arm
@@ -1 +1 @@
-7.0.5-1
+7.0
diff --git a/data/berkeleydb/make.sh b/data/berkeleydb/make.sh
index 354b95c76..c6b969a5e 100644
--- a/data/berkeleydb/make.sh
+++ b/data/berkeleydb/make.sh
@@ -1,7 +1,9 @@
pkg:setup
cd dist
+rm -f config.sub
+cp ${PKG_BASE}/config.sub .
./s_config
cd ../build_unix
PKG_CONF=../dist/configure pkg:configure --with-mutex=Darwin/_spin_lock_try
-make
+make -j8
pkg:install
diff --git a/data/bison/make.sh b/data/bison/make.sh
index e5b33a4c1..7f30ea22a 100644
--- a/data/bison/make.sh
+++ b/data/bison/make.sh
@@ -1,4 +1,4 @@
pkg:setup
pkg:configure gl_cv_func_strndup=no ac_cv_func_obstack=no
-make CFLAGS='-O2 -mthumb -fno-common'
+make CFLAGS='-O2 -fno-common'
pkg:install
diff --git a/data/boost_/_metadata/description b/data/boost/_metadata/description
index 632f0918d..632f0918d 100644
--- a/data/boost_/_metadata/description
+++ b/data/boost/_metadata/description
diff --git a/data/boost_/_metadata/homepage b/data/boost/_metadata/homepage
index 8d61cfddc..8d61cfddc 100644
--- a/data/boost_/_metadata/homepage
+++ b/data/boost/_metadata/homepage
diff --git a/data/boost_/_metadata/license b/data/boost/_metadata/license
index 36b7cd93c..36b7cd93c 100644
--- a/data/boost_/_metadata/license
+++ b/data/boost/_metadata/license
diff --git a/data/boost/_metadata/maintainer b/data/boost/_metadata/maintainer
new file mode 120000
index 000000000..573d7ebef
--- /dev/null
+++ b/data/boost/_metadata/maintainer
@@ -0,0 +1 @@
+../../../people/sbingner \ No newline at end of file
diff --git a/data/boost_/_metadata/name b/data/boost/_metadata/name
index 68c56d494..68c56d494 100644
--- a/data/boost_/_metadata/name
+++ b/data/boost/_metadata/name
diff --git a/data/boost/_metadata/priority b/data/boost/_metadata/priority
new file mode 100644
index 000000000..134d9bc32
--- /dev/null
+++ b/data/boost/_metadata/priority
@@ -0,0 +1 @@
+optional
diff --git a/data/boost/_metadata/role b/data/boost/_metadata/role
new file mode 100644
index 000000000..8d0320866
--- /dev/null
+++ b/data/boost/_metadata/role
@@ -0,0 +1 @@
+developer
diff --git a/data/boost/_metadata/section b/data/boost/_metadata/section
new file mode 100644
index 000000000..e0eb96881
--- /dev/null
+++ b/data/boost/_metadata/section
@@ -0,0 +1 @@
+Development
diff --git a/data/boost/_metadata/tags b/data/boost/_metadata/tags
new file mode 100644
index 000000000..a8928cec8
--- /dev/null
+++ b/data/boost/_metadata/tags
@@ -0,0 +1 @@
+purpose::library
diff --git a/data/boost/_metadata/version b/data/boost/_metadata/version
new file mode 100644
index 000000000..ee2f4ca91
--- /dev/null
+++ b/data/boost/_metadata/version
@@ -0,0 +1 @@
+1.68.0
diff --git a/data/boost/boost_1_68_0.tar.bz2 b/data/boost/boost_1_68_0.tar.bz2
new file mode 100644
index 000000000..8721965fd
--- /dev/null
+++ b/data/boost/boost_1_68_0.tar.bz2
Binary files differ
diff --git a/data/boost/make.sh b/data/boost/make.sh
new file mode 100644
index 000000000..4f804c29f
--- /dev/null
+++ b/data/boost/make.sh
@@ -0,0 +1,12 @@
+shopt -s extglob
+pkg:setup
+./bootstrap.sh --prefix=/usr
+#toolset=gcc-arm64 using gcc : arm64 : aarch64-apple-darwin17-g++ ;
+echo "using clang : arm : ${PKG_TARG}-g++ ;" >>project-config.jam
+./b2 install toolset=clang-arm abi=aapcs --prefix="${PKG_DEST}/usr" -j16
+rm -f "${PKG_DEST}"/usr/lib/*-d?(-+([0-9_])).@(a|dylib)
+for na in "${PKG_DEST}"/usr/lib/*-+([0-9_]).a; do
+ a=${na/-+([0-9_]).a/.a}
+ rm -f "$a"
+ ln -s "$(basename "$na")" "$a"
+done
diff --git a/data/boost_/_metadata/version b/data/boost_/_metadata/version
deleted file mode 100644
index a95a46d9f..000000000
--- a/data/boost_/_metadata/version
+++ /dev/null
@@ -1 +0,0 @@
-1.34.1
diff --git a/data/boost_/make.sh b/data/boost_/make.sh
deleted file mode 100644
index 483aa3d4c..000000000
--- a/data/boost_/make.sh
+++ /dev/null
@@ -1,12 +0,0 @@
-shopt -s extglob
-pkg:setup
-./configure --prefix=/usr --without-icu --without-libraries=python
-echo 'using darwin ;' >user-config.jam
-make
-make install PREFIX="${PKG_DEST}/usr"
-rm -f "${PKG_DEST}"/usr/lib/*-d?(-+([0-9_])).@(a|dylib)
-for na in "${PKG_DEST}"/usr/lib/*-+([0-9_]).a; do
- a=${na/-+([0-9_]).a/.a}
- rm -f "$a"
- ln -s "$(basename "$na")" "$a"
-done
diff --git a/data/boost_/port.diff b/data/boost_/port.diff
deleted file mode 100644
index 4a6ab6a9b..000000000
--- a/data/boost_/port.diff
+++ /dev/null
@@ -1,162 +0,0 @@
-diff -ru boost_1_34_1/boost/test/impl/execution_monitor.ipp boost_1_34_1+iPhone/boost/test/impl/execution_monitor.ipp
---- boost_1_34_1/boost/test/impl/execution_monitor.ipp 2006-02-22 16:14:45.000000000 +0000
-+++ boost_1_34_1+iPhone/boost/test/impl/execution_monitor.ipp 2007-12-29 13:59:38.000000000 +0000
-@@ -85,7 +85,9 @@
-
- # include <unistd.h>
- # include <signal.h>
-+extern "C" {
- # include <setjmp.h>
-+}
-
- #else
-
-diff -ru boost_1_34_1/configure boost_1_34_1+iPhone/configure
---- boost_1_34_1/configure 2007-05-09 22:09:39.000000000 +0000
-+++ boost_1_34_1+iPhone/configure 2007-12-29 14:31:08.000000000 +0000
-@@ -339,8 +339,8 @@
- @cd status && ../\$(BJAM) \$(BJAM_CONFIG) --user-config=../user-config.jam || echo "Some Boost regression tests failed. This is normal for many compilers."
-
- install: .dummy
-- @echo "\$(BJAM) \$(BJAM_CONFIG) --user-config=user-config.jam --prefix=\$(PREFIX) --exec-prefix=\$(EPREFIX) --libdir=\$(LIBDIR) --includedir=\$(INCLUDEDIR) \$(LIBS) install"
-- @\$(BJAM) \$(BJAM_CONFIG) --user-config=user-config.jam --prefix=\$(PREFIX) --exec-prefix=\$(EPREFIX) --libdir=\$(LIBDIR) --includedir=\$(INCLUDEDIR) \$(LIBS) install || echo "Not all Boost libraries built properly."
-+ @echo "\$(BJAM) \$(BJAM_CONFIG) --user-config=user-config.jam --prefix=\$(PREFIX) \$(LIBS) install"
-+ @\$(BJAM) \$(BJAM_CONFIG) --user-config=user-config.jam --prefix=\$(PREFIX) \$(LIBS) install || echo "Not all Boost libraries built properly."
-
- .dummy:
-
-diff -ru boost_1_34_1/libs/serialization/build/Jamfile.v2 boost_1_34_1+iPhone/libs/serialization/build/Jamfile.v2
---- boost_1_34_1/libs/serialization/build/Jamfile.v2 2006-03-06 08:20:39.000000000 +0000
-+++ boost_1_34_1+iPhone/libs/serialization/build/Jamfile.v2 2007-12-29 13:50:00.000000000 +0000
-@@ -60,11 +60,3 @@
- :
- : <link>shared:<define>BOOST_SERIALIZATION_DYN_LINK=1
- ;
--
--lib boost_wserialization
-- : $(WSOURCES).cpp boost_serialization
-- : <toolset>msvc:<cxxflags>/Gy
-- <link>shared:<define>BOOST_WSERIALIZATION_DYN_LINK=1
-- :
-- : <link>shared:<define>BOOST_SERIALIZATION_DYN_LINK=1
-- ;
-diff -ru boost_1_34_1/tools/build/v2/test/BoostBuild.py boost_1_34_1+iPhone/tools/build/v2/test/BoostBuild.py
---- boost_1_34_1/tools/build/v2/test/BoostBuild.py 2006-11-10 07:41:29.000000000 +0000
-+++ boost_1_34_1+iPhone/tools/build/v2/test/BoostBuild.py 2007-12-29 09:35:11.000000000 +0000
-@@ -43,8 +43,7 @@
- if toolset in ["gcc"]:
- suffixes['.lib'] = '.a' # static libs have '.a' suffix with mingw...
- suffixes['.obj'] = '.o'
-- if os.__dict__.has_key('uname') and os.uname()[0] == 'Darwin':
-- suffixes['.dll'] = '.dylib'
-+ suffixes['.dll'] = '.dylib'
-
- def re_remove(sequence,regex):
- me = re.compile(regex)
-diff -ru boost_1_34_1/tools/build/v2/tools/darwin.jam boost_1_34_1+iPhone/tools/build/v2/tools/darwin.jam
---- boost_1_34_1/tools/build/v2/tools/darwin.jam 2007-03-15 04:02:23.000000000 +0000
-+++ boost_1_34_1+iPhone/tools/build/v2/tools/darwin.jam 2007-12-29 13:45:29.000000000 +0000
-@@ -31,7 +31,7 @@
- rule init ( version ? : command * : options * )
- {
- local condition = [ common.check-init-parameters darwin : version $(version) ] ;
-- local command = [ common.get-invocation-command darwin : g++ : $(command) ] ;
-+ local command = [ common.get-invocation-command darwin : $(PKG_TARG)-g++ : $(command) ] ;
-
- common.handle-options darwin : $(condition) : $(command) : $(options) ;
-
-@@ -42,6 +42,7 @@
- flags darwin.compile.c++ OPTIONS : -fcoalesce-templates ;
- }
-
-+ #flags darwin.compile.c++ OPTIONS : -v ;
- gcc.init-link-flags darwin darwin $(condition) ;
-
- flags darwin.link NEED_STRIP $(condition)/<debug-symbols>off : "" ;
-@@ -86,7 +87,7 @@
-
- actions link.dll bind LIBRARIES
- {
-- $(CONFIG_COMMAND) -dynamiclib -L"$(LINKPATH)" -o "$(<)" "$(>)" "$(LIBRARIES)" -l$(FINDLIBS-SA) -l$(FINDLIBS-ST) $(FRAMEWORK_PATH) -framework$(_)$(FRAMEWORK:D=:S=) $(OPTIONS) $(USER_OPTIONS)
-+ $(CONFIG_COMMAND) -dynamiclib -single_module -L"$(LINKPATH)" -o "$(<)" "$(>)" "$(LIBRARIES)" -l$(FINDLIBS-SA) -l$(FINDLIBS-ST) $(FRAMEWORK_PATH) -framework$(_)$(FRAMEWORK:D=:S=) $(OPTIONS) $(USER_OPTIONS)
- }
-
- actions piecemeal archive
-diff -ru boost_1_34_1/tools/build/v2/tools/gcc.jam boost_1_34_1+iPhone/tools/build/v2/tools/gcc.jam
---- boost_1_34_1/tools/build/v2/tools/gcc.jam 2007-06-12 04:47:49.000000000 +0000
-+++ boost_1_34_1+iPhone/tools/build/v2/tools/gcc.jam 2007-12-29 09:30:15.000000000 +0000
-@@ -62,7 +62,7 @@
- {
- # Information about the gcc command...
- # The command.
-- local command = [ common.get-invocation-command gcc : g++ : $(command) ] ;
-+ local command = [ common.get-invocation-command gcc : $(PKG_TARG)-g++ : $(command) ] ;
- # The root directory of the tool install.
- local root = [ feature.get-values <root> : $(options) ] ;
- # The bin directory where to find the command to execute.
-@@ -109,17 +109,7 @@
- common.handle-options gcc : $(condition) : $(command) : $(options) ;
-
- local linker = [ feature.get-values <linker-type> : $(options) ] ;
-- if ! $(linker) {
--
-- if [ os.name ] = OSF
-- {
-- linker = osf ;
-- }
-- else
-- {
-- linker = gnu ;
-- }
-- }
-+ linker = darwin ;
- init-link-flags gcc $(linker) $(condition) ;
-
-
-@@ -310,14 +300,6 @@
- # to implement and will increase target path length even more.
- flags gcc.compile OPTIONS <link>shared : -fPIC ;
- }
--if [ os.name ] != NT && [ os.name ] != OSF
--{
-- # OSF does have an option called -soname but it doesn't seem to work as
-- # expected, therefore it has been disabled.
--
-- HAVE_SONAME = "" ;
-- SONAME_OPTION = -h ;
--}
-
-
-
-@@ -629,7 +611,7 @@
- # Differ from 'link' above only by -shared.
- actions link.dll bind LIBRARIES
- {
-- "$(CONFIG_COMMAND)" -L"$(LINKPATH)" -Wl,$(RPATH_OPTION:E=-R)$(SPACE)-Wl,"$(RPATH)" "$(.IMPLIB-COMMAND)$(<[1])" -o "$(<[-1])" $(HAVE_SONAME)-Wl,$(SONAME_OPTION)$(SPACE)-Wl,$(<[-1]:D=) -shared $(START-GROUP) "$(>)" "$(LIBRARIES)" -l$(FINDLIBS-ST) -l$(FINDLIBS-SA) $(END-GROUP) $(OPTIONS) $(USER_OPTIONS)
-+ "$(CONFIG_COMMAND)" -L"$(LINKPATH)" -Wl,$(RPATH_OPTION:E=-R)$(SPACE)-Wl,"$(RPATH)" "$(.IMPLIB-COMMAND)$(<[1])" -o "$(<[-1])" $(HAVE_SONAME)-Wl,$(SONAME_OPTION)$(SPACE)-Wl,$(<[-1]:D=) -dynamiclib $(START-GROUP) "$(>)" "$(LIBRARIES)" -l$(FINDLIBS-ST) -l$(FINDLIBS-SA) $(END-GROUP) $(OPTIONS) $(USER_OPTIONS)
- }
-
- # Set up threading support. It's somewhat contrived, so perform it at the end,
-diff -ru boost_1_34_1/tools/jam/src/jam.c boost_1_34_1+iPhone/tools/jam/src/jam.c
---- boost_1_34_1/tools/jam/src/jam.c 2005-11-15 05:44:03.000000000 +0000
-+++ boost_1_34_1+iPhone/tools/jam/src/jam.c 2007-12-29 09:28:28.000000000 +0000
-@@ -375,7 +375,7 @@
- list_new(
- list_new(
- list_new( L0,
-- newstr( u.sysname ) ),
-+ newstr( "Darwin" ) ),
- newstr( u.nodename ) ),
- newstr( u.release ) ),
- newstr( u.version ) ),
-diff -ru boost_1_34_1/tools/jam/src/jam.h boost_1_34_1+iPhone/tools/jam/src/jam.h
---- boost_1_34_1/tools/jam/src/jam.h 2005-10-16 15:34:27.000000000 +0000
-+++ boost_1_34_1+iPhone/tools/jam/src/jam.h 2007-12-29 09:42:21.000000000 +0000
-@@ -556,4 +556,7 @@
- # define DEBUG_GRAPH ( globs.debug[ 12 ] ) /* debug dependencies */
- # define DEBUG_FATE ( globs.debug[ 13 ] ) /* show changes to fate in make0() */
-
-+# undef OSMINOR
-+# define OSMINOR "OS=MACOSX"
-+
- #endif
diff --git a/data/bootstrap-cmds/arm.diff b/data/bootstrap-cmds/arm.diff
index 365f105f1..2b38cc749 100644
--- a/data/bootstrap-cmds/arm.diff
+++ b/data/bootstrap-cmds/arm.diff
@@ -5,7 +5,7 @@ diff -ru bootstrap_cmds-60/migcom.tproj/mig_machine.h bootstrap_cmds-60+iPhone/m
#include "i386/mig_machine.h"
#elif defined(__ppc__)
#include "ppc/mig_machine.h"
-+#elif defined(__arm__)
++#elif defined(__arm__) || defined(__arm64__)
+#include "arm/mig_machine.h"
#else
#error Architecture not supported
diff --git a/data/curl/make.sh b/data/curl/make.sh
index c5467843f..e5d645260 100644
--- a/data/curl/make.sh
+++ b/data/curl/make.sh
@@ -1,4 +1,4 @@
pkg:setup
-pkg:configure ac_cv_file___dev_urandom_=yes
+pkg:configure ac_cv_file___dev_urandom_=yes --with-ca-bundle=/etc/ssl/certs/cacert.pem
pkg:make -j8
pkg:install
diff --git a/data/cvs/_metadata/version b/data/cvs/_metadata/version
index 45333f34e..0073c5fd0 100644
--- a/data/cvs/_metadata/version
+++ b/data/cvs/_metadata/version
@@ -1 +1 @@
-1.11.22
+1.12.13+deb9u1
diff --git a/data/cvs/cvs-1.11.22.tar.gz b/data/cvs/cvs-1.11.22.tar.gz
deleted file mode 100644
index b135ea320..000000000
--- a/data/cvs/cvs-1.11.22.tar.gz
+++ /dev/null
Binary files differ
diff --git a/data/cvs/cvs_1.12.13+real-22+deb9u1.diff b/data/cvs/cvs_1.12.13+real-22+deb9u1.diff
new file mode 100644
index 000000000..550d830df
--- /dev/null
+++ b/data/cvs/cvs_1.12.13+real-22+deb9u1.diff
@@ -0,0 +1,12224 @@
+--- cvs-1.12.13+real.orig/AUTHORS
++++ cvs-1.12.13+real/AUTHORS
+@@ -57,6 +57,12 @@
+ There have been many, many contributions not listed here. Consult the
+ individual ChangeLog files in each directory for a more complete idea.
+
++Thorsten Glaser <tg@mirbsd.org> is responsible for the MirOS extensions,
++some of which were inspired by changes to GNU CVS 1.11.1p1 by other BSDs,
++and by changes from the previous Debian package; he did the MirBSD port
++as well as the MirPorts Framework and new Debian packaging, all of which
++include some original development work and fixes.
++
+ In addition to the above contributors, the following Beta testers
+ deserve special mention for their support. This is only a partial
+ list; if you have helped in this way and would like to be listed, let
+@@ -88,3 +94,6 @@
+ Many contributors have added code to the "contrib" directory. See the
+ README file there for a list of what is available. There is also a
+ contributed GNU Emacs CVS-mode in tools/pcl-cvs.
++
++
++$MirOS: src/gnu/usr.bin/cvs/AUTHORS,v 1.6 2016/11/08 23:08:09 tg Exp $
+--- cvs-1.12.13+real.orig/DEVEL-CVS
++++ cvs-1.12.13+real/DEVEL-CVS
+@@ -7,7 +7,8 @@
+ Policies regarding the CVS source repository:
+
+ By checking items into the repository, developers agree to permit
+-distribution of such items under the terms of the GNU Public License.
++distribution of such items under the terms of the GNU General Public
++License.
+
+ ----------------------------------------------------------------------
+ Procedure for dealing with people who want to be developers:
+--- cvs-1.12.13+real.orig/FAQ
++++ cvs-1.12.13+real/FAQ
+@@ -7234,7 +7234,7 @@
+
+ It will respond:
+
+- Directory /Repos/<dir> added to the repository
++ Directory /Repos/<dir> put under version control
+
+ and will create both a matching directory in the Repository and a
+ ./CVS administrative directory within the local <dir> directory.
+--- cvs-1.12.13+real.orig/MINOR-BUGS
++++ cvs-1.12.13+real/MINOR-BUGS
+@@ -59,3 +59,15 @@
+ belong under the "checkout" function? Perhaps it is more logically
+ grouped with the "history" function or we should create a new "info"
+ function?
++
++
++Note that it is the opinion of the MirBSD founder that the CVSROOT
++environment variable ought to *never* be set at all. This prevents
++a lot of trouble. Almost all CVS tutorials stating otherwise (or
++recommending pserver) are perceived bogus.
++
++"cvs annotate -b" does not do what people would expect, I think,
++but neither does it do that under MidnightBSD/DragonFly, where
++it came from.
++
++$MirOS: src/gnu/usr.bin/cvs/MINOR-BUGS,v 1.5 2016/11/08 23:04:31 tg Exp $
+--- cvs-1.12.13+real.orig/NEWS
++++ cvs-1.12.13+real/NEWS
+@@ -1,3 +1,11 @@
++Changes since 1.12.13:
++**********************
++
++* many which are only documented in MirBSD CVS
++
++* A new command line option, --allow-root-regexp, was added which allows
++ acceptable repositories to be specified using a list of regular expressions.
++
+ Changes since 1.12.12:
+ **********************
+
+--- cvs-1.12.13+real.orig/configure.in
++++ cvs-1.12.13+real/configure.in
+@@ -4,6 +4,8 @@
+ [Copyright (C) 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995,
+ 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
+ Free Software Foundation, Inc.
++Copyright (c) 2003, 2004, 2005, 2010, 2011, 2012, 2013, 2015, 2016
++ mirabilos <m@mirbsd.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
+@@ -15,11 +17,12 @@
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.])
+
+-AC_INIT([Concurrent Versions System (CVS)],[1.12.13],
++AC_INIT([Concurrent Versions System (CVS)],[1.12.13-MirDebian-22],
+ [bug-cvs@nongnu.org],[cvs])
+ AC_CONFIG_SRCDIR(src/cvs.h)
+ AC_CONFIG_AUX_DIR(build-aux)
+ AM_INIT_AUTOMAKE([gnu 1.9.2 dist-bzip2 no-define])
++AM_GNU_GETTEXT_VERSION([0.14.4])
+ AC_PREREQ(2.59)
+
+ AC_PREFIX_PROGRAM(cvs)
+@@ -155,6 +158,8 @@
+ AC_CHECK_HEADERS(\
+ direct.h \
+ fcntl.h \
++ getopt.h \
++ inttypes.h \
+ io.h \
+ memory.h \
+ ndbm.h \
+@@ -162,11 +167,14 @@
+ syslog.h \
+ sys/bsdtypes.h \
+ sys/file.h \
++ sys/inttypes.h \
+ sys/param.h \
+ sys/resource.h \
+ sys/select.h \
+ unistd.h \
+- utime.h\
++ utime.h \
++ wctype.h \
++ zlib.h \
+ )
+ AC_HEADER_STAT
+
+@@ -180,6 +188,8 @@
+ AC_CHECK_MEMBERS([struct stat.st_rdev])
+
+ AC_FUNC_FSEEKO
++AC_FUNC_ALLOCA
++AC_CHECK_FUNCS([fseeko])
+ if test $ac_cv_func_fseeko = no; then
+ AC_LIBOBJ(fseeko)
+ AC_LIBOBJ(ftello)
+@@ -1444,7 +1454,7 @@
+ [config-override],
+ AC_HELP_STRING(
+ [--enable-config-override],
+- [Set to a comma-seperated list of paths to directories (designated by
++ [Set to a comma-separated list of paths to directories (designated by
+ trailing `/') and files, specifies the path prefixes (for directories) and
+ paths to files the CVS server commands will allow configuration to be read
+ from. Specify `--enable-config-override=no' to disable config file
+--- cvs-1.12.13+real.orig/contrib/cvs_acls.html
++++ cvs-1.12.13+real/contrib/cvs_acls.html
+@@ -280,7 +280,7 @@
+ <p>A final note about the repository matching pattern. The example above
+ uses ``ALL'' but note that this means that the cvs_acls script will run
+ for each and every commit in your repository. Obviously, in a large
+-repository this adds up to a lot of overhead that may not be necesary.
++repository this adds up to a lot of overhead that may not be necessary.
+ A better strategy is to use a repository pattern that is more specific
+ to the areas that you wish to secure.</p>
+ <p>3. Install this file as $CVSROOT/CVSROOT/cvs_acls and make it executable.</p>
+--- cvs-1.12.13+real.orig/contrib/cvs_acls.in
++++ cvs-1.12.13+real/contrib/cvs_acls.in
+@@ -309,7 +309,7 @@
+ A final note about the repository matching pattern. The example above
+ uses "ALL" but note that this means that the cvs_acls script will run
+ for each and every commit in your repository. Obviously, in a large
+-repository this adds up to a lot of overhead that may not be necesary.
++repository this adds up to a lot of overhead that may not be necessary.
+ A better strategy is to use a repository pattern that is more specific
+ to the areas that you wish to secure.
+
+--- cvs-1.12.13+real.orig/contrib/rcs2log.1
++++ cvs-1.12.13+real/contrib/rcs2log.1
+@@ -1,3 +1,4 @@
++.\" $MirOS: src/gnu/usr.bin/cvs/contrib/rcs2log.1,v 1.2 2011/05/06 22:44:59 tg Exp $
+ .\"
+ .\" Copyright 1992, 93, 94, 95, 96, 97, 1998 Free Software Foundation, Inc.
+ .\"
+@@ -25,17 +26,17 @@
+ .Sh SYNOPSIS
+ .Nm rcs2log
+ .Bk -words
++.Op Fl nRv
+ .Op Fl c Ar changelog
+ .Op Fl h Ar hostname
+ .Op Fl i Ar indent
+ .Op Fl l Ar length
+-.Op Fl R
++.Op Fl L Ar file
+ .Op Fl r Ar option
+ .Op Fl t Ar tabwidth
+ .Op Fl u Ar login<TAB>fullname<TAB>mailaddr
+-.Op Fl v
+-.Op Fl -help
+-.Op Fl -version
++.Op Fl \-help
++.Op Fl \-version
+ .Op Ar file ...
+ .Ek
+ .Sh DESCRIPTION
+@@ -62,6 +63,14 @@
+ Try to limit log lines to
+ .Ar length
+ characters (default 79).
++.It Fl L Ar file
++Use rlog-format
++.Ar file
++for source of logs.
++.It Fl n
++Obsolete, use
++.Fl u
++instead (whose syntax differs).
+ .It Fl R
+ If no
+ .Ar file Ns Li (s)
+@@ -83,9 +92,9 @@
+ .Ar mailaddr .
+ .It Fl v
+ Append RCS revision to file names in log lines.
+-.It Fl -help
++.It Fl \-help
+ Output help.
+-.It Fl -version
++.It Fl \-version
+ Output version number.
+ .El
+ .Sh SEE ALSO
+--- cvs-1.12.13+real.orig/contrib/rcs2log.sh
++++ cvs-1.12.13+real/contrib/rcs2log.sh
+@@ -1,4 +1,5 @@
+ #! /bin/sh
++# $MirOS: src/gnu/usr.bin/cvs/contrib/rcs2log.sh,v 1.6 2011/05/06 22:44:59 tg Exp $
+
+ # Copyright (C) 1995-2005 The Free Software Foundation, Inc.
+
+@@ -31,6 +32,7 @@
+ -i INDENT Indent change log lines by INDENT spaces (default 8).
+ -l LENGTH Try to limit log lines to LENGTH characters (default 79).
+ -L FILE Use rlog-format FILE for source of logs.
++ -n Obsolete, use -u instead (whose syntax differs).
+ -R If no FILEs are given and RCS is used, recurse through working directory.
+ -r OPTION Pass OPTION to subsidiary log command.
+ -t TABWIDTH Tab stops are every TABWIDTH characters (default 8).
+@@ -199,7 +201,7 @@
+ m[9]="Oct"; m[10]="Nov"; m[11]="Dec"
+ '
+
+-logdir=`$MKTEMP -d $TMPDIR/rcs2log.XXXXXX`
++logdir=$($MKTEMP -d $TMPDIR/rcs2log.XXXXXXXXXX)
+ test -n "$logdir" || exit
+ llogout=$logdir/l
+ trap exit 1 2 13 15
+@@ -632,7 +634,7 @@
+ # Sort the log entries, first by date+time (in reverse order),
+ # then by author, then by log entry, and finally by file name and revision
+ # (just in case).
+-sort -t"$SOH" +2 -4r +4 +0 |
++sort -t"$SOH" -k 3,4r -k 5 -k 1 |
+
+ # Finally, reformat the sorted log entries.
+ $AWK -F"$SOH" '
+--- cvs-1.12.13+real.orig/contrib/sccs2rcs.in
++++ cvs-1.12.13+real/contrib/sccs2rcs.in
+@@ -1,4 +1,5 @@
+ #! @CSH@ -f
++# $MirOS: src/gnu/usr.bin/cvs/contrib/sccs2rcs.in,v 1.2 2011/05/06 21:50:27 tg Exp $
+
+ # Copyright (C) 1995-2005 The Free Software Foundation, Inc.
+
+@@ -219,7 +220,7 @@
+ # we expected in the output we have other problems.
+ # Note: Solaris awk does not like the following line. Use gawk
+ # mawk, or nawk instead.
+- set date = `sccs prs -r$rev $file | @AWK@ '/^D / {print (substr($3,0,2)+0<70?20:19) $3, $4; exit}'`
++ set date = `sccs prs -r$rev $file | @AWK@ '/^D / {print (substr($3,1,2)+0<70?20:19) $3, $4; exit}'`
+ set author = `sccs prs -r$rev $file | @AWK@ '/^D / {print $5; exit}'`
+ echo ""
+ echo "==> file $file, rev=$rev, date=$date, author=$author"
+--- cvs-1.12.13+real.orig/debian/NEWS
++++ cvs-1.12.13+real/debian/NEWS
+@@ -0,0 +1,79 @@
++cvs (2:1.12.13+real-22) unstable; urgency=low
++
++ Newly created repositories (from “cvs initâ€) now rely on
++ CVSUMASK for the permissions of the “history†and “val-tagsâ€
++ files instead of creating them as world-writable.
++
++ Newly created repositories contain a LogHistory configuration
++ setting to only record write operations in the “history†file.
++
++ If you are used to the previous behaviour, you can restore it
++ by altering (or removing, in which case the (commented-out)
++ default of logging everything will be used) the LogHistory
++ configuration setting and changing the permissions on the
++ “history†and “val-tags†files so that every user can write
++ into them.
++
++ If you did not deliberately open your repository to all users
++ on your system, you might wish to change all existing repos
++ to this behaviour. To do this, check out the CVSROOT module,
++ edit the “config†file adding “LogHistory=TMARâ€, check that
++ change in, release the CVSROOT module, and chmod the “historyâ€
++ and “val-tags†files to either 0664 (if all users in the same
++ group should be able to commit) or 0644 (if only you wish to
++ commit), possibly 0660 or 0600 is non-committers should also
++ be denied reading.
++
++ Contact me (mirabilos) in #cvs on irc.freenode.net if you have
++ any questions about this change or require further support.
++
++ -- Thorsten Glaser <tg@mirbsd.de> Tue, 28 Mar 2017 19:54:01 +0200
++
++cvs (2:1.12.13+real-7) unstable; urgency=high
++
++ rcs2log no longer lives in the PATH, the contributed script
++ and its manpage are in /usr/share/cvs/contrib/rcs2log now.
++
++ Some contrib files (and their documentation) are no longer
++ shipped with the binary package (antique, insecure, useless).
++
++ -rHEAD in "cvs diff" now, consistently with all other cvs
++ subcommands, means "tip of the trunk (MAIN branch)"; to
++ access the tip of the another branch, use its name; as a
++ compatibility aid, -r.bhead (only in diff) points to the
++ tip of the sticky branch.
++
++ -- Thorsten Glaser <tg@mirbsd.de> Sun, 04 Dec 2011 20:10:09 +0000
++
++cvs (2:1.12.13+real-5) unstable; urgency=low
++
++ This cvs package is a totally new packaging and has almost
++ nothing in common with what was in Debian before. The most
++ visible changes are outlined below:
++
++ pserver is no longer officially supported; the cvs package
++ does not install any service, inetd, or something similar.
++ If you want to set up a CVS server, use SSH, as shown in:
++ * http://www.stremler.net/Code/cvs_tricks/cvs-over-ssh.html
++ * http://www.stremler.net/Code/cvs_tricks/cvs-over-ssh-advanced.html
++ * http://www.stremler.net/Code/cvs_tricks/cvs-over-ssh-advanced2.html
++
++ Consequentially, PAM is also no longer supported, and this
++ package does not set up or manage any repositories; that's
++ the system administrator's job now.
++
++ For running "cvs admin" tasks the user must be a member of
++ the new "_cvsadmin" system group, or the repository be set
++ up (UserAdminOptions in CVSROOT/config) to allow everyone.
++
++ The date format for $Id$ and similar in checkouts has been
++ switched back from ISO 8601 to the standard RCS format, to
++ keep checksums over checkouts/exports consistent. This, as
++ well as the fact that only the :local: and :extssh: access
++ methods are officially supported, is not negotiable.
++
++ Please direct feature requests upstream, not to the BTS. I
++ do quite an amount of hacking CVS, but prefer to care only
++ about the packaging bits with "full power" in Debian.
++
++ -- Thorsten Glaser <tg@mirbsd.de> Sat, 11 Jun 2011 05:01:49 +0000
+--- cvs-1.12.13+real.orig/debian/changelog
++++ cvs-1.12.13+real/debian/changelog
+@@ -0,0 +1,243 @@
++cvs (2:1.12.13+real-22+deb9u1) stretch-security; urgency=high
++
++ * Fix CVE-2017-12836 (Closes: #871810)
++
++ -- Thorsten Glaser <tg@mirbsd.de> Sat, 12 Aug 2017 19:19:53 +0200
++
++cvs (2:1.12.13+real-22) unstable; urgency=low
++
++ * cvs init: Change default history logging configuration
++ to only log write operations by adding “LogHistory=TMARâ€
++ * Testsuite: Alter to cope with this explicit option
++ * cvs init: Rely on CVSUMASK for history and val-tags files
++ in newly created repositories (Closes: #858769)
++ * Add a NEWS.Debian entry verbosely documenting this change
++
++ -- Thorsten Glaser <tg@mirbsd.de> Tue, 28 Mar 2017 20:01:39 +0200
++
++cvs (2:1.12.13+real-21) unstable; urgency=medium
++
++ [ Sylvain Beucler ]
++ * Add --allow-root-regexp option, for Savannah
++
++ [ Thorsten Glaser ]
++ * Always add --build=/--host= to avoid config.guess being too smart
++ * Fix testsuite for --allow-root-regexp in the “deny†case
++ * Some minor documentation fixes (wording and formatting)
++ * Remove unnecessary autopoint from Build-Depends; optimise them
++ * Harmonise PDF version 1.4 across all generated PDFs
++ * Generate all PDFs using the PA4 paper size (prints on Letter and A4)
++ * Disable parallel build because the testsuite is not safe
++
++ -- Thorsten Glaser <tg@mirbsd.de> Mon, 09 Jan 2017 23:19:38 +0000
++
++cvs (2:1.12.13+real-20) unstable; urgency=low
++
++ * Do not spew into syslog when 'cvs pserver' is called from a tty
++
++ -- Thorsten Glaser <tg@mirbsd.de> Wed, 09 Nov 2016 04:17:18 +0100
++
++cvs (2:1.12.13+real-19) unstable; urgency=low
++
++ * Update from MirBSD CVS:
++ - Fix some spelling mistakes
++ - Greatly improve the manpage introduction (even going so far
++ as to add a “how not to be totally lost in info†section)
++ - Improve documentation cross-references
++ - Apply TCP_NODELAY patch from CVS mailing list
++ * Switch (experimentally) to debhelper compat 10
++ * Enhances cvs2svn (>= 2.4.0-4~) as it’s added relevant patches
++ * Make cross-buildable (Closes: #842847)
++
++ -- Thorsten Glaser <tg@mirbsd.de> Tue, 08 Nov 2016 23:22:39 +0000
++
++cvs (2:1.12.13+real-18) unstable; urgency=low
++
++ [ esr ]
++ * Correct a bug in the manpage
++
++ [ Sergei Trofimovich ]
++ * Fix a memory leak
++
++ [ Thorsten Glaser ]
++ * Several sanity and getdate fixes
++
++ -- Thorsten Glaser <tg@mirbsd.de> Sun, 23 Oct 2016 00:34:10 +0200
++
++cvs (2:1.12.13+real-17) unstable; urgency=medium
++
++ * Fix a use-after-free bug
++ * Correctly use autoconf to detect long double
++
++ -- Thorsten Glaser <tg@mirbsd.de> Sat, 22 Oct 2016 05:42:39 +0200
++
++cvs (2:1.12.13+real-16) unstable; urgency=medium
++
++ * Take back the package (Closes: #764397)
++ * Fix typo in changelog entry for cvs (2:1.12.13+real-9) and others
++ * Bump Policy; no changes
++ * Update code with bugfixes from MirBSD 0AB7.2 (Closes: #839669)
++ * Actually use correct getdate implementation
++ * groff now needs an explicit ghostscript dependency for ps2pdf
++ * Remove stuff unnecessary with dh-autoreconf
++
++ -- Thorsten Glaser <tg@mirbsd.de> Sat, 22 Oct 2016 02:58:34 +0200
++
++cvs (2:1.12.13+real-15) unstable; urgency=low
++
++ * QA upload.
++ * Orphan the package.
++
++ -- Thorsten Glaser <tg@mirbsd.de> Tue, 07 Oct 2014 17:58:58 +0000
++
++cvs (2:1.12.13+real-14) unstable; urgency=low
++
++ * debian/control: Move VCS-* fields to Alioth collab-maint git
++ * Remove now-useless RCS IDs
++
++ -- Thorsten Glaser <tg@mirbsd.de> Tue, 08 Jul 2014 16:10:54 +0200
++
++cvs (2:1.12.13+real-12) unstable; urgency=medium
++
++ * Add texlive-fonts-recommended B-D (thanks Norbert Preining)
++ to fix FTBFS in sid (thanks Daniel Schepler) (Closes: #739138)
++ * Policy 3.9.5 (no changes AFAICT)
++ * Check distfile with upstream signing key (thanks lintian)
++
++ -- Thorsten Glaser <tg@mirbsd.de> Sun, 16 Feb 2014 14:07:36 +0000
++
++cvs (2:1.12.13+real-11) unstable; urgency=medium
++
++ * Add workaround for eglibc crypt(3) returning NULL
++ * If DEB_BUILD_OPTIONS contains “sanity†run testsuite after build
++ * Drop obsolete texi2html B-D (thanks lintian) that was unused anyway
++
++ -- Thorsten Glaser <tg@mirbsd.de> Thu, 18 Jul 2013 21:52:12 +0000
++
++cvs (2:1.12.13+real-10) unstable; urgency=low
++
++ [ Daniel Schepler ]
++ * Use dh-autoreconf to regenerate configure script and avoid unnecessary
++ compilation of mktime.c, which doesn't work on x32 as is.
++ * Add texlive-latex-recommended to fix just another FTBFS
++
++ [ Thorsten Glaser ]
++ * Do not compress *.pdf files (cf. #704093)
++ * Allow root to commit
++ * Policy 3.9.4
++ * Make cvs.texinfo compatible with newer makeinfo (Closes: #711298)
++ * Actually use a fixed mktime.m4 (Closes: #698908)
++
++ -- Thorsten Glaser <tg@mirbsd.de> Wed, 26 Jun 2013 19:40:39 +0000
++
++cvs (2:1.12.13+real-9) unstable; urgency=low
++
++ * Fix watch file: mangle Epoch away, too
++ * Remove old conffile /etc/pam.d/cvs (Closes: #669957)
++ * Policy 3.9.3 (no changes)
++
++ -- Thorsten Glaser <tg@mirbsd.de> Sun, 22 Apr 2012 15:10:16 +0000
++
++cvs (2:1.12.13+real-8) unstable; urgency=high
++
++ * Brown paper bag change: sanity.sh (the testsuite) was corrupted
++ during checkout of the packaging VCS in the -7 (all PASS again)
++ * Bonus change: use hardening build flags; fix resulting warnings
++ * Urgency due to riding on the previous upload’s security fix
++
++ -- Thorsten Glaser <tg@mirbsd.de> Tue, 07 Feb 2012 20:39:42 +0000
++
++cvs (2:1.12.13+real-7) unstable; urgency=high
++
++ * Drop unsafe scripts from contrib, add NEWS entry for that
++ (Closes: #658947)
++ * debian/rules: cleanup (remove install/check, dh_installdirs;
++ switch to dh_prep if extant)
++ * Use -Wl,--as-needed for the link to appease dpkg-shlibdebs
++ * Update maintainer scripts from template jupp (better comments)
++ * Drop csh-using contrib script from package, with NEWS entry
++ * Demote rcs2log(1) to contrib, add NEWS entry
++ * Stop shipping a patch to rcs(1) with the binary package, ffs
++ * Don’t ship cvshelp.man either, it’s antiquated and not useful
++ * Fix meaning of -rHEAD for the diff subcommand (with NEWS entry)
++ * Make the testsuite again usable (full PASS)
++ * Apply suggested patch for CVE-2012-0804 from Petr Pisar
++ * Update lintian overrides
++
++ -- Thorsten Glaser <tg@mirbsd.de> Tue, 07 Feb 2012 18:01:44 +0000
++
++cvs (2:1.12.13+real-6) unstable; urgency=low
++
++ * d/watch: mangle the +real away until 1.12.14 is out,
++ as this is an artefact from the old (epoch 1) packaging
++ * Demote mksh to Suggests, recommended (hah!) by many
++ (Closes: #631110) (merges back
++ 2:1.12.13+real-5debianderivatethatcannotbenamed1)
++ * Honour Policy §11.4; fix by YOSHINO Yoshihito (Closes: #631936)
++ * Use upstream-source-in-CVS packaging, clean up
++ * d/rules: Add build-{arch,indep} targets as aliases to build
++ * Bring d/copyright more in sync with this distfile’s reality
++ * d/control: Reword package description. (Closes: #631826)
++ * If sleeping at exit, sleep another 20 ms (2 HZ), to avoid
++ possible race conditions. (Should work around LP: #12230)
++ * Update in sync with MirPorts 1.12.13-12 = MirOS BSD 0AAF.1
++ * Stop installing cvsbug(8), use reportbug instead
++
++ -- Thorsten Glaser <tg@mirbsd.de> Thu, 28 Jul 2011 16:02:02 +0000
++
++cvs (2:1.12.13+real-5) unstable; urgency=low
++
++ * Drop PAM entirely, it was specific to Debian anyway
++ * Add cvs-switchroot, from src/scripts/mnt-cvsroot (Closes: #41685)
++ * Drop some old and irrelevant changelogs from the binary package
++ * Update from MirPorts 1.12.13-11 = MirOS BSD 0AAE.2
++ * Revert most of 65_login_cvspass_message and just be silent if the
++ pserver client password file doesn't exist and create it silently
++ if needed (Closes: #524146)
++ * Honour noexec flag in 'cvs -n init' (Closes: #151982)
++ * Sync modules option list with cederqvist (Closes: #226888)
++ * Apply patch for assert on negated version numbers on diff
++ (Closes: #297551)
++ From: Peter Moulder <Peter.Moulder@infotech.monash.edu.au>
++ * Change cvs add dir message (Closes: #294094)
++ * Accept port when using extssh connection method (Closes: #151882)
++ * Write a new command for direct ,v file download (Closes: #421119)
++ * Drop broken libbsd.fd.o headers and shut up gcc 4.6 warnings
++ * Fix piuparts breakage: ignore delgroup non-existence on purge
++ * Deliver a NEWS.Debian (Closes: #626106)
++ * d/README.source: Update, call to automake is now also needed
++
++ -- Thorsten Glaser <tg@mirbsd.de> Sat, 11 Jun 2011 05:32:56 +0000
++
++cvs (2:1.12.13+real-4) unstable; urgency=low
++
++ * Renamed .orig.tar.gz due to archive pathname conflict
++ * d/README.source: Document patch location (VCS-CVS, VCS-Browser alike)
++ * New build from MirPorts 1.12.13-10 = MirOS BSD 0AAE.1
++ - Contains changes from cvs
++ (1:1.12.13-12debianderivatethatcannotbenamed1):
++ + Apply fix from Kees Cook to avoid %n in writable memory (LP: #296453)
++ - Other BTS relevant changes:
++ + Allow CVSROOT-less “version†(LP: #97683) and “cvs versionâ€
++ + Update loginfo documentation, ‘%{t}’ is indeed gone (Closes: #329151)
++ + Lower syslog level from emergency (Closes: #563856)
++ + Fix awk substr start argument, thanks John Hughes (Closes: #518600)
++ + Rename nodes with colons in them (Closes: #113809)
++ + Fix typo (Closes: #464137)
++ + Document missing rcs2log(1) options (Closes: #306354) and fix dashes
++ * Upload new package to Debian unstable (Closes: #306432)
++ (Closes: #458864) (Closes: #464134) (Closes: #479752)
++ (Closes: #576035) (Closes: #614700) (Closes: #617578)
++ - Drop PAM (Closes: #340984) (Closes: #393436)
++ - No longer installs repositories (Closes: #168300)
++ (Closes: #408117) (Closes: #482301) (Closes: #499790)
++ (Closes: #511643) (Closes: #607297)
++ - Deprecate pserver (Closes: #343169) (Closes: #495938)
++ - Drop Origin and Bugs headers again (upload to Debian proper)
++ and old (pre-Debian upload) private repo changelog entries
++ - Thank you, Steve, for handing over package maintainership!
++ * Clarify package description (LP: #377411)
++ * Build with Kerberos V support (Closes: #60800) (LP: #157760)
++ * Recommends: openssh-client; Suggests: rcs
++
++ -- Thorsten Glaser <tg@mirbsd.de> Sat, 07 May 2011 01:00:39 +0000
+--- cvs-1.12.13+real.orig/debian/compat
++++ cvs-1.12.13+real/debian/compat
+@@ -0,0 +1 @@
++10
+--- cvs-1.12.13+real.orig/debian/control
++++ cvs-1.12.13+real/debian/control
+@@ -0,0 +1,41 @@
++Source: cvs
++Section: vcs
++Priority: optional
++Maintainer: Thorsten Glaser <tg@mirbsd.de>
++Homepage: http://www.nongnu.org/cvs/
++Build-Depends: debhelper (>= 10), autotools-dev, bsdmainutils,
++ ghostscript, groff, libbsd-dev, libkrb5-dev | heimdal-dev, procps,
++ texinfo, texlive-latex-recommended, texlive-fonts-recommended, zlib1g-dev
++Standards-Version: 3.9.8
++VCS-git: https://anonscm.debian.org/git/collab-maint/cvs.git
++VCS-Browser: https://anonscm.debian.org/cgit/collab-maint/cvs.git
++
++Package: cvs
++Architecture: any
++Multi-Arch: foreign
++Depends: ${misc:Depends}, ${shlibs:Depends}, adduser,
++ dpkg (>= 1.15.4) | install-info
++Recommends: openssh-client
++Suggests: mksh (>= 40~), rcs
++Enhances: rcs, cvs2svn (>= 2.4.0-4~)
++Replaces: cvs-doc
++Conflicts: cvs-doc
++Provides: cvs-doc
++Description: Concurrent Versions System
++ CVS is a version control system, which allows you to keep access
++ to old versions of files (usually source code), keep a log of
++ who, when, and why changes occurred, etc., like RCS or SCCS.
++ It handles multiple developers, multiple directories, triggers to
++ enable/log/control various operations, and can work over a wide
++ area network. The texinfo manual provides further information on
++ more tasks that it can perform.
++ .
++ There are some tasks that are not covered by CVS. They can be done in
++ conjunction with CVS but will tend to require some script-writing and
++ software other than CVS. These tasks are bug-tracking, build management
++ (that is, make and make-like tools), and automated testing. However,
++ CVS makes these tasks easier.
++ .
++ This package contains a CVS binary which can act as both client and
++ server, although there is no CVS dæmon; to access remote repositories,
++ please use :extssh: not :pserver: any more.
+--- cvs-1.12.13+real.orig/debian/copyright
++++ cvs-1.12.13+real/debian/copyright
+@@ -0,0 +1,117 @@
++This package was debianised by Thorsten Glaser <tg@mirbsd.de> on
++Wed Sep 15 21:52:29 UTC 2010.
++
++It was downloaded from:
++http://ftp.gnu.org/non-gnu/cvs/source/feature/1.12.13/cvs-1.12.13.tar.gz
++
++
++GNU CVS itself is Copyright © 1986-2005
++ The Free Software Foundation, Inc.
++with portions contributed by others.
++
++It is licenced under the GNU General Public License, version 2 or later,
++with a good part available under either GPLv1 or LGPLv2.x. On Debian syâ€
++stems the licence can be found at: /usr/share/common-licenses/GPL-2
++
++Parts of the code are covered by the following GPL-compatible copyright:
++
++ * Copyright (c) 1993 Bob Withers
++ * All Rights Reserved
++ *
++ * Permission to use, copy, modify, and distribute this software and
++ * its documentation for any purpose and without fee is hereby granted
++ * provided that the above copyright notice appears in all copies and
++ * that both the copyright notice and this permission notice appear in
++ * supporting documentation.
++
++One header file, which almost certainly does not fall under copyright
++law, is covered by the four-clause UCB licence, however in 1999 the
++advertising clause was rescinded, so it’s GPL compatible now:
++
++ * Copyright (c) 1989 The Regents of the University of California.
++ * All rights reserved.
++ *
++ * Redistribution and use in source and binary forms, with or without
++ * modification, are permitted provided that the following conditions
++ * are met:
++ * 1. Redistributions of source code must retain the above copyright
++ * notice, this list of conditions and the following disclaimer.
++ * 2. Redistributions in binary form must reproduce the above copyright
++ * notice, this list of conditions and the following disclaimer in the
++ * documentation and/or other materials provided with the distribution.
++ * 3. All advertising materials mentioning features or use of this software
++ * must display the following acknowledgement:
++ * This product includes software developed by the University of
++ * California, Berkeley and its contributors.
++ * 4. Neither the name of the University nor the names of its contributors
++ * may be used to endorse or promote products derived from this software
++ * without specific prior written permission.
++ *
++ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
++ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
++ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
++ * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
++ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
++ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
++ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
++ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
++ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
++ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
++ * SUCH DAMAGE.
++
++Parts and the packaging are covered by the following GPL-compatible licence:
++
++# Copyright © 2005, 2008, 2011, 2017
++# mirabilos <m@mirbsd.org>
++#
++# Provided that these terms and disclaimer and all copyright notices
++# are retained or reproduced in an accompanying document, permission
++# is granted to deal in this work without restriction, including unâ€
++# limited rights to use, publicly perform, distribute, sell, modify,
++# merge, give away, or sublicence.
++#
++# This work is provided “AS IS†and WITHOUT WARRANTY of any kind, to
++# the utmost extent permitted by applicable law, neither express nor
++# implied; without malicious intent or gross negligence. In no event
++# may a licensor, author or contributor be held liable for indirect,
++# direct, other damage, loss, or other issues arising in any way out
++# of dealing in the work, even if advised of the possibility of such
++# damage or existence of a defect, except proven that it results out
++# of said person’s immediate fault when using the work as intended.
++
++CVS also includes a convenience copy of zlib which is not used;
++it’s covered by these (GPL-compatible) terms:
++
++ Copyright (C) 1995-2005 Jean-loup Gailly and Mark Adler
++
++ This software is provided 'as-is', without any express or implied
++ warranty. In no event will the authors be held liable for any damages
++ arising from the use of this software.
++
++ Permission is granted to anyone to use this software for any purpose,
++ including commercial applications, and to alter it and redistribute it
++ freely, subject to the following restrictions:
++
++ 1. The origin of this software must not be misrepresented; you must not
++ claim that you wrote the original software. If you use this software
++ in a product, an acknowledgment in the product documentation would be
++ appreciated but is not required.
++ 2. Altered source versions must be plainly marked as such, and must not be
++ misrepresented as being the original software.
++ 3. This notice may not be removed or altered from any source distribution.
++
++zlib, again, contains contributed material under terms as those:
++
++ * Copyright (c) 1997
++ * Christian Michelsen Research AS
++ * Advanced Computing
++ * Fantoftvegen 38, 5036 BERGEN, Norway
++ * http://www.cmr.no
++ *
++ * 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. Christian Michelsen Research AS makes no
++ * representations about the suitability of this software for any
++ * purpose. It is provided "as is" without express or implied warranty.
+--- cvs-1.12.13+real.orig/debian/cvs-switchroot
++++ cvs-1.12.13+real/debian/cvs-switchroot
+@@ -0,0 +1,99 @@
++#!/bin/mksh
++# $MirOS: src/scripts/mnt-cvsroot,v 1.19 2016/10/21 21:09:59 tg Exp $
++#-
++# Copyright © 2005, 2008, 2011
++# mirabilos <m@mirbsd.org>
++#
++# Provided that these terms and disclaimer and all copyright notices
++# are retained or reproduced in an accompanying document, permission
++# is granted to deal in this work without restriction, including unâ€
++# limited rights to use, publicly perform, distribute, sell, modify,
++# merge, give away, or sublicence.
++#
++# This work is provided “AS IS†and WITHOUT WARRANTY of any kind, to
++# the utmost extent permitted by applicable law, neither express nor
++# implied; without malicious intent or gross negligence. In no event
++# may a licensor, author or contributor be held liable for indirect,
++# direct, other damage, loss, or other issues arising in any way out
++# of dealing in the work, even if advised of the possibility of such
++# damage or existence of a defect, except proven that it results out
++# of said person’s immediate fault when using the work as intended.
++#-
++# Change CVSROOT of a checked out tree (and save space with it)
++# With option -T: change Tag instead of Root
++
++me=${0##*/}
++function die {
++ print -ru2 -- "$me: $*"
++ exit 1
++}
++
++if [[ $1 = -T ]]; then
++ tagmode=-T
++ fn=Tag
++ shift
++else
++ tagmode=
++ fn=Root
++fi
++newroot=$1
++useroot=0
++if [[ $newroot = - ]]; then
++ shift
++ newroot=$(realpath "$1")
++ [[ -d $newroot ]] && if [[ -d $newroot/CVS ]]; then
++ newroot=$newroot/CVS/$fn
++ else
++ newroot=$newroot/$fn
++ fi
++ useroot=1
++fi
++if [[ -z $newroot || $newroot = -? ]]; then
++ print -u2 "Syntax: $me newroot [dir [...]]"
++ print -u2 "\t$me - .../CVS/Root [dir [...]]"
++ print -u2 "\t$me -T - .../CVS/Tag [dir [...]]"
++ exit 1
++fi
++shift
++
++[[ -n $1 ]] || set -- .
++
++# realpath(2)ise arguments
++set -A arg
++i=0
++for name in "$@"; do
++ arg[i++]=$(realpath "$name")
++done
++
++T="$(mktemp ${arg[0]}/$me.XXXXXXXXXX)" || die fatal: cannot mktemp
++
++if (( useroot )); then
++ rm -f "$T"
++ ln "$newroot" "$T" || cp "$newroot" "$T" || \
++ die "fatal: cannot copy '$newroot' to temporary '$T'"
++fi
++
++trap 'rm -f "$T"; exit 0' 0
++trap 'rm -f "$T"; trap - EXIT; exit 1' 1 2 3 5 13 15
++
++if (( !useroot )); then
++ chmod 664 "$T"
++ print -r -- "$newroot" >"$T"
++fi
++
++let rv=0
++find "${arg[@]}" -path \*/CVS/$fn -print0 |&
++while IFS= read -d '' -pr name; do
++ rm "$name" || die "error: cannot rm <$name>"
++ ln -f "$T" "$name" || if ! U="$(mktemp ${arg[0]}/$me.XXXXXXXXXX)"; then
++ cp "$T" "$name"
++ elif cat "$T" >"$U" && ln -f "$U" "$name"; then
++ rm -f "$T"
++ T="$U"
++ else
++ rm -f "$U"
++ cp "$T" "$name"
++ fi
++done
++
++exit 0
+--- cvs-1.12.13+real.orig/debian/cvs-switchroot.1
++++ cvs-1.12.13+real/debian/cvs-switchroot.1
+@@ -0,0 +1,76 @@
++.Dd June 10, 2011
++.Dt CVS\-SWITCHROOT 1
++.Os
++.Sh NAME
++.Nm cvs\-switchroot
++.Nd change repository or tag in a cvs working copy
++.Sh SYNOPSIS
++.Nm
++.Op Fl T
++.Ar newroot
++.Op Ar
++.Pp
++.Nm
++.Op Fl T
++\-\&
++.Ar srcpath
++.Op Ar
++.Sh DESCRIPTION
++The
++.Nm
++utility manipulates a CVS working copy directly,
++modifying the information stored in the administrative
++subdirectory and saving space by hardlinking if possible.
++.Pp
++If the
++.Fl T
++option is given, the sticky tag is operated on,
++otherwise, the repository path
++.Pq Ev CVSROOT .
++.Pp
++The information (Tag or Root) is set to the same as in
++.Ar srcpath
++if the first non-option argument
++.Ar newroot
++is a sole dash
++.Pq Sq \-\& ,
++the literal value
++.Ar newroot
++otherwise.
++.Sh EXAMPLES
++Change all
++.Pa Root
++information in the current sandbox to
++.Pa /cvs :
++.Bd -literal -offset ident
++$ cvs-switchroot /cvs .
++.Ed
++.Pp
++Set all roots in the current working directory and all
++its subdirectories to the
++.Pa Root
++of the parent directory:
++.Bd -literal -offset ident
++$ cvs-switchroot \- .. .
++.Ed
++.Pp
++Hardlink the
++.Pa Tag
++information in the current working directory, for example
++.Pa /usr/src ,
++and
++.Pa /usr/ports
++with each other:
++.Bd -literal -offset ident
++$ cvs-switchroot \-T \- . . /usr/ports
++.Ed
++.Sh SEE ALSO
++.Xr cvs 1
++.Sh HISTORY
++.Nm
++has existed in the MirBSD source tree since 2005.
++It was added to Debian's cvs package in 2011.
++.Sh CAVEATS
++.Nm
++depends on
++.Nm mksh .
+--- cvs-1.12.13+real.orig/debian/doc-base
++++ cvs-1.12.13+real/debian/doc-base
+@@ -0,0 +1,21 @@
++Document: cvs-doc
++Title: Cederqvist - The CVS manual
++Author: FSF, Derek R. Price, Ximbiot, Signum Support AB, and others
++Abstract: This manual describes how to use and administer CVS.
++ It is both a manual and a tutorial, as well as a reference guide,
++ also known as The Cederqvist, and *the* book to read before using CVS.
++Section: Programming
++
++Format: HTML
++Index: /usr/share/doc/cvs/cvs.html
++Files: /usr/share/doc/cvs/cvs.html*
++
++Format: Text
++Files: /usr/share/doc/cvs/cvs.txt*
++
++Format: PDF
++Files: /usr/share/doc/cvs/cvs.pdf*
++
++Format: Info
++Index: /usr/share/info/cvs.info.gz
++Files: /usr/share/info/cvs.info*
+--- cvs-1.12.13+real.orig/debian/doc-base.client
++++ cvs-1.12.13+real/debian/doc-base.client
+@@ -0,0 +1,18 @@
++Document: cvs-doc-client
++Title: CVS client/server protocol description
++Abstract: This document describes the client/server protocol used by CVS.
++Section: Programming
++
++Format: HTML
++Index: /usr/share/doc/cvs/cvsclient.html
++Files: /usr/share/doc/cvs/cvsclient.html*
++
++Format: Text
++Files: /usr/share/doc/cvs/cvsclient.txt*
++
++Format: PDF
++Files: /usr/share/doc/cvs/cvsclient.pdf*
++
++Format: Info
++Index: /usr/share/info/cvsclient.info.gz
++Files: /usr/share/info/cvsclient.info*
+--- cvs-1.12.13+real.orig/debian/doc-base.faq
++++ cvs-1.12.13+real/debian/doc-base.faq
+@@ -0,0 +1,10 @@
++Document: cvs-doc-faq
++Title: CVS - Frequently Asked Questions
++Author: David Grubbs, Dr. Pascal Molli, and others
++Abstract: Packaged FAQ-O-MATIC dump containing a number of answers
++ to frequently asked questions about CVS. The document may be out of
++ date; http://ximbiot.com/cvs/wiki/CVS%20FAQ contains an updated version.
++Section: Programming
++
++Format: Text
++Files: /usr/share/doc/cvs/FAQ*
+--- cvs-1.12.13+real.orig/debian/doc-base.intro
++++ cvs-1.12.13+real/debian/doc-base.intro
+@@ -0,0 +1,7 @@
++Document: cvs-doc-intro
++Title: Introduction to using CVS
++Author: Steven Pemberton <Steven.Pemberton@cwi.nl>
++Section: Programming
++
++Format: Text
++Files: /usr/share/cvs/contrib/intro.doc*
+--- cvs-1.12.13+real.orig/debian/doc-base.paper
++++ cvs-1.12.13+real/debian/doc-base.paper
+@@ -0,0 +1,14 @@
++Document: cvs-doc-paper
++Title: CVS II: Parallelizing Software Development
++Author: Brian Berliner <berliner@prisma.com>
++Abstract: This paper is the cvs USENIX article, Winter 1990.
++ The program described in this paper fills a need in the UNIX community
++ for a freely available tool to manage software revision and release
++ control in a multi-developer, multi-directory, multi-group environment.
++ This tool also addresses the increasing need for tracking third-party
++ vendor source distributions while trying to maintain local modifications
++ to earlier releases.
++Section: Programming
++
++Format: PDF
++Files: /usr/share/doc/cvs/cvs-paper.pdf*
+--- cvs-1.12.13+real.orig/debian/doc-base.rcsfiles
++++ cvs-1.12.13+real/debian/doc-base.rcsfiles
+@@ -0,0 +1,11 @@
++Document: cvs-doc-rcsfiles
++Title: RCS file format description
++Author: Jim Kingdon
++Abstract: This file attempts to document the RCS file format (which is
++ implemented by a great many tools, both free and non-free, both by
++ calling GNU RCS and by reimplementing access to RCS files) in some
++ standard separate from any one tool.
++Section: Programming
++
++Format: Text
++Files: /usr/share/doc/cvs/RCSFILES*
+--- cvs-1.12.13+real.orig/debian/docs
++++ cvs-1.12.13+real/debian/docs
+@@ -0,0 +1,20 @@
++AUTHORS
++BUGS
++DEVEL-CVS
++FAQ
++HACKING
++MINOR-BUGS
++NEWS
++PROJECTS
++README
++TODO
++debian/builddir/doc/*.html
++debian/builddir/doc/*.txt
++debian/builddir/doc/cvs.pdf
++debian/builddir/doc/cvsclient.pdf
++debian/stagedir/clogs/ChangeLog.*
++doc/HACKING.DOCS
++doc/RCSFILES
++doc/cvs-paper.ms
++doc/cvs-paper.pdf
++doc/writeproxy.rtf
+--- cvs-1.12.13+real.orig/debian/info
++++ cvs-1.12.13+real/debian/info
+@@ -0,0 +1 @@
++debian/stagedir/usr/share/info/*.info
+--- cvs-1.12.13+real.orig/debian/install
++++ cvs-1.12.13+real/debian/install
+@@ -0,0 +1,11 @@
++#contrib/cvs_acls.html usr/share/cvs/contrib/
++contrib/descend.man usr/share/cvs/contrib/
++contrib/descend.sh usr/share/cvs/contrib/
++contrib/rcs2log.1 usr/share/cvs/contrib/
++contrib/rcs2sccs.sh usr/share/cvs/contrib/
++contrib/sandbox_status.man usr/share/cvs/contrib/
++debian/cvs-switchroot usr/bin/
++debian/lintian/cvs usr/share/lintian/overrides/
++debian/stagedir/usr/bin/cvs usr/bin/
++#debian/stagedir/usr/bin/cvsbug usr/bin/
++debian/stagedir/usr/share/cvs/contrib/* usr/share/cvs/contrib/
+--- cvs-1.12.13+real.orig/debian/lintian/cvs
++++ cvs-1.12.13+real/debian/lintian/cvs
+@@ -0,0 +1,2 @@
++# see #469523 for justification
++cvs: arch-dep-package-has-big-usr-share *
+--- cvs-1.12.13+real.orig/debian/manpages
++++ cvs-1.12.13+real/debian/manpages
+@@ -0,0 +1,4 @@
++debian/cvs-switchroot.1
++debian/stagedir/usr/share/man/man1/cvs.1
++debian/stagedir/usr/share/man/man5/cvs.5
++#debian/stagedir/usr/share/man/man8/cvsbug.8
+--- cvs-1.12.13+real.orig/debian/postinst
++++ cvs-1.12.13+real/debian/postinst
+@@ -0,0 +1,56 @@
++#!/bin/sh
++
++set -e
++
++# This maintainer script can be called the following ways:
++#
++# * new-postinst "configure" [$most_recently_configured_version]
++# The package is unpacked; all dependencies are unpacked and, when there
++# are no circular dependencies, configured.
++#
++# * old-postinst "abort-upgrade" $new_version
++# * conflictors-postinst "abort-remove" "in-favour" $package
++# $new_version
++# * postinst "abort-remove"
++# * deconfigureds-postinst "abort-deconfigure" "in-favour"
++# $failed_install_package $fip_version ["removing"
++# $conflicting_package $cp_version]
++# The package is unpacked; all dependencies are at least Half-Installed,
++# previously been configured, and not removed. In some error situations,
++# dependencies may not be even fully unpacked.
++#
++# * postinst "triggered" "${triggers[*]}"
++# For trigger-only calls, i.e. if "configure" is not called.
++
++# upgrade case from Epoch 1 Debian CVS
++nukes='/etc/cvs.conf /etc/cvs-cron.conf /etc/cvs-pserver.conf /etc/cron.weekly/cvs /etc/pam.d/cvs'
++for x in $nukes; do
++ test -e "$x" || continue
++ rm -f $nukes
++ test -x /usr/sbin/update-inetd && update-inetd --remove "^cvspserver"
++ break
++done
++
++case $1 in
++configure)
++ addgroup --force-badname --system _cvsadmin
++ ;;
++
++abort-upgrade|abort-remove|abort-deconfigure)
++ ;;
++
++triggered)
++ ;;
++
++*)
++ echo >&2 "postinst called with unknown subcommand '$1'"
++ exit 1
++ ;;
++esac
++
++# dh_installdeb will replace this with shell code automatically
++# generated by other debhelper scripts.
++
++#DEBHELPER#
++
++exit 0
+--- cvs-1.12.13+real.orig/debian/postrm
++++ cvs-1.12.13+real/debian/postrm
+@@ -0,0 +1,51 @@
++#!/bin/sh
++
++set -e
++
++# This maintainer script can be called the following ways:
++#
++# * postrm "remove"
++# * postrm "purge"
++# * old-postrm "upgrade" $new_version
++# * disappearers-postrm "disappear" $overwriter $o_version
++# The package's files have been removed or replaced; only Essential pak-
++# kages may be available; skip gracefully actions requiring Depends.
++#
++# * new-postrm "failed-upgrade" $old_version
++# * new-postrm "failed-upgrade" $old_version $new_version # 1.18.5, stretch
++# Called when 'old-postrm "upgrade"' fails; the new package is unpacked,
++# Essential packages and Pre-Depends are available; the latter have been
++# configured and never removed but may be Unpacked or Half-Configured.
++#
++# * new-postrm "abort-install" [$old_version]
++# * new-postrm "abort-install" $old_version $new_version # 1.18.5, stretch
++# * new-postrm "abort-upgrade" $old_version
++# * new-postrm "abort-upgrade" $old_version $new_version # 1.18.5, stretch
++# Called when preinst fails; package is not unpacked. Essential packages
++# and (unpacked or Half-Configured) Pre-Depends are available.
++
++case $1 in
++remove)
++ ;;
++
++purge)
++ rm -f /etc/cvs.conf /etc/cvs-cron.conf /etc/cvs-pserver.conf /etc/cron.weekly/cvs /etc/pam.d/cvs
++ test -x /usr/sbin/update-inetd && update-inetd --remove "^cvspserver"
++ (delgroup --system --only-if-empty _cvsadmin || :)
++ ;;
++
++upgrade|disappear|failed-upgrade|abort-install|abort-upgrade)
++ ;;
++
++*)
++ echo >&2 "postrm called with unknown subcommand '$1'"
++ exit 1
++ ;;
++esac
++
++# dh_installdeb will replace this with shell code automatically
++# generated by other debhelper scripts.
++
++#DEBHELPER#
++
++exit 0
+--- cvs-1.12.13+real.orig/debian/rules
++++ cvs-1.12.13+real/debian/rules
+@@ -0,0 +1,176 @@
++#!/usr/bin/make -f
++
++DEB_BUILD_ARCH=$(shell dpkg-architecture -qDEB_BUILD_ARCH)
++DEB_HOST_ARCH=$(shell dpkg-architecture -qDEB_HOST_ARCH)
++DEB_BUILD_GNU_TYPE=$(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE)
++DEB_HOST_GNU_TYPE=$(shell dpkg-architecture -qDEB_HOST_GNU_TYPE)
++
++# is ${CC} defined anywhere (other than implicit rules?)
++ifneq (,$(findstring $(origin CC),default undefined))
++# no - then default to gcc (or cross-gcc)
++ifneq (${DEB_BUILD_ARCH},${DEB_HOST_ARCH})
++CC= ${DEB_HOST_GNU_TYPE}-gcc
++else
++CC= gcc
++endif
++endif
++
++CONFIGURE_ENV:= CC='${CC}'
++EXTRA_CFLAGS= -Wall -fno-strict-aliasing -Wformat
++# addresses part of #698908
++EXTRA_CFLAGS+= -fwrapv
++# for now. uses are mostly checked.
++EXTRA_CFLAGS+= -Wno-unused-result
++EXTRA_CPPFLAGS= -D_GNU_SOURCE -DUSE_LIBBSD
++
++ifneq (,$(wildcard /usr/share/dpkg/buildflags.mk))
++# dpkg-dev (>= 1.16.1~)
++DEB_CFLAGS_MAINT_APPEND=${EXTRA_CFLAGS}
++DEB_CPPFLAGS_MAINT_APPEND=${EXTRA_CPPFLAGS}
++DEB_BUILD_MAINT_OPTIONS=hardening=+all
++DPKG_EXPORT_BUILDFLAGS= Yes
++include /usr/share/dpkg/buildflags.mk
++else
++# old-fashioned way to determine build flags
++CFLAGS= -O$(if $(findstring noopt,${DEB_BUILD_OPTIONS}),0,2) -g
++CFLAGS+= ${EXTRA_CFLAGS}
++CPPFLAGS+= ${EXTRA_CPPFLAGS}
++CONFIGURE_ENV+= CFLAGS='${CFLAGS}'
++CONFIGURE_ENV+= CPPFLAGS='${CPPFLAGS}'
++CONFIGURE_ENV+= LDFLAGS='${LDFLAGS}'
++endif
++
++LIBS+= -lbsd
++
++CONFIGURE_ENV+= LIBS='${LIBS}'
++CONFIGURE_ENV+= CSH=/bin/csh
++
++CONFIGURE_ARGS:= --build=${DEB_BUILD_GNU_TYPE} \
++ --host=${DEB_HOST_GNU_TYPE} \
++ --prefix=/usr \
++ --infodir=/usr/share/info \
++ --mandir=/usr/share/man \
++ --sysconfdir=/etc \
++ --disable-dependency-tracking \
++ --disable-maintainer-mode \
++ --disable-pam \
++ --disable-nls \
++ --enable-client \
++ --enable-password-authenticated-client \
++ --enable-server \
++ --enable-proxy \
++ --enable-case-sensitivity \
++ --enable-encryption \
++ --disable-lock-compatibility \
++ --enable-rootcommit \
++ --disable-old-info-format-support \
++ --enable-config-override=no \
++ --without-krb4 \
++ --with-gssapi \
++ --with-external-zlib \
++ --with-rsh=ssh \
++ --with-editor=/usr/bin/editor \
++ --with-tmpdir=/var/tmp \
++ --with-umask=002 \
++ --with-cvs-admin-group=_cvsadmin
++
++MAKE_ARGS:= MAKEINFO=makeinfo
++MAKE_ARGS+= MAKEINFOFLAGS=--no-split
++
++CLEANFILES:= autom4te.cache build-aux/config.guess \
++ build-aux/config.sub cvs.spec debian/.*_stamp \
++ debian/CVSTEMP debian/builddir debian/stagedir \
++ doc/cvs-paper.pdf doc/cvs.1 doc/cvs.info* \
++ doc/cvs.pdf doc/cvsclient.info* doc/cvsclient.pdf \
++ doc/getdate-cvs.texi emx/Makefile os2/Makefile \
++ vms/config.h windows-NT/config.h
++
++debian/.configure_stamp:
++ dh_testdir
++ -rm -rf ${CLEANFILES}
++ cp /usr/share/misc/config.guess /usr/share/misc/config.sub build-aux/
++ dh_autoreconf
++ mkdir debian/builddir debian/stagedir
++ cd debian/builddir && \
++ env ${CONFIGURE_ENV} sh ../../configure ${CONFIGURE_ARGS}
++ # generate PDF 1.4 by default
++ ln -s ../../../build-aux/texinfo.tex debian/builddir/doc/texinfo-r.tex
++ printf '%s\n' \
++ '\pdfminorversion4\relax\pdfobjcompresslevel0\relax%' \
++ '\input texinfo-r.tex' \
++ >debian/builddir/doc/texinfo.tex
++ @:>$@
++
++build-indep:
++build build-arch: debian/.build_stamp
++
++debian/.build_stamp: debian/.configure_stamp
++ dh_testdir
++ cd debian/builddir && ${MAKE} ${MAKE_ARGS}
++ cd debian/builddir && ${MAKE} -C doc ${MAKE_ARGS} doc html info pdf txt
++ifneq (,$(filter sanity,$(DEB_BUILD_OPTIONS)))
++ # run the testsuite after build (DEB_BUILD_OPTIONS=sanity)
++ # warning: this takes a *lot* of time!
++ # idea: run this under Valgrind to take even more time ;)
++ cd debian/builddir && ${MAKE} ${MAKE_ARGS} check
++endif
++ @:>$@
++
++clean:
++ dh_testdir
++ dh_autoreconf_clean
++ -rm -rf ${CLEANFILES}
++ dh_clean
++
++binary-indep:
++
++binary-arch: debian/.build_stamp
++ dh_testdir
++ dh_testroot
++ if test -x "$$(which dh_prep)"; then dh_prep; else dh_clean -k; fi
++ -rm -rf debian/stagedir
++ mkdir -p debian/stagedir/clogs
++ cd debian/builddir && \
++ ${MAKE} ${MAKE_ARGS} DESTDIR=${CURDIR}/debian/stagedir install
++ cat ChangeLog ChangeLog.zoo >debian/stagedir/clogs/ChangeLog
++ cat doc/ChangeLog doc/ChangeLog.fsf >debian/stagedir/clogs/ChangeLog.doc
++ #cat lib/ChangeLog lib/ChangeLog.fsf >debian/stagedir/clogs/ChangeLog.lib
++ #cat src/ChangeLog src/ChangeLog-97 src/ChangeLog-96 src/ChangeLog-9395 \
++ # src/ChangeLog-9194 >debian/stagedir/clogs/ChangeLog.src
++ cp src/ChangeLog debian/stagedir/clogs/ChangeLog.src
++ cp contrib/ChangeLog debian/stagedir/clogs/ChangeLog.contrib
++ cp diff/ChangeLog debian/stagedir/clogs/ChangeLog.diff
++ #cp m4/ChangeLog debian/stagedir/clogs/ChangeLog.m4
++ #cp man/ChangeLog debian/stagedir/clogs/ChangeLog.man
++ #cp tools/ChangeLog debian/stagedir/clogs/ChangeLog.tools
++ # fat and nonsensical to ship this
++ rm -f debian/stagedir/usr/share/cvs/contrib/rcs-5.7-commitid.patch
++ # uses csh
++ rm -f debian/stagedir/usr/share/cvs/contrib/sccs2rcs
++ # unsafe
++ rm -f debian/stagedir/usr/share/cvs/contrib/commit_prep
++ rm -f debian/stagedir/usr/share/cvs/contrib/cvs_acls
++ rm -f debian/stagedir/usr/share/cvs/contrib/log
++ rm -f debian/stagedir/usr/share/cvs/contrib/log_accum
++ rm -f debian/stagedir/usr/share/cvs/contrib/mfpipe
++ rm -f debian/stagedir/usr/share/cvs/contrib/rcslock
++ # we ship cvs-switchroot(1) instead
++ rm -f debian/stagedir/usr/share/cvs/contrib/newcvsroot
++ dh_installchangelogs debian/stagedir/clogs/ChangeLog
++ dh_installdocs
++ dh_install
++ dh_installinfo
++ dh_installman
++ dh_link
++ dh_strip
++ dh_compress -X.pdf
++ cd debian/cvs/usr/share/cvs/contrib && chmod +x descend.sh rcs2sccs.sh
++ dh_fixperms
++ dh_installdeb
++ dh_shlibdeps
++ dh_gencontrol
++ dh_md5sums
++ dh_builddeb -- -Zgzip -z9
++
++binary: binary-indep binary-arch
++.PHONY: binary binary-arch binary-indep build build-arch build-indep clean
+--- cvs-1.12.13+real.orig/debian/source.lintian-overrides
++++ cvs-1.12.13+real/debian/source.lintian-overrides
+@@ -0,0 +1,13 @@
++# desired method of keeping changes is as VCS working tree
++cvs source: direct-changes-in-diff-but-no-patch-system *
++
++# not my fault
++cvs source: source-contains-cvs-control-dir zlib/CVS
++cvs source: source-contains-cvs-control-dir zlib/os2/CVS
++cvs source: deprecated-configure-filename
++
++# not part of the binary package, and not legally a problem
++cvs source: license-problem-gfdl-non-official-text doc/getdate-cvs.texi *
++
++# no, thanks
++cvs source: no-dep5-copyright
+--- cvs-1.12.13+real.orig/debian/source/format
++++ cvs-1.12.13+real/debian/source/format
+@@ -0,0 +1 @@
++1.0
+--- cvs-1.12.13+real.orig/debian/upstream/signing-key.asc
++++ cvs-1.12.13+real/debian/upstream/signing-key.asc
+@@ -0,0 +1,25 @@
++-----BEGIN PGP PUBLIC KEY BLOCK-----
++Version: GnuPG v1
++
++mQGiBD4u3XQRBACN7F6Ducb4gaJw7LJPCaNbk4+eW/EWjiC+aoJhnNocWGfeKM2d
++NYRDPuyW6IqAmMPGBq0HAdSmi64BQg5mC8Q7NGujfzVDefACELuwQRUxFadbcAXn
++1eGUHGsst93FFwlhY+SH3Yuo1plvNBnlMhDt9ylT3/s38zKG874+A44L4wCg/7fh
++u0zqxFA0w22lXobhkKO4upED/0zA5BJ+d8brNLe6RpIQXTUzPxZ+UoU5RG9wlzv/
++zabSS6eAPpmeoIPeKdSwRO/G0/f3Qn/vxDKVTqRzNKpusKJz8TS+gDBZSFjQ1L3U
++TL6qh5kdnTy/yETg8wiUMXVaTqWtXP2eFEoHoto6dVP46BuULqQK980EmR6jg/ul
++EGC/BACD5iO81tygsm6OBEu59hJ+GykU60+9Mzz1/qPYdejJmJkmdoJZWplJULGD
++270nQlDarPJzMCpyrUzAZYdnmO6dwic/4hIxJENQ3GBrhbdr6YuuNgTxIXJJxTH7
++qTJqRrHLw9Cvk1oPFYlzE2vQuDNlrqxXg/V06l4/ZJfotj3mI7RNRGVyZWsgUi4g
++UHJpY2UgKEdldCBDVlMgU3VwcG9ydCBhdCA8aHR0cDovL3hpbWJpb3QuY29tPiEp
++IDxkZXJla0B4aW1iaW90LmNvbT6IYQQTEQIAGQUCPi7ddAQLBwMCAxUCAwMWAgEC
++HgECF4AAEgkQLD1OTBfyMaQHZUdQRwABAVEoAJ9o9E9Ya1dKUi1xRepkcpWqzjjt
++OgCgqSQSvoBA3NLu8/US2RAb+Xn1vAK5AQ0EPi7dehAEAJgUmO0vNtZJj4qUyyFd
++lw9wH9jQVRwblKxItr/0eO28ta+JOXWH668/wcyJFbVCulanS/o1crbq1bq3662Q
++EiHaZuB4hUJHCmkrfnxSvyw+w3tvk1ByiWw4uhsIiYCLpq6h/w9Yv0bSXOctGWFv
++/dnZw1f/N1PLU955Ze7hofVrAAMGA/9dw6G1LznEO2zjfTYHZtEKSlAtvRGqyOQc
++7htMOXagUpPAF/KGHnBETWVyuEfNNW1c/EQ3LQi+L23q9u0L+cAcWiR4SBCejEII
++3bFE3hPLGxfa0LamJrq0kkSDoYm6OWB4WNPSGBCSZywwdLnLjqXiCU1+rT6qZcvN
++JEKFAJUOA4hOBBgRAgAGBQI+Lt16ABIJECw9TkwX8jGkB2VHUEcAAQE9AACfTWlS
++/WpC3LgkF8rcbbap9M8U/RkAoL2DhkJHX3uYYJzagVUiWJffkLnR
++=hls5
++-----END PGP PUBLIC KEY BLOCK-----
+--- cvs-1.12.13+real.orig/debian/watch
++++ cvs-1.12.13+real/debian/watch
+@@ -0,0 +1,3 @@
++version=3
++opts="dversionmangle=s/^[0-9]+://;s/\+real$//,pgpsigurlmangle=s/$/.sig/" \
++http://ftp.gnu.org/non-gnu/cvs/source/feature/1.12.13/ cvs-([0-9.]*)\.tar\.gz
+--- cvs-1.12.13+real.orig/diff/analyze.c
++++ cvs-1.12.13+real/diff/analyze.c
+@@ -358,7 +358,7 @@
+ else
+ {
+ int c;
+- struct partition part;
++ struct partition part = { 0, 0, 0, 0 };
+
+ /* Find a point of correspondence in the middle of the files. */
+
+--- cvs-1.12.13+real.orig/diff/diff3.c
++++ cvs-1.12.13+real/diff/diff3.c
+@@ -1439,14 +1439,13 @@
+ int const mapping[3], rev_mapping[3];
+ {
+ int i;
+- int oddoneout;
++ int oddoneout = 0;
+ char *cp;
+ struct diff3_block *ptr;
+ int line;
+ size_t length;
+- int dontprint;
++ int dontprint = 0;
+ static int skew_increment[3] = { 2, 3, 1 }; /* 0==>2==>1==>3 */
+- char const *line_prefix = tab_align_flag ? "\t" : " ";
+
+ for (ptr = diff; ptr; ptr = D_NEXT (ptr))
+ {
+@@ -1503,7 +1502,7 @@
+ line = 0;
+ do
+ {
+- printf_output (line_prefix);
++ printf_output (tab_align_flag ? "\t" : " ");
+ cp = D_RELNUM (ptr, realfile, line);
+ length = D_RELLEN (ptr, realfile, line);
+ write_output (cp, length);
+@@ -1555,11 +1554,12 @@
+ int leading_dot, start, num;
+ {
+ write_output (".\n", 2);
+- if (leading_dot)
++ if (leading_dot) {
+ if (num == 1)
+ printf_output ("%ds/^\\.//\n", start);
+ else
+ printf_output ("%d,%ds/^\\.//\n", start, start + num - 1);
++ }
+ }
+
+ /*
+@@ -1750,11 +1750,12 @@
+ do
+ {
+ c = getc (infile);
+- if (c == EOF)
++ if (c == EOF) {
+ if (ferror (infile))
+ diff3_perror_with_exit ("input file");
+ else if (feof (infile))
+ diff3_fatal ("input file shrank");
++ }
+ cc = c;
+ write_output (&cc, 1);
+ }
+@@ -1804,7 +1805,7 @@
+ linesread += i;
+ while (0 <= --i)
+ while ((c = getc (infile)) != '\n')
+- if (c == EOF)
++ if (c == EOF) {
+ if (ferror (infile))
+ diff3_perror_with_exit ("input file");
+ else if (feof (infile))
+@@ -1813,6 +1814,7 @@
+ diff3_fatal ("input file shrank");
+ return conflicts_found;
+ }
++ }
+ }
+ /* Copy rest of common file. */
+ while ((c = getc (infile)) != EOF || !(ferror (infile) | feof (infile)))
+--- cvs-1.12.13+real.orig/diff/ifdef.c
++++ cvs-1.12.13+real/diff/ifdef.c
+@@ -189,7 +189,7 @@
+
+ default:
+ {
+- int value;
++ int value = 0;
+ char *speclim;
+
+ f = scan_printf_spec (spec);
+@@ -322,7 +322,7 @@
+
+ default:
+ {
+- int value;
++ int value = 0;
+ char *speclim;
+
+ f = scan_printf_spec (spec);
+--- cvs-1.12.13+real.orig/diff/side.c
++++ cvs-1.12.13+real/diff/side.c
+@@ -122,7 +122,7 @@
+ break;
+
+ case '\b':
+- if (in_position != 0 && --in_position < out_bound)
++ 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++)
+@@ -133,6 +133,7 @@
+ cc = c;
+ write_output (&cc, 1);
+ }
++ }
+ break;
+
+ case '\f':
+--- cvs-1.12.13+real.orig/diff/util.c
++++ cvs-1.12.13+real/diff/util.c
+@@ -235,7 +235,7 @@
+ close (pipes[0]);
+ }
+
+- execl (PR_PROGRAM, PR_PROGRAM, "-f", "-h", name, 0);
++ execl (PR_PROGRAM, PR_PROGRAM, "-f", "-h", name, NULL);
+ pfatal_with_name (PR_PROGRAM);
+ }
+ else
+--- cvs-1.12.13+real.orig/doc/HACKING.DOCS
++++ cvs-1.12.13+real/doc/HACKING.DOCS
+@@ -16,7 +16,9 @@
+ @strong{ ... } Similar to @emph{}, but the effect is to
+ bracket with asterisks in info files (* ... *)
+ and in bold in PDF & probably in postscript &
+- HTML.
++ HTML. It will cause spurious links in info if
++ used in some circumstances; if in doubt, use
++ @empy{ ... } instead then.
+ @noindent Suppresses indentation of the following
+ paragraph. This can ocassionally be useful
+ after examples and the like.
+@@ -44,3 +46,6 @@
+
+ For more on using texinfo docs, see the `info texinfo' documentation or
+ http://www.gnu.org/manual/texinfo/texinfo.html .
++
++
++$MirOS: src/gnu/usr.bin/cvs/doc/HACKING.DOCS,v 1.3 2010/09/19 19:42:52 tg Exp $
+--- cvs-1.12.13+real.orig/doc/Makefile.am
++++ cvs-1.12.13+real/doc/Makefile.am
+@@ -1,4 +1,5 @@
+ ## Process this file with automake to produce Makefile.in
++# $MirOS: src/gnu/usr.bin/cvs/doc/Makefile.am,v 1.5 2017/01/09 22:54:22 tg Exp $
+ # Makefile for GNU CVS documentation (excluding man pages - see ../man).
+ #
+ # Copyright (C) 1986-2005 The Free Software Foundation, Inc.
+@@ -84,7 +85,7 @@
+ # It is possible that an implicit .ms.ps target could be safely defined. I
+ # don't recall looking into it.
+ cvs-paper.ps: cvs-paper.ms
+- $(ROFF) -t -p -ms -Tps $(srcdir)/cvs-paper.ms >cvs-paper.ps-t
++ $(ROFF) -t -p -ms -Tps -P-p28c,21c $(srcdir)/cvs-paper.ms >cvs-paper.ps-t
+ cp cvs-paper.ps-t $@
+ -@rm -f cvs-paper.ps-t
+
+@@ -92,8 +93,8 @@
+ # Nothing in $(srcdir) be rebuilt, and this will always be rebuilt when it
+ # is dependant on cvs-paper.ps and cvs-paper.ps isn't distributed.
+ $(srcdir)/cvs-paper.pdf: cvs-paper.ms
+- $(ROFF) -t -p -ms -Tps $(srcdir)/cvs-paper.ms >cvs-paper.ps-t
+- ps2pdf cvs-paper.ps-t cvs-paper.pdf-t
++ $(ROFF) -t -p -ms -Tps -P-p28c,21c $(srcdir)/cvs-paper.ms >cvs-paper.ps-t
++ ps2pdf14 -sPAPERSIZE=pa4 cvs-paper.ps-t cvs-paper.pdf-t
+ cp cvs-paper.pdf-t $@
+ -@rm -f cvs-paper.pdf-t cvs-paper.ps-t
+
+--- cvs-1.12.13+real.orig/doc/cvs.man.footer
++++ cvs-1.12.13+real/doc/cvs.man.footer
+@@ -1,3 +1,4 @@
++.\" $MirOS: src/gnu/usr.bin/cvs/doc/cvs.man.footer,v 1.6 2017/01/08 19:42:05 tg Exp $
+ .SH "AUTHORS"
+ .TP
+ Dick Grune
+@@ -26,15 +27,13 @@
+ Have helped maintain
+ .B cvs
+ for many years.
+-.TP
++.PP
+ And many others too numerous to mention here.
+ .SH "SEE ALSO"
+ The most comprehensive manual for CVS is
+-Version Management with CVS by Per Cederqvist et al. Depending on
+-your system, you may be able to get it with the
+-.B info CVS
+-command or it may be available as cvs.pdf (Portable Document Format),
+-cvs.ps (PostScript), cvs.texinfo (Texinfo source), or cvs.html.
++Version Management with CVS by Per Cederqvist et al. (see
++.I NOTE
++at top).
+ .SP
+ For CVS updates, more information on documentation, software related
+ to CVS, development of CVS, and more, see:
+@@ -43,7 +42,6 @@
+ .PD 0
+ .IP "" 4
+ .B http://www.nongnu.org/cvs/
+-.in -1i
+ .SP
+ .BR ci ( 1 ),
+ .BR co ( 1 ),
+@@ -54,5 +52,7 @@
+ .BR patch ( 1 ),
+ .BR rcs ( 1 ),
+ .BR rcsdiff ( 1 ),
++.BR rcsintro ( 1 ),
+ .BR rcsmerge ( 1 ),
+-.BR rlog ( 1 ).
++.BR rlog ( 1 ),
++.BR re_format ( 7 ).
+--- cvs-1.12.13+real.orig/doc/cvs.man.header
++++ cvs-1.12.13+real/doc/cvs.man.header
+@@ -1,3 +1,5 @@
++.\" $MirOS: src/gnu/usr.bin/cvs/doc/cvs.man.header,v 1.6 2016/11/08 21:12:15 tg Exp $
++.\"
+ .\" This is the man page for CVS. It is auto-generated from the
+ .\" cvs.man.header, cvs.texinfo, & cvs.man.footer files. Please make changes
+ .\" there. A full copyright & license notice may also be found in cvs.texinfo.
+@@ -5,6 +7,7 @@
+ .\" Man page autogeneration, including this header file, is
+ .\" Copyright 2004-2005 The Free Software Foundation, Inc.,
+ .\" Derek R. Price, & Ximbiot <http://ximbiot.com>.
++.\" Copyright (c) 2004, 2010, 2012, 2016 mirabilos <m@mirbsd.org>.
+ .\"
+ .\" This documentation is free software; you can redistribute it and/or modify
+ .\" it under the terms of the GNU General Public License as published by
+@@ -23,7 +26,9 @@
+ .ds Rv \\$3
+ .ds Dt \\$4
+ ..
+-.TH CVS 1 "\*(Dt"
++.de IX
++..
++.TH CVS 1
+ .\" Full space in nroff; half space in troff
+ .de SP
+ .if n .sp
+@@ -51,11 +56,82 @@
+ .IX "release control system" "cvs command" "" "\fLcvs\fP \- concurrent versions system"
+ .IX "source control system" "cvs command" "" "\fLcvs\fP \- concurrent versions system"
+ .IX revisions "cvs command" "" "\fLcvs\fP \- source control"
+-This manpage is a summary of some of the features of
+-\fBcvs\fP. It is auto-generated from an appendix of the CVS manual.
+-For more in-depth documentation, please consult the
+-Cederqvist manual (via the
+-.B info CVS
+-command or otherwise,
+-as described in the SEE ALSO section of this manpage). Cross-references
+-in this man page refer to nodes in the same.
++.\"
++This manual page is a summary of parts of the \fBcvs\fP documentation
++and automatically generated from an appendix of the CVS manual
++(the \fICederqvist\fP), which is also the target of all cross-references
++found in this manual page; please refer to the full CVS manual
++for more in-depth documentation of the Concurrent Versions System.
++.PP
++If you're reading this manual page as part of the MirBSD online (HTML)
++manual pages archive, follow the cvs(GNU) link to the Cederqvist
++(and the cvsclient(GNU) link to the client/server protocol description,
++if necessary).
++.PP
++If you installed
++.B cvs
++via the Debian or MirPorts Framework package management systems,
++.br
++.RS
++.B /usr/mpkg/share/doc/cvs/cvs.pdf
++(MirPorts Framework) or
++.br
++.B /usr/share/doc/cvs/cvs.pdf
++(Debian), respectively,
++.RE
++are versions of the Cederqvist rendered as books, for printing
++and reading on screen.
++.PP
++If you have a Texinfo reader such as
++.B info
++installed (part of the base system on MirBSD; part of the
++.I info
++package on Debian), you can read the Cederqvist by entering:
++.br
++.RS
++.B info
++.I cvs
++.RE
++.PP
++Quick introduction to
++.B info
++so you aren't immediately lost:
++.RS 4n
++.TP 3n
++.I arrow\ keys
++to move on the page
++.TP 3n
++.I Tab
++to move to the next hyperlink
++.TP 3n
++.I Return
++to activate the hyperlink under the cursor
++.TP 3n
++.BI l \ (lowercase\ ell)
++to go to the previously visited page
++.TP 3n
++.IB Page\ Up/ b,\ Page\ Down/Space
++to move by screen pages, including advancing to the previous
++(or next, respectively) section at the first (last) screen page
++.TP 3n
++.B p,\ n
++to go to the previous (next) page on the current navigation hierarchy level
++.TP 3n
++.B t
++to go to the "Top" page, i.e. the start of the document
++.TP 3n
++.BI / <search-term>Return
++to start a search from the current cursor position and jump to the first result
++.TP 3n
++.BI / Return
++to jump to the next result in an ongoing search
++.TP 3n
++.B q
++to exit the
++.B info
++viewer
++.RE
++.PP
++Other ways to read further documentation are described in the
++.I SEE\ ALSO
++section of this manual page.
+--- cvs-1.12.13+real.orig/doc/cvs.texinfo
++++ cvs-1.12.13+real/doc/cvs.texinfo
+@@ -1,6 +1,17 @@
+ \input texinfo @c -*-texinfo-*-
+ @comment Documentation for CVS.
+ @setfilename cvs.info
++@tex
++ % set PA4 paper size (can print on both DIN ISO A4 and US Letter)
++ \globaldefs = 1%
++ \afourpaper%
++ \internalpagesizes{46\baselineskip}{160mm}%
++ {\voffset}{\hoffset}%
++ {\bindingoffset}{36pt}%
++ {28truecm}{21truecm}%
++ \globaldefs = 0%
++@end tex
++@comment $MirOS: src/gnu/usr.bin/cvs/doc/cvs.texinfo,v 1.29 2017/01/09 22:54:23 tg Exp $
+ @macro copyleftnotice
+ @noindent
+ Copyright @copyright{} 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
+@@ -9,7 +20,11 @@
+
+ @multitable @columnfractions .12 .88
+ @item Portions
+-@item @tab Copyright @copyright{} 1999, 2000, 2001, 2002, 2003, 2004, 2005
++@item @tab Copyright @copyright{} 2003, 2004, 2005, 2007, 2009, 2010, 2011,
++ 2013, 2014, 2015, 2016
++ mirabilos, The MirOS Project
++@item @tab Copyright @copyright{} 1999, 2000, 2001, 2002, 2003, 2004, 2005,
++ 2007
+ Derek R. Price,
+ @item @tab Copyright @copyright{} 2002, 2003, 2004, 2005
+ Ximbiot @url{http://ximbiot.com},
+@@ -51,6 +66,15 @@
+ @comment MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ @comment GNU General Public License for more details.
+
++@comment It should be noted that the Texinfo manual is distributed
++@comment under the above notice in all forms, except for the manpage
++@comment generated from it, and that the manual and the source code
++@comment of CVS often need to stay synchronised; therefore, exchanging
++@comment between these three entities under these two licences seems
++@comment to be granted, and the statement above can be interpreted as
++@comment explicit dual-licence grant. As a major contributor to this
++@comment documentation for MirBSD, I do not oppose. --mirabilos
++
+ @c See ../README for A4 vs. US letter size.
+ @c When we provided A4 postscript, and people tried to
+ @c print it on US letter, the usual complaint was that the
+@@ -103,7 +127,7 @@
+ @end direntry
+ @dircategory Individual utilities
+ @direntry
+-* cvs: (cvs)CVS commands. Concurrent Versions System
++* cvs: (cvs)CVS command list. Concurrent Versions System
+ @end direntry
+
+ @comment The titlepage section does not appear in the Info file.
+@@ -111,9 +135,9 @@
+ @sp 4
+ @comment The title is printed in a large font.
+ @center @titlefont{Version Management}
+-@sp
++@sp 1
+ @center @titlefont{with}
+-@sp
++@sp 1
+ @center @titlefont{CVS}
+ @sp 2
+ @center for @sc{cvs} @value{VERSION}
+@@ -141,13 +165,20 @@
+ @node Top
+ @top
+
++@ifnotinfo
++@anchor{Cederqvist}
++@end ifnotinfo
+ This info manual describes how to use and administer
+ @sc{cvs} version @value{VERSION}.
+ @end ifnottex
+
+ @ifinfo
+ @copyleftnotice
++@anchor{Cederqvist}
+ @end ifinfo
++@iftex
++@anchor{Cederqvist}
++@end iftex
+
+ @c This menu is pretty long. Not sure how easily that
+ @c can be fixed (no brilliant ideas right away)...
+@@ -181,6 +212,7 @@
+ * Troubleshooting:: Some tips when nothing works
+ * Credits:: Some of the contributors to this manual
+ * BUGS:: Dealing with bugs in CVS or this manual
++* CVS command list:: Alphabetical list of all CVS commands
+ * Index:: Index
+ @end menu
+
+@@ -742,7 +774,7 @@
+ @c /home/joe/sources. But this node is too long
+ @c as it is; need a little reorganization...
+
+-@cindex :local:, setting up
++@cindex local method, setting up
+ @sc{cvs} can access a repository by a variety of
+ means. It might be on the local computer, or it might
+ be on a computer across the room or across the world.
+@@ -1957,6 +1989,18 @@
+ @code{cvs init} will enable history logging; if you
+ don't want that, remove the history file after running
+ @code{cvs init}. @xref{history file}.
++Since MirBSD CVS 1.12.13-MirOS-0AB7.8, MirPorts-19 or
++Debian cvs 2:1.12.13+real-22, only write operations
++will be logged by default; to change this, make the
++history file world-writable (but beware of the associated
++security risk) and remove the stock @samp{LogHistory}
++line in the @file{CVSROOT/config} file (@pxref{config})
++to use the (commented-out) default or put your own there.
++Note that these versions also create the @file{val-tags}
++file writable (@pxref{CVSUMASK}), not world-writable like
++prior versions, so users who wish to commit must, with a
++default @code{CVSUMASK} of 002, be in the same group as
++the repository.
+
+ @node Backing up
+ @section Backing up a repository
+@@ -2103,6 +2147,9 @@
+ * Write proxies:: Distributing load across several CVS servers
+ @end menu
+
++For the protocol specification,
++@pxref{Top, the CVS client/server protocol,, cvsclient, The CVS client/server protocol}.
++
+ @node Server requirements
+ @subsection Server requirements
+
+@@ -2236,7 +2283,7 @@
+ through and @var{port} is the port number on the HTTP proxy server to connect
+ via. @var{port} defaults to 8080.
+
+-@strong{NOTE: An HTTP proxy server is not the same as a @sc{cvs} write proxy
++@emph{NOTE: An HTTP proxy server is not the same as a @sc{cvs} write proxy
+ server - please see @ref{Write proxies} for more on @sc{cvs} write proxies.}
+
+ For example, to connect pserver via a web proxy listening on port 8000 of
+@@ -2246,7 +2293,7 @@
+ :pserver;proxy=www.myproxy.net;proxyport=8000:@var{pserver_connection_string}
+ @end example
+
+-@strong{NOTE: In the above example, @var{pserver_connection_string} is still
++@emph{NOTE: In the above example, @var{pserver_connection_string} is still
+ required to connect and authenticate to the CVS server, as noted in the
+ upcoming sections on password authentication, @code{gserver}, and
+ @code{kserver}. The example above only demonstrates a modification to the
+@@ -2377,21 +2424,23 @@
+ There is no need to edit @file{inetd.conf} or start a
+ @sc{cvs} server daemon.
+
+-@cindex :server:, setting up
+-@cindex :ext:, setting up
++@cindex server method, setting up
++@cindex ext method, setting up
+ @cindex Kerberos, using kerberized rsh
+ @cindex SSH (rsh replacement)
+ @cindex rsh replacements (Kerberized, SSH, &c)
+ There are two access methods that you use in @code{CVSROOT}
+ for rsh. @code{:server:} specifies an internal rsh
+ client, which is supported only by some @sc{cvs} ports.
++This is not supported on most Unix-style systems.
+ @code{:ext:} specifies an external rsh program. By
+ default this is @code{rsh} (unless otherwise specified
+ by the @file{--with-rsh} flag to configure) but you may set the
+ @code{CVS_RSH} environment variable to invoke another
+ program which can access the remote server (for
+ example, @code{remsh} on HP-UX 9 because @code{rsh} is
+-something different). It must be a program which can
++something different, or @code{ssh} to allow the use of secure
++and/or compressed connections). It must be a program which can
+ transmit data to and from the server without modifying
+ it; for example the Windows NT @code{rsh} is not
+ suitable since it by default translates between CRLF
+@@ -2405,6 +2454,12 @@
+ to be inapplicable; consult the documentation for your rsh
+ replacement.
+
++In the Debian and MirBSD versions of @sc{cvs}, you can
++also specify @code{:extssh:} to force use of the Secure
++Shell, or @code{:ext=prog:} or @code{:ext=/path/to/prog:}
++to specify the remote shell to use without needing to
++touch the @code{CVS_RSH} environment variable.
++
+ You may choose to specify the @var{CVS_RSH} option as a method option
+ in the @var{CVSROOT} string to allow you to use different connection tools
+ for different roots (@pxref{The connection method}). For example, allowing
+@@ -2501,15 +2556,19 @@
+ The @samp{--allow-root} option specifies the allowable
+ @sc{cvsroot} directory. Clients which attempt to use a
+ different @sc{cvsroot} directory will not be allowed to
+-connect. If there is more than one @sc{cvsroot}
+-directory which you want to allow, repeat the option.
++connect. To allow a whole class of @sc{cvsroot}, specify
++a POSIX extended regular expression to match allowed
++directories with the @samp{--allow-root-regexp} option.
++These options may be used in conjunction, and both options
++may be repeated to allow access to multiple @sc{cvsroot}
++directories and classes of directories.
+ (Unfortunately, many versions of @code{inetd} have very small
+ limits on the number of arguments and/or the total length
+ of the command. The usual solution to this problem is
+ to have @code{inetd} run a shell script which then invokes
+ @sc{cvs} with the necessary arguments.)
+
+- If your @code{inetd} wants a symbolic service
++If your @code{inetd} wants a symbolic service
+ name instead of a raw port number, then put this in
+ @file{/etc/services}:
+
+@@ -2675,7 +2734,7 @@
+ (@code{info-cvs@@nongnu.org} or @code{bug-cvs@@nongnu.org}) if you use the
+ @sc{cvs} PAM support.
+
+-@strong{WARNING: Using PAM gives the system administrator much more
++@emph{WARNING: Using PAM gives the system administrator much more
+ flexibility about how @sc{cvs} users are authenticated but
+ no more security than other methods. See below for more.}
+
+@@ -2776,7 +2835,7 @@
+ @cindex Login (subcommand)
+ @cindex Password client, using
+ @cindex Authenticated client, using
+-@cindex :pserver:, setting up
++@cindex pserver method, setting up
+ To run a @sc{cvs} command on a remote repository via
+ the password-authenticating server, one specifies the
+ @code{pserver} protocol, optional username, repository host, an
+@@ -2940,8 +2999,8 @@
+
+ @cindex GSSAPI
+ @cindex Security, GSSAPI
+-@cindex :gserver:, setting up
+-@cindex Kerberos, using :gserver:
++@cindex gserver method, setting up
++@cindex Kerberos, using gserver method
+ GSSAPI is a generic interface to network security
+ systems such as Kerberos 5.
+ If you have a working GSSAPI library, you can have
+@@ -2992,9 +3051,9 @@
+ @node Kerberos authenticated
+ @subsection Direct connection with Kerberos
+
+-@cindex Kerberos, using :kserver:
++@cindex Kerberos, using kserver method
+ @cindex Security, Kerberos
+-@cindex :kserver:, setting up
++@cindex kserver method, setting up
+ The easiest way to use Kerberos is to use the Kerberos
+ @code{rsh}, as described in @ref{Connecting via rsh}.
+ The main disadvantage of using rsh is that all the data
+@@ -3039,7 +3098,7 @@
+ @subsection Connecting with fork
+
+ @cindex fork, access method
+-@cindex :fork:, setting up
++@cindex fork method, setting up
+ This access method allows you to connect to a
+ repository on your local disk via the remote protocol.
+ In other words it does pretty much the same thing as
+@@ -3065,7 +3124,7 @@
+ cvs -d :fork:/usr/local/cvsroot checkout foo
+ @end example
+
+-@cindex CVS_SERVER, and :fork:
++@cindex CVS_SERVER, and fork method
+ As with @code{:ext:}, the server is called @samp{cvs}
+ by default, or the value of the @code{CVS_SERVER}
+ environment variable.
+@@ -3994,7 +4053,7 @@
+ tag.
+
+ @noindent
+-@strong{WARNING: the commands in this section are
++@emph{WARNING: the commands in this section are
+ dangerous; they permanently discard historical
+ information and it can be difficult or impossible to
+ recover from errors. If you are a @sc{cvs}
+@@ -4024,7 +4083,7 @@
+ trigger warnings and will not be deleted.
+
+ @noindent
+-@strong{WARNING: Moving branch tags is very dangerous! If you think
++@emph{WARNING: Moving branch tags is very dangerous! If you think
+ you need the @code{-B} option, think again and ask your @sc{cvs}
+ administrator about it (if that isn't you). There is almost certainly
+ another way to accomplish what you want to accomplish.}
+@@ -4055,7 +4114,7 @@
+ name are ignored with a warning message.
+
+ @noindent
+-@strong{WARNING: Moving branch tags is very dangerous! If you think you
++@emph{WARNING: Moving branch tags is very dangerous! If you think you
+ need the @code{-B} option, think again and ask your @sc{cvs}
+ administrator about it (if that isn't you). There is almost certainly
+ another way to accomplish what you want to accomplish.}
+@@ -4904,7 +4963,7 @@
+ directory need not change anything. Therefore, there
+ is no conflict.
+
+-@strong{WARNING: In versions of @sc{cvs} prior to 1.12.2, there was a
++@emph{WARNING: In versions of @sc{cvs} prior to 1.12.2, there was a
+ major problem with using @samp{-kk} on merges. Namely, @samp{-kk}
+ overrode any default keyword expansion mode set in the archive file in
+ the repository. This could, unfortunately for some users, cause data
+@@ -5968,7 +6027,7 @@
+ locks, have all developers put "edit -c", "commit -c" in their
+ .cvsrc file, and turn on watches in the repository. This
+ prevents them from doing a @code{cvs edit} if anyone is
+-already editting the file. It also may
++already editing the file. It also may
+ be possible to use plain watches together with suitable
+ procedures (not enforced by software), to avoid having
+ two people edit at the same time.
+@@ -6630,7 +6689,7 @@
+ put "edit -c" and "commit -c" into all .cvsrc files,
+ and make files default to read only by turning on watches
+ or putting "cvs -r" into all .cvsrc files.
+-This prevents multiple people from editting a file at
++This prevents multiple people from editing a file at
+ the same time (unless explicitly overriden with @samp{-f}).
+
+ @c I'm a little dissatisfied with this presentation,
+@@ -6875,7 +6934,7 @@
+ There are two additional options that @code{cvs edit} understands as of
+ @sc{cvs} client and server versions 1.12.10 but @code{cvs watch} does not.
+ The first is @code{-c}, which causes @code{cvs edit} to fail if anyone else
+-is editting the file. This is probably only useful when @samp{edit -c} and
++is editing the file. This is probably only useful when @samp{edit -c} and
+ @samp{commit -c} are specified in all developers' @file{.cvsrc} files. This
+ behavior may be overriden this via the @code{-f} option, which overrides
+ @code{-c} and allows multiple edits to succeed.
+@@ -7182,6 +7241,15 @@
+ @item $@splitrcskeyword{Date}$
+ The date and time (UTC) the revision was checked in.
+
++@cindex Mdocdate keyword
++@item $@splitrcskeyword{Mdocdate}$
++The date (UTC) the revision was checked in, in a format suitable
++for the Berkeley mdoc macro processing.
++
++@example
++$Mdocdate: January 9 2017 $
++@end example
++
+ @cindex Header keyword
+ @item $@splitrcskeyword{Header}$
+ A standard header containing the full pathname of the
+@@ -7550,13 +7618,14 @@
+ A list may be used. The this example:
+
+ @example
+- # Add a "MyBSD" keyword and restrict keyword
+- # expansion to the MyBSD, Name and Date keywords.
++ # Add a "MyBSD" keyword and restrict keyword expansion
++ # to the MyBSD, Name, Date and Mdocdate keywords.
+ LocalKeyword=MyBSD=CVSHeader
+- KeywordExpand=iMyBSD,Name,Date
++ KeywordExpand=iMyBSD,Name,Date,Mdocdate
+ @end example
+
+-would allow $@splitrcskeyword{MyBSD}$, $@splitrcskeyword{Name}$, and
++would allow $@splitrcskeyword{MyBSD}$, $@splitrcskeyword{Name}$,
++$@splitrcskeyword{Mdocdate} and
+ $@splitrcskeyword{Date}$ to be expanded.
+
+ It is also possible to configure an exclusion list
+@@ -7742,7 +7811,7 @@
+ $ cvs import -m "Import of FSF v. 0.05" fsf/wdiff FSF_DIST WDIFF_0_05
+ @end example
+
+-@strong{WARNING: If you use a release tag that already exists in one of the
++@emph{WARNING: If you use a release tag that already exists in one of the
+ repository archives, files removed by an import may not be detected.}
+
+ For files that have not been modified locally, the newly created
+@@ -7786,7 +7855,12 @@
+
+ You can also revert local changes completely and return
+ to the latest vendor release by changing the `head'
+-revision back to the vendor branch on all files. For
++revision back to the vendor branch on all files. This
++does, however, produce weird results if you should ever
++edit this file again, for anyone looking at the output
++from the @code{log} command or CVSweb. To fix this,
++first commit a revision of the file which equals the
++vendor branch, then use @code{admin} @samp{-b}. For
+ example, if you have a checked-out copy of the sources
+ in @file{~/work.d/wdiff}, and you want to revert to the
+ vendor's version for all the files in that directory,
+@@ -7853,6 +7927,10 @@
+ @code{cvs import}. It takes as an argument the vendor
+ branch to import to. The default is @samp{-b 1.1.1}.
+
++Vendor branches can only be in the format 1.1.x where
++@samp{x} is an @emph{uneven} number, because branch
++tags use even numbers.
++
+ For example, suppose that there are two teams, the red
+ team and the blue team, that are sending you sources.
+ You want to import the red team's efforts to branch
+@@ -8094,7 +8172,9 @@
+ This appendix describes the overall structure of
+ @sc{cvs} commands, and describes some commands in
+ detail (others are described elsewhere; for a quick
+-reference to @sc{cvs} commands, @pxref{Invoking CVS}).
++reference to @sc{cvs} commands, @pxref{Invoking CVS},
++and for an alphabetical list of all @sc{cvs} commands,
++@pxref{CVS command list}).
+ @c The idea is that we want to move the commands which
+ @c are described here into the main body of the manual,
+ @c in the process reorganizing the manual to be
+@@ -8117,19 +8197,20 @@
+ * Global options:: Options you give to the left of cvs_command
+ * Common options:: Options you give to the right of cvs_command
+ * Date input formats:: Acceptable formats for date specifications
+-* admin:: Administration
++* admin:: Administration front-end for RCS
+ * annotate:: What revision modified each line of a file?
+ * checkout:: Checkout sources for editing
+ * commit:: Check files into the repository
+ * diff:: Show differences between revisions
+ * export:: Export sources from CVS, similar to checkout
+-* history:: Show status of files and users
++* history:: Show repository access history
+ * import:: Import sources into CVS, using vendor branches
+-* log:: Show log messages for files
++* log:: Print out history information for files
+ * ls & rls:: List files in the repository
+-* rdiff:: 'patch' format diffs between releases
++* rdiff:: Create 'patch' format diffs between revisions
+ * release:: Indicate that a directory is no longer in use
+ * server & pserver:: Act as a server for a client on stdin/stdout
++* suck:: Download RCS ,v file raw
+ * update:: Bring work tree in sync with repository
+ @end menu
+
+@@ -8375,6 +8456,31 @@
+ @samp{-N} in the @file{~/.cvsrc} entry for @samp{log},
+ you may need to use @samp{-f} to show the tag names.
+
++@item -g
++Forges group-writable permissions on files in the working copy.
++This option is typically used when you have multiple users sharing
++a single checked out source tree, allowing them to operate their
++shells with a less dangerous umask at the expense of @sc{cvs} security.
++To use this feature, create a directory to hold the checked-out
++source tree, set it to a private group, and set up the directory
++such that files created under it inherit the gid of the directory.
++On BSD systems, this occurs automatically. On SYSV systems and
++GNU/Linux, the sgid bit must be set on the directory for this.
++The users who are to share the checked out tree must be placed in
++that group which owns the directory.
++
++Note that the sharing of a single checked-out source tree is very
++different from giving several users access to a common @sc{cvs} repository.
++Access to a common @sc{cvs} repository already maintains shared group-write
++permissions and does not require this option.
++
++Due to the security implications, setting this option globally in
++your @file{.cvsrc} file is strongly discouraged; if you must, ensure
++all source checkouts are "firewalled" within a private group or a
++private mode 0700 directory.
++
++This option is a MidnightBSD extension merged into Debian and MirBSD @sc{cvs}.
++
+ @item -H
+ @itemx --help
+ Display usage information about the specified @samp{cvs_command}
+@@ -8498,7 +8604,7 @@
+ which are listed with the individual commands, may have
+ different behavior from one @sc{cvs} command to the other).
+
+-@strong{Note: the @samp{history} command is an exception; it supports
++@emph{Note: the @samp{history} command is an exception; it supports
+ many options that conflict even with these standard options.}
+
+ @table @code
+@@ -8523,7 +8629,7 @@
+ slightly different way; @pxref{history options}).
+
+ For a complete description of the date formats accepted by @sc{cvs},
+-@ref{Date input formats}.
++@pxref{Date input formats}.
+ @c What other formats should we accept? I don't want
+ @c to start accepting a whole mess of non-standard
+ @c new formats (there are a lot which are in wide use in
+@@ -8610,7 +8716,7 @@
+ @code{annotate}, @code{checkout}, @code{export},
+ @code{rdiff}, @code{rtag}, and @code{update}.
+
+-@strong{WARNING: The @code{commit} and @code{remove}
++@emph{WARNING: The @code{commit} and @code{remove}
+ commands also have a
+ @samp{-f} option, but it has a different behavior for
+ those commands. See @ref{commit options}, and
+@@ -8631,7 +8737,7 @@
+ @code{checkout}, @code{diff}, @code{export}, @code{import},
+ @code{rdiff}, and @code{update} commands.
+
+-@strong{WARNING: Prior to CVS version 1.12.2, the @samp{-k} flag
++@emph{WARNING: Prior to CVS version 1.12.2, the @samp{-k} flag
+ overrode the @samp{-kb} indication for a binary file. This could
+ sometimes corrupt binary files. @xref{Merging and keywords}, for
+ more.}
+@@ -8660,7 +8766,7 @@
+ specified to run in the modules
+ database (@pxref{modules}); this option bypasses it).
+
+-@strong{Note: this is not the same as the @samp{cvs -n}
++@emph{Note: this is not the same as the @samp{cvs -n}
+ program option, which you can specify to the left of a cvs command!}
+
+ Available with the @code{checkout}, @code{commit}, @code{export},
+@@ -8688,14 +8794,21 @@
+ @item -r @var{tag}[:@var{date}]
+ @cindex HEAD, special tag
+ @cindex BASE, special tag
++@cindex BASE, special date
+ Use the revision specified by the @var{tag} argument (and the @var{date}
+ argument for the commands which accept it) instead of the
+ default @dfn{head} revision. As well as arbitrary tags defined
+ with the @code{tag} or @code{rtag} command, two special tags are
+ always available: @samp{HEAD} refers to the most recent version
+-available in the repository, and @samp{BASE} refers to the
++available in the repository (also known as the tip of the @samp{MAIN}
++branch, also known as trunk; the name of a branch refers to its tip;
++this version of @sc{cvs} introduces @samp{.bhead}, but only for the
++@sc{diff} command, for the same), and @samp{BASE} refers to the
+ revision you last checked out into the current working directory.
+
++@c fixed: HEAD is changed now; .bhead is the name of the branch,
++@c but added for cases where it is unknown.
++@c --mirabilos
+ @c FIXME: What does HEAD really mean? I believe that
+ @c the current answer is the head of the default branch
+ @c for all cvs commands except diff. For diff, it
+@@ -8735,12 +8848,19 @@
+ the name of a branch is interpreted as the most recent
+ revision on that branch.
+
++As a Debian and MirBSD @sc{cvs} extension, specifying @samp{BASE} as the
++@var{date} portion of the argument yields the @emph{base revision} of the
++branch specified by the @var{tag} portion of the argument, i.e. the revision
++on the parent branch the @var{tag} branch split off, or, where both
++branches were the same.
++This option has not received very much testing, beware!
++
+ Specifying the @samp{-q} global option along with the
+ @samp{-r} command option is often useful, to suppress
+ the warning messages when the @sc{rcs} file
+ does not contain the specified tag.
+
+-@strong{Note: this is not the same as the overall @samp{cvs -r} option,
++@emph{Note: this is not the same as the overall @samp{cvs -r} option,
+ which you can specify to the left of a @sc{cvs} command!}
+
+ @samp{-r @var{tag}} is available with the @code{commit} and @code{history}
+@@ -8765,7 +8885,7 @@
+
+ @c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+ @node admin
+-@appendixsec admin---Administration
++@appendixsec admin---Administration front-end for RCS
+ @cindex Admin (subcommand)
+
+ @itemize @bullet
+@@ -9135,7 +9255,10 @@
+
+ @itemize @bullet
+ @item
+-Synopsis: annotate [options] files@dots{}
++Synopsis:
++annotate [options] files@dots{}
++
++rannotate [options] files@dots{}
+ @item
+ Requires: repository.
+ @item
+@@ -9144,7 +9267,10 @@
+
+ For each file in @var{files}, print the head revision
+ of the trunk, together with information on the last
+-modification for each line.
++modification for each line. If backwards annotation
++is requested, show the first modification after the
++specified revision. (Backwards annotation currently
++appears to be broken.)
+
+ @menu
+ * annotate options:: annotate options
+@@ -9160,6 +9286,10 @@
+ them):
+
+ @table @code
++@item -b
++Backwards, show when a line was removed.
++Currently appears to be broken.
++
+ @item -l
+ Local directory only, no recursion.
+
+@@ -9455,8 +9585,7 @@
+
+ @itemize @bullet
+ @item
+-Synopsis: commit [-lnRf] [-m 'log_message' |
+--F file] [-r revision] [files@dots{}]
++Synopsis: commit [-lnRf] [-m 'log_message' | -F file] [-r revision] [files@dots{}]
+ @item
+ Requires: working directory, repository.
+ @item
+@@ -9501,8 +9630,11 @@
+
+ At @code{commit}, a unique commitid is placed in the @sc{rcs}
+ file inside the repository. All files committed at once
+-get the same commitid. The commitid can be retrieved with
+-the @code{log} and @code{status} command; see @ref{log},
++get the same commitid, a string consisting only of hexadecimal
++digits (usually 16 in GNU @sc{cvs}, 19 in Debian and MirBSD @sc{cvs}).
++FSF GNU @sc{cvs} 1.11 and OpenBSD OpenCVS do not support commitids yet.
++The commitid can be retrieved with
++the @code{log} and @code{status} command; see @ref{log} and
+ @ref{File status}.
+
+ @menu
+@@ -9685,7 +9817,7 @@
+ under them will be compared.
+
+ The exit status for diff is different than for other
+-@sc{cvs} commands; for details @ref{Exit status}.
++@sc{cvs} commands; for details @pxref{Exit status}.
+
+ @menu
+ * diff options:: diff options
+@@ -10394,7 +10526,7 @@
+
+ @c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+ @node history
+-@appendixsec history---Show status of files and users
++@appendixsec history---Show repository access history
+ @cindex history (subcommand)
+
+ @itemize @bullet
+@@ -10425,7 +10557,7 @@
+ (@file{$CVSROOT/CVSROOT/history}) with read and write permissions for all
+ users (@pxref{Creating a repository}).
+
+-@strong{Note: @code{history} uses @samp{-f}, @samp{-l},
++@emph{Note: @code{history} uses @samp{-f}, @samp{-l},
+ @samp{-n}, and @samp{-p} in ways that conflict with the
+ normal use inside @sc{cvs} (@pxref{Common options}).}
+
+@@ -10774,12 +10906,14 @@
+
+ @c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+ @node log
+-@appendixsec log---Print out log information for files
++@appendixsec log---Print out history information for files
+ @cindex log (subcommand)
+
+ @itemize @bullet
+ @item
+ Synopsis: log [options] [files@dots{}]
++
++rlog [options] [files@dots{}]
+ @item
+ Requires: repository, working directory.
+ @item
+@@ -10805,7 +10939,7 @@
+ the @code{$TZ} environment variable, which can be set to
+ govern how @code{log} displays dates.
+
+-@strong{Note: @code{log} uses @samp{-R} in a way that conflicts
++@emph{Note: @code{log} uses @samp{-R} in a way that conflicts
+ with the normal use inside @sc{cvs} (@pxref{Common options}).}
+
+ @menu
+@@ -10997,13 +11131,15 @@
+
+ @c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+ @node ls & rls
+-@appendixsec ls & rls
++@appendixsec ls & rls---List files in the repository
+ @cindex ls (subcommand)
+ @cindex rls (subcommand)
+
+ @itemize @bullet
+ @item
+ ls [-e | -l] [-RP] [-r tag[:date]] [-D date] [path@dots{}]
++
++rls [-e | -l] [-RP] [-r tag[:date]] [-D date] [path@dots{}]
+ @item
+ Requires: repository for @code{rls}, repository & working directory for
+ @code{ls}.
+@@ -11095,7 +11231,7 @@
+
+ @c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+ @node rdiff
+-@appendixsec rdiff---'patch' format diffs between releases
++@appendixsec rdiff---Create 'patch' format diffs between revisions
+ @cindex rdiff (subcommand)
+
+ @itemize @bullet
+@@ -11173,6 +11309,9 @@
+ @item -c
+ Use the context diff format. This is the default format.
+
++@item -p
++Show which C function each change is in.
++
+ @item -s
+ Create a summary change report instead of a patch. The
+ summary includes information about files that were
+@@ -11231,7 +11370,7 @@
+
+ @c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+ @node release
+-@appendixsec release---Indicate that a Module is no longer in use
++@appendixsec release---Indicate that a directory is no longer in use
+ @cindex release (subcommand)
+
+ @itemize @bullet
+@@ -11282,7 +11421,7 @@
+ succeeds. If this flag is not given your files will
+ remain in your working directory.
+
+-@strong{WARNING: The @code{release} command deletes
++@emph{WARNING: The @code{release} command deletes
+ all directories and files recursively. This
+ has the very serious side-effect that any directory
+ that you have created inside your checked-out sources,
+@@ -11386,6 +11525,25 @@
+ @end table
+
+ @c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
++@node suck
++@appendixsec suck---Download RCS ,v file raw
++@cindex suck (subcommand)
++
++@itemize @bullet
++@item
++suck module/pa/th
++@item
++Requires: repository
++@end itemize
++
++Locates the file module/pa/th,v or module/pa/Attic/th,v and downloads
++it raw as RCS comma-v file.
++
++Output consists of the real pathname of the comma-v file, relative to
++the CVS repository, followed by a newline and the binary file content
++immediately thereafter.
++
++@c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+ @node update
+ @appendixsec update---Bring work tree in sync with repository
+ @cindex update (subcommand)
+@@ -11635,6 +11793,8 @@
+ references to where each command or feature is
+ described in detail. For other references run the
+ @code{cvs --help} command, or see @ref{Index}.
++For an alphabetical list of all @sc{cvs} commands,
++@pxref{CVS command list}).
+
+ A @sc{cvs} command looks like:
+
+@@ -11646,10 +11806,15 @@
+
+ @table @code
+ @item --allow-root=@var{rootdir}
+-Specify legal @sc{cvsroot} directory (server only) (not
+-in @sc{cvs} 1.9 and older). See @ref{Password
++Specify acceptable @sc{cvsroot} directory (server only).
++Appeared in @sc{cvs} 1.10. See @ref{Password
+ authentication server}.
+
++@item --allow-root-regexp=@var{rootdir}
++Specify a POSIX extended regular expression which matches acceptable
++@sc{cvsroot} directories (server only). Appeared in @sc{cvs}
++1.12.14. See @ref{Password authentication server}.
++
+ @item -a
+ Authenticate all communication (client only) (not in @sc{cvs}
+ 1.9 and older). See @ref{Global options}.
+@@ -11669,6 +11834,10 @@
+ Do not read the @file{~/.cvsrc} file. See @ref{Global
+ options}.
+
++@item -g
++Set the umask to allow group writable permissions in
++the working copy. See @ref{Global options}.
++
+ @item -H
+ @itemx --help
+ Print a help message. See @ref{Global options}.
+@@ -11730,6 +11899,7 @@
+ @example
+ $@splitrcskeyword{Author}: joe $
+ $@splitrcskeyword{Date}: 1993/12/09 03:21:13 $
++$@splitrcskeyword{Mdocdate}: December 9 1993 $
+ $@splitrcskeyword{CVSHeader}: files/file1,v 1.1 1993/12/09 03:21:13 joe Exp harry $
+ $@splitrcskeyword{Header}: /home/files/file1,v 1.1 1993/12/09 03:21:13 joe Exp harry $
+ $@splitrcskeyword{Id}: file1,v 1.1 1993/12/09 03:21:13 joe Exp harry $
+@@ -11756,6 +11926,7 @@
+
+ @table @code
+ @c ------------------------------------------------------------
++@anchor{add}
+ @item add [@var{options}] [@var{files}@dots{}]
+ Add a new file/directory. See @ref{Adding files}.
+
+@@ -11877,7 +12048,8 @@
+ @item -j @var{tag}[:@var{date}]
+ Merge in the change specified by @var{tag}, or when @var{date} is specified
+ and @var{tag} is a branch tag, the version from the branch @var{tag} as it
+-existed on @var{date}. See @ref{checkout options}.
++existed on @var{date}. See @ref{checkout options}. Also,
++see @ref{Common options}.
+
+ @item -k @var{kflag}
+ Use @var{kflag} keyword expansion. See
+@@ -11907,7 +12079,7 @@
+ @item -r @var{tag}[:@var{date}]
+ Checkout the revision already tagged with @var{tag} or, when @var{date} is
+ specified and @var{tag} is a branch tag, the version from the branch @var{tag}
+-as it existed on @var{date}. This . See @ref{Common options}.
++as it existed on @var{date}. See @ref{Common options}.
+
+ @item -s
+ Like -c, but include module status. See @ref{checkout options}.
+@@ -11992,6 +12164,7 @@
+ @end table
+
+ @c ------------------------------------------------------------
++@anchor{edit}
+ @item edit [@var{options}] [@var{files}@dots{}]
+ Get ready to edit a watched file. See @ref{Editing files}.
+
+@@ -12003,7 +12176,7 @@
+ @ref{Editing files}.
+
+ @item -c
+-Check edits: Edit fails if someone else is already editting the file.
++Check edits: Edit fails if someone else is already editing the file.
+ Requires a @sc{cvs} client and server both of version 1.12.10 or greater.
+
+ @item -f
+@@ -12018,6 +12191,7 @@
+ @end table
+
+ @c ------------------------------------------------------------
++@anchor{editors}
+ @item editors [@var{options}] [@var{files}@dots{}]
+ See who is editing a watched file. See @ref{Watch information}.
+
+@@ -12163,14 +12337,17 @@
+ @end table
+
+ @c ------------------------------------------------------------
++@anchor{init}
+ @item init
+ Create a @sc{cvs} repository if it doesn't exist. See
+ @ref{Creating a repository}.
+
+ @c ------------------------------------------------------------
++@anchor{kserver}
+ @item kserver
+ Kerberos authenticated server.
+-See @ref{Kerberos authenticated}.
++@xref{server & pserver}.
++@xref{Kerberos authenticated}.
+
+ @c ------------------------------------------------------------
+ @item log [@var{options}] [@var{files}@dots{}]
+@@ -12211,21 +12388,55 @@
+ @end table
+
+ @c ------------------------------------------------------------
++@anchor{login}
+ @item login
+ Prompt for password for authenticating server. See
+ @ref{Password authentication client}.
+
+ @c ------------------------------------------------------------
++@anchor{logout}
+ @item logout
+ Remove stored password for authenticating server. See
+ @ref{Password authentication client}.
+
+ @c ------------------------------------------------------------
++@anchor{ls}
++@item ls [@var{options}] [@var{path}@dots{}]
++List files available from CVS. See @ref{ls & rls}.
++
++@table @code
++@item -d
++Show dead revisions (with tag when specified).
++See @ref{ls & rls options}.
++
++@item -e
++Display in CVS/Entries format.
++
++@item -l
++Display all details.
++
++@item -P
++Prune empty directories. See @ref{Moving directories}.
++
++@item -R
++List recursively. @xref{Recursive behavior}.
++
++@item -D @var{date}
++Show files from date. See @ref{Common options}.
++
++@item -r @var{rev}
++Show files with revision or tag.
++@end table
++
++@c ------------------------------------------------------------
++@anchor{pserver}
+ @item pserver
+ Password authenticated server.
+-See @ref{Password authentication server}.
++@xref{server & pserver}.
++@xref{Password authentication server}.
+
+ @c ------------------------------------------------------------
++@anchor{rannotate}
+ @item rannotate [@var{options}] [@var{modules}@dots{}]
+ Show last revision where each line was modified. See
+ @ref{annotate}.
+@@ -12298,7 +12509,7 @@
+ @end table
+
+ @c ------------------------------------------------------------
+-@item release [@var{options}] @var{directory}
++@item release [@var{options}] @var{directories}@dots{}
+ Indicate that a directory is no longer in use. See
+ @ref{release}.
+
+@@ -12308,6 +12519,7 @@
+ @end table
+
+ @c ------------------------------------------------------------
++@anchor{remove}
+ @item remove [@var{options}] [@var{files}@dots{}]
+ Remove an entry from the repository. See @ref{Removing files}.
+
+@@ -12324,6 +12536,7 @@
+ @end table
+
+ @c ------------------------------------------------------------
++@anchor{rlog}
+ @item rlog [@var{options}] [@var{files}@dots{}]
+ Print out history information for modules. See @ref{log}.
+
+@@ -12361,9 +12574,40 @@
+ @end table
+
+ @c ------------------------------------------------------------
++@anchor{rls}
++@item rls [@var{options}] [@var{path}@dots{}]
++List files in a module. See @ref{ls & rls}.
++
++@table @code
++@item -d
++Show dead revisions (with tag when specified).
++See @ref{ls & rls options}.
++
++@item -e
++Display in CVS/Entries format.
++
++@item -l
++Display all details.
++
++@item -P
++Prune empty directories. See @ref{Moving directories}.
++
++@item -R
++List recursively. @xref{Recursive behavior}.
++
++@item -D @var{date}
++Show files from date. See @ref{Common options}.
++
++@item -r @var{rev}
++Show files with revision or tag.
++@end table
++
++@c ------------------------------------------------------------
++@anchor{rtag}
+ @item rtag [@var{options}] @var{tag} @var{modules}@dots{}
+ Add a symbolic tag to a module.
+-See @ref{Revisions} and @ref{Branching and merging}.
++@xref{Tagging by date/tag}.
++@xref{Creating a branch}.
+
+ @table @code
+ @item -a
+@@ -12407,10 +12651,18 @@
+ @end table
+
+ @c ------------------------------------------------------------
++@anchor{server}
+ @item server
+-Rsh server. See @ref{Connecting via rsh}.
++SSH/rsh server.
++@xref{server & pserver}.
++@xref{Connecting via rsh}.
+
+ @c ------------------------------------------------------------
++@item suck @var{module/filename}
++Download RCS ,v file raw. See @ref{suck}.
++
++@c ------------------------------------------------------------
++@anchor{status}
+ @item status [@var{options}] @var{files}@dots{}
+ Display status information in a working directory. See
+ @ref{File status}.
+@@ -12427,9 +12679,11 @@
+ @end table
+
+ @c ------------------------------------------------------------
++@anchor{tag}
+ @item tag [@var{options}] @var{tag} [@var{files}@dots{}]
+ Add a symbolic tag to checked out version of files.
+-See @ref{Revisions} and @ref{Branching and merging}.
++@xref{Tagging the working directory}.
++@xref{Creating a branch}.
+
+ @table @code
+ @item -b
+@@ -12465,6 +12719,7 @@
+ @end table
+
+ @c ------------------------------------------------------------
++@anchor{unedit}
+ @item unedit [@var{options}] [@var{files}@dots{}]
+ Undo an edit command. See @ref{Editing files}.
+
+@@ -12541,6 +12796,7 @@
+ @end table
+
+ @c ------------------------------------------------------------
++@anchor{version}
+ @item version
+ @cindex version (subcommand)
+
+@@ -12548,6 +12804,7 @@
+ is remote, display both the client and server versions.
+
+ @c ------------------------------------------------------------
++@anchor{watch}
+ @item watch [on|off|add|remove] [@var{options}] [@var{files}@dots{}]
+
+ on/off: turn on/off read-only checkouts of files. See
+@@ -12572,6 +12829,7 @@
+ @end table
+
+ @c ------------------------------------------------------------
++@anchor{watchers}
+ @item watchers [@var{options}] [@var{files}@dots{}]
+ See who is watching a file. See @ref{Watch information}.
+
+@@ -12711,7 +12969,7 @@
+ @item @var{mname} [ options ] @var{dir} [ @var{files}@dots{} ]
+ In the simplest case, this form of module definition
+ reduces to @samp{@var{mname} @var{dir}}. This defines
+-all the files in directory @var{dir} as module mname.
++all the files in directory @var{dir} as module @var{mname}.
+ @var{dir} is a relative path (from @code{$CVSROOT}) to a
+ directory of source in the source repository. In this
+ case, on checkout, a single directory called
+@@ -12975,7 +13233,7 @@
+ mechanisms outside @sc{cvs}, to insert any necessary
+ changes.
+
+-@strong{WARNING: do not use @code{COPY} with
++@emph{WARNING: do not use @code{COPY} with
+ @sc{cvs} 1.9 or earlier - such versions of @sc{cvs} will
+ copy one version of your file over the other, wiping
+ out the previous contents.}
+@@ -13779,14 +14037,11 @@
+ @file{loginfo} supports:
+
+ @table @t
+-@item @{stVv@}
++@item @{sVv@}
+ File attributes, where:
+ @table @t
+ @item s
+ file name
+-@item T
+-tag name of destination, or the empty string when there is no associated
+-tag name (this usually means the trunk)
+ @item V
+ old version number (pre-checkin)
+ @item v
+@@ -13795,7 +14050,7 @@
+ @end table
+
+ For example, some valid format strings are @samp{%%},
+-@samp{%s}, @samp{%@{s@}}, and @samp{%@{stVv@}}.
++@samp{%s}, @samp{%@{s@}}, and @samp{%@{sVv@}}.
+
+ @cindex loginfo (admin file), updating legacy repositories
+ @cindex compatibility notes, loginfo admin file
+@@ -14442,6 +14697,7 @@
+ random string of printable characters of at least 16
+ characters length. Users should assume that it may
+ someday grow to at most 256 characters in length.
++Currently, Debian and MirBSD @sc{cvs} uses 19 characters.
+ @end table
+
+ If you want to pass a value to the administrative files
+@@ -14613,7 +14869,7 @@
+ @cindex KeywordExpand, in CVSROOT/config
+ @item KeywordExpand=@var{value}
+ Specify @samp{i} followed by a list of keywords to be expanded
+-(for example, @samp{KeywordExpand=iMYCVS,Name,Date}),
++(for example, @samp{KeywordExpand=iMYCVS,Name,Date,Mdocdate}),
+ or @samp{e} followed by a list of keywords not to be expanded
+ (for example, @samp{KeywordExpand=eCVSHeader}).
+ For more on keyword expansion, see @ref{Configuring keyword expansion}.
+@@ -14657,7 +14913,9 @@
+ Default of @samp{TOEFWUPCGMAR} (or simply @samp{all}) will log
+ all transactions. Any subset of the default is
+ legal. (For example, to only log transactions that modify the
+-@file{*,v} files, use @samp{LogHistory=TMAR}.) To disable history logging
++@file{*,v} files, use @samp{LogHistory=TMAR} which is nowadays
++set by @code{cvs init} by default.)
++To disable history logging
+ completely, use @samp{LogHistory=}.
+
+ @cindex MaxCommentLeaderLength, in CVSROOT/config
+@@ -14747,7 +15005,7 @@
+ @samp{stat()} function to see if it has changed (see warning below)
+ before rereading. The default value is @samp{always}.
+
+-@strong{Note: the `stat' mode can cause CVS to pause for up to
++@emph{Note: the `stat' mode can cause CVS to pause for up to
+ one extra second per directory committed. This can be less IO and
+ CPU intensive but is not recommended for use with large repositories}
+
+@@ -14884,6 +15142,7 @@
+ read-only NFS repositories.
+
+ @item $CVSUMASK
++@anchor{CVSUMASK}
+ Controls permissions of files in the repository. See
+ @ref{File permissions}.
+
+@@ -15172,6 +15431,7 @@
+ specific reason for denying authorization. Check that
+ the username and password specified are correct and
+ that the @code{CVSROOT} specified is allowed by @samp{--allow-root}
++or @samp{--allow-root-regexp}
+ in @file{inetd.conf}. See @ref{Password authenticated}.
+
+ @item cvs @var{command}: conflict: removed @var{file} was modified by second party
+@@ -15614,21 +15874,21 @@
+ access method you are using.
+
+ @table @code
+-@cindex :ext:, troubleshooting
++@cindex ext method, troubleshooting
+ @item :ext:
+ Try running the rsh program from the command line. For
+ example: "rsh servername cvs -v" should print @sc{cvs}
+ version information. If this doesn't work, you need to
+ fix it before you can worry about @sc{cvs} problems.
+
+-@cindex :server:, troubleshooting
++@cindex server method, troubleshooting
+ @item :server:
+ You don't need a command line rsh program to use this
+ access method, but if you have an rsh program around,
+ it may be useful as a debugging tool. Follow the
+ directions given for :ext:.
+
+-@cindex :pserver:, troubleshooting
++@cindex pserver method, troubleshooting
+ @item :pserver:
+ Errors along the lines of "connection refused" typically indicate
+ that inetd isn't even listening for connections on port 2401
+@@ -15806,6 +16066,16 @@
+ the file @file{doc/ChangeLog} in the @sc{cvs} source
+ distribution.
+
++The MirOS Project uses @sc{cvs} heavily in MirOS BSD and the
++MirPorts Framework and has enhanced it as well as packaged it
++as the "new" Debian CVS package. Responsible:
++
++@display
++Thorsten Glaser <@t{tg@@mirbsd.org}>
++@end display
++
++CVS Homepage: @url{http://www.nongnu.org/cvs/}
++
+ @c ---------------------------------------------------------------------
+ @node BUGS
+ @appendix Dealing with bugs in CVS or this manual
+@@ -15910,6 +16180,49 @@
+ comprehensive, detailed list of known bugs.
+
+ @c ---------------------------------------------------------------------
++@node CVS command list
++@appendix Alphabetical list of all CVS commands
++
++@xref{Cederqvist, the introduction into the manual, CVS manual Table of Contents}.
++
++@menu
++* add:: Add a new file/directory to the repository
++* admin:: Administration front-end for RCS
++* annotate:: Show last revision where each line was modified
++* checkout:: Checkout sources for editing
++* commit:: Check files into the repository
++* diff:: Show differences between revisions
++* edit:: Get ready to edit a watched file
++* editors:: See who is editing a watched file
++* export:: Export sources from CVS, similar to checkout
++* history:: Show repository access history
++* import:: Import sources into CVS, using vendor branches
++* init:: Create a CVS repository
++* kserver:: Act in Kerberos server mode
++* log:: Print out history information for files
++* login:: Prompt for password for authenticating server
++* logout:: Removes entry in .cvspass for remote repository
++* ls:: List files available from CVS
++* pserver:: Act in password server mode
++* rannotate:: Show last revision where each line of module was modified
++* rdiff:: Create 'patch' format diffs between revisions
++* release:: Indicate that a work subdirectory is no longer in use
++* remove:: Remove an entry from the repository
++* rlog:: Print out history information for a module
++* rls:: List files in a module
++* rtag:: Add a symbolic tag to a module
++* server:: Act in server mode
++* suck:: Download RCS ,v file raw
++* status:: Display status information on checked out files
++* tag:: Add a symbolic tag to checked out version of files
++* unedit:: Undo an edit command
++* update:: Bring work tree in sync with repository
++* version:: Show current CVS version(s)
++* watch:: Set watches
++* watchers:: See who is watching a file
++@end menu
++
++@c ---------------------------------------------------------------------
+ @node Index
+ @unnumbered Index
+ @cindex Index
+--- cvs-1.12.13+real.orig/doc/cvsclient.texi
++++ cvs-1.12.13+real/doc/cvsclient.texi
+@@ -1,6 +1,17 @@
+ \input texinfo @c -*- texinfo -*-
+
+ @setfilename cvsclient.info
++@tex
++ % set PA4 paper size (can print on both DIN ISO A4 and US Letter)
++ \globaldefs = 1%
++ \afourpaper%
++ \internalpagesizes{46\baselineskip}{160mm}%
++ {\voffset}{\hoffset}%
++ {\bindingoffset}{36pt}%
++ {28truecm}{21truecm}%
++ \globaldefs = 0%
++@end tex
++@comment $MirOS: src/gnu/usr.bin/cvs/doc/cvsclient.texi,v 1.8 2017/01/09 22:54:26 tg Exp $
+ @include version-client.texi
+
+ @dircategory Programming
+@@ -12,8 +23,9 @@
+ @top CVS Client/Server
+
+ This document describes the client/server protocol used by CVS. It does
+-not describe how to use or administer client/server CVS; see the regular
+-CVS manual for that. This is version @value{VERSION} of the protocol
++not describe how to use or administer client/server CVS; for that,
++@pxref{Top, the regular CVS manual,, cvs, the regular CVS manual}.
++This is version @value{VERSION} of the protocol
+ specification---@xref{Introduction}, for more on what this version number
+ means.
+
+@@ -53,7 +65,7 @@
+ user documentation, @file{cvs.texinfo}, for that information. The
+ protocol is non-proprietary (anyone who wants to is encouraged to
+ implement it) and an implementation, known as CVS, is available under
+-the GNU Public License. The CVS distribution, containing this
++the GNU General Public License. The CVS distribution, containing this
+ implementation, @file{cvs.texinfo}, and a copy (possibly more or less up
+ to date than what you are reading now) of this document,
+ @file{cvsclient.texi}, can be found at the usual GNU FTP sites, with a
+@@ -1227,6 +1239,13 @@
+ directory and @emph{not} a fully qualified @code{CVSROOT} variable.
+ The @code{Root} request need not have been previously sent.
+
++@item suck \n
++Response expected: yes.
++Actually do a @code{cvs suck} command.
++This uses a previous @code{Argument} request (only one, because the
++@code{cvs suck} CLI command takes only one).
++This is an extension specific to MirBSD, MirPorts and Debian.
++
+ @item update \n
+ Response expected: yes. Actually do a @code{cvs update} command. This
+ uses any previous @code{Argument}, @code{Directory}, @code{Entry},
+@@ -1268,7 +1287,7 @@
+ C: Directory .
+ C: 1dir
+ C: add
+-S: M Directory /u/cvsroot/1dir/nsdir added to the repository
++S: M Directory /u/cvsroot/1dir/nsdir put under version control
+ S: ok
+ @end example
+
+--- cvs-1.12.13+real.orig/doc/getdate.texi
++++ cvs-1.12.13+real/doc/getdate.texi
+@@ -1,14 +1,22 @@
+ @c GNU date syntax documentation
++@c $MirOS: src/gnu/usr.bin/cvs/doc/getdate.texi,v 1.8 2016/11/08 23:04:36 tg Exp $
+
+ @c Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+ @c 2003, 2004, 2005 Free Software Foundation, Inc.
+
+-@c Permission is granted to copy, distribute and/or modify this document
+-@c under the terms of the GNU Free Documentation License, Version 1.1 or
+-@c any later version published by the Free Software Foundation; with no
+-@c Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
+-@c Texts. A copy of the license is included in the ``GNU Free
+-@c Documentation License'' file as part of this distribution.
++@c Copyright (c) 2007, 2010 mirabilos <m@mirbsd.org>
++
++@comment This file is part of the CVS distribution.
++
++@comment CVS is free software; you can redistribute it and/or modify
++@comment it under the terms of the GNU General Public License as published by
++@comment the Free Software Foundation; either version 2, or (at your option)
++@comment any later version.
++
++@comment CVS is distributed in the hope that it will be useful,
++@comment but WITHOUT ANY WARRANTY; without even the implied warranty of
++@comment MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++@comment GNU General Public License for more details.
+
+ @node Date input formats
+ @chapter Date input formats
+@@ -55,8 +63,7 @@
+ * Day of week items:: Monday and others.
+ * Relative items in date strings:: next tuesday, 2 years ago.
+ * Pure numbers in date strings:: 19931219, 1440.
+-* Seconds since the Epoch:: @@1078100502.
+-* Specifying time zone rules:: TZ="America/New_York", TZ="UTC0".
++* Seconds since the Epoch:: @@1101064456
+ * Authors of get_date:: Bellovin, Eggert, Salz, Berets, et al.
+ @end menu
+
+@@ -113,8 +120,7 @@
+
+ @cindex language, in dates
+ @cindex time zone item
+-The output of the @command{date} command
+-is not always acceptable as a date string,
++The output of @command{date} is not always acceptable as a date string,
+ not only because of the language problem, but also because there is no
+ standard meaning for time zone items like @samp{IST}. When using
+ @command{date} to generate a date string intended to be parsed later,
+@@ -124,15 +130,21 @@
+
+ @example
+ $ LC_ALL=C TZ=UTC0 date
+-Mon Mar 1 00:21:42 UTC 2004
+-$ TZ=UTC0 date +'%Y-%m-%d %H:%M:%SZ'
+-2004-03-01 00:21:42Z
++Fri Dec 15 19:48:05 UTC 2000
++$ TZ=UTC0 date +"%Y-%m-%d %H:%M:%SZ"
++2000-12-15 19:48:05Z
++$ date --iso-8601=seconds # a GNU extension
++2000-12-15T11:48:05-0800
++$ date --iso-8601=ns # a GNU extension
++2004-02-29T16:21:42,692722128-0800
+ $ date --iso-8601=ns | tr T ' ' # --iso-8601 is a GNU extension.
+ 2004-02-29 16:21:42,692722128-0800
+ $ date --rfc-2822 # a GNU extension
+-Sun, 29 Feb 2004 16:21:42 -0800
+-$ date +'%Y-%m-%d %H:%M:%S %z' # %z is a GNU extension.
+-2004-02-29 16:21:42 -0800
++Fri, 15 Dec 2000 11:48:05 -0800
++$ date +"%Y-%m-%d %H:%M:%S %z" # %z is a GNU extension.
++2000-12-15 11:48:05 -0800
++$ date +'@@%s' # %s is a MirOS extension.
++@@1101064210
+ $ date +'@@%s.%N' # %s and %N are GNU extensions.
+ @@1078100502.692722128
+ @end example
+@@ -234,11 +246,10 @@
+ More generally, the time of day may be given as
+ @samp{@var{hour}:@var{minute}:@var{second}}, where @var{hour} is
+ a number between 0 and 23, @var{minute} is a number between 0 and
+-59, and @var{second} is a number between 0 and 59 possibly followed by
+-@samp{.} or @samp{,} and a fraction containing one or more digits.
+-Alternatively,
+-@samp{:@var{second}} can be omitted, in which case it is taken to
+-be zero.
++59, and @var{second} is a number between 0 and 59, with an optional
++fraction separated by @samp{.} or @samp{,} consisting of digits.
++Alternatively, @samp{:@var{second}} can be omitted, in which case
++it is taken to be zero.
+
+ @findex am @r{in date strings}
+ @findex pm @r{in date strings}
+@@ -299,8 +310,7 @@
+ described in the previous section.
+
+ If neither a time zone item nor a time zone correction is supplied,
+-time stamps are interpreted using the rules of the default time zone
+-(@pxref{Specifying time zone rules}).
++time stamps are interpreted using the rules of the default time zone.
+
+
+ @node Day of week items
+@@ -389,7 +399,7 @@
+ date strings like @samp{this thursday}.
+
+ When a relative item causes the resulting date to cross a boundary
+-where the clocks were adjusted, typically for daylight saving time,
++where the clocks were adjusted, typically for daylight-saving time,
+ the resulting date and time are adjusted accordingly.
+
+ The fuzz in units can cause problems with relative items. For
+@@ -401,7 +411,7 @@
+ @example
+ $ date -R
+ Thu, 31 Jul 2003 13:02:39 -0700
+-$ date --date='-1 month' +'Last month was %B?'
++$ date --date="-1 month" +'Last month was %B?'
+ Last month was July?
+ $ date --date="$(date +%Y-%m-15) -1 month" +'Last month was %B!'
+ Last month was June!
+@@ -440,86 +450,49 @@
+ @node Seconds since the Epoch
+ @section Seconds since the Epoch
+
+-If you precede a number with @samp{@@}, it represents an internal time
+-stamp as a count of seconds. The number can contain an internal
+-decimal point (either @samp{.} or @samp{,}); any excess precision not
+-supported by the internal representation is truncated toward minus
+-infinity. Such a number cannot be combined with any other date
+-item, as it specifies a complete time stamp.
++If you give a string consisting of @samp{@@} followed by a decimal
++number, it is parsed as an internal time stamp, @sc{utc} for
++@acronym{POSIX} compliant systems, @sc{tai} for systems which keep
++time correctly, and directly mapped to a kernel time. The implementation
++handles an optional fraction separated by @samp{.} or @samp{,} and
++truncates to a supported internal precision, rounding towards the
++negative infinity. Since the kernel time stamp represents complete
++date and time information, it cannot be combined with any other
++format given.
+
+ @cindex beginning of time, for @acronym{POSIX}
+ @cindex epoch, for @acronym{POSIX}
+-Internally, computer times are represented as a count of seconds since
+-an epoch---a well-defined point of time. On @acronym{GNU} and
+-@acronym{POSIX} systems, the epoch is 1970-01-01 00:00:00 @sc{utc}, so
+-@samp{@@0} represents this time, @samp{@@1} represents 1970-01-01
+-00:00:01 @sc{utc}, and so forth. @acronym{GNU} and most other
+-@acronym{POSIX}-compliant systems support such times as an extension
+-to @acronym{POSIX}, using negative counts, so that @samp{@@-1}
+-represents 1969-12-31 23:59:59 @sc{utc}.
+-
+-Traditional Unix systems count seconds with 32-bit two's-complement
+-integers and can represent times from 1901-12-13 20:45:52 through
+-2038-01-19 03:14:07 @sc{utc}. More modern systems use 64-bit counts
+-of seconds with nanosecond subcounts, and can represent all the times
+-in the known lifetime of the universe to a resolution of 1 nanosecond.
+-
+-On most systems, these counts ignore the presence of leap seconds.
+-For example, on most systems @samp{@@915148799} represents 1998-12-31
+-23:59:59 @sc{utc}, @samp{@@915148800} represents 1999-01-01 00:00:00
+-@sc{utc}, and there is no way to represent the intervening leap second
+-1998-12-31 23:59:60 @sc{utc}.
+-
+-@node Specifying time zone rules
+-@section Specifying time zone rules
+-
+-@vindex TZ
+-Normally, dates are interpreted using the rules of the current time
+-zone, which in turn are specified by the @env{TZ} environment
+-variable, or by a system default if @env{TZ} is not set. To specify a
+-different set of default time zone rules that apply just to one date,
+-start the date with a string of the form @samp{TZ="@var{rule}"}. The
+-two quote characters (@samp{"}) must be present in the date, and any
+-quotes or backslashes within @var{rule} must be escaped by a
+-backslash.
+-
+-For example, with the @acronym{GNU} @command{date} command you can
+-answer the question ``What time is it in New York when a Paris clock
+-shows 6:30am on October 31, 2004?'' by using a date beginning with
+-@samp{TZ="Europe/Paris"} as shown in the following shell transcript:
+-
+-@example
+-$ export TZ="America/New_York"
+-$ date --date='TZ="Europe/Paris" 2004-10-31 06:30'
+-Sun Oct 31 01:30:00 EDT 2004
+-@end example
++Although the date syntax here can represent any possible time since the
++year zero, computer integers often cannot represent such a wide range of
++time. On @acronym{POSIX} systems, the clock starts at 1970-01-01 00:00:00
++@sc{utc}: @acronym{POSIX} does not require support for times before the
++@acronym{POSIX} Epoch and times far in the future. @acronym{GNU} and
++traditional Unix systems have 32-bit signed @code{time_t} and can represent
++times from 1901-12-13 20:45:52 through 2038-01-19 03:14:07 @sc{utc}, such
++that @samp{@@0} represents the epoch, @samp{@@1} represents 1970-01-01
++00:00:01 @sc{utc}, and so forth, whereas @samp{@@-1}, not mandated by
++@acronym{POSIX}, represents 1969-12-31 23:59:59 @sc{utc}. Systems with
++64-bit signed @code{time_t} can represent all the times in the known
++lifetime of the universe. Modern @acronym{UNIX} systems also can give
++precise timecounters in the nanosecond or even attosecond range with
++a resolution often only a small multiply, like 10000, of the CPU
++frequency (on fast machines).
++
++@acronym{POSIX} conformant systems do not count leap seconds, and their
++kernel time is a seconds-since-epoch representation of @sc{utc} (which
++is a calendar time); the MirOS family of operating systems keeps time
++as seconds since the epoch, @sc{tai}, correctly counting leap seconds
++and providing conversion functions. Most MirBSD ports have already
++switched to a 64-bit signed @code{time_t}, some are using a
++@sc{djb}-compatible @code{tai_t} internally. The rest of this
++document has not been throughoutly checked for @sc{utc} vs @sc{tai}
++correctness. For @acronym{POSIX}ly broken systems, @samp{@@915148799}
++represents 1998-12-31 23:59:59 @sc{utc}, @samp{@@915148800} represents
++1999-01-01 00:00:00 @sc{utc}, and there is no way to represent the
++intervening leap second 1998-12-31 23:59:60 @sc{utc}. Also, calculation
++of time deltas is wrong, such as the age of the MirOS founder is already
++off by more than 10 seconds in 2000.
+
+-In this example, the @option{--date} operand begins with its own
+-@env{TZ} setting, so the rest of that operand is processed according
+-to @samp{Europe/Paris} rules, treating the string @samp{2004-10-31
+-06:30} as if it were in Paris. However, since the output of the
+-@command{date} command is processed according to the overall time zone
+-rules, it uses New York time. (Paris was normally six hours ahead of
+-New York in 2004, but this example refers to a brief Halloween period
+-when the gap was five hours.)
+-
+-A @env{TZ} value is a rule that typically names a location in the
+-@uref{http://www.twinsun.com/tz/tz-link.htm, @samp{tz} database}.
+-A recent catalog of location names appears in the
+-@uref{http://twiki.org/cgi-bin/xtra/tzdate, TWiki Date and Time
+-Gateway}. A few non-@acronym{GNU} hosts require a colon before a
+-location name in a @env{TZ} setting, e.g.,
+-@samp{TZ=":America/New_York"}.
+-
+-The @samp{tz} database includes a wide variety of locations ranging
+-from @samp{Arctic/Longyearbyen} to @samp{Antarctica/South_Pole}, but
+-if you are at sea and have your own private time zone, or if you are
+-using a non-@acronym{GNU} host that does not support the @samp{tz}
+-database, you may need to use a @acronym{POSIX} rule instead. Simple
+-@acronym{POSIX} rules like @samp{UTC0} specify a time zone without
+-daylight saving time; other rules can specify simple daylight saving
+-regimes. @xref{TZ Variable,, Specifying the Time Zone with @code{TZ},
+-libc, The GNU C Library}.
+
+ @node Authors of get_date
+ @section Authors of @code{get_date}
+@@ -545,3 +518,11 @@
+ This chapter was originally produced by Fran@,{c}ois Pinard
+ (@email{pinard@@iro.umontreal.ca}) from the @file{getdate.y} source code,
+ and then edited by K.@: Berry (@email{kb@@cs.umb.edu}).
++
++The version of this chapter you are reading comes with CVS 1.12 (also in
++Debian) and the MirOS family of operating systems; it is based upon an
++older version of the @acronym{GNU} coreutils manual which is not yet
++restricted by the licencing conditions of the GNU Free Documentation
++License, but more freely redistributable. Appropriate changes for
++the in-tree @code{get_date} version of CVS have been applied.
++The MirOS version is maintained by Thorsten Glaser @email{tg@@mirbsd.de}.
+--- cvs-1.12.13+real.orig/doc/mkman.pl
++++ cvs-1.12.13+real/doc/mkman.pl
+@@ -1,10 +1,12 @@
+ #! @PERL@
++# $MirOS: src/gnu/usr.bin/cvs/doc/mkman.pl,v 1.6 2016/11/08 21:12:06 tg Exp $
+ #
+ # Generate a man page from sections of a Texinfo manual.
+ #
+ # Copyright 2004 The Free Software Foundation,
+ # Derek R. Price,
+ # & Ximbiot <http://ximbiot.com>
++# Copyright (c) 2004, 2010 mirabilos <m@mirbsd.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
+@@ -62,7 +64,7 @@
+ if $keyword =~ /^(strong|sc|code|file|samp)$/;
+ return "\\fI"
+ if $keyword =~ /^(emph|var|dfn)$/;
+- die "no handler for keyword \`$keyword', found at line $. of file \`$file'\n";
++ die "no handler for keyword '$keyword', found at line $. of file '$file'\n";
+ }
+
+
+@@ -72,8 +74,12 @@
+ {
+ my ($file, $parent, $keyword, $content) = @_;
+
+- return "see node \`$content\\(aq in the CVS manual"
+- if $keyword =~ /^(p?x)?ref$/;
++ return "node \\(aq$content\\(aq in the CVS manual"
++ if $keyword =~ /^ref$/;
++ return "See node \\(aq$content\\(aq in the CVS manual"
++ if $keyword =~ /^xref$/;
++ return "see node \\(aq$content\\(aq in the CVS manual"
++ if $keyword =~ /^pxref$/;
+ return "\\fP\\fP$content"
+ if $keyword =~ /^splitrcskeyword$/;
+
+@@ -91,11 +97,11 @@
+ for my $file (@ARGV)
+ {
+ my $fh = new IO::File "< $file"
+- or die "Failed to open file \`$file': $!";
++ or die "Failed to open file '$file': $!";
+
+ if ($file !~ /\.(texinfo|texi|txi)$/)
+ {
+- print stderr "Passing \`$file' through unprocessed.\n";
++ print stderr "Passing '$file' through unprocessed.\n";
+ # Just cat any file that doesn't look like a Texinfo source.
+ while (my $line = $fh->getline)
+ {
+@@ -104,7 +110,7 @@
+ next;
+ }
+
+- print stderr "Processing \`$file'.\n";
++ print stderr "Processing '$file'.\n";
+ $texi_num++;
+ my $gotone = 0;
+ my $inblank = 0;
+@@ -143,6 +149,9 @@
+ s/\@bullet({}|\b)/\\(bu/g;
+ s/\@dots({}|\b)/\\&.../g;
+
++ # Hack for GNU groff with nroff -Tutf8
++ s/-/\\-/g;
++
+ # Examples should be indented and otherwise untouched
+ if (/^\@example$/)
+ {
+@@ -356,7 +365,7 @@
+ s/\@([{}])/$1/g;
+
+ # Verify we haven't left commands unprocessed.
+- die "Unprocessed command at line $. of file \`$file': "
++ die "Unprocessed command at line $. of file '$file': "
+ . ($1 ? "$1\n" : "<EOL>\n")
+ if /^(?>(?:[^\@]|\@\@)*)\@(\w+|.|$)/;
+
+--- cvs-1.12.13+real.orig/lib/Makefile.am
++++ cvs-1.12.13+real/lib/Makefile.am
+@@ -136,7 +136,7 @@
+ check_PROGRAMS += getdate
+ getdate_SOURCES = \
+ error.c \
+- getdate.y
++ getdate.c
+ ## This source file was added only for the getdate test program when compiled
+ ## with GNULIB's error.c.
+ getdate_SOURCES += \
+--- cvs-1.12.13+real.orig/lib/allocsa.h
++++ cvs-1.12.13+real/lib/allocsa.h
+@@ -19,7 +19,9 @@
+ #ifndef _ALLOCSA_H
+ #define _ALLOCSA_H
+
++#ifdef HAVE_ALLOCA_H
+ #include <alloca.h>
++#endif
+ #include <stddef.h>
+ #include <stdlib.h>
+
+--- cvs-1.12.13+real.orig/lib/chdir-long.c
++++ cvs-1.12.13+real/lib/chdir-long.c
+@@ -39,9 +39,7 @@
+ # define O_DIRECTORY 0
+ #endif
+
+-#ifndef PATH_MAX
+-# error "compile this file only if your system defines PATH_MAX"
+-#endif
++#ifdef PATH_MAX
+
+ struct cd_buf
+ {
+@@ -269,6 +267,8 @@
+ }
+ #endif
+
++#endif /* PATH_MAX */
++
+ /*
+ Local Variables:
+ compile-command: "gcc -DTEST_CHDIR=1 -DHAVE_CONFIG_H -I.. -g -O -W -Wall chdir-long.c libcoreutils.a"
+--- cvs-1.12.13+real.orig/lib/getcwd.c
++++ cvs-1.12.13+real/lib/getcwd.c
+@@ -151,7 +151,7 @@
+ size_t allocated = size;
+ size_t used;
+
+-#if HAVE_PARTLY_WORKING_GETCWD && !defined AT_FDCWD
++#if HAVE_PARTLY_WORKING_GETCWD
+ /* The system getcwd works, except it sometimes fails when it
+ shouldn't, setting errno to ERANGE, ENAMETOOLONG, or ENOENT. If
+ AT_FDCWD is not defined, the algorithm below is O(N**2) and this
+@@ -204,6 +204,9 @@
+ ino_t dotino;
+ bool mount_point;
+ int parent_status;
++ size_t dirroom;
++ size_t namlen;
++ bool use_d_ino = true;
+
+ /* Look at the parent directory. */
+ #ifdef AT_FDCWD
+@@ -244,110 +247,131 @@
+ goto lose;
+ dotlist[dotlen++] = '/';
+ #endif
+- /* Clear errno to distinguish EOF from error if readdir returns
+- NULL. */
+- __set_errno (0);
+- while ((d = __readdir (dirstream)) != NULL)
++ for (;;)
+ {
++ /* Clear errno to distinguish EOF from error if readdir returns
++ NULL. */
++ __set_errno (0);
++ d = __readdir (dirstream);
++
++ /* When we've iterated through all directory entries without finding
++ one with a matching d_ino, rewind the stream and consider each
++ name again, but this time, using lstat. This is necessary in a
++ chroot on at least one system (glibc-2.3.6 + linux 2.6.12), where
++ .., ../.., ../../.., etc. all had the same device number, yet the
++ d_ino values for entries in / did not match those obtained
++ via lstat. */
++ if (d == NULL && errno == 0 && use_d_ino)
++ {
++ use_d_ino = false;
++ rewinddir (dirstream);
++ d = __readdir (dirstream);
++ }
++
++ if (d == NULL)
++ {
++ if (errno == 0)
++ /* EOF on dirstream, which can mean e.g., that the current
++ directory has been removed. */
++ __set_errno (ENOENT);
++ goto lose;
++ }
+ if (d->d_name[0] == '.' &&
+ (d->d_name[1] == '\0' ||
+ (d->d_name[1] == '.' && d->d_name[2] == '\0')))
+ continue;
+- if (MATCHING_INO (d, thisino) || mount_point)
++
++ if (use_d_ino)
+ {
+- int entry_status;
++ bool match = (MATCHING_INO (d, thisino) || mount_point);
++ if (! match)
++ continue;
++ }
++
++ {
++ int entry_status;
+ #ifdef AT_FDCWD
+- entry_status = fstatat (fd, d->d_name, &st, AT_SYMLINK_NOFOLLOW);
++ entry_status = fstatat (fd, d->d_name, &st, AT_SYMLINK_NOFOLLOW);
+ #else
+- /* Compute size needed for this file name, or for the file
+- name ".." in the same directory, whichever is larger.
+- Room for ".." might be needed the next time through
+- the outer loop. */
+- size_t name_alloc = _D_ALLOC_NAMLEN (d);
+- size_t filesize = dotlen + MAX (sizeof "..", name_alloc);
+-
+- if (filesize < dotlen)
+- goto memory_exhausted;
++ /* Compute size needed for this file name, or for the file
++ name ".." in the same directory, whichever is larger.
++ Room for ".." might be needed the next time through
++ the outer loop. */
++ size_t name_alloc = _D_ALLOC_NAMLEN (d);
++ size_t filesize = dotlen + MAX (sizeof "..", name_alloc);
++
++ if (filesize < dotlen)
++ goto memory_exhausted;
++
++ if (dotsize < filesize)
++ {
++ /* My, what a deep directory tree you have, Grandma. */
++ size_t newsize = MAX (filesize, dotsize * 2);
++ size_t i;
++ if (newsize < dotsize)
++ goto memory_exhausted;
++ if (dotlist != dots)
++ free (dotlist);
++ dotlist = malloc (newsize);
++ if (dotlist == NULL)
++ goto lose;
++ dotsize = newsize;
+
+- if (dotsize < filesize)
+- {
+- /* My, what a deep directory tree you have, Grandma. */
+- size_t newsize = MAX (filesize, dotsize * 2);
+- size_t i;
+- if (newsize < dotsize)
+- goto memory_exhausted;
+- if (dotlist != dots)
+- free (dotlist);
+- dotlist = malloc (newsize);
+- if (dotlist == NULL)
+- goto lose;
+- dotsize = newsize;
+-
+- i = 0;
+- do
+- {
+- dotlist[i++] = '.';
+- dotlist[i++] = '.';
+- dotlist[i++] = '/';
+- }
+- while (i < dotlen);
+- }
++ i = 0;
++ do
++ {
++ dotlist[i++] = '.';
++ dotlist[i++] = '.';
++ dotlist[i++] = '/';
++ }
++ while (i < dotlen);
++ }
+
+- strcpy (dotlist + dotlen, d->d_name);
+- entry_status = __lstat (dotlist, &st);
++ memcpy (dotlist + dotlen, d->d_name, _D_ALLOC_NAMLEN (d));
++ entry_status = __lstat (dotlist, &st);
+ #endif
+- /* We don't fail here if we cannot stat() a directory entry.
+- This can happen when (network) file systems fail. If this
+- entry is in fact the one we are looking for we will find
+- out soon as we reach the end of the directory without
+- having found anything. */
+- if (entry_status == 0 && S_ISDIR (st.st_mode)
+- && st.st_dev == thisdev && st.st_ino == thisino)
+- break;
+- }
++ /* We don't fail here if we cannot stat() a directory entry.
++ This can happen when (network) file systems fail. If this
++ entry is in fact the one we are looking for we will find
++ out soon as we reach the end of the directory without
++ having found anything. */
++ if (entry_status == 0 && S_ISDIR (st.st_mode)
++ && st.st_dev == thisdev && st.st_ino == thisino)
++ break;
++ }
+ }
+- if (d == NULL)
+- {
+- if (errno == 0)
+- /* EOF on dirstream, which means that the current directory
+- has been removed. */
+- __set_errno (ENOENT);
+- goto lose;
+- }
+- else
+- {
+- size_t dirroom = dirp - dir;
+- size_t namlen = _D_EXACT_NAMLEN (d);
+
+- if (dirroom <= namlen)
++ dirroom = dirp - dir;
++ namlen = _D_EXACT_NAMLEN (d);
++
++ if (dirroom <= namlen)
++ {
++ if (size != 0)
+ {
+- if (size != 0)
+- {
+- __set_errno (ERANGE);
+- goto lose;
+- }
+- else
+- {
+- char *tmp;
+- size_t oldsize = allocated;
+-
+- allocated += MAX (allocated, namlen);
+- if (allocated < oldsize
+- || ! (tmp = realloc (dir, allocated)))
+- goto memory_exhausted;
+-
+- /* Move current contents up to the end of the buffer.
+- This is guaranteed to be non-overlapping. */
+- dirp = memcpy (tmp + allocated - (oldsize - dirroom),
+- tmp + dirroom,
+- oldsize - dirroom);
+- dir = tmp;
+- }
++ __set_errno (ERANGE);
++ goto lose;
++ }
++ else
++ {
++ char *tmp;
++ size_t oldsize = allocated;
++
++ allocated += MAX (allocated, namlen);
++ if (allocated < oldsize
++ || ! (tmp = realloc (dir, allocated)))
++ goto memory_exhausted;
++
++ /* Move current contents up to the end of the buffer.
++ This is guaranteed to be non-overlapping. */
++ dirp = memcpy (tmp + allocated - (oldsize - dirroom),
++ tmp + dirroom,
++ oldsize - dirroom);
++ dir = tmp;
+ }
+- dirp -= namlen;
+- memcpy (dirp, d->d_name, namlen);
+- *--dirp = '/';
+ }
++ dirp -= namlen;
++ memcpy (dirp, d->d_name, namlen);
++ *--dirp = '/';
+
+ thisdev = dotdev;
+ thisino = dotino;
+--- cvs-1.12.13+real.orig/lib/getdate.c
++++ cvs-1.12.13+real/lib/getdate.c
+@@ -1,7 +1,9 @@
+-/* A Bison parser, made by GNU Bison 1.875c. */
++/* A Bison parser, made by GNU Bison 2.3. */
+
+-/* Skeleton parser for Yacc-like parsing with Bison,
+- Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
++/* Skeleton implementation for Bison's Yacc-like parsers in C
++
++ Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
++ Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+@@ -15,16 +17,24 @@
+
+ You 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. */
++ Foundation, Inc., 51 Franklin Street, Fifth Floor,
++ Boston, MA 02110-1301, USA. */
++
++/* As a special exception, you may create a larger work that contains
++ part or all of the Bison parser skeleton and distribute that work
++ under terms of your choice, so long as that work isn't itself a
++ parser generator using the skeleton or a modified version thereof
++ as a parser skeleton. Alternatively, if you modify or redistribute
++ the parser skeleton itself, you may (at your option) remove this
++ special exception, which will cause the skeleton and the resulting
++ Bison output files to be licensed under the GNU General Public
++ License without this special exception.
+
+-/* As a special exception, when this file is copied by Bison into a
+- Bison output file, you may use that output file without restriction.
+- This special exception was added by the Free Software Foundation
+- in version 1.24 of Bison. */
++ This special exception was added by the Free Software Foundation in
++ version 2.2 of Bison. */
+
+-/* Written by Richard Stallman by simplifying the original so called
+- ``semantic'' parser. */
++/* C LALR(1) parser skeleton written by Richard Stallman, by
++ simplifying the original so-called "semantic" parser. */
+
+ /* All symbols defined below should begin with yy or YY, to avoid
+ infringing on user name space. This should be done even for local
+@@ -36,6 +46,9 @@
+ /* Identify Bison output. */
+ #define YYBISON 1
+
++/* Bison version. */
++#define YYBISON_VERSION "2.3"
++
+ /* Skeleton name. */
+ #define YYSKELETON_NAME "yacc.c"
+
+@@ -74,6 +87,7 @@
+ tUDECIMAL_NUMBER = 276
+ };
+ #endif
++/* Tokens. */
+ #define tAGO 258
+ #define tDST 259
+ #define tDAY 260
+@@ -102,8 +116,11 @@
+
+ /* Parse a string into an internal time stamp.
+
+- Copyright (C) 1999, 2000, 2002, 2003, 2004, 2005 Free Software
+- Foundation, Inc.
++ Copyright (C) 1995, 1997, 1998, 2003, 2004, 2005
++ Free Software Foundation, Inc.
++
++ Copyright (c) 2005, 2006, 2007, 2010, 2016
++ mirabilos <m@mirbsd.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
+@@ -139,6 +156,10 @@
+
+ #include "getdate.h"
+
++#ifdef USE_LIBBSD
++size_t strlcat(char *, const char *, size_t);
++#endif
++
+ /* There's no need to extend the stack, so there's no need to involve
+ alloca. */
+ #define YYSTACK_USE_ALLOCA 0
+@@ -166,10 +187,44 @@
+ #include <stdlib.h>
+ #include <string.h>
+
++#ifndef _STDLIB_H
++#define _STDLIB_H 1 /* GNU bison needs this */
++#endif
++
++#ifndef IN_RCS
+ #include "setenv.h"
+ #include "xalloc.h"
++#else /* IN_RCS */
++#include <unistd.h>
++
++#define HAVE_STRUCT_TM_TM_ZONE 1
++#define HAVE_TM_GMTOFF 1
++
++#define gettime(ts) clock_gettime(CLOCK_REALTIME,(ts))
+
+-#if STDC_HEADERS || (! defined isascii && ! HAVE_ISASCII)
++static void *
++xmalloc(size_t s)
++{
++ static const char xmalloc_enomem[] = "memory exhausted\n";
++ void *x;
++
++ if ((x = malloc(s)) == NULL) {
++ write(2, xmalloc_enomem, sizeof(xmalloc_enomem) - 1);
++ exit(1);
++ }
++
++ return (x);
++}
++
++static void *
++xmemdup(void const *p, size_t s)
++{
++ return (memcpy(xmalloc(s), p, s));
++}
++#endif /* IN_RCS */
++
++#if (defined(STDC_HEADERS) && STDC_HEADERS) || \
++ (!defined(isascii) && !HAVE_ISASCII)
+ # define IN_CTYPE_DOMAIN(c) 1
+ #else
+ # define IN_CTYPE_DOMAIN(c) isascii (c)
+@@ -188,7 +243,8 @@
+ of `digit' even when the host does not conform to POSIX. */
+ #define ISDIGIT(c) ((unsigned int) (c) - '0' <= 9)
+
+-#if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 8) || __STRICT_ANSI__
++#if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 8) || \
++ (defined(__STRICT_ANSI__) && __STRICT_ANSI__)
+ # define __attribute__(x)
+ #endif
+
+@@ -196,6 +252,15 @@
+ # define ATTRIBUTE_UNUSED __attribute__ ((__unused__))
+ #endif
+
++#ifndef __IDSTRING
++#define __IDSTRING(varname, string) \
++ static const char varname[] __attribute__((__used__)) = \
++ "@(""#)" #varname ": " string
++#endif
++
++__IDSTRING(rcsid_code, "$MirOS: src/gnu/usr.bin/cvs/lib/getdate.c,v 1.17 2016/10/22 22:46:51 tg Exp $");
++__IDSTRING(rcsid_bron, "$miros: src/gnu/usr.bin/cvs/lib/getdate.y,v 1.11 2016/10/22 22:45:50 tg Exp $");
++
+ /* Shift A right by B bits portably, by dividing A by 2**B and
+ truncating towards minus infinity. A and B should be free of side
+ effects, and B should be in the range 0 <= B <= INT_BITS - 2, where
+@@ -292,7 +357,7 @@
+
+ union YYSTYPE;
+ static int yylex (union YYSTYPE *, parser_control *);
+-static int yyerror (parser_control *, char *);
++static int yyerror (parser_control *, const char *);
+ static long int time_zone_hhmm (textint, long int);
+
+
+@@ -310,15 +375,22 @@
+ # define YYERROR_VERBOSE 0
+ #endif
+
+-#if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED)
+-#line 209 "getdate.y"
+-typedef union YYSTYPE {
++/* Enabling the token table. */
++#ifndef YYTOKEN_TABLE
++# define YYTOKEN_TABLE 0
++#endif
++
++#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
++typedef union YYSTYPE
++#line 260 "getdate.y"
++{
+ long int intval;
+ textint textintval;
+ struct timespec timespec;
+-} YYSTYPE;
+-/* Line 191 of yacc.c. */
+-#line 322 "getdate.c"
++}
++/* Line 193 of yacc.c. */
++#line 393 "getdate.c"
++ YYSTYPE;
+ # define yystype YYSTYPE /* obsolescent; will be withdrawn */
+ # define YYSTYPE_IS_DECLARED 1
+ # define YYSTYPE_IS_TRIVIAL 1
+@@ -329,56 +401,171 @@
+ /* Copy the second part of user declarations. */
+
+
+-/* Line 214 of yacc.c. */
+-#line 334 "getdate.c"
++/* Line 216 of yacc.c. */
++#line 406 "getdate.c"
++
++#ifdef short
++# undef short
++#endif
++
++#ifdef YYTYPE_UINT8
++typedef YYTYPE_UINT8 yytype_uint8;
++#else
++typedef unsigned char yytype_uint8;
++#endif
++
++#ifdef YYTYPE_INT8
++typedef YYTYPE_INT8 yytype_int8;
++#elif (defined __STDC__ || defined __C99__FUNC__ \
++ || defined __cplusplus || defined _MSC_VER)
++typedef signed char yytype_int8;
++#else
++typedef short int yytype_int8;
++#endif
++
++#ifdef YYTYPE_UINT16
++typedef YYTYPE_UINT16 yytype_uint16;
++#else
++typedef unsigned short int yytype_uint16;
++#endif
++
++#ifdef YYTYPE_INT16
++typedef YYTYPE_INT16 yytype_int16;
++#else
++typedef short int yytype_int16;
++#endif
++
++#ifndef YYSIZE_T
++# ifdef __SIZE_TYPE__
++# define YYSIZE_T __SIZE_TYPE__
++# elif defined size_t
++# define YYSIZE_T size_t
++# elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \
++ || defined __cplusplus || defined _MSC_VER)
++# include <stddef.h> /* INFRINGES ON USER NAME SPACE */
++# define YYSIZE_T size_t
++# else
++# define YYSIZE_T unsigned int
++# endif
++#endif
+
+-#if ! defined (yyoverflow) || YYERROR_VERBOSE
++#define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
+
+-# ifndef YYFREE
+-# define YYFREE free
++#ifndef YY_
++# if defined(YYENABLE_NLS) && YYENABLE_NLS
++# if ENABLE_NLS
++# include <libintl.h> /* INFRINGES ON USER NAME SPACE */
++# define YY_(msgid) dgettext ("bison-runtime", msgid)
++# endif
+ # endif
+-# ifndef YYMALLOC
+-# define YYMALLOC malloc
++# ifndef YY_
++# define YY_(msgid) msgid
+ # endif
++#endif
++
++/* Suppress unused-variable warnings by "using" E. */
++#if ! defined lint || defined __GNUC__
++# define YYUSE(e) ((void) (e))
++#else
++# define YYUSE(e) /* empty */
++#endif
++
++/* Identity function, used to suppress warnings about constant conditions. */
++#ifndef lint
++# define YYID(n) (n)
++#else
++#if (defined __STDC__ || defined __C99__FUNC__ \
++ || defined __cplusplus || defined _MSC_VER)
++static int
++YYID (int i)
++#else
++static int
++YYID (i)
++ int i;
++#endif
++{
++ return i;
++}
++#endif
++
++#if ! defined yyoverflow || YYERROR_VERBOSE
+
+ /* The parser invokes alloca or malloc; define the necessary symbols. */
+
+ # ifdef YYSTACK_USE_ALLOCA
+ # if YYSTACK_USE_ALLOCA
+-# define YYSTACK_ALLOC alloca
+-# endif
+-# else
+-# if defined (alloca) || defined (_ALLOCA_H)
+-# define YYSTACK_ALLOC alloca
+-# else
+ # ifdef __GNUC__
+ # define YYSTACK_ALLOC __builtin_alloca
++# elif defined __BUILTIN_VA_ARG_INCR
++# include <alloca.h> /* INFRINGES ON USER NAME SPACE */
++# elif defined _AIX
++# define YYSTACK_ALLOC __alloca
++# elif defined _MSC_VER
++# include <malloc.h> /* INFRINGES ON USER NAME SPACE */
++# define alloca _alloca
++# else
++# define YYSTACK_ALLOC alloca
++# if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
++ || defined __cplusplus || defined _MSC_VER)
++# include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
++# ifndef _STDLIB_H
++# define _STDLIB_H 1
++# endif
++# endif
+ # endif
+ # endif
+ # endif
+
+ # ifdef YYSTACK_ALLOC
+- /* Pacify GCC's `empty if-body' warning. */
+-# define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
+-# else
+-# if defined (__STDC__) || defined (__cplusplus)
+-# include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
+-# define YYSIZE_T size_t
++ /* Pacify GCC's `empty if-body' warning. */
++# define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0))
++# ifndef YYSTACK_ALLOC_MAXIMUM
++ /* The OS might guarantee only one guard page at the bottom of the stack,
++ and a page size can be as small as 4096 bytes. So we cannot safely
++ invoke alloca (N) if N exceeds 4096. Use a slightly smaller number
++ to allow for a few compiler-allocated temporary stack slots. */
++# define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */
+ # endif
++# else
+ # define YYSTACK_ALLOC YYMALLOC
+ # define YYSTACK_FREE YYFREE
++# ifndef YYSTACK_ALLOC_MAXIMUM
++# define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
++# endif
++# if (defined __cplusplus && ! defined _STDLIB_H \
++ && ! ((defined YYMALLOC || defined malloc) \
++ && (defined YYFREE || defined free)))
++# include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
++# ifndef _STDLIB_H
++# define _STDLIB_H 1
++# endif
++# endif
++# ifndef YYMALLOC
++# define YYMALLOC malloc
++# if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
++ || defined __cplusplus || defined _MSC_VER)
++void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
++# endif
++# endif
++# ifndef YYFREE
++# define YYFREE free
++# if ! defined free && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
++ || defined __cplusplus || defined _MSC_VER)
++void free (void *); /* INFRINGES ON USER NAME SPACE */
++# endif
++# endif
+ # endif
+-#endif /* ! defined (yyoverflow) || YYERROR_VERBOSE */
++#endif /* ! defined yyoverflow || YYERROR_VERBOSE */
+
+
+-#if (! defined (yyoverflow) \
+- && (! defined (__cplusplus) \
+- || (defined (YYSTYPE_IS_TRIVIAL) && YYSTYPE_IS_TRIVIAL)))
++#if (! defined yyoverflow \
++ && (! defined __cplusplus \
++ || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
+
+ /* A type that is properly aligned for any stack member. */
+ union yyalloc
+ {
+- short yyss;
++ yytype_int16 yyss;
+ YYSTYPE yyvs;
+ };
+
+@@ -388,24 +575,24 @@
+ /* The size of an array large to enough to hold all stacks, each with
+ N elements. */
+ # define YYSTACK_BYTES(N) \
+- ((N) * (sizeof (short) + sizeof (YYSTYPE)) \
++ ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \
+ + YYSTACK_GAP_MAXIMUM)
+
+ /* Copy COUNT objects from FROM to TO. The source and destination do
+ not overlap. */
+ # ifndef YYCOPY
+-# if defined (__GNUC__) && 1 < __GNUC__
++# if defined __GNUC__ && 1 < __GNUC__
+ # define YYCOPY(To, From, Count) \
+ __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
+ # else
+ # define YYCOPY(To, From, Count) \
+ do \
+ { \
+- register YYSIZE_T yyi; \
++ YYSIZE_T yyi; \
+ for (yyi = 0; yyi < (Count); yyi++) \
+ (To)[yyi] = (From)[yyi]; \
+ } \
+- while (0)
++ while (YYID (0))
+ # endif
+ # endif
+
+@@ -423,39 +610,33 @@
+ yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
+ yyptr += yynewbytes / sizeof (*yyptr); \
+ } \
+- while (0)
++ while (YYID (0))
+
+ #endif
+
+-#if defined (__STDC__) || defined (__cplusplus)
+- typedef signed char yysigned_char;
+-#else
+- typedef short yysigned_char;
+-#endif
+-
+-/* YYFINAL -- State number of the termination state. */
++/* YYFINAL -- State number of the termination state. */
+ #define YYFINAL 12
+ /* YYLAST -- Last index in YYTABLE. */
+ #define YYLAST 88
+
+-/* YYNTOKENS -- Number of terminals. */
++/* YYNTOKENS -- Number of terminals. */
+ #define YYNTOKENS 26
+-/* YYNNTS -- Number of nonterminals. */
++/* YYNNTS -- Number of nonterminals. */
+ #define YYNNTS 19
+-/* YYNRULES -- Number of rules. */
++/* YYNRULES -- Number of rules. */
+ #define YYNRULES 78
+-/* YYNRULES -- Number of states. */
++/* YYNRULES -- Number of states. */
+ #define YYNSTATES 96
+
+ /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */
+ #define YYUNDEFTOK 2
+ #define YYMAXUTOK 276
+
+-#define YYTRANSLATE(YYX) \
++#define YYTRANSLATE(YYX) \
+ ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
+
+ /* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */
+-static const unsigned char yytranslate[] =
++static const yytype_uint8 yytranslate[] =
+ {
+ 0, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+@@ -490,7 +671,7 @@
+ #if YYDEBUG
+ /* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
+ YYRHS. */
+-static const unsigned char yyprhs[] =
++static const yytype_uint8 yyprhs[] =
+ {
+ 0, 0, 3, 5, 7, 10, 11, 14, 16, 18,
+ 20, 22, 24, 26, 28, 31, 36, 42, 49, 57,
+@@ -502,8 +683,8 @@
+ 207, 209, 211, 213, 215, 217, 218, 221, 222
+ };
+
+-/* YYRHS -- A `-1'-separated list of the rules' RHS. */
+-static const yysigned_char yyrhs[] =
++/* YYRHS -- A `-1'-separated list of the rules' RHS. */
++static const yytype_int8 yyrhs[] =
+ {
+ 27, 0, -1, 28, -1, 29, -1, 22, 39, -1,
+ -1, 29, 30, -1, 31, -1, 32, -1, 33, -1,
+@@ -531,22 +712,22 @@
+ };
+
+ /* YYRLINE[YYN] -- source line where rule number YYN was defined. */
+-static const unsigned short yyrline[] =
++static const yytype_uint16 yyrline[] =
+ {
+- 0, 230, 230, 231, 235, 242, 244, 248, 250, 252,
+- 254, 256, 258, 260, 264, 272, 280, 290, 297, 309,
+- 314, 322, 324, 326, 328, 330, 335, 340, 345, 350,
+- 358, 363, 383, 390, 398, 406, 411, 417, 422, 431,
+- 441, 445, 447, 449, 451, 453, 455, 457, 459, 461,
+- 463, 465, 467, 469, 471, 473, 475, 477, 479, 481,
+- 483, 485, 489, 491, 493, 495, 497, 499, 503, 503,
+- 506, 507, 512, 513, 518, 556, 557, 563, 564
++ 0, 281, 281, 282, 286, 293, 295, 299, 301, 303,
++ 305, 307, 309, 311, 315, 323, 331, 341, 348, 360,
++ 365, 373, 375, 377, 379, 381, 386, 391, 396, 401,
++ 409, 414, 434, 441, 449, 457, 462, 468, 473, 482,
++ 492, 496, 498, 500, 502, 504, 506, 508, 510, 512,
++ 514, 516, 518, 520, 522, 524, 526, 528, 530, 532,
++ 534, 536, 540, 542, 544, 546, 548, 550, 554, 554,
++ 557, 558, 563, 564, 569, 607, 608, 614, 615
+ };
+ #endif
+
+-#if YYDEBUG || YYERROR_VERBOSE
+-/* YYTNME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
+- First, the terminals, then, starting at YYNTOKENS, nonterminals. */
++#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE
++/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
++ First, the terminals, then, starting at YYNTOKENS, nonterminals. */
+ static const char *const yytname[] =
+ {
+ "$end", "error", "$undefined", "tAGO", "tDST", "tDAY", "tDAY_UNIT",
+@@ -563,7 +744,7 @@
+ # ifdef YYPRINT
+ /* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
+ token YYLEX-NUM. */
+-static const unsigned short yytoknum[] =
++static const yytype_uint16 yytoknum[] =
+ {
+ 0, 256, 257, 258, 259, 260, 261, 262, 263, 264,
+ 265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
+@@ -572,7 +753,7 @@
+ # endif
+
+ /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
+-static const unsigned char yyr1[] =
++static const yytype_uint8 yyr1[] =
+ {
+ 0, 26, 27, 27, 28, 29, 29, 30, 30, 30,
+ 30, 30, 30, 30, 31, 31, 31, 31, 31, 32,
+@@ -585,7 +766,7 @@
+ };
+
+ /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */
+-static const unsigned char yyr2[] =
++static const yytype_uint8 yyr2[] =
+ {
+ 0, 2, 1, 1, 2, 0, 2, 1, 1, 1,
+ 1, 1, 1, 1, 2, 4, 5, 6, 7, 1,
+@@ -600,7 +781,7 @@
+ /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
+ STATE-NUM when YYTABLE doesn't specify something else to do. Zero
+ means the default is an error. */
+-static const unsigned char yydefact[] =
++static const yytype_uint8 yydefact[] =
+ {
+ 5, 0, 0, 2, 3, 71, 73, 70, 72, 4,
+ 68, 69, 1, 26, 49, 24, 52, 19, 55, 0,
+@@ -614,8 +795,8 @@
+ 16, 77, 31, 75, 17, 18
+ };
+
+-/* YYDEFGOTO[NTERM-NUM]. */
+-static const yysigned_char yydefgoto[] =
++/* YYDEFGOTO[NTERM-NUM]. */
++static const yytype_int8 yydefgoto[] =
+ {
+ -1, 2, 3, 4, 29, 30, 31, 32, 33, 34,
+ 35, 36, 37, 9, 10, 11, 38, 77, 88
+@@ -624,7 +805,7 @@
+ /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
+ STATE-NUM. */
+ #define YYPACT_NINF -43
+-static const yysigned_char yypact[] =
++static const yytype_int8 yypact[] =
+ {
+ -18, 48, 9, -43, 19, -43, -43, -43, -43, -43,
+ -43, -43, -43, 32, -43, -43, -43, 54, -43, 28,
+@@ -639,7 +820,7 @@
+ };
+
+ /* YYPGOTO[NTERM-NUM]. */
+-static const yysigned_char yypgoto[] =
++static const yytype_int8 yypgoto[] =
+ {
+ -43, -43, -43, -43, -43, -43, -43, -43, -43, -43,
+ -43, -43, 55, -43, -43, -11, -43, -42, -7
+@@ -650,7 +831,7 @@
+ number is the opposite. If zero, do what YYDEFACT says.
+ If YYTABLE_NINF, syntax error. */
+ #define YYTABLE_NINF -1
+-static const unsigned char yytable[] =
++static const yytype_uint8 yytable[] =
+ {
+ 59, 60, 50, 61, 1, 62, 63, 64, 65, 12,
+ 66, 67, 53, 68, 54, 85, 51, 55, 69, 56,
+@@ -663,7 +844,7 @@
+ 81, 82, 83, 84, 94, 92, 0, 0, 76
+ };
+
+-static const yysigned_char yycheck[] =
++static const yytype_int8 yycheck[] =
+ {
+ 5, 6, 4, 8, 22, 10, 11, 12, 13, 0,
+ 15, 16, 6, 18, 8, 10, 18, 11, 23, 13,
+@@ -678,7 +859,7 @@
+
+ /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
+ symbol of state STATE-NUM. */
+-static const unsigned char yystos[] =
++static const yytype_uint8 yystos[] =
+ {
+ 0, 22, 27, 28, 29, 18, 19, 20, 21, 39,
+ 40, 41, 0, 5, 6, 7, 8, 9, 11, 12,
+@@ -692,22 +873,6 @@
+ 43, 41, 19, 18, 44, 43
+ };
+
+-#if ! defined (YYSIZE_T) && defined (__SIZE_TYPE__)
+-# define YYSIZE_T __SIZE_TYPE__
+-#endif
+-#if ! defined (YYSIZE_T) && defined (size_t)
+-# define YYSIZE_T size_t
+-#endif
+-#if ! defined (YYSIZE_T)
+-# if defined (__STDC__) || defined (__cplusplus)
+-# include <stddef.h> /* INFRINGES ON USER NAME SPACE */
+-# define YYSIZE_T size_t
+-# endif
+-#endif
+-#if ! defined (YYSIZE_T)
+-# define YYSIZE_T unsigned int
+-#endif
+-
+ #define yyerrok (yyerrstatus = 0)
+ #define yyclearin (yychar = YYEMPTY)
+ #define YYEMPTY (-2)
+@@ -733,30 +898,63 @@
+ yychar = (Token); \
+ yylval = (Value); \
+ yytoken = YYTRANSLATE (yychar); \
+- YYPOPSTACK; \
++ YYPOPSTACK (1); \
+ goto yybackup; \
+ } \
+ else \
+- { \
+- yyerror (pc, "syntax error: cannot back up");\
++ { \
++ yyerror (pc, YY_("syntax error: cannot back up")); \
+ YYERROR; \
+ } \
+-while (0)
++while (YYID (0))
++
+
+ #define YYTERROR 1
+ #define YYERRCODE 256
+
+-/* YYLLOC_DEFAULT -- Compute the default location (before the actions
+- are run). */
+
++/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
++ If N is 0, then set CURRENT to the empty location which ends
++ the previous symbol: RHS[0] (always defined). */
++
++#define YYRHSLOC(Rhs, K) ((Rhs)[K])
+ #ifndef YYLLOC_DEFAULT
+-# define YYLLOC_DEFAULT(Current, Rhs, N) \
+- ((Current).first_line = (Rhs)[1].first_line, \
+- (Current).first_column = (Rhs)[1].first_column, \
+- (Current).last_line = (Rhs)[N].last_line, \
+- (Current).last_column = (Rhs)[N].last_column)
++# define YYLLOC_DEFAULT(Current, Rhs, N) \
++ do \
++ if (YYID (N)) \
++ { \
++ (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \
++ (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \
++ (Current).last_line = YYRHSLOC (Rhs, N).last_line; \
++ (Current).last_column = YYRHSLOC (Rhs, N).last_column; \
++ } \
++ else \
++ { \
++ (Current).first_line = (Current).last_line = \
++ YYRHSLOC (Rhs, 0).last_line; \
++ (Current).first_column = (Current).last_column = \
++ YYRHSLOC (Rhs, 0).last_column; \
++ } \
++ while (YYID (0))
++#endif
++
++
++/* YY_LOCATION_PRINT -- Print the location on the stream.
++ This macro was not mandated originally: define only if we know
++ we won't break user code: when these are the locations we know. */
++
++#ifndef YY_LOCATION_PRINT
++# if defined(YYLTYPE_IS_TRIVIAL) && YYLTYPE_IS_TRIVIAL
++# define YY_LOCATION_PRINT(File, Loc) \
++ fprintf (File, "%d.%d-%d.%d", \
++ (Loc).first_line, (Loc).first_column, \
++ (Loc).last_line, (Loc).last_column)
++# else
++# define YY_LOCATION_PRINT(File, Loc) ((void) 0)
++# endif
+ #endif
+
++
+ /* YYLEX -- calling `yylex' with the right arguments. */
+
+ #ifdef YYLEX_PARAM
+@@ -777,42 +975,99 @@
+ do { \
+ if (yydebug) \
+ YYFPRINTF Args; \
+-} while (0)
++} while (YYID (0))
+
+-# define YYDSYMPRINT(Args) \
+-do { \
+- if (yydebug) \
+- yysymprint Args; \
+-} while (0)
++# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \
++do { \
++ if (yydebug) \
++ { \
++ YYFPRINTF (stderr, "%s ", Title); \
++ yy_symbol_print (stderr, \
++ Type, Value, pc); \
++ YYFPRINTF (stderr, "\n"); \
++ } \
++} while (YYID (0))
+
+-# define YYDSYMPRINTF(Title, Token, Value, Location) \
+-do { \
+- if (yydebug) \
+- { \
+- YYFPRINTF (stderr, "%s ", Title); \
+- yysymprint (stderr, \
+- Token, Value); \
+- YYFPRINTF (stderr, "\n"); \
+- } \
+-} while (0)
++
++/*--------------------------------.
++| Print this symbol on YYOUTPUT. |
++`--------------------------------*/
++
++/*ARGSUSED*/
++#if (defined __STDC__ || defined __C99__FUNC__ \
++ || defined __cplusplus || defined _MSC_VER)
++static void
++yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, parser_control *pc)
++#else
++static void
++yy_symbol_value_print (yyoutput, yytype, yyvaluep, pc)
++ FILE *yyoutput;
++ int yytype;
++ YYSTYPE const * const yyvaluep;
++ parser_control *pc;
++#endif
++{
++ if (!yyvaluep)
++ return;
++ YYUSE (pc);
++# ifdef YYPRINT
++ if (yytype < YYNTOKENS)
++ YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
++# else
++ YYUSE (yyoutput);
++# endif
++ switch (yytype)
++ {
++ default:
++ break;
++ }
++}
++
++
++/*--------------------------------.
++| Print this symbol on YYOUTPUT. |
++`--------------------------------*/
++
++#if (defined __STDC__ || defined __C99__FUNC__ \
++ || defined __cplusplus || defined _MSC_VER)
++static void
++yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, parser_control *pc)
++#else
++static void
++yy_symbol_print (yyoutput, yytype, yyvaluep, pc)
++ FILE *yyoutput;
++ int yytype;
++ YYSTYPE const * const yyvaluep;
++ parser_control *pc;
++#endif
++{
++ if (yytype < YYNTOKENS)
++ YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
++ else
++ YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
++
++ yy_symbol_value_print (yyoutput, yytype, yyvaluep, pc);
++ YYFPRINTF (yyoutput, ")");
++}
+
+ /*------------------------------------------------------------------.
+ | yy_stack_print -- Print the state stack from its BOTTOM up to its |
+ | TOP (included). |
+ `------------------------------------------------------------------*/
+
+-#if defined (__STDC__) || defined (__cplusplus)
++#if (defined __STDC__ || defined __C99__FUNC__ \
++ || defined __cplusplus || defined _MSC_VER)
+ static void
+-yy_stack_print (short *bottom, short *top)
++yy_stack_print (yytype_int16 *bottom, yytype_int16 *top)
+ #else
+ static void
+ yy_stack_print (bottom, top)
+- short *bottom;
+- short *top;
++ yytype_int16 *bottom;
++ yytype_int16 *top;
+ #endif
+ {
+ YYFPRINTF (stderr, "Stack now");
+- for (/* Nothing. */; bottom <= top; ++bottom)
++ for (; bottom <= top; ++bottom)
+ YYFPRINTF (stderr, " %d", *bottom);
+ YYFPRINTF (stderr, "\n");
+ }
+@@ -821,45 +1076,53 @@
+ do { \
+ if (yydebug) \
+ yy_stack_print ((Bottom), (Top)); \
+-} while (0)
++} while (YYID (0))
+
+
+ /*------------------------------------------------.
+ | Report that the YYRULE is going to be reduced. |
+ `------------------------------------------------*/
+
+-#if defined (__STDC__) || defined (__cplusplus)
++#if (defined __STDC__ || defined __C99__FUNC__ \
++ || defined __cplusplus || defined _MSC_VER)
+ static void
+-yy_reduce_print (int yyrule)
++yy_reduce_print (YYSTYPE *yyvsp, int yyrule, parser_control *pc)
+ #else
+ static void
+-yy_reduce_print (yyrule)
++yy_reduce_print (yyvsp, yyrule, pc)
++ YYSTYPE *yyvsp;
+ int yyrule;
++ parser_control *pc;
+ #endif
+ {
++ int yynrhs = yyr2[yyrule];
+ int yyi;
+- unsigned int yylno = yyrline[yyrule];
+- YYFPRINTF (stderr, "Reducing stack by rule %d (line %u), ",
+- yyrule - 1, yylno);
+- /* Print the symbols being reduced, and their result. */
+- for (yyi = yyprhs[yyrule]; 0 <= yyrhs[yyi]; yyi++)
+- YYFPRINTF (stderr, "%s ", yytname [yyrhs[yyi]]);
+- YYFPRINTF (stderr, "-> %s\n", yytname [yyr1[yyrule]]);
++ unsigned long int yylno = yyrline[yyrule];
++ YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
++ yyrule - 1, yylno);
++ /* The symbols being reduced. */
++ for (yyi = 0; yyi < yynrhs; yyi++)
++ {
++ fprintf (stderr, " $%d = ", yyi + 1);
++ yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi],
++ &(yyvsp[(yyi + 1) - (yynrhs)])
++ , pc);
++ fprintf (stderr, "\n");
++ }
+ }
+
+ # define YY_REDUCE_PRINT(Rule) \
+ do { \
+ if (yydebug) \
+- yy_reduce_print (Rule); \
+-} while (0)
++ yy_reduce_print (yyvsp, Rule, pc); \
++} while (YYID (0))
+
+ /* Nonzero means print parse trace. It is left uninitialized so that
+ multiple parsers can coexist. */
+ int yydebug;
+ #else /* !YYDEBUG */
+ # define YYDPRINTF(Args)
+-# define YYDSYMPRINT(Args)
+-# define YYDSYMPRINTF(Title, Token, Value, Location)
++# define YY_SYMBOL_PRINT(Title, Type, Value, Location)
+ # define YY_STACK_PRINT(Bottom, Top)
+ # define YY_REDUCE_PRINT(Rule)
+ #endif /* !YYDEBUG */
+@@ -874,13 +1137,9 @@
+ if the built-in stack extension method is used).
+
+ Do not make this value too large; the results are undefined if
+- SIZE_MAX < YYSTACK_BYTES (YYMAXDEPTH)
++ YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
+ evaluated with infinite-precision integer arithmetic. */
+
+-#if defined (YYMAXDEPTH) && YYMAXDEPTH == 0
+-# undef YYMAXDEPTH
+-#endif
+-
+ #ifndef YYMAXDEPTH
+ # define YYMAXDEPTH 10000
+ #endif
+@@ -890,45 +1149,47 @@
+ #if YYERROR_VERBOSE
+
+ # ifndef yystrlen
+-# if defined (__GLIBC__) && defined (_STRING_H)
++# if defined __GLIBC__ && defined _STRING_H
+ # define yystrlen strlen
+ # else
+ /* Return the length of YYSTR. */
++#if (defined __STDC__ || defined __C99__FUNC__ \
++ || defined __cplusplus || defined _MSC_VER)
+ static YYSIZE_T
+-# if defined (__STDC__) || defined (__cplusplus)
+ yystrlen (const char *yystr)
+-# else
++#else
++static YYSIZE_T
+ yystrlen (yystr)
+- const char *yystr;
+-# endif
++ const char *yystr;
++#endif
+ {
+- register const char *yys = yystr;
+-
+- while (*yys++ != '\0')
++ YYSIZE_T yylen;
++ for (yylen = 0; yystr[yylen]; yylen++)
+ continue;
+-
+- return yys - yystr - 1;
++ return yylen;
+ }
+ # endif
+ # endif
+
+ # ifndef yystpcpy
+-# if defined (__GLIBC__) && defined (_STRING_H) && defined (_GNU_SOURCE)
++# if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
+ # define yystpcpy stpcpy
+ # else
+ /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
+ YYDEST. */
++#if (defined __STDC__ || defined __C99__FUNC__ \
++ || defined __cplusplus || defined _MSC_VER)
+ static char *
+-# if defined (__STDC__) || defined (__cplusplus)
+ yystpcpy (char *yydest, const char *yysrc)
+-# else
++#else
++static char *
+ yystpcpy (yydest, yysrc)
+- char *yydest;
+- const char *yysrc;
+-# endif
++ char *yydest;
++ const char *yysrc;
++#endif
+ {
+- register char *yyd = yydest;
+- register const char *yys = yysrc;
++ char *yyd = yydest;
++ const char *yys = yysrc;
+
+ while ((*yyd++ = *yys++) != '\0')
+ continue;
+@@ -938,70 +1199,194 @@
+ # endif
+ # endif
+
+-#endif /* !YYERROR_VERBOSE */
++# ifndef yytnamerr
++/* Copy to YYRES the contents of YYSTR after stripping away unnecessary
++ quotes and backslashes, so that it's suitable for yyerror. The
++ heuristic is that double-quoting is unnecessary unless the string
++ contains an apostrophe, a comma, or backslash (other than
++ backslash-backslash). YYSTR is taken from yytname. If YYRES is
++ null, do not copy; instead, return the length of what the result
++ would have been. */
++static YYSIZE_T
++yytnamerr (char *yyres, const char *yystr)
++{
++ if (*yystr == '"')
++ {
++ YYSIZE_T yyn = 0;
++ char const *yyp = yystr;
++
++ for (;;)
++ switch (*++yyp)
++ {
++ case '\'':
++ case ',':
++ goto do_not_strip_quotes;
++
++ case '\\':
++ if (*++yyp != '\\')
++ goto do_not_strip_quotes;
++ /* Fall through. */
++ default:
++ if (yyres)
++ yyres[yyn] = *yyp;
++ yyn++;
++ break;
+
+-
++ case '"':
++ if (yyres)
++ yyres[yyn] = '\0';
++ return yyn;
++ }
++ do_not_strip_quotes: ;
++ }
+
+-#if YYDEBUG
+-/*--------------------------------.
+-| Print this symbol on YYOUTPUT. |
+-`--------------------------------*/
++ if (! yyres)
++ return yystrlen (yystr);
+
+-#if defined (__STDC__) || defined (__cplusplus)
+-static void
+-yysymprint (FILE *yyoutput, int yytype, YYSTYPE *yyvaluep)
+-#else
+-static void
+-yysymprint (yyoutput, yytype, yyvaluep)
+- FILE *yyoutput;
+- int yytype;
+- YYSTYPE *yyvaluep;
+-#endif
++ return yystpcpy (yyres, yystr) - yyres;
++}
++# endif
++
++/* Copy into YYRESULT an error message about the unexpected token
++ YYCHAR while in state YYSTATE. Return the number of bytes copied,
++ including the terminating null byte. If YYRESULT is null, do not
++ copy anything; just return the number of bytes that would be
++ copied. As a special case, return 0 if an ordinary "syntax error"
++ message will do. Return YYSIZE_MAXIMUM if overflow occurs during
++ size calculation. */
++static YYSIZE_T
++yysyntax_error (char *yyresult, int yystate, int yychar)
+ {
+- /* Pacify ``unused variable'' warnings. */
+- (void) yyvaluep;
++ int yyn = yypact[yystate];
+
+- if (yytype < YYNTOKENS)
++ if (! (YYPACT_NINF < yyn && yyn <= YYLAST))
++ return 0;
++ else
+ {
+- YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
+-# ifdef YYPRINT
+- YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
++ int yytype = YYTRANSLATE (yychar);
++ YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]);
++ YYSIZE_T yysize = yysize0;
++ YYSIZE_T yysize1;
++ int yysize_overflow = 0;
++ enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
++ char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
++ int yyx;
++
++# if 0
++ /* This is so xgettext sees the translatable formats that are
++ constructed on the fly. */
++ YY_("syntax error, unexpected %s");
++ YY_("syntax error, unexpected %s, expecting %s");
++ YY_("syntax error, unexpected %s, expecting %s or %s");
++ YY_("syntax error, unexpected %s, expecting %s or %s or %s");
++ YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s");
+ # endif
+- }
+- else
+- YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
++ char *yyfmt;
++ char const *yyf;
++ static char const yyunexpected[] = "syntax error, unexpected %s";
++ static char const yyexpecting[] = ", expecting %s";
++ static char const yyor[] = " or %s";
++ char yyformat[sizeof yyunexpected
++ + sizeof yyexpecting - 1
++ + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2)
++ * (sizeof yyor - 1))];
++ char const *yyprefix = yyexpecting;
++
++ /* Start YYX at -YYN if negative to avoid negative indexes in
++ YYCHECK. */
++ int yyxbegin = yyn < 0 ? -yyn : 0;
++
++ /* Stay within bounds of both yycheck and yytname. */
++ int yychecklim = YYLAST - yyn + 1;
++ int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
++ int yycount = 1;
+
+- switch (yytype)
+- {
+- default:
+- break;
++ yyarg[0] = yytname[yytype];
++ yyfmt = yystpcpy (yyformat, yyunexpected);
++
++ for (yyx = yyxbegin; yyx < yyxend; ++yyx)
++ if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
++ {
++ if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
++ {
++ yycount = 1;
++ yysize = yysize0;
++ yyformat[sizeof yyunexpected - 1] = '\0';
++ break;
++ }
++ yyarg[yycount++] = yytname[yyx];
++ yysize1 = yysize + yytnamerr (0, yytname[yyx]);
++ yysize_overflow |= (yysize1 < yysize);
++ yysize = yysize1;
++ yyfmt = yystpcpy (yyfmt, yyprefix);
++ yyprefix = yyor;
++ }
++
++ yyf = YY_(yyformat);
++ yysize1 = yysize + yystrlen (yyf);
++ yysize_overflow |= (yysize1 < yysize);
++ yysize = yysize1;
++
++ if (yysize_overflow)
++ return YYSIZE_MAXIMUM;
++
++ if (yyresult)
++ {
++ /* Avoid sprintf, as that infringes on the user's name space.
++ Don't have undefined behavior even if the translation
++ produced a string with the wrong number of "%s"s. */
++ char *yyp = yyresult;
++ int yyi = 0;
++ while ((*yyp = *yyf) != '\0')
++ {
++ if (*yyp == '%' && yyf[1] == 's' && yyi < yycount)
++ {
++ yyp += yytnamerr (yyp, yyarg[yyi++]);
++ yyf += 2;
++ }
++ else
++ {
++ yyp++;
++ yyf++;
++ }
++ }
++ }
++ return yysize;
+ }
+- YYFPRINTF (yyoutput, ")");
+ }
++#endif /* YYERROR_VERBOSE */
++
+
+-#endif /* ! YYDEBUG */
+ /*-----------------------------------------------.
+ | Release the memory associated to this symbol. |
+ `-----------------------------------------------*/
+
+-#if defined (__STDC__) || defined (__cplusplus)
++/*ARGSUSED*/
++#if (defined __STDC__ || defined __C99__FUNC__ \
++ || defined __cplusplus || defined _MSC_VER)
+ static void
+-yydestruct (int yytype, YYSTYPE *yyvaluep)
++yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, parser_control *pc)
+ #else
+ static void
+-yydestruct (yytype, yyvaluep)
++yydestruct (yymsg, yytype, yyvaluep, pc)
++ const char *yymsg;
+ int yytype;
+ YYSTYPE *yyvaluep;
++ parser_control *pc;
+ #endif
+ {
+- /* Pacify ``unused variable'' warnings. */
+- (void) yyvaluep;
++ YYUSE (yyvaluep);
++ YYUSE (pc);
++
++ if (!yymsg)
++ yymsg = "Deleting";
++ YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
+
+ switch (yytype)
+ {
+
+ default:
+- break;
++ break;
+ }
+ }
+
+@@ -1009,14 +1394,14 @@
+ /* Prevent warnings from -Wmissing-prototypes. */
+
+ #ifdef YYPARSE_PARAM
+-# if defined (__STDC__) || defined (__cplusplus)
++#if defined __STDC__ || defined __cplusplus
+ int yyparse (void *YYPARSE_PARAM);
+-# else
++#else
+ int yyparse ();
+-# endif
++#endif
+ #else /* ! YYPARSE_PARAM */
+-#if defined (__STDC__) || defined (__cplusplus)
+-int yyparse ( parser_control *pc );
++#if defined __STDC__ || defined __cplusplus
++int yyparse (parser_control *pc);
+ #else
+ int yyparse ();
+ #endif
+@@ -1032,39 +1417,49 @@
+ `----------*/
+
+ #ifdef YYPARSE_PARAM
+-# if defined (__STDC__) || defined (__cplusplus)
+-int yyparse (void *YYPARSE_PARAM)
+-# else
+-int yyparse (YYPARSE_PARAM)
+- void *YYPARSE_PARAM;
+-# endif
++#if (defined __STDC__ || defined __C99__FUNC__ \
++ || defined __cplusplus || defined _MSC_VER)
++int
++yyparse (void *YYPARSE_PARAM)
++#else
++int
++yyparse (YYPARSE_PARAM)
++ void *YYPARSE_PARAM;
++#endif
+ #else /* ! YYPARSE_PARAM */
+-#if defined (__STDC__) || defined (__cplusplus)
++#if (defined __STDC__ || defined __C99__FUNC__ \
++ || defined __cplusplus || defined _MSC_VER)
+ int
+-yyparse ( parser_control *pc )
++yyparse (parser_control *pc)
+ #else
+ int
+ yyparse (pc)
+- parser_control *pc ;
++ parser_control *pc;
+ #endif
+ #endif
+ {
+- /* The lookahead symbol. */
++ /* The look-ahead symbol. */
+ int yychar;
+
+-/* The semantic value of the lookahead symbol. */
++/* The semantic value of the look-ahead symbol. */
+ YYSTYPE yylval;
+
+ /* Number of syntax errors so far. */
+ int yynerrs;
+
+- register int yystate;
+- register int yyn;
++ int yystate;
++ int yyn;
+ int yyresult;
+ /* Number of tokens to shift before error messages enabled. */
+ int yyerrstatus;
+- /* Lookahead token as an internal (translated) token number. */
++ /* Look-ahead token as an internal (translated) token number. */
+ int yytoken = 0;
++#if YYERROR_VERBOSE
++ /* Buffer for error messages, and its allocated size. */
++ char yymsgbuf[128];
++ char *yymsg = yymsgbuf;
++ YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
++#endif
+
+ /* Three stacks and their tools:
+ `yyss': related to states,
+@@ -1075,18 +1470,18 @@
+ to reallocate them elsewhere. */
+
+ /* The state stack. */
+- short yyssa[YYINITDEPTH];
+- short *yyss = yyssa;
+- register short *yyssp;
++ yytype_int16 yyssa[YYINITDEPTH];
++ yytype_int16 *yyss = yyssa;
++ yytype_int16 *yyssp;
+
+ /* The semantic value stack. */
+ YYSTYPE yyvsa[YYINITDEPTH];
+ YYSTYPE *yyvs = yyvsa;
+- register YYSTYPE *yyvsp;
++ YYSTYPE *yyvsp;
+
+
+
+-#define YYPOPSTACK (yyvsp--, yyssp--)
++#define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N))
+
+ YYSIZE_T yystacksize = YYINITDEPTH;
+
+@@ -1095,9 +1490,9 @@
+ YYSTYPE yyval;
+
+
+- /* When reducing, the number of symbols on the RHS of the reduced
+- rule. */
+- int yylen;
++ /* The number of symbols on the RHS of the reduced rule.
++ Keep to zero when no symbol should be popped. */
++ int yylen = 0;
+
+ YYDPRINTF ((stderr, "Starting parse\n"));
+
+@@ -1121,8 +1516,7 @@
+ `------------------------------------------------------------*/
+ yynewstate:
+ /* In all cases, when you get here, the value and location stacks
+- have just been pushed. so pushing a state here evens the stacks.
+- */
++ have just been pushed. So pushing a state here evens the stacks. */
+ yyssp++;
+
+ yysetstate:
+@@ -1135,18 +1529,18 @@
+
+ #ifdef yyoverflow
+ {
+- /* Give user a chance to reallocate the stack. Use copies of
++ /* Give user a chance to reallocate the stack. Use copies of
+ these so that the &'s don't force the real ones into
+ memory. */
+ YYSTYPE *yyvs1 = yyvs;
+- short *yyss1 = yyss;
++ yytype_int16 *yyss1 = yyss;
+
+
+ /* Each stack pointer address is followed by the size of the
+ data in use in that stack, in bytes. This used to be a
+ conditional around just the two extra args, but that might
+ be undefined if yyoverflow is a macro. */
+- yyoverflow ("parser stack overflow",
++ yyoverflow (YY_("memory exhausted"),
+ &yyss1, yysize * sizeof (*yyssp),
+ &yyvs1, yysize * sizeof (*yyvsp),
+
+@@ -1157,21 +1551,21 @@
+ }
+ #else /* no yyoverflow */
+ # ifndef YYSTACK_RELOCATE
+- goto yyoverflowlab;
++ goto yyexhaustedlab;
+ # else
+ /* Extend the stack our own way. */
+ if (YYMAXDEPTH <= yystacksize)
+- goto yyoverflowlab;
++ goto yyexhaustedlab;
+ yystacksize *= 2;
+ if (YYMAXDEPTH < yystacksize)
+ yystacksize = YYMAXDEPTH;
+
+ {
+- short *yyss1 = yyss;
++ yytype_int16 *yyss1 = yyss;
+ union yyalloc *yyptr =
+ (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
+ if (! yyptr)
+- goto yyoverflowlab;
++ goto yyexhaustedlab;
+ YYSTACK_RELOCATE (yyss);
+ YYSTACK_RELOCATE (yyvs);
+
+@@ -1202,19 +1596,17 @@
+ `-----------*/
+ yybackup:
+
+-/* Do appropriate processing given the current state. */
+-/* Read a lookahead token if we need one and don't already have one. */
+-/* yyresume: */
+-
+- /* First try to decide what to do without reference to lookahead token. */
++ /* Do appropriate processing given the current state. Read a
++ look-ahead token if we need one and don't already have one. */
+
++ /* First try to decide what to do without reference to look-ahead token. */
+ yyn = yypact[yystate];
+ if (yyn == YYPACT_NINF)
+ goto yydefault;
+
+- /* Not known => get a lookahead token if don't already have one. */
++ /* Not known => get a look-ahead token if don't already have one. */
+
+- /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol. */
++ /* YYCHAR is either YYEMPTY or YYEOF or a valid look-ahead symbol. */
+ if (yychar == YYEMPTY)
+ {
+ YYDPRINTF ((stderr, "Reading a token: "));
+@@ -1229,7 +1621,7 @@
+ else
+ {
+ yytoken = YYTRANSLATE (yychar);
+- YYDSYMPRINTF ("Next token is", yytoken, &yylval, &yylloc);
++ YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
+ }
+
+ /* If the proper action on seeing token YYTOKEN is to reduce or to
+@@ -1249,22 +1641,21 @@
+ if (yyn == YYFINAL)
+ YYACCEPT;
+
+- /* Shift the lookahead token. */
+- YYDPRINTF ((stderr, "Shifting token %s, ", yytname[yytoken]));
+-
+- /* Discard the token being shifted unless it is eof. */
+- if (yychar != YYEOF)
+- yychar = YYEMPTY;
+-
+- *++yyvsp = yylval;
+-
+-
+ /* Count tokens shifted since error; after three, turn off error
+ status. */
+ if (yyerrstatus)
+ yyerrstatus--;
+
++ /* Shift the look-ahead token. */
++ YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
++
++ /* Discard the shifted token unless it is eof. */
++ if (yychar != YYEOF)
++ yychar = YYEMPTY;
++
+ yystate = yyn;
++ *++yyvsp = yylval;
++
+ goto yynewstate;
+
+
+@@ -1300,272 +1691,272 @@
+ switch (yyn)
+ {
+ case 4:
+-#line 236 "getdate.y"
++#line 287 "getdate.y"
+ {
+- pc->seconds = yyvsp[0].timespec;
++ pc->seconds = (yyvsp[(2) - (2)].timespec);
+ pc->timespec_seen = true;
+- }
++ ;}
+ break;
+
+ case 7:
+-#line 249 "getdate.y"
+- { pc->times_seen++; }
++#line 300 "getdate.y"
++ { pc->times_seen++; ;}
+ break;
+
+ case 8:
+-#line 251 "getdate.y"
+- { pc->local_zones_seen++; }
++#line 302 "getdate.y"
++ { pc->local_zones_seen++; ;}
+ break;
+
+ case 9:
+-#line 253 "getdate.y"
+- { pc->zones_seen++; }
++#line 304 "getdate.y"
++ { pc->zones_seen++; ;}
+ break;
+
+ case 10:
+-#line 255 "getdate.y"
+- { pc->dates_seen++; }
++#line 306 "getdate.y"
++ { pc->dates_seen++; ;}
+ break;
+
+ case 11:
+-#line 257 "getdate.y"
+- { pc->days_seen++; }
++#line 308 "getdate.y"
++ { pc->days_seen++; ;}
+ break;
+
+ case 12:
+-#line 259 "getdate.y"
+- { pc->rels_seen = true; }
++#line 310 "getdate.y"
++ { pc->rels_seen = true; ;}
+ break;
+
+ case 14:
+-#line 265 "getdate.y"
++#line 316 "getdate.y"
+ {
+- pc->hour = yyvsp[-1].textintval.value;
++ pc->hour = (yyvsp[(1) - (2)].textintval).value;
+ pc->minutes = 0;
+ pc->seconds.tv_sec = 0;
+ pc->seconds.tv_nsec = 0;
+- pc->meridian = yyvsp[0].intval;
+- }
++ pc->meridian = (yyvsp[(2) - (2)].intval);
++ ;}
+ break;
+
+ case 15:
+-#line 273 "getdate.y"
++#line 324 "getdate.y"
+ {
+- pc->hour = yyvsp[-3].textintval.value;
+- pc->minutes = yyvsp[-1].textintval.value;
++ pc->hour = (yyvsp[(1) - (4)].textintval).value;
++ pc->minutes = (yyvsp[(3) - (4)].textintval).value;
+ pc->seconds.tv_sec = 0;
+ pc->seconds.tv_nsec = 0;
+- pc->meridian = yyvsp[0].intval;
+- }
++ pc->meridian = (yyvsp[(4) - (4)].intval);
++ ;}
+ break;
+
+ case 16:
+-#line 281 "getdate.y"
++#line 332 "getdate.y"
+ {
+- pc->hour = yyvsp[-4].textintval.value;
+- pc->minutes = yyvsp[-2].textintval.value;
++ pc->hour = (yyvsp[(1) - (5)].textintval).value;
++ pc->minutes = (yyvsp[(3) - (5)].textintval).value;
+ pc->seconds.tv_sec = 0;
+ pc->seconds.tv_nsec = 0;
+ pc->meridian = MER24;
+ pc->zones_seen++;
+- pc->time_zone = time_zone_hhmm (yyvsp[-1].textintval, yyvsp[0].intval);
+- }
++ pc->time_zone = time_zone_hhmm ((yyvsp[(4) - (5)].textintval), (yyvsp[(5) - (5)].intval));
++ ;}
+ break;
+
+ case 17:
+-#line 291 "getdate.y"
++#line 342 "getdate.y"
+ {
+- pc->hour = yyvsp[-5].textintval.value;
+- pc->minutes = yyvsp[-3].textintval.value;
+- pc->seconds = yyvsp[-1].timespec;
+- pc->meridian = yyvsp[0].intval;
+- }
++ pc->hour = (yyvsp[(1) - (6)].textintval).value;
++ pc->minutes = (yyvsp[(3) - (6)].textintval).value;
++ pc->seconds = (yyvsp[(5) - (6)].timespec);
++ pc->meridian = (yyvsp[(6) - (6)].intval);
++ ;}
+ break;
+
+ case 18:
+-#line 298 "getdate.y"
++#line 349 "getdate.y"
+ {
+- pc->hour = yyvsp[-6].textintval.value;
+- pc->minutes = yyvsp[-4].textintval.value;
+- pc->seconds = yyvsp[-2].timespec;
++ pc->hour = (yyvsp[(1) - (7)].textintval).value;
++ pc->minutes = (yyvsp[(3) - (7)].textintval).value;
++ pc->seconds = (yyvsp[(5) - (7)].timespec);
+ pc->meridian = MER24;
+ pc->zones_seen++;
+- pc->time_zone = time_zone_hhmm (yyvsp[-1].textintval, yyvsp[0].intval);
+- }
++ pc->time_zone = time_zone_hhmm ((yyvsp[(6) - (7)].textintval), (yyvsp[(7) - (7)].intval));
++ ;}
+ break;
+
+ case 19:
+-#line 310 "getdate.y"
++#line 361 "getdate.y"
+ {
+- pc->local_isdst = yyvsp[0].intval;
+- pc->dsts_seen += (0 < yyvsp[0].intval);
+- }
++ pc->local_isdst = (yyvsp[(1) - (1)].intval);
++ pc->dsts_seen += (0 < (yyvsp[(1) - (1)].intval));
++ ;}
+ break;
+
+ case 20:
+-#line 315 "getdate.y"
++#line 366 "getdate.y"
+ {
+ pc->local_isdst = 1;
+- pc->dsts_seen += (0 < yyvsp[-1].intval) + 1;
+- }
++ pc->dsts_seen += (0 < (yyvsp[(1) - (2)].intval)) + 1;
++ ;}
+ break;
+
+ case 21:
+-#line 323 "getdate.y"
+- { pc->time_zone = yyvsp[0].intval; }
++#line 374 "getdate.y"
++ { pc->time_zone = (yyvsp[(1) - (1)].intval); ;}
+ break;
+
+ case 22:
+-#line 325 "getdate.y"
+- { pc->time_zone = yyvsp[-1].intval; pc->rels_seen = true; }
++#line 376 "getdate.y"
++ { pc->time_zone = (yyvsp[(1) - (2)].intval); pc->rels_seen = true; ;}
+ break;
+
+ case 23:
+-#line 327 "getdate.y"
+- { pc->time_zone = yyvsp[-2].intval + time_zone_hhmm (yyvsp[-1].textintval, yyvsp[0].intval); }
++#line 378 "getdate.y"
++ { pc->time_zone = (yyvsp[(1) - (3)].intval) + time_zone_hhmm ((yyvsp[(2) - (3)].textintval), (yyvsp[(3) - (3)].intval)); ;}
+ break;
+
+ case 24:
+-#line 329 "getdate.y"
+- { pc->time_zone = yyvsp[0].intval + 60; }
++#line 380 "getdate.y"
++ { pc->time_zone = (yyvsp[(1) - (1)].intval) + 60; ;}
+ break;
+
+ case 25:
+-#line 331 "getdate.y"
+- { pc->time_zone = yyvsp[-1].intval + 60; }
++#line 382 "getdate.y"
++ { pc->time_zone = (yyvsp[(1) - (2)].intval) + 60; ;}
+ break;
+
+ case 26:
+-#line 336 "getdate.y"
++#line 387 "getdate.y"
+ {
+ pc->day_ordinal = 1;
+- pc->day_number = yyvsp[0].intval;
+- }
++ pc->day_number = (yyvsp[(1) - (1)].intval);
++ ;}
+ break;
+
+ case 27:
+-#line 341 "getdate.y"
++#line 392 "getdate.y"
+ {
+ pc->day_ordinal = 1;
+- pc->day_number = yyvsp[-1].intval;
+- }
++ pc->day_number = (yyvsp[(1) - (2)].intval);
++ ;}
+ break;
+
+ case 28:
+-#line 346 "getdate.y"
++#line 397 "getdate.y"
+ {
+- pc->day_ordinal = yyvsp[-1].intval;
+- pc->day_number = yyvsp[0].intval;
+- }
++ pc->day_ordinal = (yyvsp[(1) - (2)].intval);
++ pc->day_number = (yyvsp[(2) - (2)].intval);
++ ;}
+ break;
+
+ case 29:
+-#line 351 "getdate.y"
++#line 402 "getdate.y"
+ {
+- pc->day_ordinal = yyvsp[-1].textintval.value;
+- pc->day_number = yyvsp[0].intval;
+- }
++ pc->day_ordinal = (yyvsp[(1) - (2)].textintval).value;
++ pc->day_number = (yyvsp[(2) - (2)].intval);
++ ;}
+ break;
+
+ case 30:
+-#line 359 "getdate.y"
++#line 410 "getdate.y"
+ {
+- pc->month = yyvsp[-2].textintval.value;
+- pc->day = yyvsp[0].textintval.value;
+- }
++ pc->month = (yyvsp[(1) - (3)].textintval).value;
++ pc->day = (yyvsp[(3) - (3)].textintval).value;
++ ;}
+ break;
+
+ case 31:
+-#line 364 "getdate.y"
++#line 415 "getdate.y"
+ {
+ /* Interpret as YYYY/MM/DD if the first value has 4 or more digits,
+ otherwise as MM/DD/YY.
+ The goal in recognizing YYYY/MM/DD is solely to support legacy
+ machine-generated dates like those in an RCS log listing. If
+ you want portability, use the ISO 8601 format. */
+- if (4 <= yyvsp[-4].textintval.digits)
++ if (4 <= (yyvsp[(1) - (5)].textintval).digits)
+ {
+- pc->year = yyvsp[-4].textintval;
+- pc->month = yyvsp[-2].textintval.value;
+- pc->day = yyvsp[0].textintval.value;
++ pc->year = (yyvsp[(1) - (5)].textintval);
++ pc->month = (yyvsp[(3) - (5)].textintval).value;
++ pc->day = (yyvsp[(5) - (5)].textintval).value;
+ }
+ else
+ {
+- pc->month = yyvsp[-4].textintval.value;
+- pc->day = yyvsp[-2].textintval.value;
+- pc->year = yyvsp[0].textintval;
++ pc->month = (yyvsp[(1) - (5)].textintval).value;
++ pc->day = (yyvsp[(3) - (5)].textintval).value;
++ pc->year = (yyvsp[(5) - (5)].textintval);
+ }
+- }
++ ;}
+ break;
+
+ case 32:
+-#line 384 "getdate.y"
++#line 435 "getdate.y"
+ {
+ /* ISO 8601 format. YYYY-MM-DD. */
+- pc->year = yyvsp[-2].textintval;
+- pc->month = -yyvsp[-1].textintval.value;
+- pc->day = -yyvsp[0].textintval.value;
+- }
++ pc->year = (yyvsp[(1) - (3)].textintval);
++ pc->month = -(yyvsp[(2) - (3)].textintval).value;
++ pc->day = -(yyvsp[(3) - (3)].textintval).value;
++ ;}
+ break;
+
+ case 33:
+-#line 391 "getdate.y"
++#line 442 "getdate.y"
+ {
+ /* e.g. 17-JUN-1992. */
+- pc->day = yyvsp[-2].textintval.value;
+- pc->month = yyvsp[-1].intval;
+- pc->year.value = -yyvsp[0].textintval.value;
+- pc->year.digits = yyvsp[0].textintval.digits;
+- }
++ pc->day = (yyvsp[(1) - (3)].textintval).value;
++ pc->month = (yyvsp[(2) - (3)].intval);
++ pc->year.value = -(yyvsp[(3) - (3)].textintval).value;
++ pc->year.digits = (yyvsp[(3) - (3)].textintval).digits;
++ ;}
+ break;
+
+ case 34:
+-#line 399 "getdate.y"
++#line 450 "getdate.y"
+ {
+ /* e.g. JUN-17-1992. */
+- pc->month = yyvsp[-2].intval;
+- pc->day = -yyvsp[-1].textintval.value;
+- pc->year.value = -yyvsp[0].textintval.value;
+- pc->year.digits = yyvsp[0].textintval.digits;
+- }
++ pc->month = (yyvsp[(1) - (3)].intval);
++ pc->day = -(yyvsp[(2) - (3)].textintval).value;
++ pc->year.value = -(yyvsp[(3) - (3)].textintval).value;
++ pc->year.digits = (yyvsp[(3) - (3)].textintval).digits;
++ ;}
+ break;
+
+ case 35:
+-#line 407 "getdate.y"
++#line 458 "getdate.y"
+ {
+- pc->month = yyvsp[-1].intval;
+- pc->day = yyvsp[0].textintval.value;
+- }
++ pc->month = (yyvsp[(1) - (2)].intval);
++ pc->day = (yyvsp[(2) - (2)].textintval).value;
++ ;}
+ break;
+
+ case 36:
+-#line 412 "getdate.y"
++#line 463 "getdate.y"
+ {
+- pc->month = yyvsp[-3].intval;
+- pc->day = yyvsp[-2].textintval.value;
+- pc->year = yyvsp[0].textintval;
+- }
++ pc->month = (yyvsp[(1) - (4)].intval);
++ pc->day = (yyvsp[(2) - (4)].textintval).value;
++ pc->year = (yyvsp[(4) - (4)].textintval);
++ ;}
+ break;
+
+ case 37:
+-#line 418 "getdate.y"
++#line 469 "getdate.y"
+ {
+- pc->day = yyvsp[-1].textintval.value;
+- pc->month = yyvsp[0].intval;
+- }
++ pc->day = (yyvsp[(1) - (2)].textintval).value;
++ pc->month = (yyvsp[(2) - (2)].intval);
++ ;}
+ break;
+
+ case 38:
+-#line 423 "getdate.y"
++#line 474 "getdate.y"
+ {
+- pc->day = yyvsp[-2].textintval.value;
+- pc->month = yyvsp[-1].intval;
+- pc->year = yyvsp[0].textintval;
+- }
++ pc->day = (yyvsp[(1) - (3)].textintval).value;
++ pc->month = (yyvsp[(2) - (3)].intval);
++ pc->year = (yyvsp[(3) - (3)].textintval);
++ ;}
+ break;
+
+ case 39:
+-#line 432 "getdate.y"
++#line 483 "getdate.y"
+ {
+ pc->rel_ns = -pc->rel_ns;
+ pc->rel_seconds = -pc->rel_seconds;
+@@ -1574,216 +1965,215 @@
+ pc->rel_day = -pc->rel_day;
+ pc->rel_month = -pc->rel_month;
+ pc->rel_year = -pc->rel_year;
+- }
++ ;}
+ break;
+
+ case 41:
+-#line 446 "getdate.y"
+- { pc->rel_year += yyvsp[-1].intval * yyvsp[0].intval; }
++#line 497 "getdate.y"
++ { pc->rel_year += (yyvsp[(1) - (2)].intval) * (yyvsp[(2) - (2)].intval); ;}
+ break;
+
+ case 42:
+-#line 448 "getdate.y"
+- { pc->rel_year += yyvsp[-1].textintval.value * yyvsp[0].intval; }
++#line 499 "getdate.y"
++ { pc->rel_year += (yyvsp[(1) - (2)].textintval).value * (yyvsp[(2) - (2)].intval); ;}
+ break;
+
+ case 43:
+-#line 450 "getdate.y"
+- { pc->rel_year += yyvsp[0].intval; }
++#line 501 "getdate.y"
++ { pc->rel_year += (yyvsp[(1) - (1)].intval); ;}
+ break;
+
+ case 44:
+-#line 452 "getdate.y"
+- { pc->rel_month += yyvsp[-1].intval * yyvsp[0].intval; }
++#line 503 "getdate.y"
++ { pc->rel_month += (yyvsp[(1) - (2)].intval) * (yyvsp[(2) - (2)].intval); ;}
+ break;
+
+ case 45:
+-#line 454 "getdate.y"
+- { pc->rel_month += yyvsp[-1].textintval.value * yyvsp[0].intval; }
++#line 505 "getdate.y"
++ { pc->rel_month += (yyvsp[(1) - (2)].textintval).value * (yyvsp[(2) - (2)].intval); ;}
+ break;
+
+ case 46:
+-#line 456 "getdate.y"
+- { pc->rel_month += yyvsp[0].intval; }
++#line 507 "getdate.y"
++ { pc->rel_month += (yyvsp[(1) - (1)].intval); ;}
+ break;
+
+ case 47:
+-#line 458 "getdate.y"
+- { pc->rel_day += yyvsp[-1].intval * yyvsp[0].intval; }
++#line 509 "getdate.y"
++ { pc->rel_day += (yyvsp[(1) - (2)].intval) * (yyvsp[(2) - (2)].intval); ;}
+ break;
+
+ case 48:
+-#line 460 "getdate.y"
+- { pc->rel_day += yyvsp[-1].textintval.value * yyvsp[0].intval; }
++#line 511 "getdate.y"
++ { pc->rel_day += (yyvsp[(1) - (2)].textintval).value * (yyvsp[(2) - (2)].intval); ;}
+ break;
+
+ case 49:
+-#line 462 "getdate.y"
+- { pc->rel_day += yyvsp[0].intval; }
++#line 513 "getdate.y"
++ { pc->rel_day += (yyvsp[(1) - (1)].intval); ;}
+ break;
+
+ case 50:
+-#line 464 "getdate.y"
+- { pc->rel_hour += yyvsp[-1].intval * yyvsp[0].intval; }
++#line 515 "getdate.y"
++ { pc->rel_hour += (yyvsp[(1) - (2)].intval) * (yyvsp[(2) - (2)].intval); ;}
+ break;
+
+ case 51:
+-#line 466 "getdate.y"
+- { pc->rel_hour += yyvsp[-1].textintval.value * yyvsp[0].intval; }
++#line 517 "getdate.y"
++ { pc->rel_hour += (yyvsp[(1) - (2)].textintval).value * (yyvsp[(2) - (2)].intval); ;}
+ break;
+
+ case 52:
+-#line 468 "getdate.y"
+- { pc->rel_hour += yyvsp[0].intval; }
++#line 519 "getdate.y"
++ { pc->rel_hour += (yyvsp[(1) - (1)].intval); ;}
+ break;
+
+ case 53:
+-#line 470 "getdate.y"
+- { pc->rel_minutes += yyvsp[-1].intval * yyvsp[0].intval; }
++#line 521 "getdate.y"
++ { pc->rel_minutes += (yyvsp[(1) - (2)].intval) * (yyvsp[(2) - (2)].intval); ;}
+ break;
+
+ case 54:
+-#line 472 "getdate.y"
+- { pc->rel_minutes += yyvsp[-1].textintval.value * yyvsp[0].intval; }
++#line 523 "getdate.y"
++ { pc->rel_minutes += (yyvsp[(1) - (2)].textintval).value * (yyvsp[(2) - (2)].intval); ;}
+ break;
+
+ case 55:
+-#line 474 "getdate.y"
+- { pc->rel_minutes += yyvsp[0].intval; }
++#line 525 "getdate.y"
++ { pc->rel_minutes += (yyvsp[(1) - (1)].intval); ;}
+ break;
+
+ case 56:
+-#line 476 "getdate.y"
+- { pc->rel_seconds += yyvsp[-1].intval * yyvsp[0].intval; }
++#line 527 "getdate.y"
++ { pc->rel_seconds += (yyvsp[(1) - (2)].intval) * (yyvsp[(2) - (2)].intval); ;}
+ break;
+
+ case 57:
+-#line 478 "getdate.y"
+- { pc->rel_seconds += yyvsp[-1].textintval.value * yyvsp[0].intval; }
++#line 529 "getdate.y"
++ { pc->rel_seconds += (yyvsp[(1) - (2)].textintval).value * (yyvsp[(2) - (2)].intval); ;}
+ break;
+
+ case 58:
+-#line 480 "getdate.y"
+- { pc->rel_seconds += yyvsp[-1].timespec.tv_sec * yyvsp[0].intval; pc->rel_ns += yyvsp[-1].timespec.tv_nsec * yyvsp[0].intval; }
++#line 531 "getdate.y"
++ { pc->rel_seconds += (yyvsp[(1) - (2)].timespec).tv_sec * (yyvsp[(2) - (2)].intval); pc->rel_ns += (yyvsp[(1) - (2)].timespec).tv_nsec * (yyvsp[(2) - (2)].intval); ;}
+ break;
+
+ case 59:
+-#line 482 "getdate.y"
+- { pc->rel_seconds += yyvsp[-1].timespec.tv_sec * yyvsp[0].intval; pc->rel_ns += yyvsp[-1].timespec.tv_nsec * yyvsp[0].intval; }
++#line 533 "getdate.y"
++ { pc->rel_seconds += (yyvsp[(1) - (2)].timespec).tv_sec * (yyvsp[(2) - (2)].intval); pc->rel_ns += (yyvsp[(1) - (2)].timespec).tv_nsec * (yyvsp[(2) - (2)].intval); ;}
+ break;
+
+ case 60:
+-#line 484 "getdate.y"
+- { pc->rel_seconds += yyvsp[0].intval; }
++#line 535 "getdate.y"
++ { pc->rel_seconds += (yyvsp[(1) - (1)].intval); ;}
+ break;
+
+ case 62:
+-#line 490 "getdate.y"
+- { pc->rel_year += yyvsp[-1].textintval.value * yyvsp[0].intval; }
++#line 541 "getdate.y"
++ { pc->rel_year += (yyvsp[(1) - (2)].textintval).value * (yyvsp[(2) - (2)].intval); ;}
+ break;
+
+ case 63:
+-#line 492 "getdate.y"
+- { pc->rel_month += yyvsp[-1].textintval.value * yyvsp[0].intval; }
++#line 543 "getdate.y"
++ { pc->rel_month += (yyvsp[(1) - (2)].textintval).value * (yyvsp[(2) - (2)].intval); ;}
+ break;
+
+ case 64:
+-#line 494 "getdate.y"
+- { pc->rel_day += yyvsp[-1].textintval.value * yyvsp[0].intval; }
++#line 545 "getdate.y"
++ { pc->rel_day += (yyvsp[(1) - (2)].textintval).value * (yyvsp[(2) - (2)].intval); ;}
+ break;
+
+ case 65:
+-#line 496 "getdate.y"
+- { pc->rel_hour += yyvsp[-1].textintval.value * yyvsp[0].intval; }
++#line 547 "getdate.y"
++ { pc->rel_hour += (yyvsp[(1) - (2)].textintval).value * (yyvsp[(2) - (2)].intval); ;}
+ break;
+
+ case 66:
+-#line 498 "getdate.y"
+- { pc->rel_minutes += yyvsp[-1].textintval.value * yyvsp[0].intval; }
++#line 549 "getdate.y"
++ { pc->rel_minutes += (yyvsp[(1) - (2)].textintval).value * (yyvsp[(2) - (2)].intval); ;}
+ break;
+
+ case 67:
+-#line 500 "getdate.y"
+- { pc->rel_seconds += yyvsp[-1].textintval.value * yyvsp[0].intval; }
++#line 551 "getdate.y"
++ { pc->rel_seconds += (yyvsp[(1) - (2)].textintval).value * (yyvsp[(2) - (2)].intval); ;}
+ break;
+
+ case 71:
+-#line 508 "getdate.y"
+- { yyval.timespec.tv_sec = yyvsp[0].textintval.value; yyval.timespec.tv_nsec = 0; }
++#line 559 "getdate.y"
++ { (yyval.timespec).tv_sec = (yyvsp[(1) - (1)].textintval).value; (yyval.timespec).tv_nsec = 0; ;}
+ break;
+
+ case 73:
+-#line 514 "getdate.y"
+- { yyval.timespec.tv_sec = yyvsp[0].textintval.value; yyval.timespec.tv_nsec = 0; }
++#line 565 "getdate.y"
++ { (yyval.timespec).tv_sec = (yyvsp[(1) - (1)].textintval).value; (yyval.timespec).tv_nsec = 0; ;}
+ break;
+
+ case 74:
+-#line 519 "getdate.y"
++#line 570 "getdate.y"
+ {
+ if (pc->dates_seen && ! pc->year.digits
+- && ! pc->rels_seen && (pc->times_seen || 2 < yyvsp[0].textintval.digits))
+- pc->year = yyvsp[0].textintval;
++ && ! pc->rels_seen && (pc->times_seen || 2 < (yyvsp[(1) - (1)].textintval).digits))
++ pc->year = (yyvsp[(1) - (1)].textintval);
+ else
+ {
+- if (4 < yyvsp[0].textintval.digits)
++ if (4 < (yyvsp[(1) - (1)].textintval).digits)
+ {
+ pc->dates_seen++;
+- pc->day = yyvsp[0].textintval.value % 100;
+- pc->month = (yyvsp[0].textintval.value / 100) % 100;
+- pc->year.value = yyvsp[0].textintval.value / 10000;
+- pc->year.digits = yyvsp[0].textintval.digits - 4;
++ pc->day = (yyvsp[(1) - (1)].textintval).value % 100;
++ pc->month = ((yyvsp[(1) - (1)].textintval).value / 100) % 100;
++ pc->year.value = (yyvsp[(1) - (1)].textintval).value / 10000;
++ pc->year.digits = (yyvsp[(1) - (1)].textintval).digits - 4;
+ }
+ else
+ {
+ pc->times_seen++;
+- if (yyvsp[0].textintval.digits <= 2)
++ if ((yyvsp[(1) - (1)].textintval).digits <= 2)
+ {
+- pc->hour = yyvsp[0].textintval.value;
++ pc->hour = (yyvsp[(1) - (1)].textintval).value;
+ pc->minutes = 0;
+ }
+ else
+ {
+- pc->hour = yyvsp[0].textintval.value / 100;
+- pc->minutes = yyvsp[0].textintval.value % 100;
++ pc->hour = (yyvsp[(1) - (1)].textintval).value / 100;
++ pc->minutes = (yyvsp[(1) - (1)].textintval).value % 100;
+ }
+ pc->seconds.tv_sec = 0;
+ pc->seconds.tv_nsec = 0;
+ pc->meridian = MER24;
+ }
+ }
+- }
++ ;}
+ break;
+
+ case 75:
+-#line 556 "getdate.y"
+- { yyval.intval = -1; }
++#line 607 "getdate.y"
++ { (yyval.intval) = -1; ;}
+ break;
+
+ case 76:
+-#line 558 "getdate.y"
+- { yyval.intval = yyvsp[0].textintval.value; }
++#line 609 "getdate.y"
++ { (yyval.intval) = (yyvsp[(2) - (2)].textintval).value; ;}
+ break;
+
+ case 77:
+-#line 563 "getdate.y"
+- { yyval.intval = MER24; }
++#line 614 "getdate.y"
++ { (yyval.intval) = MER24; ;}
+ break;
+
+ case 78:
+-#line 565 "getdate.y"
+- { yyval.intval = yyvsp[0].intval; }
++#line 616 "getdate.y"
++ { (yyval.intval) = (yyvsp[(1) - (1)].intval); ;}
+ break;
+
+
++/* Line 1267 of yacc.c. */
++#line 2171 "getdate.c"
++ default: break;
+ }
++ YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
+
+-/* Line 1000 of yacc.c. */
+-#line 1782 "getdate.c"
+-
+- yyvsp -= yylen;
+- yyssp -= yylen;
+-
+-
++ YYPOPSTACK (yylen);
++ yylen = 0;
+ YY_STACK_PRINT (yyss, yyssp);
+
+ *++yyvsp = yyval;
+@@ -1812,99 +2202,65 @@
+ if (!yyerrstatus)
+ {
+ ++yynerrs;
+-#if YYERROR_VERBOSE
+- yyn = yypact[yystate];
+-
+- if (YYPACT_NINF < yyn && yyn < YYLAST)
+- {
+- YYSIZE_T yysize = 0;
+- int yytype = YYTRANSLATE (yychar);
+- const char* yyprefix;
+- char *yymsg;
+- int yyx;
+-
+- /* Start YYX at -YYN if negative to avoid negative indexes in
+- YYCHECK. */
+- int yyxbegin = yyn < 0 ? -yyn : 0;
+-
+- /* Stay within bounds of both yycheck and yytname. */
+- int yychecklim = YYLAST - yyn;
+- int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
+- int yycount = 0;
+-
+- yyprefix = ", expecting ";
+- for (yyx = yyxbegin; yyx < yyxend; ++yyx)
+- if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
++#if ! YYERROR_VERBOSE
++ yyerror (pc, YY_("syntax error"));
++#else
++ {
++ YYSIZE_T yysize = yysyntax_error (0, yystate, yychar);
++ if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM)
++ {
++ YYSIZE_T yyalloc = 2 * yysize;
++ if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM))
++ yyalloc = YYSTACK_ALLOC_MAXIMUM;
++ if (yymsg != yymsgbuf)
++ YYSTACK_FREE (yymsg);
++ yymsg = (char *) YYSTACK_ALLOC (yyalloc);
++ if (yymsg)
++ yymsg_alloc = yyalloc;
++ else
+ {
+- yysize += yystrlen (yyprefix) + yystrlen (yytname [yyx]);
+- yycount += 1;
+- if (yycount == 5)
+- {
+- yysize = 0;
+- break;
+- }
++ yymsg = yymsgbuf;
++ yymsg_alloc = sizeof yymsgbuf;
+ }
+- yysize += (sizeof ("syntax error, unexpected ")
+- + yystrlen (yytname[yytype]));
+- yymsg = (char *) YYSTACK_ALLOC (yysize);
+- if (yymsg != 0)
+- {
+- char *yyp = yystpcpy (yymsg, "syntax error, unexpected ");
+- yyp = yystpcpy (yyp, yytname[yytype]);
++ }
+
+- if (yycount < 5)
+- {
+- yyprefix = ", expecting ";
+- for (yyx = yyxbegin; yyx < yyxend; ++yyx)
+- if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
+- {
+- yyp = yystpcpy (yyp, yyprefix);
+- yyp = yystpcpy (yyp, yytname[yyx]);
+- yyprefix = " or ";
+- }
+- }
+- yyerror (pc, yymsg);
+- YYSTACK_FREE (yymsg);
+- }
+- else
+- yyerror (pc, "syntax error; also virtual memory exhausted");
+- }
+- else
+-#endif /* YYERROR_VERBOSE */
+- yyerror (pc, "syntax error");
++ if (0 < yysize && yysize <= yymsg_alloc)
++ {
++ (void) yysyntax_error (yymsg, yystate, yychar);
++ yyerror (pc, yymsg);
++ }
++ else
++ {
++ yyerror (pc, YY_("syntax error"));
++ if (yysize != 0)
++ goto yyexhaustedlab;
++ }
++ }
++#endif
+ }
+
+
+
+ if (yyerrstatus == 3)
+ {
+- /* If just tried and failed to reuse lookahead token after an
++ /* If just tried and failed to reuse look-ahead token after an
+ error, discard it. */
+
+ if (yychar <= YYEOF)
+- {
+- /* If at end of input, pop the error token,
+- then the rest of the stack, then return failure. */
++ {
++ /* Return failure if at end of input. */
+ if (yychar == YYEOF)
+- for (;;)
+- {
+- YYPOPSTACK;
+- if (yyssp == yyss)
+- YYABORT;
+- YYDSYMPRINTF ("Error: popping", yystos[*yyssp], yyvsp, yylsp);
+- yydestruct (yystos[*yyssp], yyvsp);
+- }
+- }
++ YYABORT;
++ }
+ else
+ {
+- YYDSYMPRINTF ("Error: discarding", yytoken, &yylval, &yylloc);
+- yydestruct (yytoken, &yylval);
++ yydestruct ("Error: discarding",
++ yytoken, &yylval, pc);
+ yychar = YYEMPTY;
+-
+ }
+ }
+
+- /* Else will try to reuse lookahead token after shifting the error
++ /* Else will try to reuse look-ahead token after shifting the error
+ token. */
+ goto yyerrlab1;
+
+@@ -1914,15 +2270,17 @@
+ `---------------------------------------------------*/
+ yyerrorlab:
+
+-#ifdef __GNUC__
+- /* Pacify GCC when the user code never invokes YYERROR and the label
+- yyerrorlab therefore never appears in user code. */
+- if (0)
++ /* Pacify compilers like GCC when the user code never invokes
++ YYERROR and the label yyerrorlab therefore never appears in user
++ code. */
++ if (/*CONSTCOND*/ 0)
+ goto yyerrorlab;
+-#endif
+
+- yyvsp -= yylen;
+- yyssp -= yylen;
++ /* Do not reclaim the symbols of the rule which action triggered
++ this YYERROR. */
++ YYPOPSTACK (yylen);
++ yylen = 0;
++ YY_STACK_PRINT (yyss, yyssp);
+ yystate = *yyssp;
+ goto yyerrlab1;
+
+@@ -1951,9 +2309,10 @@
+ if (yyssp == yyss)
+ YYABORT;
+
+- YYDSYMPRINTF ("Error: popping", yystos[*yyssp], yyvsp, yylsp);
+- yydestruct (yystos[yystate], yyvsp);
+- YYPOPSTACK;
++
++ yydestruct ("Error: popping",
++ yystos[yystate], yyvsp, pc);
++ YYPOPSTACK (1);
+ yystate = *yyssp;
+ YY_STACK_PRINT (yyss, yyssp);
+ }
+@@ -1961,11 +2320,12 @@
+ if (yyn == YYFINAL)
+ YYACCEPT;
+
+- YYDPRINTF ((stderr, "Shifting error token, "));
+-
+ *++yyvsp = yylval;
+
+
++ /* Shift the error token. */
++ YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
++
+ yystate = yyn;
+ goto yynewstate;
+
+@@ -1985,25 +2345,43 @@
+ goto yyreturn;
+
+ #ifndef yyoverflow
+-/*----------------------------------------------.
+-| yyoverflowlab -- parser overflow comes here. |
+-`----------------------------------------------*/
+-yyoverflowlab:
+- yyerror (pc, "parser stack overflow");
++/*-------------------------------------------------.
++| yyexhaustedlab -- memory exhaustion comes here. |
++`-------------------------------------------------*/
++yyexhaustedlab:
++ yyerror (pc, YY_("memory exhausted"));
+ yyresult = 2;
+ /* Fall through. */
+ #endif
+
+ yyreturn:
++ if (yychar != YYEOF && yychar != YYEMPTY)
++ yydestruct ("Cleanup: discarding lookahead",
++ yytoken, &yylval, pc);
++ /* Do not reclaim the symbols of the rule which action triggered
++ this YYABORT or YYACCEPT. */
++ YYPOPSTACK (yylen);
++ YY_STACK_PRINT (yyss, yyssp);
++ while (yyssp != yyss)
++ {
++ yydestruct ("Cleanup: popping",
++ yystos[*yyssp], yyvsp, pc);
++ YYPOPSTACK (1);
++ }
+ #ifndef yyoverflow
+ if (yyss != yyssa)
+ YYSTACK_FREE (yyss);
+ #endif
+- return yyresult;
++#if YYERROR_VERBOSE
++ if (yymsg != yymsgbuf)
++ YYSTACK_FREE (yymsg);
++#endif
++ /* Make sure YYID is used. */
++ return YYID (yyresult);
+ }
+
+
+-#line 568 "getdate.y"
++#line 619 "getdate.y"
+
+
+ static table const meridian_table[] =
+@@ -2520,7 +2898,7 @@
+
+ /* Do nothing if the parser reports an error. */
+ static int
+-yyerror (parser_control *pc ATTRIBUTE_UNUSED, char *s ATTRIBUTE_UNUSED)
++yyerror (parser_control *pc ATTRIBUTE_UNUSED, const char *s ATTRIBUTE_UNUSED)
+ {
+ return 0;
+ }
+@@ -2793,7 +3171,8 @@
+ + sizeof pc.time_zone * CHAR_BIT / 3];
+ if (!tz_was_altered)
+ tz0 = get_tz (tz0buf);
+- sprintf (tz1buf, "XXX%s%ld:%02d", "-" + (time_zone < 0),
++ snprintf(tz1buf, sizeof(tz1buf),
++ "XXX%s%ld:%02d", "-" + (time_zone < 0),
+ abs_time_zone_hour, abs_time_zone_min);
+ if (setenv ("TZ", tz1buf, 1) != 0)
+ goto fail;
+@@ -2891,7 +3270,7 @@
+ ok = false;
+ done:
+ if (tz_was_altered)
+- ok &= (tz0 ? setenv ("TZ", tz0, 1) : unsetenv ("TZ")) == 0;
++ ok &= (tz0 ? setenv("TZ", tz0, 1) : (unsetenv("TZ"), 0)) == 0;
+ if (tz0 != tz0buf)
+ free (tz0);
+ return ok;
+@@ -2900,37 +3279,52 @@
+ #if TEST
+
+ int
+-main (int ac, char **av)
++main(int argc, char **argv)
+ {
+ char buff[BUFSIZ];
++ int cmd = 0;
+
+- printf ("Enter date, or blank line to exit.\n\t> ");
++ if (argc > 1) {
++ int i = 1;
++ buff[0] = '\0';
++ while (i < argc) {
++ if (i > 1)
++ strlcat(buff, " ", BUFSIZ);
++ strlcat(buff, argv[i++], BUFSIZ);
++ }
++ cmd++;
++ goto once;
++ }
++
++ printf("Enter date, or blank line to exit.\n> ");
+ fflush (stdout);
+
+ buff[BUFSIZ - 1] = '\0';
+- while (fgets (buff, BUFSIZ - 1, stdin) && buff[0])
++ while (fgets(buff, BUFSIZ - 1, stdin) && buff[0] &&
++ buff[0] != '\r' && buff[0] != '\n')
+ {
+ struct timespec d;
+ struct tm const *tm;
++ once:
+ if (! get_date (&d, buff, NULL))
+ printf ("Bad format - couldn't convert.\n");
+ else if (! (tm = localtime (&d.tv_sec)))
+ {
+- long int sec = d.tv_sec;
+- printf ("localtime (%ld) failed\n", sec);
++ printf ("localtime (%lld) failed\n", (long long)d.tv_sec);
+ }
+ else
+ {
+ int ns = d.tv_nsec;
+- printf ("%04ld-%02d-%02d %02d:%02d:%02d.%09d\n",
+- tm->tm_year + 1900L, tm->tm_mon + 1, tm->tm_mday,
++ printf ("%13lld =\t%04ld-%02d-%02d %02d:%02d:%02d.%09d\n",
++ (long long)d.tv_sec, (long)tm->tm_year + 1900,
++ tm->tm_mon + 1, tm->tm_mday,
+ tm->tm_hour, tm->tm_min, tm->tm_sec, ns);
+ }
+- printf ("\t> ");
++ if (cmd)
++ return 0;
++ printf ("> ");
+ fflush (stdout);
+ }
+ return 0;
+ }
+ #endif /* TEST */
+-
+-
+--- cvs-1.12.13+real.orig/lib/getdate.h
++++ cvs-1.12.13+real/lib/getdate.h
+@@ -1,6 +1,9 @@
++/* $MirOS: src/gnu/usr.bin/cvs/lib/getdate.h,v 1.7 2016/10/22 20:15:03 tg Exp $ */
++
+ /* Parse a string into an internal time stamp.
+
+- Copyright (C) 1995, 1997, 1998, 2003, 2004 Free Software Foundation, Inc.
++ Copyright (C) 1995, 1997, 1998, 2003, 2004, 2005
++ Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+@@ -16,7 +19,17 @@
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
++#ifndef GETDATE_H
++#define GETDATE_H
++
+ #include <stdbool.h>
++#ifndef IN_RCS
+ #include "timespec.h"
++#else
++#include <sys/time.h>
++#include <time.h>
++#endif
+
+ bool get_date (struct timespec *, char const *, struct timespec const *);
++
++#endif /* GETDATE_H */
+--- cvs-1.12.13+real.orig/lib/getdate.y
++++ cvs-1.12.13+real/lib/getdate.y
+@@ -1,8 +1,11 @@
+ %{
+ /* Parse a string into an internal time stamp.
+
+- Copyright (C) 1999, 2000, 2002, 2003, 2004, 2005 Free Software
+- Foundation, Inc.
++ Copyright (C) 1995, 1997, 1998, 2003, 2004, 2005
++ Free Software Foundation, Inc.
++
++ Copyright (c) 2005, 2006, 2007, 2010, 2016
++ mirabilos <m@mirbsd.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
+@@ -38,6 +41,10 @@
+
+ #include "getdate.h"
+
++#ifdef USE_LIBBSD
++size_t strlcat(char *, const char *, size_t);
++#endif
++
+ /* There's no need to extend the stack, so there's no need to involve
+ alloca. */
+ #define YYSTACK_USE_ALLOCA 0
+@@ -65,10 +72,44 @@
+ #include <stdlib.h>
+ #include <string.h>
+
++#ifndef _STDLIB_H
++#define _STDLIB_H 1 /* GNU bison needs this */
++#endif
++
++#ifndef IN_RCS
+ #include "setenv.h"
+ #include "xalloc.h"
++#else /* IN_RCS */
++#include <unistd.h>
++
++#define HAVE_STRUCT_TM_TM_ZONE 1
++#define HAVE_TM_GMTOFF 1
++
++#define gettime(ts) clock_gettime(CLOCK_REALTIME,(ts))
++
++static void *
++xmalloc(size_t s)
++{
++ static const char xmalloc_enomem[] = "memory exhausted\n";
++ void *x;
++
++ if ((x = malloc(s)) == NULL) {
++ write(2, xmalloc_enomem, sizeof(xmalloc_enomem) - 1);
++ exit(1);
++ }
+
+-#if STDC_HEADERS || (! defined isascii && ! HAVE_ISASCII)
++ return (x);
++}
++
++static void *
++xmemdup(void const *p, size_t s)
++{
++ return (memcpy(xmalloc(s), p, s));
++}
++#endif /* IN_RCS */
++
++#if (defined(STDC_HEADERS) && STDC_HEADERS) || \
++ (!defined(isascii) && !HAVE_ISASCII)
+ # define IN_CTYPE_DOMAIN(c) 1
+ #else
+ # define IN_CTYPE_DOMAIN(c) isascii (c)
+@@ -87,7 +128,8 @@
+ of `digit' even when the host does not conform to POSIX. */
+ #define ISDIGIT(c) ((unsigned int) (c) - '0' <= 9)
+
+-#if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 8) || __STRICT_ANSI__
++#if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 8) || \
++ (defined(__STRICT_ANSI__) && __STRICT_ANSI__)
+ # define __attribute__(x)
+ #endif
+
+@@ -95,6 +137,15 @@
+ # define ATTRIBUTE_UNUSED __attribute__ ((__unused__))
+ #endif
+
++#ifndef __IDSTRING
++#define __IDSTRING(varname, string) \
++ static const char varname[] __attribute__((__used__)) = \
++ "@(""#)" #varname ": " string
++#endif
++
++__IDSTRING(rcsid_code, "$MirOS: src/gnu/usr.bin/cvs/lib/getdate.y,v 1.11 2016/10/22 22:45:50 tg Exp $");
++/* placeholder line for __IDSTRING(rcsid_bron, "$miros: ..."); so that cpp #line directives work */
++
+ /* Shift A right by B bits portably, by dividing A by 2**B and
+ truncating towards minus infinity. A and B should be free of side
+ effects, and B should be in the range 0 <= B <= INT_BITS - 2, where
+@@ -191,7 +242,7 @@
+
+ union YYSTYPE;
+ static int yylex (union YYSTYPE *, parser_control *);
+-static int yyerror (parser_control *, char *);
++static int yyerror (parser_control *, const char *);
+ static long int time_zone_hhmm (textint, long int);
+
+ %}
+@@ -1081,7 +1132,7 @@
+
+ /* Do nothing if the parser reports an error. */
+ static int
+-yyerror (parser_control *pc ATTRIBUTE_UNUSED, char *s ATTRIBUTE_UNUSED)
++yyerror (parser_control *pc ATTRIBUTE_UNUSED, const char *s ATTRIBUTE_UNUSED)
+ {
+ return 0;
+ }
+@@ -1354,7 +1405,8 @@
+ + sizeof pc.time_zone * CHAR_BIT / 3];
+ if (!tz_was_altered)
+ tz0 = get_tz (tz0buf);
+- sprintf (tz1buf, "XXX%s%ld:%02d", "-" + (time_zone < 0),
++ snprintf(tz1buf, sizeof(tz1buf),
++ "XXX%s%ld:%02d", "-" + (time_zone < 0),
+ abs_time_zone_hour, abs_time_zone_min);
+ if (setenv ("TZ", tz1buf, 1) != 0)
+ goto fail;
+@@ -1452,7 +1504,7 @@
+ ok = false;
+ done:
+ if (tz_was_altered)
+- ok &= (tz0 ? setenv ("TZ", tz0, 1) : unsetenv ("TZ")) == 0;
++ ok &= (tz0 ? setenv("TZ", tz0, 1) : (unsetenv("TZ"), 0)) == 0;
+ if (tz0 != tz0buf)
+ free (tz0);
+ return ok;
+@@ -1461,33 +1513,50 @@
+ #if TEST
+
+ int
+-main (int ac, char **av)
++main(int argc, char **argv)
+ {
+ char buff[BUFSIZ];
++ int cmd = 0;
++
++ if (argc > 1) {
++ int i = 1;
++ buff[0] = '\0';
++ while (i < argc) {
++ if (i > 1)
++ strlcat(buff, " ", BUFSIZ);
++ strlcat(buff, argv[i++], BUFSIZ);
++ }
++ cmd++;
++ goto once;
++ }
+
+- printf ("Enter date, or blank line to exit.\n\t> ");
++ printf("Enter date, or blank line to exit.\n> ");
+ fflush (stdout);
+
+ buff[BUFSIZ - 1] = '\0';
+- while (fgets (buff, BUFSIZ - 1, stdin) && buff[0])
++ while (fgets(buff, BUFSIZ - 1, stdin) && buff[0] &&
++ buff[0] != '\r' && buff[0] != '\n')
+ {
+ struct timespec d;
+ struct tm const *tm;
++ once:
+ if (! get_date (&d, buff, NULL))
+ printf ("Bad format - couldn't convert.\n");
+ else if (! (tm = localtime (&d.tv_sec)))
+ {
+- long int sec = d.tv_sec;
+- printf ("localtime (%ld) failed\n", sec);
++ printf ("localtime (%lld) failed\n", (long long)d.tv_sec);
+ }
+ else
+ {
+ int ns = d.tv_nsec;
+- printf ("%04ld-%02d-%02d %02d:%02d:%02d.%09d\n",
+- tm->tm_year + 1900L, tm->tm_mon + 1, tm->tm_mday,
++ printf ("%13lld =\t%04ld-%02d-%02d %02d:%02d:%02d.%09d\n",
++ (long long)d.tv_sec, (long)tm->tm_year + 1900,
++ tm->tm_mon + 1, tm->tm_mday,
+ tm->tm_hour, tm->tm_min, tm->tm_sec, ns);
+ }
+- printf ("\t> ");
++ if (cmd)
++ return 0;
++ printf ("> ");
+ fflush (stdout);
+ }
+ return 0;
+--- cvs-1.12.13+real.orig/lib/getdelim.c
++++ cvs-1.12.13+real/lib/getdelim.c
+@@ -48,7 +48,6 @@
+ {
+ int result = 0;
+ ssize_t cur_len = 0;
+- ssize_t len;
+
+ if (lineptr == NULL || n == NULL || fp == NULL)
+ {
+@@ -71,7 +70,6 @@
+
+ for (;;)
+ {
+- char *t;
+ int i;
+
+ i = getc (fp);
+--- cvs-1.12.13+real.orig/lib/pagealign_alloc.c
++++ cvs-1.12.13+real/lib/pagealign_alloc.c
+@@ -44,6 +44,10 @@
+ #include "xalloc.h"
+ #include "gettext.h"
+
++#if HAVE_MMAP && !defined(HAVE_MAP_ANONYMOUS)
++#include <stdio.h>
++#endif
++
+ #define _(str) gettext (str)
+
+ #if HAVE_MMAP
+@@ -132,6 +136,7 @@
+ const int fd = -1;
+ const int flags = MAP_ANONYMOUS | MAP_PRIVATE;
+ # else /* !HAVE_MAP_ANONYMOUS */
++ static int beenhere = 0;
+ static int fd = -1; /* Only open /dev/zero once in order to avoid limiting
+ the amount of memory we may allocate based on the
+ number of open file descriptors. */
+@@ -140,7 +145,20 @@
+ {
+ fd = open ("/dev/zero", O_RDONLY, 0666);
+ if (fd < 0)
+- error (EXIT_FAILURE, errno, _("Failed to open /dev/zero for read"));
++ {
++ if (!beenhere)
++ {
++ beenhere = 1;
++ error (EXIT_FAILURE, errno, _("Failed to open /dev/zero for read"));
++ }
++ else
++ {
++ fprintf (stderr, "Fatal in pagealign: %s\n",
++ _("Failed to open /dev/zero for read"));
++ fflush (stderr);
++ _exit (EXIT_FAILURE);
++ }
++ }
+ }
+ # endif /* HAVE_MAP_ANONYMOUS */
+ ret = mmap (NULL, size, PROT_READ | PROT_WRITE, flags, fd, 0);
+--- cvs-1.12.13+real.orig/lib/regcomp.c
++++ cvs-1.12.13+real/lib/regcomp.c
+@@ -1652,8 +1652,6 @@
+ && dfa->edests[node].nelem
+ && !dfa->nodes[dfa->edests[node].elems[0]].duplicated)
+ {
+- Idx org_node, cur_node;
+- org_node = cur_node = node;
+ err = duplicate_node_closure (dfa, node, node, node, constraint);
+ if (BE (err != REG_NOERROR, 0))
+ return err;
+--- cvs-1.12.13+real.orig/lib/regex_internal.c
++++ cvs-1.12.13+real/lib/regex_internal.c
+@@ -629,7 +629,7 @@
+
+ if (pstr->is_utf8)
+ {
+- const unsigned char *raw, *p, *q, *end;
++ const unsigned char *raw, *p, *end;
+
+ /* Special case UTF-8. Multi-byte chars start with any
+ byte other than 0x80 - 0xbf. */
+@@ -641,17 +641,8 @@
+ mbstate_t cur_state;
+ wchar_t wc2;
+ Idx mlen = raw + pstr->len - p;
+- unsigned char buf[6];
+ size_t mbclen;
+
+- q = p;
+- if (BE (pstr->trans != NULL, 0))
+- {
+- int i = mlen < 6 ? mlen : 6;
+- while (--i >= 0)
+- buf[i] = pstr->trans[p[i]];
+- q = buf;
+- }
+ /* XXX Don't use mbrtowc, we know which conversion
+ to use (UTF-8 -> UCS4). */
+ memset (&cur_state, 0, sizeof (cur_state));
+--- cvs-1.12.13+real.orig/lib/regex_internal.h
++++ cvs-1.12.13+real/lib/regex_internal.h
+@@ -451,7 +451,9 @@
+ #define re_string_skip_bytes(pstr,idx) ((pstr)->cur_idx += (idx))
+ #define re_string_set_index(pstr,idx) ((pstr)->cur_idx = (idx))
+
++#ifdef HAVE_ALLOCA_H
+ #include <alloca.h>
++#endif
+
+ #ifndef _LIBC
+ # if HAVE_ALLOCA
+--- cvs-1.12.13+real.orig/lib/sunos57-select.c
++++ cvs-1.12.13+real/lib/sunos57-select.c
+@@ -40,6 +40,11 @@
+ #include <sys/stat.h>
+ #include <errno.h>
+
++#if defined(STDC_HEADERS) || defined(HAVE_STRING_H)
++# include <string.h>
++#else
++# include <strings.h>
++#endif
+ #ifdef HAVE_UNISTD_H
+ # include <unistd.h>
+ #endif /* HAVE_UNISTD_H */
+--- cvs-1.12.13+real.orig/lib/test-getdate.sh
++++ cvs-1.12.13+real/lib/test-getdate.sh
+@@ -1,4 +1,5 @@
+ #! /bin/sh
++# $MirOS: src/gnu/usr.bin/cvs/lib/test-getdate.sh,v 1.2 2016/10/22 15:34:32 tg Exp $
+
+ # Test that a getdate executable meets its specification.
+ #
+@@ -19,6 +20,11 @@
+ # Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
+
+
++# as this uses POSIX behaviour and does not count leap seconds...
++if test -n "$GETDATE_LD_PRELOAD"; then
++ LD_PRELOAD=$GETDATE_LD_PRELOAD
++ export LD_PRELOAD
++fi
+
+ ###
+ ### Globals
+@@ -113,10 +119,9 @@
+ NTZ=`TZ=$1 date +%Z`
+ if test "$NTZ" = "$UTZ" || test "$NTZ" = "$1"; then
+ skipreason="$1 is not a recognized timezone on this system"
+- return `false`
+- else
+- return `:`
++ return 1
+ fi
++ :
+ }
+
+
+@@ -184,22 +189,22 @@
+
+ cat >getdate-expected <<EOF
+ Enter date, or blank line to exit.
+- > Bad format - couldn't convert.
+- > Bad format - couldn't convert.
+- > 1972-12-05 00:00:00.000000000
+- > 1974-03-29 00:00:00.000000000
+- > 1996-05-12 13:57:45.000000000
+- > 2012-05-12 00:00:00.000000000
+- > 1996-05-12 00:00:00.000000000
+- > Bad format - couldn't convert.
+- > Bad format - couldn't convert.
+- > 1970-01-01 02:00:00.000000000
+- > Bad format - couldn't convert.
+- > 1969-12-31 22:00:00.000000000
+- > Bad format - couldn't convert.
+- > 1970-01-01 06:00:00.000000000
+- > 1997-01-12 00:00:00.000000000
+- >
++> Bad format - couldn't convert.
++> Bad format - couldn't convert.
++> 92361600 = 1972-12-05 00:00:00.000000000
++> 133747200 = 1974-03-29 00:00:00.000000000
++> 831909465 = 1996-05-12 13:57:45.000000000
++> 1336780800 = 2012-05-12 00:00:00.000000000
++> 831859200 = 1996-05-12 00:00:00.000000000
++> Bad format - couldn't convert.
++> Bad format - couldn't convert.
++> 7200 = 1970-01-01 02:00:00.000000000
++> Bad format - couldn't convert.
++> -7200 = 1969-12-31 22:00:00.000000000
++> Bad format - couldn't convert.
++> 21600 = 1970-01-01 06:00:00.000000000
++> 853027200 = 1997-01-12 00:00:00.000000000
++>
+ EOF
+
+ ./getdate >getdate-got <<EOF
+@@ -235,22 +240,22 @@
+ if valid_timezone $TZ; then
+ cat >getdate-expected <<EOF
+ Enter date, or blank line to exit.
+- > 2005-03-01 00:00:00.000000000
+- > 2005-03-27 00:00:00.000000000
+- > 2005-03-28 01:00:00.000000000
+- > 2005-03-28 01:00:00.000000000
+- > 2005-03-29 01:00:00.000000000
+- > 2005-03-29 01:00:00.000000000
+- > 2005-03-30 01:00:00.000000000
+- > 2005-03-30 01:00:00.000000000
+- > 2005-03-31 01:00:00.000000000
+- > 2005-03-31 01:00:00.000000000
+- > 2005-04-01 01:00:00.000000000
+- > 2005-04-01 01:00:00.000000000
+- > 2005-04-10 01:00:00.000000000
+- > 2005-04-10 01:00:00.000000000
+- > 2005-04-01 00:00:00.000000000
+- >
++> 1109635200 = 2005-03-01 00:00:00.000000000
++> 1111881600 = 2005-03-27 00:00:00.000000000
++> 1111968000 = 2005-03-28 01:00:00.000000000
++> 1111968000 = 2005-03-28 01:00:00.000000000
++> 1112054400 = 2005-03-29 01:00:00.000000000
++> 1112054400 = 2005-03-29 01:00:00.000000000
++> 1112140800 = 2005-03-30 01:00:00.000000000
++> 1112140800 = 2005-03-30 01:00:00.000000000
++> 1112227200 = 2005-03-31 01:00:00.000000000
++> 1112227200 = 2005-03-31 01:00:00.000000000
++> 1112313600 = 2005-04-01 01:00:00.000000000
++> 1112313600 = 2005-04-01 01:00:00.000000000
++> 1113091200 = 2005-04-10 01:00:00.000000000
++> 1113091200 = 2005-04-10 01:00:00.000000000
++> 1112310000 = 2005-04-01 00:00:00.000000000
++>
+ EOF
+
+ ./getdate >getdate-got <<EOF
+@@ -297,20 +302,20 @@
+ if valid_timezone $TZ; then
+ cat >getdate-expected <<EOF
+ Enter date, or blank line to exit.
+- > 2005-03-01 00:00:00.000000000
+- > 2005-02-28 18:00:00.000000000
+- > 2005-04-01 00:00:00.000000000
+- > Bad format - couldn't convert.
+- > 2005-04-30 19:00:00.000000000
+- > 2005-04-30 20:00:00.000000000
+- > 2005-05-01 00:00:00.000000000
+- > 2005-04-30 20:00:00.000000000
+- > Bad format - couldn't convert.
+- > 2005-05-31 19:00:00.000000000
+- > 2005-05-31 20:00:00.000000000
+- > 2005-06-01 00:00:00.000000000
+- > 2005-05-31 20:00:00.000000000
+- >
++> 1109653200 = 2005-03-01 00:00:00.000000000
++> 1109631600 = 2005-02-28 18:00:00.000000000
++> 1112331600 = 2005-04-01 00:00:00.000000000
++> Bad format - couldn't convert.
++> 1114902000 = 2005-04-30 19:00:00.000000000
++> 1114905600 = 2005-04-30 20:00:00.000000000
++> 1114920000 = 2005-05-01 00:00:00.000000000
++> 1114905600 = 2005-04-30 20:00:00.000000000
++> Bad format - couldn't convert.
++> 1117580400 = 2005-05-31 19:00:00.000000000
++> 1117584000 = 2005-05-31 20:00:00.000000000
++> 1117598400 = 2005-06-01 00:00:00.000000000
++> 1117584000 = 2005-05-31 20:00:00.000000000
++>
+ EOF
+
+ ./getdate >getdate-got <<EOF
+--- cvs-1.12.13+real.orig/lib/vasnprintf.c
++++ cvs-1.12.13+real/lib/vasnprintf.c
+@@ -26,7 +26,9 @@
+ # include <config.h>
+ #endif
+ #ifndef IN_LIBINTL
++# ifdef HAVE_ALLOCA_H
+ # include <alloca.h>
++# endif
+ #endif
+
+ /* Specification. */
+@@ -100,7 +102,12 @@
+ # define DIRECTIVE char_directive
+ # define DIRECTIVES char_directives
+ # define PRINTF_PARSE printf_parse
++#if 0
++/* disabled for security reasons, to avoid having %n in writable memory */
+ # define USE_SNPRINTF (HAVE_DECL__SNPRINTF || HAVE_SNPRINTF)
++#else
++# define USE_SNPRINTF 0
++#endif
+ # if HAVE_DECL__SNPRINTF
+ /* Windows. */
+ # define SNPRINTF _snprintf
+@@ -591,11 +598,12 @@
+ {
+ size_t maxlen;
+ int count;
+- int retcount;
++#if USE_SNPRINTF
++ int retcount = 0;
++#endif
+
+ maxlen = allocated - length;
+ count = -1;
+- retcount = 0;
+
+ #if USE_SNPRINTF
+ # define SNPRINTF_BUF(arg) \
+--- cvs-1.12.13+real.orig/m4/getdate.m4
++++ cvs-1.12.13+real/m4/getdate.m4
+@@ -6,7 +6,7 @@
+
+ AC_DEFUN([gl_GETDATE],
+ [
+- AC_LIBSOURCES([getdate.h, getdate.y])
++ AC_LIBSOURCES([getdate.h, getdate.c])
+ AC_LIBOBJ([getdate])
+
+ dnl Prerequisites of lib/getdate.h.
+--- cvs-1.12.13+real.orig/m4/longdouble.m4
++++ cvs-1.12.13+real/m4/longdouble.m4
+@@ -8,21 +8,12 @@
+ dnl Test whether the compiler supports the 'long double' type.
+ dnl Prerequisite: AC_PROG_CC
+
++dnl $MirOS: src/gnu/usr.bin/cvs/m4/longdouble.m4,v 1.4 2016/10/22 03:36:43 tg Exp $
++
+ AC_DEFUN([gt_TYPE_LONGDOUBLE],
+ [
+- AC_CACHE_CHECK([for long double], gt_cv_c_long_double,
+- [if test "$GCC" = yes; then
+- gt_cv_c_long_double=yes
+- else
+- AC_TRY_COMPILE([
+- /* The Stardent Vistra knows sizeof(long double), but does not support it. */
+- long double foo = 0.0;
+- /* On Ultrix 4.3 cc, long double is 4 and double is 8. */
+- int array [2*(sizeof(long double) >= sizeof(double)) - 1];
+- ], ,
+- gt_cv_c_long_double=yes, gt_cv_c_long_double=no)
+- fi])
+- if test $gt_cv_c_long_double = yes; then
++ AC_CHECK_TYPE([long double], [gt_cv_c_long_double=yes], [gt_cv_c_long_double=no])
++ if test x"$gt_cv_c_long_double" = x"yes"; then
+ AC_DEFINE(HAVE_LONG_DOUBLE, 1, [Define if you have the 'long double' type.])
+ fi
+ ])
+--- cvs-1.12.13+real.orig/m4/mktime.m4
++++ cvs-1.12.13+real/m4/mktime.m4
+@@ -6,6 +6,9 @@
+
+ dnl From Jim Meyering.
+
++dnl Test program updated to git faefb77009239f82ac2f77ac0c10d71d4f38af07
++dnl for Debian.
++
+ # Redefine AC_FUNC_MKTIME, to fix a bug in Autoconf 2.57 and earlier.
+ # This redefinition can be removed once a new version of Autoconf comes out.
+ # The redefinition is taken from
+@@ -19,27 +22,16 @@
+ AC_CACHE_CHECK([for working mktime], ac_cv_func_working_mktime,
+ [AC_RUN_IFELSE([AC_LANG_SOURCE(
+ [[/* Test program from Paul Eggert and Tony Leneis. */
+-#if TIME_WITH_SYS_TIME
+-# include <sys/time.h>
+-# include <time.h>
+-#else
+-# if HAVE_SYS_TIME_H
+-# include <sys/time.h>
+-# else
+-# include <time.h>
+-# endif
+-#endif
++#include <limits.h>
++#include <stdlib.h>
++#include <time.h>
+
+-#if HAVE_STDLIB_H
+-# include <stdlib.h>
+-#endif
+-
+-#if HAVE_UNISTD_H
++#ifdef HAVE_UNISTD_H
+ # include <unistd.h>
+ #endif
+
+-#if !HAVE_ALARM
+-# define alarm(X) /* empty */
++#if HAVE_DECL_ALARM
++# include <signal.h>
+ #endif
+
+ /* Work around redefinition to rpl_putenv by other config tests. */
+@@ -55,9 +47,9 @@
+ };
+ #define N_STRINGS (sizeof (tz_strings) / sizeof (tz_strings[0]))
+
+-/* Fail if mktime fails to convert a date in the spring-forward gap.
++/* Return 0 if mktime fails to convert a date in the spring-forward gap.
+ Based on a problem report from Andreas Jaeger. */
+-static void
++static int
+ spring_forward_gap ()
+ {
+ /* glibc (up to about 1998-10-07) failed this test. */
+@@ -76,29 +68,25 @@
+ tm.tm_min = 0;
+ tm.tm_sec = 0;
+ tm.tm_isdst = -1;
+- if (mktime (&tm) == (time_t)-1)
+- exit (1);
++ return mktime (&tm) != (time_t) -1;
+ }
+
+-static void
+-mktime_test1 (now)
+- time_t now;
++static int
++mktime_test1 (time_t now)
+ {
+ struct tm *lt;
+- if ((lt = localtime (&now)) && mktime (lt) != now)
+- exit (1);
++ return ! (lt = localtime (&now)) || mktime (lt) == now;
+ }
+
+-static void
+-mktime_test (now)
+- time_t now;
++static int
++mktime_test (time_t now)
+ {
+- mktime_test1 (now);
+- mktime_test1 ((time_t) (time_t_max - now));
+- mktime_test1 ((time_t) (time_t_min + now));
++ return (mktime_test1 (now)
++ && mktime_test1 ((time_t) (time_t_max - now))
++ && mktime_test1 ((time_t) (time_t_min + now)));
+ }
+
+-static void
++static int
+ irix_6_4_bug ()
+ {
+ /* Based on code from Ariel Faigon. */
+@@ -111,13 +99,11 @@
+ tm.tm_sec = 0;
+ tm.tm_isdst = -1;
+ mktime (&tm);
+- if (tm.tm_mon != 2 || tm.tm_mday != 31)
+- exit (1);
++ return tm.tm_mon == 2 && tm.tm_mday == 31;
+ }
+
+-static void
+-bigtime_test (j)
+- int j;
++static int
++bigtime_test (int j)
+ {
+ struct tm tm;
+ time_t now;
+@@ -127,56 +113,110 @@
+ {
+ struct tm *lt = localtime (&now);
+ if (! (lt
+- && lt->tm_year == tm.tm_year
+- && lt->tm_mon == tm.tm_mon
+- && lt->tm_mday == tm.tm_mday
+- && lt->tm_hour == tm.tm_hour
+- && lt->tm_min == tm.tm_min
+- && lt->tm_sec == tm.tm_sec
+- && lt->tm_yday == tm.tm_yday
+- && lt->tm_wday == tm.tm_wday
+- && ((lt->tm_isdst < 0 ? -1 : 0 < lt->tm_isdst)
+- == (tm.tm_isdst < 0 ? -1 : 0 < tm.tm_isdst))))
+- exit (1);
++ && lt->tm_year == tm.tm_year
++ && lt->tm_mon == tm.tm_mon
++ && lt->tm_mday == tm.tm_mday
++ && lt->tm_hour == tm.tm_hour
++ && lt->tm_min == tm.tm_min
++ && lt->tm_sec == tm.tm_sec
++ && lt->tm_yday == tm.tm_yday
++ && lt->tm_wday == tm.tm_wday
++ && ((lt->tm_isdst < 0 ? -1 : 0 < lt->tm_isdst)
++ == (tm.tm_isdst < 0 ? -1 : 0 < tm.tm_isdst))))
++ return 0;
+ }
++ return 1;
++}
++
++static int
++year_2050_test ()
++{
++ /* The correct answer for 2050-02-01 00:00:00 in Pacific time,
++ ignoring leap seconds. */
++ unsigned long int answer = 2527315200UL;
++
++ struct tm tm;
++ time_t t;
++ tm.tm_year = 2050 - 1900;
++ tm.tm_mon = 2 - 1;
++ tm.tm_mday = 1;
++ tm.tm_hour = tm.tm_min = tm.tm_sec = 0;
++ tm.tm_isdst = -1;
++
++ /* Use the portable POSIX.1 specification "TZ=PST8PDT,M4.1.0,M10.5.0"
++ instead of "TZ=America/Vancouver" in order to detect the bug even
++ on systems that don't support the Olson extension, or don't have the
++ full zoneinfo tables installed. */
++ putenv ("TZ=PST8PDT,M4.1.0,M10.5.0");
++
++ t = mktime (&tm);
++
++ /* Check that the result is either a failure, or close enough
++ to the correct answer that we can assume the discrepancy is
++ due to leap seconds. */
++ return (t == (time_t) -1
++ || (0 < t && answer - 120 <= t && t <= answer + 120));
+ }
+
+ int
+ main ()
+ {
++ int result = 0;
+ time_t t, delta;
+ int i, j;
++ int time_t_signed_magnitude = (time_t) ~ (time_t) 0 < (time_t) -1;
++ int time_t_signed = ! ((time_t) 0 < (time_t) -1);
+
++#if HAVE_DECL_ALARM
+ /* This test makes some buggy mktime implementations loop.
+ Give up after 60 seconds; a mktime slower than that
+ isn't worth using anyway. */
++ signal (SIGALRM, SIG_DFL);
+ alarm (60);
++#endif
++
++ time_t_max = (! time_t_signed
++ ? (time_t) -1
++ : ((((time_t) 1 << (sizeof (time_t) * CHAR_BIT - 2)) - 1)
++ * 2 + 1));
++ time_t_min = (! time_t_signed
++ ? (time_t) 0
++ : time_t_signed_magnitude
++ ? ~ (time_t) 0
++ : ~ time_t_max);
+
+- for (time_t_max = 1; 0 < time_t_max; time_t_max *= 2)
+- continue;
+- time_t_max--;
+- if ((time_t) -1 < 0)
+- for (time_t_min = -1; (time_t) (time_t_min * 2) < 0; time_t_min *= 2)
+- continue;
+ delta = time_t_max / 997; /* a suitable prime number */
+ for (i = 0; i < N_STRINGS; i++)
+ {
+ if (tz_strings[i])
+- putenv (tz_strings[i]);
++ putenv (tz_strings[i]);
+
+- for (t = 0; t <= time_t_max - delta; t += delta)
+- mktime_test (t);
+- mktime_test ((time_t) 1);
+- mktime_test ((time_t) (60 * 60));
+- mktime_test ((time_t) (60 * 60 * 24));
+-
+- for (j = 1; 0 < j; j *= 2)
+- bigtime_test (j);
+- bigtime_test (j - 1);
++ for (t = 0; t <= time_t_max - delta && (result & 1) == 0; t += delta)
++ if (! mktime_test (t))
++ result |= 1;
++ if ((result & 2) == 0
++ && ! (mktime_test ((time_t) 1)
++ && mktime_test ((time_t) (60 * 60))
++ && mktime_test ((time_t) (60 * 60 * 24))))
++ result |= 2;
++
++ for (j = 1; (result & 4) == 0; j <<= 1)
++ {
++ if (! bigtime_test (j))
++ result |= 4;
++ if (INT_MAX / 2 < j)
++ break;
++ }
++ if ((result & 8) == 0 && ! bigtime_test (INT_MAX))
++ result |= 8;
+ }
+- irix_6_4_bug ();
+- spring_forward_gap ();
+- exit (0);
++ if (! irix_6_4_bug ())
++ result |= 16;
++ if (! spring_forward_gap ())
++ result |= 32;
++ if (! year_2050_test ())
++ result |= 64;
++ return result;
+ }]])],
+ [ac_cv_func_working_mktime=yes],
+ [ac_cv_func_working_mktime=no],
+--- cvs-1.12.13+real.orig/man/cvs.5
++++ cvs-1.12.13+real/man/cvs.5
+@@ -1,3 +1,4 @@
++.\" $MirOS: src/gnu/usr.bin/cvs/man/cvs.5,v 1.3 2010/09/19 19:43:00 tg Exp $
+ .TH cvs 5 "12 February 1992"
+ .\" Full space in nroff; half space in troff
+ .de SP
+@@ -238,9 +239,9 @@
+ .B add
+ for `tag',
+ .B mov
+-for `tag -F', and
++for `tag \-F', and
+ .B del
+-for `tag -d`),
++for `tag \-d`),
+ .I repository ,
+ and any remaining are pairs of
+ .B "filename revision" .
+--- cvs-1.12.13+real.orig/src/Makefile.am
++++ cvs-1.12.13+real/src/Makefile.am
+@@ -1,4 +1,5 @@
+ ## Process this file with automake to produce Makefile.in
++# $MirOS: src/gnu/usr.bin/cvs/src/Makefile.am,v 1.8 2011/12/04 22:50:41 tg Exp $
+ # Makefile for GNU CVS program.
+ #
+ # Copyright (C) 1986-2005 The Free Software Foundation, Inc.
+@@ -22,7 +23,6 @@
+ -I$(top_srcdir)/diff $(ZLIB_CPPFLAGS)
+
+ bin_PROGRAMS = cvs
+-bin_SCRIPTS = cvsbug
+
+ # The cvs executable
+ cvs_SOURCES = \
+@@ -79,6 +79,7 @@
+ stack.c stack.h \
+ status.c \
+ subr.c subr.h \
++ suck.c \
+ tag.c \
+ update.c \
+ version.c \
+@@ -109,6 +110,7 @@
+ ../diff/libdiff.a \
+ ../lib/libcvs.a \
+ $(ZLIB_LIBS)
++cvs_LDFLAGS = -Wl,--as-needed
+ cvs_LDADD = $(cvs_client_objects) \
+ ../diff/libdiff.a \
+ ../lib/libcvs.a \
+--- cvs-1.12.13+real.orig/src/add.c
++++ cvs-1.12.13+real/src/add.c
+@@ -532,7 +532,8 @@
+ free (bbuf);
+ }
+ Register (entries, finfo.file, "0",
+- timestamp ? timestamp : vers->ts_user,
++ timestamp ? timestamp :
++ vers->ts_user_ists ? "locally added" : vers->ts_user,
+ vers->options, vers->tag, vers->date, NULL);
+ if (timestamp) free (timestamp);
+ #ifdef SERVER_SUPPORT
+@@ -784,7 +785,7 @@
+ }
+
+ /* setup the log message */
+- message = Xasprintf ("Directory %s added to the repository\n%s%s%s%s%s%s",
++ message = Xasprintf ("Directory %s put under version control\n%s%s%s%s%s%s",
+ rcsdir,
+ tag ? "--> Using per-directory sticky tag `" : "",
+ tag ? tag : "", tag ? "'\n" : "",
+--- cvs-1.12.13+real.orig/src/admin.c
++++ cvs-1.12.13+real/src/admin.c
+@@ -147,6 +147,7 @@
+ TRACE (TRACE_FUNCTION, "postadmin_proc (%s, %s)", repository, filter);
+
+ /* %c = cvs_cmd_name
++ * %I = commit ID
+ * %R = referrer
+ * %p = shortrepos
+ * %r = repository
+@@ -162,6 +163,7 @@
+ #endif /* SUPPORT_OLD_INFO_FMT_STRINGS */
+ filter,
+ "c", "s", cvs_cmd_name,
++ "I", "s", global_session_id,
+ #ifdef SERVER_SUPPORT
+ "R", "s", referrer ? referrer->original : "NONE",
+ #endif /* SERVER_SUPPORT */
+--- cvs-1.12.13+real.orig/src/annotate.c
++++ cvs-1.12.13+real/src/annotate.c
+@@ -21,6 +21,7 @@
+
+ /* Options from the command line. */
+
++static int backwards = 0;
+ static int force_tag_match = 1;
+ static int force_binary = 0;
+ static char *tag = NULL;
+@@ -36,7 +37,8 @@
+
+ static const char *const annotate_usage[] =
+ {
+- "Usage: %s %s [-lRfF] [-r rev] [-D date] [files...]\n",
++ "Usage: %s %s [-blRfF] [-r rev] [-D date] [files...]\n",
++ "\t-b\tBackwards, show when a line was removed.\n",
+ "\t-l\tLocal directory only, no recursion.\n",
+ "\t-R\tProcess directories recursively.\n",
+ "\t-f\tUse head revision if tag/date not found.\n",
+@@ -63,10 +65,13 @@
+ usage (annotate_usage);
+
+ optind = 0;
+- while ((c = getopt (argc, argv, "+lr:D:fFR")) != -1)
++ while ((c = getopt (argc, argv, "+blr:D:fFR")) != -1)
+ {
+ switch (c)
+ {
++ case 'b':
++ backwards = 1;
++ break;
+ case 'l':
+ local = 1;
+ break;
+@@ -105,6 +110,8 @@
+
+ ign_setup ();
+
++ if (backwards)
++ send_arg ("-b");
+ if (local)
+ send_arg ("-l");
+ if (!force_tag_match)
+@@ -280,7 +287,8 @@
+ else
+ {
+ RCS_deltas (finfo->rcs, NULL, NULL,
+- version, RCS_ANNOTATE, NULL, NULL, NULL, NULL);
++ version, backwards ? RCS_ANNOTATE_BACKWARDS : RCS_ANNOTATE,
++ NULL, NULL, NULL, NULL);
+ }
+ free (version);
+ return 0;
+--- cvs-1.12.13+real.orig/src/buffer.c
++++ cvs-1.12.13+real/src/buffer.c
+@@ -536,9 +536,10 @@
+ void
+ buf_free_data (struct buffer *buffer)
+ {
+- if (buf_empty_p (buffer)) return;
++ if (buffer->data) {
+ buf_free_datas (buffer->data, buffer->last);
+ buffer->data = buffer->last = NULL;
++ }
+ }
+
+
+--- cvs-1.12.13+real.orig/src/client.c
++++ cvs-1.12.13+real/src/client.c
+@@ -3510,6 +3510,17 @@
+ sock = socket (AF_INET, SOCK_STREAM, 0);
+ if (sock == -1)
+ error (1, 0, "cannot create socket: %s", SOCK_STRERROR (SOCK_ERRNO));
++
++#ifdef TCP_NODELAY
++ /* Avoid latency due to Nagle algorithm. */
++ {
++ int on = 1;
++
++ if (setsockopt (sock, IPPROTO_TCP, TCP_NODELAY, &on, sizeof on) < 0)
++ error (0, errno, "warning: cannot set TCP_NODELAY on socket");
++ }
++#endif
++
+ port_number = get_cvs_port_number (root);
+
+ /* if we have a proxy connect to that instead */
+@@ -3558,9 +3569,9 @@
+ * code.
+ */
+ read_line_via (from_server, to_server, &read_buf);
+- sscanf (read_buf, "%s %d", write_buf, &codenum);
++ count = sscanf (read_buf, "%*s %d", &codenum);
+
+- if ((codenum / 100) != 2)
++ if (count != 1 || (codenum / 100) != 2)
+ error (1, 0, "proxy server %s:%d does not support http tunnelling",
+ root->proxy_hostname, proxy_port_number);
+ free (read_buf);
+@@ -3901,8 +3912,12 @@
+ case ext_method:
+ #ifdef NO_EXT_METHOD
+ error (0, 0, ":ext: method not supported by this port of CVS");
++ if (0)
++ case extssh_method:
++ error (0, 0, ":extssh: method not supported by this port of CVS");
+ error (1, 0, "try :server: instead");
+ #else /* ! NO_EXT_METHOD */
++ case extssh_method:
+ start_rsh_server (root, to_server_p,
+ from_server_p);
+ #endif /* NO_EXT_METHOD */
+@@ -4362,7 +4377,7 @@
+ sprintf (tmp, "%lu\n", (unsigned long) newsize);
+ send_to_server (tmp, 0);
+
+- send_to_server (buf, newsize);
++ send_to_server ((const void *)buf, newsize);
+ }
+ }
+ else
+@@ -4415,7 +4430,7 @@
+ * one.
+ */
+ if (newsize > 0)
+- send_to_server (buf, newsize);
++ send_to_server ((const void *)buf, newsize);
+ }
+ free (buf);
+ free (mode_string);
+--- cvs-1.12.13+real.orig/src/client.h
++++ cvs-1.12.13+real/src/client.h
+@@ -213,6 +213,7 @@
+ #if defined AUTH_CLIENT_SUPPORT || defined HAVE_KERBEROS || defined HAVE_GSSAPI
+ # include <sys/socket.h>
+ # include <netinet/in.h>
++# include <netinet/tcp.h>
+ # include <arpa/inet.h>
+ # include <netdb.h>
+ struct hostent *init_sockaddr (struct sockaddr_in *, char *, unsigned int);
+--- cvs-1.12.13+real.orig/src/commit.c
++++ cvs-1.12.13+real/src/commit.c
+@@ -613,31 +613,7 @@
+
+ send_to_server ("ci\012", 0);
+ err = get_responses_and_close ();
+- if (err != 0 && use_editor && saved_message != NULL)
+- {
+- /* If there was an error, don't nuke the user's carefully
+- constructed prose. This is something of a kludge; a better
+- solution is probably more along the lines of #150 in TODO
+- (doing a second up-to-date check before accepting the
+- log message has also been suggested, but that seems kind of
+- iffy because the real up-to-date check could still fail,
+- another error could occur, &c. Also, a second check would
+- slow things down). */
+-
+- char *fname;
+- FILE *fp;
+-
+- fp = cvs_temp_file (&fname);
+- if (fp == NULL)
+- error (1, 0, "cannot create temporary file %s", fname);
+- if (fwrite (saved_message, 1, strlen (saved_message), fp)
+- != strlen (saved_message))
+- error (1, errno, "cannot write temporary file %s", fname);
+- if (fclose (fp) < 0)
+- error (0, errno, "cannot close temporary file %s", fname);
+- error (0, 0, "saving log message in %s", fname);
+- free (fname);
+- }
++ logmsg_cleanup(err);
+ return err;
+ }
+ #endif
+@@ -702,6 +678,7 @@
+ sleep_past (last_register_time);
+ }
+
++ logmsg_cleanup(err);
+ return err;
+ }
+
+@@ -853,7 +830,7 @@
+ case T_ADDED:
+ case T_REMOVED:
+ {
+- char *editor;
++ char *editor = NULL;
+
+ /*
+ * some quick sanity checks; if no numeric -r option specified:
+@@ -1250,6 +1227,7 @@
+ #endif /* SUPPORT_OLD_INFO_FMT_STRINGS */
+ filter,
+ "c", "s", cvs_cmd_name,
++ "I", "s", global_session_id,
+ #ifdef SERVER_SUPPORT
+ "R", "s", referrer ? referrer->original : "NONE",
+ #endif /* SERVER_SUPPORT */
+@@ -2255,9 +2233,10 @@
+ this was added into the log message. */
+ t = time (NULL);
+ ct = gmtime (&t);
+- tmp = Xasprintf ("file %s was added on branch %s on %d-%02d-%02d %02d:%02d:%02d +0000",
++ tmp = Xasprintf ("file %s was added on branch %s on %ld-%02d-%02d %02d:%02d:%02d +0000",
+ file, tag,
+- ct->tm_year + (ct->tm_year < 100 ? 0 : 1900),
++ (long)ct->tm_year
++ + (ct->tm_year < 100 ? 0 : 1900),
+ ct->tm_mon + 1, ct->tm_mday,
+ ct->tm_hour, ct->tm_min, ct->tm_sec);
+
+--- cvs-1.12.13+real.orig/src/cvs.h
++++ cvs-1.12.13+real/src/cvs.h
+@@ -1,3 +1,5 @@
++/* $MirOS: src/gnu/usr.bin/cvs/src/cvs.h,v 1.7 2016/10/21 16:41:16 tg Exp $ */
++
+ /*
+ * Copyright (C) 1986-2005 The Free Software Foundation, Inc.
+ *
+@@ -365,6 +367,7 @@
+
+ extern const char *program_name, *program_path, *cvs_cmd_name;
+ extern char *Editor;
++extern char *LogMsgFile;
+ extern int cvsadmin_root;
+ extern char *CurDir;
+ extern int really_quiet, quiet;
+@@ -504,6 +507,8 @@
+ int unlink_file (const char *f);
+ int unlink_file_dir (const char *f);
+
++int suck (int argc, char *argv[]);
++
+ /* This is the structure that the recursion processor passes to the
+ fileproc to tell it about a particular file. */
+ struct file_info
+@@ -629,6 +634,7 @@
+ FILE *xlogfp, List *xchanges);
+ void do_editor (const char *dir, char **messagep,
+ const char *repository, List *changes);
++void logmsg_cleanup (int err);
+
+ void do_verify (char **messagep, const char *repository, List *changes);
+
+@@ -726,7 +732,7 @@
+ /* This is the timestamp from stating the file in the working directory.
+ It is NULL if there is no file in the working directory. It is
+ "Is-modified" if we know the file is modified but don't have its
+- contents. */
++ contents. See also: ts_user_ists. */
+ char *ts_user;
+ /* Timestamp from CVS/Entries. For the server, ts_user and ts_rcs
+ are computed in a slightly different way, but the fact remains that
+@@ -759,6 +765,9 @@
+
+ /* Pointer to parsed src file info */
+ RCSNode *srcfile;
++
++ /* 1 if ts_user is known to be the actual timestamp of a local file */
++ unsigned char ts_user_ists;
+ };
+ typedef struct vers_ts Vers_TS;
+
+--- cvs-1.12.13+real.orig/src/cvsrc.c
++++ cvs-1.12.13+real/src/cvsrc.c
+@@ -41,6 +41,7 @@
+ size_t line_chars_allocated;
+
+ char *optstart;
++ int white_len = 0;
+
+ int command_len;
+ int found = 0;
+@@ -96,9 +97,12 @@
+ if (line[0] == '#')
+ continue;
+
++ while (isspace(line[white_len]))
++ ++white_len;
++
+ /* stop if we match the current command */
+- if (!strncmp (line, cmdname, command_len)
+- && isspace ((unsigned char) *(line + command_len)))
++ if (!strncmp (line + white_len, cmdname, command_len)
++ && isspace ((unsigned char) *(line + white_len + command_len)))
+ {
+ found = 1;
+ break;
+@@ -120,7 +124,7 @@
+ if (found)
+ {
+ /* skip over command in the options line */
+- for (optstart = strtok (line + command_len, "\t \n");
++ for (optstart = strtok (line + white_len + command_len, "\t \n");
+ optstart;
+ optstart = strtok (NULL, "\t \n"))
+ {
+--- cvs-1.12.13+real.orig/src/diff.c
++++ cvs-1.12.13+real/src/diff.c
+@@ -21,6 +21,8 @@
+
+ #include "cvs.h"
+
++#define TAG_BHEAD ".bhead"
++
+ enum diff_file
+ {
+ DIFF_ERROR,
+@@ -444,9 +446,9 @@
+ }
+ #endif
+
+- if (diff_rev1 != NULL)
++ if (diff_rev1 != NULL && strcmp(diff_rev1, TAG_BHEAD))
+ tag_check_valid (diff_rev1, argc, argv, local, 0, "", false);
+- if (diff_rev2 != NULL)
++ if (diff_rev2 != NULL && strcmp(diff_rev2, TAG_BHEAD))
+ tag_check_valid (diff_rev2, argc, argv, local, 0, "", false);
+
+ which = W_LOCAL;
+@@ -903,8 +905,14 @@
+
+ if (diff_rev1 || diff_date1)
+ {
+- /* special handling for TAG_HEAD */
+- if (diff_rev1 && strcmp (diff_rev1, TAG_HEAD) == 0)
++ /*
++ * the special handling is broken, -rbranchname is the
++ * head (tip) of the branch already, -rHEAD is supposed
++ * to be the head (tip) of the MAIN branch (trunk); we
++ * introduce ".bhead" here, for now, but only here
++ */
++ /* special handling for TAG_BHEAD */
++ if (diff_rev1 && strcmp (diff_rev1, TAG_BHEAD) == 0)
+ {
+ if (vers->vn_rcs != NULL && vers->srcfile != NULL)
+ use_rev1 = RCS_branch_head (vers->srcfile, vers->vn_rcs);
+@@ -919,8 +927,8 @@
+ }
+ if (diff_rev2 || diff_date2)
+ {
+- /* special handling for TAG_HEAD */
+- if (diff_rev2 && strcmp (diff_rev2, TAG_HEAD) == 0)
++ /* special handling for TAG_BHEAD */
++ if (diff_rev2 && strcmp (diff_rev2, TAG_BHEAD) == 0)
+ {
+ if (vers->vn_rcs && vers->srcfile)
+ use_rev2 = RCS_branch_head (vers->srcfile, vers->vn_rcs);
+--- cvs-1.12.13+real.orig/src/edit.c
++++ cvs-1.12.13+real/src/edit.c
+@@ -828,6 +828,7 @@
+ #endif /* SUPPORT_OLD_INFO_FMT_STRINGS */
+ filter,
+ "c", "s", cvs_cmd_name,
++ "I", "s", global_session_id,
+ #ifdef SERVER_SUPPORT
+ "R", "s", referrer ? referrer->original : "NONE",
+ #endif /* SERVER_SUPPORT */
+--- cvs-1.12.13+real.orig/src/error.c
++++ cvs-1.12.13+real/src/error.c
+@@ -208,7 +208,7 @@
+ * with the message here.
+ */
+ #if HAVE_SYSLOG_H
+- syslog (LOG_DAEMON | LOG_EMERG, "Memory exhausted. Aborting.");
++ syslog (LOG_DAEMON | LOG_CRIT, "Memory exhausted. Aborting.");
+ #endif /* HAVE_SYSLOG_H */
+
+ goto sidestep_done;
+@@ -219,18 +219,18 @@
+ * error while attempting to send the last error message to the client.
+ */
+
+- syslog (LOG_DAEMON | LOG_EMERG,
++ syslog (LOG_DAEMON | LOG_ALERT,
+ "error (%d, %d) called recursively. Original message was:",
+ last_status, last_errnum);
+- syslog (LOG_DAEMON | LOG_EMERG, "%s", last_message);
++ syslog (LOG_DAEMON | LOG_ALERT, "%s", last_message);
+
+
+- syslog (LOG_DAEMON | LOG_EMERG,
++ syslog (LOG_DAEMON | LOG_ALERT,
+ "error (%d, %d) called recursively. Second message was:",
+ status, errnum);
+- syslog (LOG_DAEMON | LOG_EMERG, "%s", buf2);
++ syslog (LOG_DAEMON | LOG_ALERT, "%s", buf2);
+
+- syslog (LOG_DAEMON | LOG_EMERG, "Aborting.");
++ syslog (LOG_DAEMON | LOG_ALERT, "Aborting.");
+ #endif /* HAVE_SYSLOG_H */
+
+ sidestep_done:
+--- cvs-1.12.13+real.orig/src/fileattr.c
++++ cvs-1.12.13+real/src/fileattr.c
+@@ -514,6 +514,7 @@
+ TRACE (TRACE_FUNCTION, "postwatch_proc (%s, %s)", repository, filter);
+
+ /* %c = command name
++ * %I = commit ID
+ * %p = shortrepos
+ * %r = repository
+ */
+@@ -528,6 +529,7 @@
+ #endif /* SUPPORT_OLD_INFO_FMT_STRINGS */
+ filter,
+ "c", "s", cvs_cmd_name,
++ "I", "s", global_session_id,
+ #ifdef SERVER_SUPPORT
+ "R", "s", referrer ? referrer->original : "NONE",
+ #endif /* SERVER_SUPPORT */
+--- cvs-1.12.13+real.orig/src/history.c
++++ cvs-1.12.13+real/src/history.c
+@@ -379,7 +379,7 @@
+ static const char *
+ get_history_log_name (time_t now)
+ {
+- char *log_name;
++ char *log_name = NULL;
+
+ if (config->HistoryLogPath)
+ {
+@@ -1561,7 +1561,7 @@
+ tm = localtime (&(lr->date));
+
+ (void) printf ("%c %04d-%02d-%02d %02d:%02d %s %-*s", ty,
+- tm->tm_year+1900, tm->tm_mon + 1, tm->tm_mday, tm->tm_hour,
++ (int)(tm->tm_year+1900), tm->tm_mon + 1, tm->tm_mday, tm->tm_hour,
+ tm->tm_min, tz_name, user_len, lr->user);
+
+ workdir = xmalloc (strlen (lr->dir) + strlen (lr->end) + 10);
+--- cvs-1.12.13+real.orig/src/import.c
++++ cvs-1.12.13+real/src/import.c
+@@ -238,6 +238,23 @@
+ regfree (&pat);
+ }
+
++ /*
++ * If you use even vendor branches, something evil[TM] can happen.
++ */
++ {
++ regex_t pat;
++ assert (!regcomp (&pat, "^[1-9][0-9]*\\.[1-9][0-9]*\\.[0-9]*[13579]$",
++ REG_EXTENDED));
++ if (regexec (&pat, vbranch, 0, NULL, 0))
++ {
++ error (0, 0,
++ "warning: you are using an even vendor branch, which can\n"
++ "lead to problems: '%s'. Use an odd branch such as '1.1.3' instead.",
++ vbranch);
++ }
++ regfree (&pat);
++ }
++
+ /* Set vhead to the branch's parent. */
+ vhead = xstrdup (vbranch);
+ cp = strrchr (vhead, '.');
+@@ -311,6 +328,7 @@
+ free (vhead);
+ send_to_server ("import\012", 0);
+ err += get_responses_and_close ();
++ logmsg_cleanup(err);
+ return err;
+ }
+ #endif
+@@ -436,6 +454,7 @@
+ free (vbranch);
+ free (vhead);
+
++ logmsg_cleanup(err);
+ return err;
+ }
+
+@@ -595,7 +614,7 @@
+ /* Attempt to make the Attic directory, in case it
+ does not exist. */
+ (void) sprintf (rcs, "%s/%s", repository, CVSATTIC);
+- if (CVS_MKDIR (rcs, 0777 ) != 0 && errno != EEXIST)
++ if (noexec == 0 && CVS_MKDIR (rcs, 0777 ) != 0 && errno != EEXIST)
+ error (1, errno, "cannot make directory `%s'", rcs);
+
+ /* Note that the above clobbered the path name, so we
+@@ -1253,7 +1272,7 @@
+ (void) time (&now);
+ ftm = gmtime (&now);
+ (void) sprintf (altdate1, DATEFORM,
+- ftm->tm_year + (ftm->tm_year < 100 ? 0 : 1900),
++ (long)ftm->tm_year + (ftm->tm_year < 100 ? 0L : 1900L),
+ ftm->tm_mon + 1, ftm->tm_mday, ftm->tm_hour,
+ ftm->tm_min, ftm->tm_sec);
+ author = getcaller ();
+--- cvs-1.12.13+real.orig/src/kerberos4-client.c
++++ cvs-1.12.13+real/src/kerberos4-client.c
+@@ -17,6 +17,8 @@
+ #include "buffer.h"
+ #include "socket-client.h"
+
++#include <netinet/tcp.h>
++
+ # include <krb.h>
+
+ extern char *krb_realmofhost ();
+@@ -48,6 +50,16 @@
+ if (s < 0)
+ error (1, 0, "cannot create socket: %s", SOCK_STRERROR (SOCK_ERRNO));
+
++#ifdef TCP_NODELAY
++ /* Avoid latency due to Nagle algorithm. */
++ {
++ int on = 1;
++
++ if (setsockopt (sock, IPPROTO_TCP, TCP_NODELAY, &on, sizeof on) < 0)
++ error (0, errno, "warning: cannot set TCP_NODELAY on socket");
++ }
++#endif
++
+ port = get_cvs_port_number (root);
+
+ hp = init_sockaddr (&sin, root->hostname, port);
+--- cvs-1.12.13+real.orig/src/lock.c
++++ cvs-1.12.13+real/src/lock.c
+@@ -1319,6 +1319,10 @@
+ lock->repository = Xasprintf ("%s/%s", xrepository, CVSROOTADM);
+ lock->free_repository = true;
+
++ /* do nothing if we know it fails anyway */
++ if (readonlyfs)
++ return 0;
++
+ /* get the lock dir for our own */
+ if (set_lock (lock, 1) != L_OK)
+ {
+--- cvs-1.12.13+real.orig/src/login.c
++++ cvs-1.12.13+real/src/login.c
+@@ -200,11 +200,21 @@
+ return NULL;
+ }
+ *p = ' ';
+- tmp_root_canonical = normalize_cvsroot (tmp_root);
+- if (strcmp (cvsroot_canonical, tmp_root_canonical) == 0)
+- password = p + 1;
+-
+- free (tmp_root_canonical);
++ switch (tmp_root->method)
++ {
++ case gserver_method:
++ case pserver_method:
++#ifdef HAVE_KERBEROS
++ case kserver_method:
++#endif /* HAVE_KERBEROS */
++ tmp_root_canonical = normalize_cvsroot (tmp_root);
++ if (strcmp (cvsroot_canonical, tmp_root_canonical) == 0)
++ password = p + 1;
++ free (tmp_root_canonical);
++ break;
++ default:
++ break;
++ }
+ }
+
+ return password;
+@@ -309,7 +319,9 @@
+ fp = CVS_FOPEN (passfile, "r");
+ if (fp == NULL)
+ {
++ if (errno != ENOENT) {
+ error (0, errno, "warning: failed to open %s for reading", passfile);
++ }
+ goto process;
+ }
+
+--- cvs-1.12.13+real.orig/src/logmsg.c
++++ cvs-1.12.13+real/src/logmsg.c
+@@ -31,6 +31,8 @@
+ static FILE *fp;
+ static Ctype type;
+
++char *LogMsgFile = NULL;
++
+ struct verifymsg_proc_data
+ {
+ /* The name of the temp file storing the log message to be verified. This
+@@ -201,6 +203,7 @@
+ char *fname;
+ struct stat pre_stbuf, post_stbuf;
+ int retcode = 0;
++ int finish = 0;
+
+ assert (!current_parsed_root->isremote != !repository);
+
+@@ -224,6 +227,10 @@
+ (*messagep)[strlen (*messagep) - 1] != '\n')
+ (void) fprintf (fp, "\n");
+ }
++ else
++ (void) fputc ('\n', fp);
++ if (finish)
++ goto finish_off;
+
+ if (repository != NULL)
+ /* tack templates on if necessary */
+@@ -267,6 +274,9 @@
+ (void) fprintf (fp,
+ "%s----------------------------------------------------------------------\n",
+ CVSEDITPREFIX);
++ if (readonlyfs)
++ (void) fprintf (fp, "%sATTENTION: read-only mode selected!\n",
++ CVSEDITPREFIX);
+ (void) fprintf (fp,
+ "%sEnter Log. Lines beginning with `%.*s' are removed automatically\n%s\n",
+ CVSEDITPREFIX, CVSEDITPREFIXLEN, CVSEDITPREFIX,
+@@ -280,28 +290,38 @@
+ "%s----------------------------------------------------------------------\n",
+ CVSEDITPREFIX);
+
++ finish_off:
+ /* finish off the temp file */
+ if (fclose (fp) == EOF)
+ error (1, errno, "%s", fname);
+- if (stat (fname, &pre_stbuf) == -1)
++ if (LogMsgFile)
++ {
++ if (unlink_file (LogMsgFile) < 0)
++ error (0, errno, "warning: cannot remove temp file %s", LogMsgFile);
++ free (LogMsgFile);
++ }
++ LogMsgFile = fname;
++ if (finish)
++ return;
++ if (stat (LogMsgFile, &pre_stbuf) == -1)
+ pre_stbuf.st_mtime = 0;
+
+ /* run the editor */
+ run_setup (Editor);
+- run_add_arg (fname);
++ run_add_arg (LogMsgFile);
+ if ((retcode = run_exec (RUN_TTY, RUN_TTY, RUN_TTY,
+ RUN_NORMAL | RUN_SIGIGNORE)) != 0)
+ error (0, retcode == -1 ? errno : 0, "warning: editor session failed");
+
+ /* put the entire message back into the *messagep variable */
+
+- fp = xfopen (fname, "r");
++ fp = xfopen (LogMsgFile, "r");
+
+ if (*messagep)
+ free (*messagep);
+
+- if (stat (fname, &post_stbuf) != 0)
+- error (1, errno, "cannot find size of temp file %s", fname);
++ if (stat (LogMsgFile, &post_stbuf) != 0)
++ error (1, errno, "cannot find size of temp file %s", LogMsgFile);
+
+ if (post_stbuf.st_size == 0)
+ *messagep = NULL;
+@@ -326,7 +346,7 @@
+ if (line_length == -1)
+ {
+ if (ferror (fp))
+- error (0, errno, "warning: cannot read %s", fname);
++ error (0, errno, "warning: cannot read %s", LogMsgFile);
+ break;
+ }
+ if (strncmp (line, CVSEDITPREFIX, CVSEDITPREFIXLEN) == 0)
+@@ -339,7 +359,7 @@
+ }
+ }
+ if (fclose (fp) < 0)
+- error (0, errno, "warning: cannot close %s", fname);
++ error (0, errno, "warning: cannot close %s", LogMsgFile);
+
+ /* canonicalize emply messages */
+ if (*messagep != NULL &&
+@@ -349,7 +369,11 @@
+ *messagep = NULL;
+ }
+
+- if (pre_stbuf.st_mtime == post_stbuf.st_mtime || *messagep == NULL)
++ if (pre_stbuf.st_mtime == post_stbuf.st_mtime ||
++ *messagep == NULL ||
++ (*messagep)[0] == '\0' ||
++ strcmp (*messagep, "\n") == 0 ||
++ strcmp (*messagep, "\n\n") == 0)
+ {
+ for (;;)
+ {
+@@ -361,9 +385,11 @@
+ if (line_length < 0)
+ {
+ error (0, errno, "cannot read from stdin");
+- if (unlink_file (fname) < 0)
++ if (unlink_file (LogMsgFile) < 0)
+ error (0, errno,
+- "warning: cannot remove temp file %s", fname);
++ "warning: cannot remove temp file %s", LogMsgFile);
++ free (LogMsgFile);
++ LogMsgFile = NULL;
+ error (1, 0, "aborting");
+ }
+ else if (line_length == 0
+@@ -371,8 +397,10 @@
+ break;
+ if (*line == 'a' || *line == 'A')
+ {
+- if (unlink_file (fname) < 0)
+- error (0, errno, "warning: cannot remove temp file %s", fname);
++ if (unlink_file (LogMsgFile) < 0)
++ error (0, errno, "warning: cannot remove temp file %s", LogMsgFile);
++ free (LogMsgFile);
++ LogMsgFile = NULL;
+ error (1, 0, "aborted by user");
+ }
+ if (*line == 'e' || *line == 'E')
+@@ -387,15 +415,14 @@
+ }
+ if (line)
+ free (line);
+- if (unlink_file (fname) < 0)
+- error (0, errno, "warning: cannot remove temp file %s", fname);
+- free (fname);
++ finish = 1;
++ goto again;
+ }
+
+ /* Runs the user-defined verification script as part of the commit or import
+ process. This verification is meant to be run whether or not the user
+ included the -m attribute. unlike the do_editor function, this is
+- independant of the running of an editor for getting a message.
++ independent of the running of an editor for getting a message.
+ */
+ void
+ do_verify (char **messagep, const char *repository, List *changes)
+@@ -785,6 +812,7 @@
+ `%s' is left as an exercise for the reader. */
+
+ /* %c = cvs_cmd_name
++ * %I = commit ID
+ * %p = shortrepos
+ * %r = repository
+ * %{sVv} = file name, old revision (precommit), new revision (postcommit)
+@@ -800,6 +828,7 @@
+ #endif /* SUPPORT_OLD_INFO_FMT_STRINGS */
+ filter,
+ "c", "s", cvs_cmd_name,
++ "I", "s", global_session_id,
+ #ifdef SERVER_SUPPORT
+ "R", "s", referrer ? referrer->original : "NONE",
+ #endif /* SERVER_SUPPORT */
+@@ -922,6 +951,7 @@
+ #endif /* SUPPORT_OLD_INFO_FMT_STRINGS */
+ script,
+ "c", "s", cvs_cmd_name,
++ "I", "s", global_session_id,
+ #ifdef SERVER_SUPPORT
+ "R", "s", referrer
+ ? referrer->original : "NONE",
+@@ -975,3 +1005,20 @@
+ return abs (run_exec (RUN_TTY, RUN_TTY, RUN_TTY,
+ RUN_NORMAL | RUN_SIGIGNORE));
+ }
++
++void
++logmsg_cleanup (int err)
++{
++ if (!use_editor || LogMsgFile == NULL)
++ return;
++
++ if (err == 0)
++ {
++ if (unlink_file (LogMsgFile) < 0)
++ error (0, errno, "warning: cannot remove temp file %s", LogMsgFile);
++ }
++ else
++ error (0, 0, "your log message was saved in %s", LogMsgFile);
++ free (LogMsgFile);
++ LogMsgFile = NULL;
++}
+--- cvs-1.12.13+real.orig/src/main.c
++++ cvs-1.12.13+real/src/main.c
+@@ -24,6 +24,10 @@
+ #include "strftime.h"
+ #include "xgethostname.h"
+
++#ifdef USE_LIBBSD
++uint32_t arc4random(void);
++#endif
++
+ const char *program_name;
+ const char *program_path;
+ const char *cvs_cmd_name;
+@@ -170,6 +174,7 @@
+ #ifdef SERVER_SUPPORT
+ { "server", NULL, NULL, server, CVS_CMD_MODIFIES_REPOSITORY | CVS_CMD_USES_WORK_DIR },
+ #endif
++ { "suck", NULL, NULL, suck, 0 },
+ { "status", "st", "stat", cvsstatus, CVS_CMD_USES_WORK_DIR },
+ { "tag", "ta", "freeze", cvstag, CVS_CMD_MODIFIES_REPOSITORY | CVS_CMD_USES_WORK_DIR },
+ { "unedit", NULL, NULL, unedit, CVS_CMD_MODIFIES_REPOSITORY | CVS_CMD_USES_WORK_DIR },
+@@ -230,7 +235,7 @@
+ {
+ "CVS commands are:\n",
+ " add Add a new file/directory to the repository\n",
+- " admin Administration front end for rcs\n",
++ " admin Administration front-end for RCS\n",
+ " annotate Show last revision where each line was modified\n",
+ " checkout Checkout sources for editing\n",
+ " commit Check files into the repository\n",
+@@ -242,7 +247,7 @@
+ " import Import sources into CVS, using vendor branches\n",
+ " init Create a CVS repository if it doesn't exist\n",
+ #if defined (HAVE_KERBEROS) && defined (SERVER_SUPPORT)
+- " kserver Kerberos server mode\n",
++ " kserver Act in Kerberos server mode\n",
+ #endif
+ " log Print out history information for files\n",
+ #ifdef AUTH_CLIENT_SUPPORT
+@@ -251,18 +256,19 @@
+ #endif /* AUTH_CLIENT_SUPPORT */
+ " ls List files available from CVS\n",
+ #if (defined(AUTH_SERVER_SUPPORT) || defined (HAVE_GSSAPI)) && defined(SERVER_SUPPORT)
+- " pserver Password server mode\n",
++ " pserver Act in password server mode\n",
+ #endif
+ " rannotate Show last revision where each line of module was modified\n",
+- " rdiff Create 'patch' format diffs between releases\n",
+- " release Indicate that a Module is no longer in use\n",
++ " rdiff Create 'patch' format diffs between revisions\n",
++ " release Indicate that a work subdirectory is no longer in use\n",
+ " remove Remove an entry from the repository\n",
+ " rlog Print out history information for a module\n",
+ " rls List files in a module\n",
+ " rtag Add a symbolic tag to a module\n",
+ #ifdef SERVER_SUPPORT
+- " server Server mode\n",
++ " server Act in server mode\n",
+ #endif
++ " suck Download RCS ,v file raw\n",
+ " status Display status information on checked out files\n",
+ " tag Add a symbolic tag to checked out version of files\n",
+ " unedit Undo an edit command\n",
+@@ -283,6 +289,7 @@
+ " -q Cause CVS to be somewhat quiet.\n",
+ " -r Make checked-out files read-only.\n",
+ " -w Make checked-out files read-write (default).\n",
++ " -g Force group-write permissions on checked-out files.\n",
+ " -n Do not execute anything that will change the disk.\n",
+ " -t Show trace of program execution (repeat for more\n",
+ " verbosity) -- try with -n.\n",
+@@ -458,46 +465,6 @@
+
+
+
+-
+-enum {RANDOM_BYTES = 8};
+-enum {COMMITID_RAW_SIZE = (sizeof(time_t) + RANDOM_BYTES)};
+-
+-static char const alphabet[62] =
+- "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
+-
+-/* Divide BUF by D, returning the remainder. Replace BUF by the
+- quotient. BUF[0] is the most significant part of BUF.
+- D must not exceed UINT_MAX >> CHAR_BIT. */
+-static unsigned int
+-divide_by (unsigned char buf[COMMITID_RAW_SIZE], unsigned int d)
+-{
+- unsigned int carry = 0;
+- int i;
+- for (i = 0; i < COMMITID_RAW_SIZE; i++)
+- {
+- unsigned int byte = buf[i];
+- unsigned int dividend = (carry << CHAR_BIT) + byte;
+- buf[i] = dividend / d;
+- carry = dividend % d;
+- }
+- return carry;
+-}
+-
+-static void
+-convert (char const input[COMMITID_RAW_SIZE], char *output)
+-{
+- static char const zero[COMMITID_RAW_SIZE] = { 0, };
+- unsigned char buf[COMMITID_RAW_SIZE];
+- size_t o = 0;
+- memcpy (buf, input, COMMITID_RAW_SIZE);
+- while (memcmp (buf, zero, COMMITID_RAW_SIZE) != 0)
+- output[o++] = alphabet[divide_by (buf, sizeof alphabet)];
+- if (! o)
+- output[o++] = '0';
+- output[o] = '\0';
+-}
+-
+-
+ int
+ main (int argc, char **argv)
+ {
+@@ -511,7 +478,7 @@
+ int help = 0; /* Has the user asked for help? This
+ lets us support the `cvs -H cmd'
+ convention to give help for cmd. */
+- static const char short_options[] = "+QqrwtnRvb:T:e:d:Hfz:s:xa";
++ static const char short_options[] = "+QqrwgtnRvb:T:e:d:Hfz:s:xal";
+ static struct option long_options[] =
+ {
+ {"help", 0, NULL, 'H'},
+@@ -521,6 +488,7 @@
+ {"help-options", 0, NULL, 4},
+ #ifdef SERVER_SUPPORT
+ {"allow-root", required_argument, NULL, 3},
++ {"allow-root-regexp", required_argument, NULL, 14},
+ #endif /* SERVER_SUPPORT */
+ {0, 0, 0, 0}
+ };
+@@ -645,6 +613,10 @@
+ /* --allow-root */
+ root_allow_add (optarg, gConfigPath);
+ break;
++ case 14:
++ /* --allow-root-regexp */
++ root_allow_regexp_add (optarg, gConfigPath);
++ break;
+ #endif /* SERVER_SUPPORT */
+ case 'Q':
+ really_quiet = 1;
+@@ -658,6 +630,13 @@
+ case 'w':
+ cvswrite = 1;
+ break;
++ case 'g':
++ /*
++ * Force full write permissions for the group.
++ * See the user's manual for details and dangers.
++ */
++ umask(umask(S_IRWXG|S_IRWXO) & S_IRWXO);
++ break;
+ case 't':
+ trace++;
+ break;
+@@ -669,6 +648,9 @@
+ noexec = 1;
+ logoff = 1;
+ break;
++ case 'l':
++ /* no-op to simply ignore the old -l option */
++ break;
+ case 'v':
+ (void) fputs ("\n", stdout);
+ version (0, NULL);
+@@ -676,6 +658,7 @@
+ (void) fputs ("\
+ Copyright (C) 2005 Free Software Foundation, Inc.\n\
+ \n\
++Portions contributed by Thorsten Glaser for the MirOS Project and Debian.\n\
+ Senior active maintainers include Larry Jones, Derek R. Price,\n\
+ and Mark D. Baushke. Please see the AUTHORS and README files from the CVS\n\
+ distribution kit for a complete list of contributors and copyrights.\n",
+@@ -764,56 +747,12 @@
+ if (argc < 1)
+ usage (usg);
+
+- if (readonlyfs && !really_quiet) {
+- error (0, 0,
+- "WARNING: Read-only repository access mode selected via `cvs -R'.\n\
+-Using this option to access a repository which some users write to may\n\
+-cause intermittent sandbox corruption.");
+- }
+-
+ /* Calculate the cvs global session ID */
+
+- {
+- char buf[COMMITID_RAW_SIZE] = { 0, };
+- char out[COMMITID_RAW_SIZE * 2];
+- ssize_t len = 0;
+- time_t rightnow = time (NULL);
+- char *startrand = buf + sizeof (time_t);
+- unsigned char *p = (unsigned char *) startrand;
+- size_t randbytes = RANDOM_BYTES;
+- int flags = O_RDONLY;
+- int fd;
+-#ifdef O_NOCTTY
+- flags |= O_NOCTTY;
+-#endif
+- if (rightnow != (time_t)-1)
+- while (rightnow > 0) {
+- *--p = rightnow % (UCHAR_MAX + 1);
+- rightnow /= UCHAR_MAX + 1;
+- }
+- else {
+- /* try to use more random data */
+- randbytes = COMMITID_RAW_SIZE;
+- startrand = buf;
+- }
+- fd = open ("/dev/urandom", flags);
+- if (fd >= 0) {
+- len = read (fd, startrand, randbytes);
+- close (fd);
+- }
+- if (len <= 0) {
+- /* no random data was available so use pid */
+- long int pid = (long int)getpid ();
+- p = (unsigned char *) (startrand + sizeof (pid));
+- while (pid > 0) {
+- *--p = pid % (UCHAR_MAX + 1);
+- pid /= UCHAR_MAX + 1;
+- }
+- }
+- convert(buf, out);
+- global_session_id = strdup (out);
+- }
+-
++ global_session_id = Xasprintf("1%010llX%04X%04X",
++ (unsigned long long)time(NULL),
++ (unsigned int)(getpid() & 0xFFFF),
++ (unsigned int)(arc4random() & 0xFFFF));
+
+ TRACE (TRACE_FUNCTION, "main: Session ID is %s", global_session_id);
+
+@@ -1011,7 +950,7 @@
+ /* Now we've reconciled CVSROOT from the command line, the
+ CVS/Root file, and the environment variable. Do the
+ last sanity checks on the variable. */
+- if (!CVSroot_parsed)
++ if (!CVSroot_parsed && cm->func != version)
+ {
+ error (0, 0,
+ "No CVSROOT specified! Please use the `-d' option");
+@@ -1043,6 +982,11 @@
+
+ assert (current_parsed_root == NULL);
+
++ /* Handle running 'cvs version' with no CVSROOT. */
++
++ if (cm->func == version && !CVSroot_parsed)
++ server_active = !0;
++
+ /* If we're running the server, we want to execute this main
+ loop once and only once (we won't be serving multiple roots
+ from this connection, so there's no need to do it more than
+@@ -1173,6 +1117,7 @@
+ dellist (&root_directories);
+ } /* end of stuff that gets done if the user DOESN'T ask for help */
+
++ config = NULL;
+ root_allow_free ();
+
+ /* This is exit rather than return because apparently that keeps
+@@ -1244,7 +1189,7 @@
+ if (*++p)
+ {
+ if (*date) free (*date);
+- *date = Make_Date (p);
++ *date = strcmp (p, "BASE") ? Make_Date (p) : xstrdup (p);
+ }
+ }
+ else if (strlen (input))
+@@ -1285,7 +1230,7 @@
+ ftm = localtime (&unixtime);
+
+ (void) sprintf (date, DATEFORM,
+- ftm->tm_year + (ftm->tm_year < 100 ? 0 : 1900),
++ (long)ftm->tm_year + (ftm->tm_year < 100 ? 0L : 1900L),
+ ftm->tm_mon + 1, ftm->tm_mday, ftm->tm_hour,
+ ftm->tm_min, ftm->tm_sec);
+ ret = xstrdup (date);
+@@ -1315,8 +1260,10 @@
+ void
+ date_to_tm (struct tm *dest, const char *source)
+ {
++ int y;
++
+ if (sscanf (source, SDATEFORM,
+- &dest->tm_year, &dest->tm_mon, &dest->tm_mday,
++ &y, &dest->tm_mon, &dest->tm_mday,
+ &dest->tm_hour, &dest->tm_min, &dest->tm_sec)
+ != 6)
+ /* Is there a better way to handle errors here? I made this
+@@ -1324,9 +1271,7 @@
+ deal with fatal errors. */
+ error (0, 0, "internal error: bad date %s", source);
+
+- if (dest->tm_year > 100)
+- dest->tm_year -= 1900;
+-
++ dest->tm_year = y - ((y > 100) ? 1900 : 0);
+ dest->tm_mon -= 1;
+ }
+
+@@ -1348,10 +1293,10 @@
+ {"Jan", "Feb", "Mar", "Apr", "May", "Jun",
+ "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"};
+
+- sprintf (dest, "%d %s %d %02d:%02d:%02d -0000", source->tm_mday,
++ sprintf (dest, "%d %s %ld %02d:%02d:%02d -0000", source->tm_mday,
+ source->tm_mon < 0 || source->tm_mon > 11
+ ? "???" : month_names[source->tm_mon],
+- source->tm_year + 1900, source->tm_hour, source->tm_min,
++ (long)source->tm_year + 1900, source->tm_hour, source->tm_min,
+ source->tm_sec);
+ }
+
+@@ -1458,7 +1403,7 @@
+ {
+ (void) fprintf (stderr, *cpp++, program_name, cvs_cmd_name);
+ for (; *cpp; cpp++)
+- (void) fprintf (stderr, *cpp);
++ (void) fprintf (stderr, "%s", *cpp);
+ exit (EXIT_FAILURE);
+ }
+
+--- cvs-1.12.13+real.orig/src/mkmodules.c
++++ cvs-1.12.13+real/src/mkmodules.c
+@@ -68,6 +68,7 @@
+ "# If any format strings are present in the filter, they will be replaced\n",
+ "# as follows:\n",
+ "# %c = canonical name of the command being executed\n",
++ "# %I = unique (randomly generated) commit ID\n",
+ #ifdef PROXY_SUPPORT
+ "# %R = the name of the referrer, if any, otherwise the value NONE\n",
+ #endif
+@@ -82,7 +83,7 @@
+ "# Thus %{sv} is a legal format string, but will only be replaced with\n",
+ "# file name and new revision.\n",
+ "# It also generates multiple arguments for each file being operated upon.\n",
+- "# That is, if two files, file1 & file2, are being commited from 1.1 to\n",
++ "# That is, if two files, file1 & file2, are being committed from 1.1 to\n",
+ "# version 1.1.2.1 and from 1.1.2.2 to 1.1.2.3, respectively, %{sVv} will\n",
+ "# generate the following six arguments in this order:\n",
+ "# file1, 1.1, 1.1.2.1, file2, 1.1.2.2, 1.1.2.3.\n",
+@@ -124,13 +125,14 @@
+ "#\n",
+ "# Making sure that the entered bug-id number is correct.\n",
+ "# Validating that the code that was reviewed is indeed the code being\n",
+- "# checked in (using the bug-id number or a seperate review\n",
++ "# checked in (using the bug-id number or a separate review\n",
+ "# number to identify this particular code set.).\n",
+ "#\n",
+ "# If any of the above test failed, then the commit would be aborted.\n",
+ "#\n",
+ "# Format strings present in the filter will be replaced as follows:\n",
+ "# %c = canonical name of the command being executed\n",
++ "# %I = unique (randomly generated) commit ID\n",
+ #ifdef PROXY_SUPPORT
+ "# %R = the name of the referrer, if any, otherwise the value NONE\n",
+ #endif
+@@ -152,8 +154,8 @@
+
+ static const char *const commitinfo_contents[] = {
+ "# The \"commitinfo\" file is used to control pre-commit checks.\n",
+- "# The filter on the right is invoked with the repository and a list \n",
+- "# of files to check. A non-zero exit of the filter program will \n",
++ "# The filter on the right is invoked with the repository and a list\n",
++ "# of files to check. A non-zero exit of the filter program will\n",
+ "# cause the commit to be aborted.\n",
+ "#\n",
+ "# The first entry on a line is a regular expression which is tested\n",
+@@ -163,6 +165,7 @@
+ "#\n",
+ "# Format strings present in the filter will be replaced as follows:\n",
+ "# %c = canonical name of the command being executed\n",
++ "# %I = unique (randomly generated) commit ID\n",
+ #ifdef PROXY_SUPPORT
+ "# %R = the name of the referrer, if any, otherwise the value NONE\n",
+ #endif
+@@ -199,6 +202,7 @@
+ "# | \"N\" (not branch)\n",
+ "# %o = operation = \"add\" | \"mov\" | \"del\"\n",
+ "# %c = canonical name of the command being executed\n",
++ "# %I = unique (randomly generated) commit ID\n",
+ #ifdef PROXY_SUPPORT
+ "# %R = the name of the referrer, if any, otherwise the value NONE\n",
+ #endif
+@@ -245,6 +249,7 @@
+ "# If any format strings are present in the filter, they will be replaced\n",
+ "# as follows:\n",
+ "# %c = canonical name of the command being executed\n",
++ "# %I = unique (randomly generated) commit ID\n",
+ #ifdef PROXY_SUPPORT
+ "# %R = the name of the referrer, if any, otherwise the value NONE\n",
+ #endif
+@@ -271,6 +276,7 @@
+ "# If any format strings are present in the filter, they will be replaced\n",
+ "# as follows:\n",
+ "# %c = canonical name of the command being executed\n",
++ "# %I = unique (randomly generated) commit ID\n",
+ #ifdef PROXY_SUPPORT
+ "# %R = the name of the referrer, if any, otherwise the value NONE\n",
+ #endif
+@@ -299,6 +305,7 @@
+ "# If any format strings are present in the filter, they will be replaced\n",
+ "# as follows:\n",
+ "# %c = canonical name of the command being executed\n",
++ "# %I = unique (randomly generated) commit ID\n",
+ #ifdef PROXY_SUPPORT
+ "# %R = the name of the referrer, if any, otherwise the value NONE\n",
+ #endif
+@@ -328,6 +335,7 @@
+ "# | \"N\" (not branch)\n",
+ "# %o = operation = \"add\" | \"mov\" | \"del\"\n",
+ "# %c = canonical name of the command being executed\n",
++ "# %I = unique (randomly generated) commit ID\n",
+ #ifdef PROXY_SUPPORT
+ "# %R = the name of the referrer, if any, otherwise the value NONE\n",
+ #endif
+@@ -363,11 +371,12 @@
+
+ static const char *const postwatch_contents[] = {
+ "# The \"postwatch\" file is called after any command finishes writing new\n",
+- "# file attibute (watch/edit) information in a directory.\n",
++ "# file attribute (watch/edit) information in a directory.\n",
+ "#\n",
+ "# If any format strings are present in the filter, they will be replaced\n",
+ "# as follows:\n",
+ "# %c = canonical name of the command being executed\n",
++ "# %I = unique (randomly generated) commit ID\n",
+ #ifdef PROXY_SUPPORT
+ "# %R = the name of the referrer, if any, otherwise the value NONE\n",
+ #endif
+@@ -446,6 +455,7 @@
+ "#\n",
+ "# format strings are replaceed as follows:\n",
+ "# %c = canonical name of the command being executed\n",
++ "# %I = unique (randomly generated) commit ID\n",
+ #ifdef PROXY_SUPPORT
+ "# %R = the name of the referrer, if any, otherwise the value NONE\n",
+ #endif
+@@ -465,11 +475,10 @@
+ "# key [options] directory files...\n",
+ "#\n",
+ "# Where \"options\" are composed of:\n",
+- "# -i prog Run \"prog\" on \"cvs commit\" from top-level of module.\n",
+ "# -o prog Run \"prog\" on \"cvs checkout\" of module.\n",
+ "# -e prog Run \"prog\" on \"cvs export\" of module.\n",
++ "# -s status Assign a status to the module.\n",
+ "# -t prog Run \"prog\" on \"cvs rtag\" of module.\n",
+- "# -u prog Run \"prog\" on \"cvs update\" of module.\n",
+ "# -d dir Place module in directory \"dir\" instead of module name.\n",
+ "# -l Top-level directory only -- do not recurse.\n",
+ "#\n",
+@@ -489,67 +498,68 @@
+ };
+
+ static const char *const config_contents[] = {
+- "# Set `SystemAuth' to `no' if pserver shouldn't check system users/passwords.\n",
++ "# Set 'SystemAuth' to 'no' if pserver shouldn't check system users/passwords.\n",
+ "#SystemAuth=no\n",
+ "\n",
+- "# Set `LocalKeyword' to specify a local alias for a standard keyword.\n",
++ "# Set 'LocalKeyword' to specify a local alias for a standard keyword.\n",
+ "#LocalKeyword=MYCVS=CVSHeader\n",
+ "\n",
+- "# Set `KeywordExpand' to `i' followed by a list of keywords to expand or\n",
+- "# `e' followed by a list of keywords to not expand.\n"
+- "#KeywordExpand=iMYCVS,Name,Date\n",
++ "# Set 'KeywordExpand' to 'i' followed by a list of keywords to expand or\n",
++ "# 'e' followed by a list of keywords to not expand.\n"
++ "#KeywordExpand=iMYCVS,Name,Date,Mdocdate\n",
+ "#KeywordExpand=eCVSHeader\n",
+ "\n",
+ #ifdef PRESERVE_PERMISSIONS_SUPPORT
+- "# Set `PreservePermissions' to `yes' to save file status information\n",
++ "# Set 'PreservePermissions' to 'yes' to save file status information\n",
+ "# in the repository.\n",
+ "#PreservePermissions=no\n",
+ "\n",
+ #endif
+- "# Set `TopLevelAdmin' to `yes' to create a CVS directory at the top\n",
+- "# level of the new working directory when using the `cvs checkout'\n",
++ "# Set 'TopLevelAdmin' to 'yes' to create a CVS directory at the top\n",
++ "# level of the new working directory when using the 'cvs checkout'\n",
+ "# command.\n",
+ "#TopLevelAdmin=no\n",
+ "\n",
+ "# Put CVS lock files in this directory rather than directly in the repository.\n",
+ "#LockDir=/var/lock/cvs\n",
+ "\n",
+- "# Set `LogHistory' to `all' or `" ALL_HISTORY_REC_TYPES "' to log all transactions to the\n",
+- "# history file, or a subset as needed (ie `TMAR' logs all write operations)\n",
++ "# Set 'LogHistory' to 'all' or '" ALL_HISTORY_REC_TYPES "' to log all transactions to the\n",
++ "# history file, or a subset as needed (ie 'TMAR' logs all write operations)\n",
+ "#LogHistory=" ALL_HISTORY_REC_TYPES "\n",
++ "LogHistory=TMAR\n",
+ "\n",
+- "# Set `RereadLogAfterVerify' to `always' (the default) to allow the verifymsg\n",
+- "# script to change the log message. Set it to `stat' to force CVS to verify\n",
++ "# Set 'RereadLogAfterVerify' to 'always' (the default) to allow the verifymsg\n",
++ "# script to change the log message. Set it to 'stat' to force CVS to verify\n",
+ "# that the file has changed before reading it (this can take up to an extra\n",
+ "# second per directory being committed, so it is not recommended for large\n",
+- "# repositories. Set it to `never' (the previous CVS behavior) to prevent\n",
++ "# repositories. Set it to 'never' (the previous CVS behavior) to prevent\n",
+ "# verifymsg scripts from changing the log message.\n",
+ "#RereadLogAfterVerify=always\n",
+ "\n",
+- "# Set `UserAdminOptions' to the list of `cvs admin' commands (options)\n",
+- "# that users not in the `cvsadmin' group are allowed to run. This\n",
+- "# defaults to `k', or only allowing the changing of the default\n",
+- "# keyword expansion mode for files for users not in the `cvsadmin' group.\n",
+- "# This value is ignored if the `cvsadmin' group does not exist.\n",
++ "# Set 'UserAdminOptions' to the list of 'cvs admin' commands (options)\n",
++ "# that users not in the '_cvsadmin' group are allowed to run. This\n",
++ "# defaults to 'k', or only allowing the changing of the default\n",
++ "# keyword expansion mode for files for users not in the '_cvsadmin' group.\n",
++ "# This value is ignored if the '_cvsadmin' group does not exist.\n",
+ "#\n",
+- "# The following string would enable all `cvs admin' commands for all\n",
++ "# The following string would enable all 'cvs admin' commands for all\n",
+ "# users:\n",
+ "#UserAdminOptions=aAbceIklLmnNostuU\n",
+ #ifdef SUPPORT_OLD_INFO_FMT_STRINGS
+ "\n",
+- "# Set `UseNewInfoFmtStrings' to `no' if you must support a legacy system by\n",
++ "# Set 'UseNewInfoFmtStrings' to 'no' if you must support a legacy system by\n",
+ "# enabling the deprecated old style info file command line format strings.\n",
+ "# Be warned that these strings could be disabled in any new version of CVS.\n",
+ "UseNewInfoFmtStrings=yes\n",
+ #endif /* SUPPORT_OLD_INFO_FMT_STRINGS */
+ "\n",
+- "# Set `ImportNewFilesToVendorBranchOnly' to `yes' if you wish to force\n",
+- "# every `cvs import' command to behave as if the `-X' flag was\n",
++ "# Set 'ImportNewFilesToVendorBranchOnly' to 'yes' if you wish to force\n",
++ "# every 'cvs import' command to behave as if the '-X' flag was\n",
+ "# specified.\n",
+ "#ImportNewFilesToVendorBranchOnly=no\n",
+ #ifdef PROXY_SUPPORT
+ "\n",
+- "# Set `PrimaryServer' to the CVSROOT to the primary, or write, server when\n",
++ "# Set 'PrimaryServer' to the CVSROOT to the primary, or write, server when\n",
+ "# establishing one or more read-only mirrors which serve as proxies for\n",
+ "# the write server in write mode or redirect the client to the primary for\n",
+ "# write requests.\n",
+@@ -558,13 +568,13 @@
+ "#\n",
+ "# PrimaryServer=:fork:localhost/cvsroot\n",
+ "\n",
+- "# Set `MaxProxyBufferSize' to the the maximum allowable secondary\n",
++ "# Set 'MaxProxyBufferSize' to the the maximum allowable secondary\n",
+ "# buffer memory cache size before the buffer begins being stored to disk, in\n",
+- "# bytes. Must be a positive integer but may end in `k', `M', `G', or `T' (for\n",
+- "# kiilo, mega, giga, & tera, respectively). If an otherwise valid number you\n",
++ "# bytes. Must be a positive integer but may end in 'K', 'M', 'G', or 'T' (for\n",
++ "# Kibi, Mebi, Gibi, & Tebi, respectively). If an otherwise valid number you\n",
+ "# specify is greater than the SIZE_MAX defined by your system's C compiler,\n",
+ "# then it will be resolved to SIZE_MAX without a warning. Defaults to 8M (8\n",
+- "# megabytes).\n",
++ "# Mebibytes). The 'i' from 'Ki', 'Mi', etc. is omitted.\n",
+ "#\n",
+ "# High values for MaxProxyBufferSize may speed up a secondary server\n",
+ "# with old hardware and a lot of available memory but can actually slow a\n",
+@@ -575,23 +585,23 @@
+ "# MaxProxyBufferSize=1G\n",
+ #endif /* PROXY_SUPPORT */
+ "\n",
+- "# Set `MaxCommentLeaderLength' to the maximum length permitted for the\n",
++ "# Set 'MaxCommentLeaderLength' to the maximum length permitted for the\n",
+ "# automagically determined comment leader used when expanding the Log\n",
+ "# keyword, in bytes. CVS's behavior when the automagically determined\n",
+- "# comment leader exceeds this length is dependant on the value of\n",
+- "# `UseArchiveCommentLeader' set in this file. `unlimited' is a valid\n",
++ "# comment leader exceeds this length is dependent on the value of\n",
++ "# 'UseArchiveCommentLeader' set in this file. 'unlimited' is a valid\n",
+ "# setting for this value. Defaults to 20 bytes.\n",
+ "#\n",
+ "# For example:\n",
+ "#\n",
+ "# MaxCommentLeaderLength=20\n",
+ "\n",
+- "# Set `UseArchiveCommentLeader' to `yes' to cause CVS to fall back on\n",
++ "# Set 'UseArchiveCommentLeader' to 'yes' to cause CVS to fall back on\n",
+ "# the comment leader set in the RCS archive file, if any, when the\n",
+- "# automagically determined comment leader exceeds `MaxCommentLeaderLength'\n",
+- "# bytes. If `UseArchiveCommentLeader' is not set and a comment leader\n",
+- "# greater than `MaxCommentLeaderLength' is calculated, the Log keyword\n",
+- "# being examined will not be expanded. Defaults to `no'.\n",
++ "# automagically determined comment leader exceeds 'MaxCommentLeaderLength'\n",
++ "# bytes. If 'UseArchiveCommentLeader' is not set and a comment leader\n",
++ "# greater than 'MaxCommentLeaderLength' is calculated, the Log keyword\n",
++ "# being examined will not be expanded. Defaults to 'no'.\n",
+ "#\n",
+ "# For example:\n",
+ "#\n",
+@@ -816,7 +826,7 @@
+ }
+
+ if (restore_cwd (&cwd))
+- error (1, errno, "Failed to restore current directory, `%s'.",
++ error (1, errno, "Failed to restore current directory, '%s'.",
+ cwd.name);
+ free_cwd (&cwd);
+
+@@ -878,7 +888,7 @@
+ {
+ /* Probably not necessary (?); RCS_parsercsfile already printed a
+ message. */
+- error (0, 0, "Failed to parse `%s'.", rcs);
++ error (0, 0, "Failed to parse '%s'.", rcs);
+ free (rcs);
+ return 1;
+ }
+@@ -962,20 +972,22 @@
+ key.dptr = vp;
+ while (*vp && !isspace ((unsigned char) *vp))
+ vp++;
+- key.dsize = vp - key.dptr;
++ key.dsize = vp - (char *)key.dptr;
+ *vp++ = '\0'; /* NULL terminate the key */
+ while (*vp && isspace ((unsigned char) *vp))
+ vp++; /* skip whitespace to value */
+ if (*vp == '\0')
+ {
+- error (0, 0, "warning: NULL value for key `%s'", key.dptr);
++ error (0, 0, "warning: NULL value for key '%s'",
++ (char *)key.dptr);
+ continue;
+ }
+ val.dptr = vp;
+ val.dsize = strlen (vp);
+ if (dbm_store (db, key, val, DBM_INSERT) == 1)
+ {
+- error (0, 0, "duplicate key found for `%s'", key.dptr);
++ error (0, 0, "duplicate key found for '%s'",
++ (char *)key.dptr);
+ err++;
+ }
+ }
+@@ -1175,6 +1187,9 @@
+ which needs to be created. */
+ mkdir_if_needed (current_parsed_root->directory);
+
++ if (noexec)
++ return (0);
++
+ adm = Xasprintf ("%s/%s", current_parsed_root->directory, CVSROOTADM);
+ mkdir_if_needed (adm);
+
+@@ -1249,11 +1264,6 @@
+ fp = xfopen (info, "w");
+ if (fclose (fp) < 0)
+ error (1, errno, "cannot close %s", info);
+-
+- /* Make the new history file world-writeable, since every CVS
+- user will need to be able to write to it. We use chmod()
+- because xchmod() is too shy. */
+- chmod (info, 0666);
+ }
+
+ /* Make an empty val-tags file to prevent problems creating it later. */
+@@ -1267,11 +1277,6 @@
+ fp = xfopen (info, "w");
+ if (fclose (fp) < 0)
+ error (1, errno, "cannot close %s", info);
+-
+- /* Make the new val-tags file world-writeable, since every CVS
+- user will need to be able to write to it. We use chmod()
+- because xchmod() is too shy. */
+- chmod (info, 0666);
+ }
+
+ free (info);
+--- cvs-1.12.13+real.orig/src/modules.c
++++ cvs-1.12.13+real/src/modules.c
+@@ -450,7 +450,7 @@
+ case '?':
+ error (0, 0,
+ "modules file has invalid option for key %s value %s",
+- key.dptr, value);
++ (char *)key.dptr, value);
+ err++;
+ goto do_module_return;
+ }
+--- cvs-1.12.13+real.orig/src/parseinfo.c
++++ cvs-1.12.13+real/src/parseinfo.c
+@@ -230,7 +230,7 @@
+ return true;
+ }
+
+- /* Record the factor character (kilo, mega, giga, tera). */
++ /* Record the factor character (kibi, mebi, gibi, tebi). */
+ if (!isdigit (p[strlen(p) - 1]))
+ {
+ switch (p[strlen(p) - 1])
+@@ -241,16 +241,16 @@
+ factor = xtimes (factor, 1024);
+ case 'M':
+ factor = xtimes (factor, 1024);
+- case 'k':
++ case 'K':
+ factor = xtimes (factor, 1024);
+ break;
+ default:
+ error (0, 0,
+ "%s: Unknown %s factor: `%c'",
+- infopath, option, p[strlen(p)]);
++ infopath, option, p[strlen(p) - 1]);
+ return false;
+ }
+- TRACE (TRACE_DATA, "readSizeT(): Found factor %u for %s",
++ TRACE (TRACE_DATA, "readSizeT(): Found factor %zu for %s",
+ factor, option);
+ }
+
+@@ -274,9 +274,9 @@
+ /* Don't return an error, just max out. */
+ num = SIZE_MAX;
+
+- TRACE (TRACE_DATA, "readSizeT(): read number %u for %s", num, option);
++ TRACE (TRACE_DATA, "readSizeT(): read number %zu for %s", num, option);
+ *val = xtimes (strtoul (p, NULL, 10), factor);
+- TRACE (TRACE_DATA, "readSizeT(): returnning %u for %s", *val, option);
++ TRACE (TRACE_DATA, "readSizeT(): returnning %zu for %s", *val, option);
+ return true;
+ }
+
+@@ -298,7 +298,7 @@
+ new->MaxCompressionLevel = 9;
+ #endif /* SERVER_SUPPORT */
+ #ifdef PROXY_SUPPORT
+- new->MaxProxyBufferSize = (size_t)(8 * 1024 * 1024); /* 8 megabytes,
++ new->MaxProxyBufferSize = (size_t)(8 * 1024 * 1024); /* 8 mebibytes,
+ * by default.
+ */
+ #endif /* PROXY_SUPPORT */
+@@ -392,6 +392,9 @@
+ */
+ bool processing = true;
+ bool processed = true;
++#ifdef SERVER_SUPPORT
++ size_t dummy_sizet;
++#endif
+
+ TRACE (TRACE_FUNCTION, "parse_config (%s)", cvsroot);
+
+@@ -689,13 +692,44 @@
+ readBool (infopath, "UseArchiveCommentLeader", p,
+ &retval->UseArchiveCommentLeader);
+ #ifdef SERVER_SUPPORT
+- else if (!strcmp (line, "MinCompressionLevel"))
+- readSizeT (infopath, "MinCompressionLevel", p,
+- &retval->MinCompressionLevel);
+- else if (!strcmp (line, "MaxCompressionLevel"))
+- readSizeT (infopath, "MaxCompressionLevel", p,
+- &retval->MaxCompressionLevel);
++ else if (!strcmp (line, "MinCompressionLevel")) {
++ readSizeT (infopath, "MinCompressionLevel", p, &dummy_sizet);
++ retval->MinCompressionLevel = dummy_sizet;
++ }
++ else if (!strcmp (line, "MaxCompressionLevel")) {
++ readSizeT (infopath, "MaxCompressionLevel", p, &dummy_sizet);
++ retval->MaxCompressionLevel = dummy_sizet;
++ }
+ #endif /* SERVER_SUPPORT */
++ else if (!strcmp (line, "tag")) {
++ char *pp;
++
++ pp = Xasprintf("%s=Id", p);
++ RCS_setlocalid (infopath, ln, &retval->keywords, pp);
++ free(pp);
++
++#if !defined(LOCK_COMPATIBILITY) || !defined(SUPPORT_OLD_INFO_FMT_STRINGS)
++ error (0, 0, "%s: found keyword '%s' in repository",
++ infopath, line);
++ error (readonlyfs ? 0 : 1, 0, readonlyfs
++ ? "Danger: Granting read access to incompatible repository!"
++ : "Do not try to access a cvs 1.11 repository!");
++#endif
++ }
++#if !defined(LOCK_COMPATIBILITY) || !defined(SUPPORT_OLD_INFO_FMT_STRINGS)
++ else if ((!strcmp (line, "umask"))
++ || (!strcmp (line, "DisableXProg")) || (!strcmp (line, "dlimit"))
++ || (!strcmp (line, "forceReadOnlyFS"))) {
++ /* We are dealing with keywords removed between cvs 1.11.1p1
++ and cvs 1.12.10; odds are we are not being able to handle
++ access or concurrent access with 1.11 cvs correctly */
++ error (0, 0, "%s: found keyword '%s' in repository",
++ infopath, line);
++ error (readonlyfs ? 0 : 1, 0, readonlyfs
++ ? "Danger: Granting read access to incompatible repository!"
++ : "Do not try to access a cvs 1.11 repository!");
++ }
++#endif
+ else
+ /* We may be dealing with a keyword which was added in a
+ subsequent version of CVS. In that case it is a good idea
+--- cvs-1.12.13+real.orig/src/parseinfo.h
++++ cvs-1.12.13+real/src/parseinfo.h
+@@ -1,3 +1,5 @@
++/* $MirOS: src/gnu/usr.bin/cvs/src/parseinfo.h,v 1.4 2010/09/19 19:43:07 tg Exp $ */
++
+ /*
+ * Copyright (c) 2004 Derek Price, Ximbiot <http://ximbiot.com>,
+ * and the Free Software Foundation
+@@ -53,8 +55,8 @@
+ size_t MaxProxyBufferSize;
+ #endif /* PROXY_SUPPORT */
+ #ifdef SERVER_SUPPORT
+- size_t MinCompressionLevel;
+- size_t MaxCompressionLevel;
++ unsigned MinCompressionLevel;
++ unsigned MaxCompressionLevel;
+ #endif /* SERVER_SUPPORT */
+ #ifdef PRESERVE_PERMISSIONS_SUPPORT
+ bool preserve_perms;
+--- cvs-1.12.13+real.orig/src/patch.c
++++ cvs-1.12.13+real/src/patch.c
+@@ -46,13 +46,13 @@
+
+ static const char *const patch_usage[] =
+ {
+- "Usage: %s %s [-flR] [-c|-u] [-s|-t] [-V %%d] [-k kopt]\n",
++ "Usage: %s %s [-flR] [-c|-u[p]] [-s|-t] [-V %%d] [-k kopt]\n",
+ " -r rev|-D date [-r rev2 | -D date2] modules...\n",
+ "\t-f\tForce a head revision match if tag/date not found.\n",
+ "\t-l\tLocal directory only, not recursive\n",
+ "\t-R\tProcess directories recursively.\n",
+ "\t-c\tContext diffs (default)\n",
+- "\t-u\tUnidiff format.\n",
++ "\t-u\tUnidiff format (-p works the same as in diff).\n",
+ "\t-s\tShort patch - one liner per file.\n",
+ "\t-t\tTop two diffs - last change made to the file.\n",
+ "\t-V vers\tUse RCS Version \"vers\" for keyword expansion.\n",
+@@ -78,7 +78,7 @@
+ usage (patch_usage);
+
+ optind = 0;
+- while ((c = getopt (argc, argv, "+V:k:cuftsQqlRD:r:")) != -1)
++ while ((c = getopt (argc, argv, "+V:k:cupftsQqlRD:r:")) != -1)
+ {
+ switch (c)
+ {
+@@ -149,10 +149,13 @@
+ "the -V option is obsolete and should not be used");
+ break;
+ case 'u':
+- unidiff = 1; /* Unidiff */
++ unidiff |= 1; /* Unidiff */
+ break;
+ case 'c': /* Context diff */
+- unidiff = 0;
++ unidiff &= ~1;
++ break;
++ case 'p':
++ unidiff |= 2; /* Unidiff context */
+ break;
+ case '?':
+ default:
+@@ -167,6 +170,8 @@
+ if (argc < 1)
+ usage (patch_usage);
+
++ if (!(unidiff & 1))
++ unidiff = 0;
+ if (toptwo_diffs && patch_short)
+ error (1, 0, "-t and -s options are mutually exclusive");
+ if (toptwo_diffs && (date1 != NULL || date2 != NULL ||
+@@ -202,6 +207,8 @@
+ send_arg("-s");
+ if (unidiff)
+ send_arg("-u");
++ if (unidiff & 2)
++ send_arg("-p");
+
+ if (rev1)
+ option_with_arg ("-r", rev1);
+@@ -270,6 +277,7 @@
+ int which;
+ char *repository;
+ char *where;
++ char *cp;
+
+ TRACE ( TRACE_FUNCTION, "patch_proc ( %s, %s, %s, %d, %d, %s, %s )",
+ xwhere ? xwhere : "(null)",
+@@ -292,7 +300,6 @@
+ /* if mfile isn't null, we need to set up to do only part of the module */
+ if (mfile != NULL)
+ {
+- char *cp;
+ char *path;
+
+ /* if the portion of the module is a path, put the dir part on repos */
+@@ -342,14 +349,30 @@
+
+ if (rev1 != NULL && !rev1_validated)
+ {
+- tag_check_valid (rev1, argc - 1, argv + 1, local_specified, 0,
+- repository, false);
++ if ((cp = strchr(rev1, ':')) != NULL)
++ {
++ *cp++ = '\0';
++ date1 = Make_Date (cp);
++ if (*rev1 == '\0')
++ rev1 = NULL;
++ }
++ if (rev1)
++ tag_check_valid (rev1, argc - 1, argv + 1, local_specified, 0,
++ repository, false);
+ rev1_validated = 1;
+ }
+ if (rev2 != NULL && !rev2_validated)
+ {
+- tag_check_valid (rev2, argc - 1, argv + 1, local_specified, 0,
+- repository, false);
++ if ((cp = strchr(rev2, ':')) != NULL)
++ {
++ *cp++ = '\0';
++ date2 = Make_Date (cp);
++ if (*rev2 == '\0')
++ rev2 = NULL;
++ }
++ if (rev2)
++ tag_check_valid (rev2, argc - 1, argv + 1, local_specified, 0,
++ repository, false);
+ rev2_validated = 1;
+ }
+
+@@ -571,6 +594,7 @@
+
+ if (unidiff) run_add_arg_p (&dargc, &darg_allocated, &dargv, "-u");
+ else run_add_arg_p (&dargc, &darg_allocated, &dargv, "-c");
++ if (unidiff & 2) run_add_arg_p (&dargc, &darg_allocated, &dargv, "-p");
+ switch (diff_exec (tmpfile1, tmpfile2, NULL, NULL, dargc, dargv,
+ tmpfile3))
+ {
+@@ -671,7 +695,10 @@
+ program. */
+ if (unidiff)
+ {
+- cvs_output ("diff -u ", 0);
++ if (unidiff & 2)
++ cvs_output ("diff -up ", 0);
++ else
++ cvs_output ("diff -u ", 0);
+ cvs_output (file1, 0);
+ cvs_output (" ", 1);
+ cvs_output (file2, 0);
+--- cvs-1.12.13+real.orig/src/rcs.c
++++ cvs-1.12.13+real/src/rcs.c
+@@ -103,6 +103,7 @@
+ static char *truncate_revnum_in_place (char *);
+ static char *truncate_revnum (const char *);
+ static char *printable_date (const char *);
++static char *mdoc_date (const char *);
+ static char *escape_keyword_value (const char *, int *);
+ static void expand_keywords (RCSNode *, RCSVers *, const char *,
+ const char *, size_t, enum kflag, char *,
+@@ -2166,6 +2167,8 @@
+
+ if (! RCS_nodeisbranch (rcs, tag))
+ {
++ if (! strcmp (date, "BASE"))
++ return RCS_gettag (rcs, tag, force_tag_match, simple_tag);
+ /* We can't get a particular date if the tag is not a
+ branch. */
+ return NULL;
+@@ -2177,6 +2180,15 @@
+ else
+ branch = xstrdup (tag);
+
++ if (! strcmp (date, "BASE"))
++ {
++ /* Cut off the branch suffix and return. */
++ rev = strrchr (branch, '.');
++ if (rev)
++ *rev = '\0';
++ return branch;
++ }
++
+ /* Fetch the revision of branch as of date. */
+ rev = RCS_getdatebranch (rcs, date, branch);
+ free (branch);
+@@ -3120,6 +3132,7 @@
+ struct timespec revdate;
+ Node *p;
+ RCSVers *vers;
++ int y;
+
+ /* make sure we have something to look at... */
+ assert (rcs != NULL);
+@@ -3134,7 +3147,7 @@
+ vers = p->data;
+
+ /* split up the date */
+- if (sscanf (vers->date, SDATEFORM, &xtm.tm_year, &xtm.tm_mon,
++ if (sscanf (vers->date, SDATEFORM, &y, &xtm.tm_mon,
+ &xtm.tm_mday, &xtm.tm_hour, &xtm.tm_min, &xtm.tm_sec) != 6)
+ error (1, 0, "%s: invalid date for revision %s (%s)", rcs->print_path,
+ rev, vers->date);
+@@ -3144,15 +3157,14 @@
+ 2000+, RCS files contain all four digits and we subtract 1900,
+ because the tm_year field should contain years since 1900. */
+
+- if (xtm.tm_year >= 100 && xtm.tm_year < 2000)
++ if (y >= 100 && y < 2000)
+ error (0, 0, "%s: non-standard date format for revision %s (%s)",
+ rcs->print_path, rev, vers->date);
+- if (xtm.tm_year >= 1900)
+- xtm.tm_year -= 1900;
++ xtm.tm_year = y - ((y >= 1900) ? 1900 : 0);
+
+ /* put the date in a form getdate can grok */
+- tdate = Xasprintf ("%d-%d-%d %d:%d:%d -0000",
+- xtm.tm_year + 1900, xtm.tm_mon, xtm.tm_mday,
++ tdate = Xasprintf ("%ld-%d-%d %d:%d:%d -0000",
++ (long)xtm.tm_year + 1900, xtm.tm_mon, xtm.tm_mday,
+ xtm.tm_hour, xtm.tm_min, xtm.tm_sec);
+
+ /* Turn it into seconds since the epoch.
+@@ -3173,7 +3185,7 @@
+ /* Put an appropriate string into `date', if we were given one. */
+ ftm = gmtime (&revdate.tv_sec);
+ (void) sprintf (date, DATEFORM,
+- ftm->tm_year + (ftm->tm_year < 100 ? 0 : 1900),
++ (long)ftm->tm_year + (ftm->tm_year < 100 ? 0L : 1900L),
+ ftm->tm_mon + 1, ftm->tm_mday, ftm->tm_hour,
+ ftm->tm_min, ftm->tm_sec);
+ }
+@@ -3475,6 +3487,7 @@
+ KEYWORD_REVISION,
+ KEYWORD_SOURCE,
+ KEYWORD_STATE,
++ KEYWORD_MDOCDATE,
+ KEYWORD_LOCALID
+ };
+ struct rcs_keyword
+@@ -3511,6 +3524,7 @@
+ KEYWORD_INIT (new, KEYWORD_REVISION, "Revision");
+ KEYWORD_INIT (new, KEYWORD_SOURCE, "Source");
+ KEYWORD_INIT (new, KEYWORD_STATE, "State");
++ KEYWORD_INIT (new, KEYWORD_MDOCDATE, "Mdocdate");
+
+ return new;
+ }
+@@ -3544,6 +3558,30 @@
+
+
+
++/* Convert an RCS date string into an mdoc string. This is like
++ the RCS date2str function, but for manual pages. */
++static char *
++mdoc_date (const char *rcs_date)
++{
++ int year, mon, mday, hour, min, sec;
++ char buf[100];
++ const char *months[] = { "January", "February", "March", "April",
++ "May", "June", "July", "August",
++ "September", "October", "November", "December",
++ "corrupt" };
++
++ (void) sscanf (rcs_date, SDATEFORM, &year, &mon, &mday, &hour, &min,
++ &sec);
++ if (mon < 1 || mon > 12)
++ mon = 13;
++ if (year < 1900)
++ year += 1900;
++ sprintf (buf, "%s %d %04d", months[mon - 1], mday, year);
++ return xstrdup (buf);
++}
++
++
++
+ /* Escape the characters in a string so that it can be included in an
+ RCS value. */
+ static char *
+@@ -3680,13 +3718,13 @@
+ srch_len -= (srch_next + 1) - srch;
+ srch = srch_next + 1;
+
+- /* Look for the first non alphabetic character after the '$'. */
++ /* Look for the first non alphanumeric character after the '$'. */
+ send = srch + srch_len;
+ for (s = srch; s < send; s++)
+- if (! isalpha ((unsigned char) *s))
++ if (! isalnum ((unsigned char) *s))
+ break;
+
+- /* If the first non alphabetic character is not '$' or ':',
++ /* If the first non alphanumeric character is not '$' or ':',
+ then this is not an RCS keyword. */
+ if (s == send || (*s != '$' && *s != ':'))
+ continue;
+@@ -3741,6 +3779,11 @@
+ free_value = 1;
+ break;
+
++ case KEYWORD_MDOCDATE:
++ value = mdoc_date (ver->date);
++ free_value = 1;
++ break;
++
+ case KEYWORD_CVSHEADER:
+ case KEYWORD_HEADER:
+ case KEYWORD_ID:
+@@ -4177,6 +4220,9 @@
+ : (sout != RUN_TTY ? sout
+ : "(stdout)"))));
+
++ if (rev && *rev == '-')
++ ++rev;
++
+ assert (rev == NULL || isdigit ((unsigned char) *rev));
+
+ if (noexec && !server_active && workfile != NULL)
+@@ -5081,7 +5127,7 @@
+ (void) time (&modtime);
+ ftm = gmtime (&modtime);
+ delta->date = Xasprintf (DATEFORM,
+- ftm->tm_year + (ftm->tm_year < 100 ? 0 : 1900),
++ (long)ftm->tm_year + (ftm->tm_year < 100 ? 0L : 1900L),
+ ftm->tm_mon + 1, ftm->tm_mday, ftm->tm_hour,
+ ftm->tm_min, ftm->tm_sec);
+ if (flags & RCS_FLAGS_DEAD)
+@@ -7235,6 +7281,7 @@
+ /* Walk the deltas in RCS to get to revision VERSION.
+
+ If OP is RCS_ANNOTATE, then write annotations using cvs_output.
++ If OP is RCS_ANNOTATE_BACKWARDS, do the same backwards.
+
+ If OP is RCS_FETCH, then put the contents of VERSION into a
+ newly-malloc'd array and put a pointer to it in *TEXT. Each line
+@@ -7263,6 +7310,7 @@
+ RCSVers *vers;
+ RCSVers *prev_vers;
+ RCSVers *trunk_vers;
++ RCSVers *top_vers;
+ char *next;
+ int ishead, isnext, isversion, onbranch;
+ Node *node;
+@@ -7285,6 +7333,7 @@
+ vers = NULL;
+ prev_vers = NULL;
+ trunk_vers = NULL;
++ top_vers = NULL;
+ next = NULL;
+ onbranch = 0;
+ foundhead = 0;
+@@ -7332,12 +7381,28 @@
+ vers = node->data;
+ next = vers->next;
+
++ /* The top version is either HEAD or
++ the last version on the branch. */
++ if (top_vers == NULL ||
++ (onbranch && (op == RCS_ANNOTATE_BACKWARDS)))
++ top_vers = vers;
++
+ /* Compare key and trunkversion now, because key points to
+ storage controlled by rcsbuf_getkey. */
+ if (STREQ (branchversion, key))
+ isversion = 1;
+ else
+ isversion = 0;
++
++ /* If we are going back and up a branch, and this is
++ the version we should start annotating, we need to
++ clear out all accumulated annotations. */
++ if ((op == RCS_ANNOTATE_BACKWARDS) && onbranch && STREQ (version, key)) {
++ unsigned int ln;
++
++ for (ln = 0; ln < curlines.nlines; ++ln)
++ curlines.vector[ln]->vers = NULL;
++ }
+ }
+
+ while (1)
+@@ -7365,17 +7430,27 @@
+ rcsbuf_valpolish (rcsbuf, value, 0, &vallen);
+ if (ishead)
+ {
+- if (! linevector_add (&curlines, value, vallen, NULL, 0))
++ if (! linevector_add (&curlines, value, vallen,
++ (op == RCS_ANNOTATE_BACKWARDS) ? vers : NULL, 0))
+ error (1, 0, "invalid rcs file %s", rcs->print_path);
+
+ ishead = 0;
+ }
+ else if (isnext)
+ {
++ RCSVers *addv, *delv;
++
++ if (op == RCS_ANNOTATE_BACKWARDS) {
++ addv = onbranch ? NULL : prev_vers;
++ delv = onbranch ? vers : NULL;
++ } else {
++ addv = onbranch ? vers : NULL;
++ delv = onbranch ? NULL : prev_vers;
++ }
++
+ if (! apply_rcs_changes (&curlines, value, vallen,
+ rcs->path,
+- onbranch ? vers : NULL,
+- onbranch ? NULL : prev_vers))
++ addv, delv))
+ error (1, 0, "invalid change text in %s", rcs->print_path);
+ }
+ break;
+@@ -7384,6 +7459,14 @@
+
+ if (isversion)
+ {
++ /* If we're going backwards and not up a branch, and we
++ reached the version to start at, we're done. */
++ if ((op == RCS_ANNOTATE_BACKWARDS) && !onbranch && STREQ (version, key)) {
++ foundhead = 1;
++ linevector_copy (&headlines, &curlines);
++ break;
++ }
++
+ /* This is either the version we want, or it is the
+ branchpoint to the version we want. */
+ if (STREQ (branchversion, version))
+@@ -7391,7 +7474,9 @@
+ /* This is the version we want. */
+ linevector_copy (&headlines, &curlines);
+ foundhead = 1;
+- if (onbranch)
++ /* If we are annotating backwards, we have to
++ continue tracking when we're tracking a branch. */
++ if (onbranch && !(op == RCS_ANNOTATE_BACKWARDS))
+ {
+ /* We have found this version by tracking up a
+ branch. Restore back to the lines we saved
+@@ -7480,6 +7565,7 @@
+ switch (op)
+ {
+ case RCS_ANNOTATE:
++ case RCS_ANNOTATE_BACKWARDS:
+ {
+ unsigned int ln;
+
+--- cvs-1.12.13+real.orig/src/rcs.h
++++ cvs-1.12.13+real/src/rcs.h
+@@ -1,3 +1,5 @@
++/* $MirOS: src/gnu/usr.bin/cvs/src/rcs.h,v 1.5 2010/09/19 19:43:09 tg Exp $ */
++
+ /*
+ * Copyright (C) 1986-2005 The Free Software Foundation, Inc.
+ *
+@@ -33,7 +35,7 @@
+ CVS) will put this into RCS files. Considered obsolete. */
+ #define RCSDEAD "dead"
+
+-#define DATEFORM "%02d.%02d.%02d.%02d.%02d.%02d"
++#define DATEFORM "%02ld.%02d.%02d.%02d.%02d.%02d"
+ #define SDATEFORM "%d.%d.%d.%d.%d.%d"
+
+ /*
+@@ -189,7 +191,7 @@
+ struct rcsbuffer;
+
+ /* What RCS_deltas is supposed to do. */
+-enum rcs_delta_op {RCS_ANNOTATE, RCS_FETCH};
++enum rcs_delta_op {RCS_ANNOTATE, RCS_ANNOTATE_BACKWARDS, RCS_FETCH};
+
+ /*
+ * exported interfaces
+--- cvs-1.12.13+real.orig/src/root.c
++++ cvs-1.12.13+real/src/root.c
+@@ -265,6 +265,7 @@
+ directories. Then we can check against them when a remote user
+ hands us a CVSROOT directory. */
+ static List *root_allow;
++static List *root_allow_regexp;
+
+ static void
+ delconfig (Node *n)
+@@ -288,15 +289,65 @@
+ }
+
+ void
++root_allow_regexp_add (const char *arg, const char *configPath)
++{
++ Node *n;
++
++ if (!root_allow_regexp) root_allow_regexp = getlist();
++ n = getnode();
++ n->key = xstrdup (arg);
++
++ /* This is a regexp, not the final cvsroot path - we cannot attach
++ it a config. So we attach configPath and we'll root_allow_add()
++ the actual, matching root in root_allow_compare_regexp() */
++ n->data = (void*)configPath;
++
++ addnode (root_allow_regexp, n);
++}
++
++void
+ root_allow_free (void)
+ {
+ dellist (&root_allow);
++ dellist (&root_allow_regexp);
++}
++
++int
++root_allow_used (void)
++{
++ return root_allow || root_allow_regexp;
++}
++
++/* walklist() callback for determining if 'root_to_check' matches
++ n->key (a regexp). If yes, 'root_to_check' will be added as if
++ directly specified through --allow-root.
++ */
++static int
++root_allow_compare_regexp (Node *n, void *root_to_check)
++{
++ int status;
++ regex_t re;
++
++ if (regcomp(&re, n->key,
++ REG_EXTENDED|REG_NOSUB) != 0)
++ {
++ return 0; /* report error? */
++ }
++ status = regexec(&re, root_to_check, (size_t) 0, NULL, 0);
++ regfree(&re);
++ if (status == 0)
++ {
++ /* n->data contains gConfigPath */
++ root_allow_add (root_to_check, n->data);
++ return 1;
++ }
++ return 0;
+ }
+
+ bool
+ root_allow_ok (const char *arg)
+ {
+- if (!root_allow)
++ if (!root_allow_used())
+ {
+ /* Probably someone upgraded from CVS before 1.9.10 to 1.9.10
+ or later without reading the documentation about
+@@ -308,12 +359,18 @@
+ back "error" rather than waiting for the next request which
+ expects responses. */
+ printf ("\
+-error 0 Server configuration missing --allow-root in inetd.conf\n");
++error 0 Server configuration missing --allow-root or --allow-root-regexp in inetd.conf\n");
+ exit (EXIT_FAILURE);
+ }
+
++ /* Look for 'arg' in the list of full-path allowed roots */
+ if (findnode (root_allow, arg))
+ return true;
++
++ /* Match 'arg' against the list of allowed roots regexps */
++ if (walklist (root_allow_regexp, root_allow_compare_regexp, (void*)arg))
++ return true;
++
+ return false;
+ }
+
+@@ -535,6 +592,12 @@
+ method = "";
+ #endif /* defined (CLIENT_SUPPORT) || defined (SERVER_SUPPORT) */
+
++ if (NULL == method)
++ {
++ error (0, 0, "Missing method in CVSROOT.");
++ goto error_exit;
++ }
++
+ /* Now we have an access method -- see if it's valid. */
+
+ if (!strcasecmp (method, "local"))
+@@ -547,6 +610,16 @@
+ newroot->method = gserver_method;
+ else if (!strcasecmp (method, "server"))
+ newroot->method = server_method;
++ else if (strncmp (method, "ext=", 4) == 0)
++ {
++ newroot->cvs_rsh = xstrdup(method + 4);
++ newroot->method = ext_method;
++ }
++ else if (!strcasecmp (method, "extssh"))
++ {
++ newroot->cvs_rsh = xstrdup("ssh");
++ newroot->method = extssh_method;
++ }
+ else if (!strcasecmp (method, "ext"))
+ newroot->method = ext_method;
+ else if (!strcasecmp (method, "fork"))
+@@ -597,13 +670,15 @@
+ else if (!strcasecmp (p, "CVS_RSH"))
+ {
+ /* override CVS_RSH environment variable */
+- if (newroot->method == ext_method)
+- newroot->cvs_rsh = xstrdup (q);
++ if (newroot->method == ext_method
++ || newroot->method == extssh_method)
++ newroot->cvs_rsh = xstrdup (q);
+ }
+ else if (!strcasecmp (p, "CVS_SERVER"))
+ {
+ /* override CVS_SERVER environment variable */
+ if (newroot->method == ext_method
++ || newroot->method == extssh_method
+ || newroot->method == fork_method)
+ newroot->cvs_server = xstrdup (q);
+ }
+@@ -635,7 +710,8 @@
+ newroot->isremote = (newroot->method != local_method);
+
+ #if defined (CLIENT_SUPPORT) || defined (SERVER_SUPPORT)
+- if (readonlyfs && newroot->isremote)
++ if (readonlyfs && newroot->isremote && (newroot->method != ext_method)
++ && (newroot->method != extssh_method))
+ error (1, 0,
+ "Read-only repository feature unavailable with remote roots (cvsroot = %s)",
+ cvsroot_copy);
+@@ -828,6 +904,7 @@
+ case server_method:
+ case ext_method:
+ no_port = 1;
++ case extssh_method:
+ /* no_password already set */
+ check_hostname = 1;
+ break;
+@@ -871,8 +948,8 @@
+ if (no_port && newroot->port)
+ {
+ error (0, 0,
+-"CVSROOT port specification is only valid for gserver, kserver,");
+- error (0, 0, "and pserver connection methods.");
++"CVSROOT port specification is only valid for extssh,");
++ error (0, 0, "gserver, kserver and pserver connection methods.");
+ goto error_exit;
+ }
+ #endif /* defined(CLIENT_SUPPORT) || defined (SERVER_SUPPORT) */
+--- cvs-1.12.13+real.orig/src/root.h
++++ cvs-1.12.13+real/src/root.h
+@@ -1,3 +1,5 @@
++/* $MirOS: src/gnu/usr.bin/cvs/src/root.h,v 1.5 2017/01/08 19:13:05 tg Exp $ */
++
+ /*
+ * Copyright (C) 1986-2005 The Free Software Foundation, Inc.
+ *
+@@ -22,6 +24,7 @@
+ kserver_method,
+ gserver_method,
+ ext_method,
++ extssh_method,
+ fork_method
+ } CVSmethod;
+ extern const char method_names[][16]; /* change this in root.c if you change
+@@ -62,8 +65,10 @@
+ __attribute__ ((__malloc__));
+ void Create_Root (const char *dir, const char *rootdir);
+ void root_allow_add (const char *, const char *configPath);
++void root_allow_regexp_add (const char *, const char *configPath);
+ void root_allow_free (void);
+ bool root_allow_ok (const char *);
++int root_allow_used (void);
+ struct config *get_root_allow_config (const char *arg, const char *configPath);
+ const char *primary_root_translate (const char *root_in);
+ const char *primary_root_inverse_translate (const char *root_in);
+--- cvs-1.12.13+real.orig/src/rsh-client.c
++++ cvs-1.12.13+real/src/rsh-client.c
+@@ -53,9 +53,11 @@
+ char *cvs_server = (root->cvs_server != NULL
+ ? root->cvs_server : getenv ("CVS_SERVER"));
+ int i = 0;
+- /* This needs to fit "rsh", "-b", "-l", "USER", "host",
+- "cmd (w/ args)", and NULL. We leave some room to grow. */
+- char *rsh_argv[10];
++ /* This needs to fit "rsh", "-b", "-l", "USER", "-p", port,
++ "--", "host", "cvs", "-R", "server", and NULL.
++ We leave some room to grow. */
++ char *rsh_argv[16];
++ char argvport[16];
+
+ if (!cvs_rsh)
+ /* People sometimes suggest or assume that this should default
+@@ -97,8 +99,20 @@
+ rsh_argv[i++] = root->username;
+ }
+
++ if (root->method == extssh_method && root->port)
++ {
++ snprintf(argvport, sizeof(argvport), "%d", root->port);
++ rsh_argv[i++] = "-p";
++ rsh_argv[i++] = argvport;
++ }
++
++ /* Only non-option arguments from here. (CVE-2017-12836) */
++ rsh_argv[i++] = "--";
++
+ rsh_argv[i++] = root->hostname;
+ rsh_argv[i++] = cvs_server;
++ if (readonlyfs)
++ rsh_argv[i++] = "-R";
+ rsh_argv[i++] = "server";
+
+ /* Mark the end of the arg list. */
+@@ -154,10 +168,11 @@
+ * on the server machine does not set CVSROOT to something
+ * containing a colon (or better yet, upgrade the server).
+ */
+- command = Xasprintf ("%s server", cvs_server);
++ command = Xasprintf ("%s%s server", cvs_server, readonlyfs ? " -R" : "");
+
+ {
+- char *argv[10];
++ char argvport[16];
++ char *argv[16];
+ char **p = argv;
+
+ *p++ = cvs_rsh;
+@@ -171,6 +186,15 @@
+ *p++ = root->username;
+ }
+
++ if (root->method == extssh_method && root->port)
++ {
++ snprintf(argvport, sizeof(argvport), "%d", root->port);
++ *p++ = "-p";
++ *p++ = argvport;
++ }
++
++ *p++ = "--";
++
+ *p++ = root->hostname;
+ *p++ = command;
+ *p++ = NULL;
+--- cvs-1.12.13+real.orig/src/sanity.sh
++++ cvs-1.12.13+real/src/sanity.sh
+@@ -1,5 +1,9 @@
+ #! /bin/sh
+ :
++# $MirOS: src/gnu/usr.bin/cvs/src/sanity.sh,v 1.7 2017/01/08 21:14:34 tg Exp $
++#-
++# set DISABLE_ANY_RSH=1 to skip rsh and ssh calls
++#
+ # sanity.sh -- a growing testsuite for cvs.
+ #
+ # The copyright notice said: "Copyright (C) 1992, 1993 Cygnus Support"
+@@ -90,6 +94,23 @@
+ fi
+ }
+
++do_save_TZ()
++{
++ saveset_TZ=${TZ+false}
++ save_TZ=$TZ
++ TZ=UTC0; export TZ
++}
++
++do_restore_TZ()
++{
++ if $saveset_TZ :; then
++ unset TZ
++ else
++ TZ=$save_TZ
++ export TZ
++ fi
++}
++
+ # See TODO list at end of file.
+
+ # required to make this script work properly.
+@@ -1205,6 +1226,11 @@
+ # 77.
+ require_rsh ()
+ {
++ if test x"$DISABLE_ANY_RSH" = x"1"; then
++ skipreason="administratively prohibited"
++ return 77
++ fi
++
+ host=${remotehost-"`hostname`"}
+ result=`$1 $host 'echo test'`
+ rc=$?
+@@ -1313,7 +1339,7 @@
+ if $remote && $LS $TMPDIR/cvs-serv* >/dev/null 2>&1; then
+ # A true value means ls found files/directories with these names.
+ # Give the server some time to finish, then retry.
+- sleep 1
++ sleep 2
+ if $LS $TMPDIR/cvs-serv* >/dev/null 2>&1; then
+ warn "$1" "Found cvs-serv* directories in $TMPDIR."
+ # The above will exit if $skipfail
+@@ -1503,6 +1529,9 @@
+ # lack \|).
+ dotest ()
+ {
++ #echo dotest >$TESTDIR/_dotest.fun
++ #pwd >$TESTDIR/_dotest.cwd
++ #printf '%s\n' "$2" >$TESTDIR/_dotest.cmd
+ rm -f $TESTDIR/dotest.ex? 2>&1
+ eval "$2" >$TESTDIR/dotest.tmp 2>&1
+ status=$?
+@@ -1518,6 +1547,9 @@
+ # Like dotest except only 2 args and result must exactly match stdin
+ dotest_lit ()
+ {
++ #echo dotest_lit >$TESTDIR/_dotest.fun
++ #pwd >$TESTDIR/_dotest.cwd
++ #printf '%s\n' "$2" >$TESTDIR/_dotest.cmd
+ rm -f $TESTDIR/dotest.ex? 2>&1
+ eval "$2" >$TESTDIR/dotest.tmp 2>&1
+ status=$?
+@@ -1543,6 +1575,9 @@
+ # Like dotest except exitstatus should be nonzero.
+ dotest_fail ()
+ {
++ #echo dotest_fail >$TESTDIR/_dotest.fun
++ #pwd >$TESTDIR/_dotest.cwd
++ #printf '%s\n' "$2" >$TESTDIR/_dotest.cmd
+ rm -f $TESTDIR/dotest.ex? 2>&1
+ eval "$2" >$TESTDIR/dotest.tmp 2>&1
+ status=$?
+@@ -1558,6 +1593,9 @@
+ # Like dotest except output is sorted.
+ dotest_sort ()
+ {
++ #echo dotest_sort >$TESTDIR/_dotest.fun
++ #pwd >$TESTDIR/_dotest.cwd
++ #printf '%s\n' "$2" >$TESTDIR/_dotest.cmd
+ rm -f $TESTDIR/dotest.ex? 2>&1
+ eval "$2" >$TESTDIR/dotest.tmp1 2>&1
+ status=$?
+@@ -1574,6 +1612,9 @@
+ # Like dotest_fail except output is sorted.
+ dotest_fail_sort ()
+ {
++ #echo dotest_fail_sort >$TESTDIR/_dotest.fun
++ #pwd >$TESTDIR/_dotest.cwd
++ #printf '%s\n' "$2" >$TESTDIR/_dotest.cmd
+ rm -f $TESTDIR/dotest.ex? 2>&1
+ eval "$2" >$TESTDIR/dotest.tmp1 2>&1
+ status=$?
+@@ -1622,6 +1663,7 @@
+ tests="$tests parseroot parseroot2 parseroot3 files spacefiles"
+ tests="${tests} commit-readonly commit-add-missing"
+ tests="${tests} status"
++ tests="${tests} suck"
+ # Branching, tagging, removing, adding, multiple directories
+ tests="${tests} rdiff rdiff-short"
+ tests="${tests} rdiff2 diff diffnl death death2"
+@@ -2600,6 +2642,22 @@
+ ###
+ dotest init-1 "$testcvs init"
+
++# We might need to allow "cvs admin" access.
++mkdir wnt
++cd wnt
++dotest init-1a "$testcvs -q co CVSROOT" "[UP] CVSROOT${DOTSTAR}"
++cd CVSROOT
++sed -e 's/^#UserAdminOptions=/UserAdminOptions=/' \
++ -e '/^LogHistory/d' \
++ <config >tmpconfig
++mv tmpconfig config
++dotest init-1b "$testcvs -q ci -m allow-cvs-admin" "" \
++".*/CVSROOT/config,v <-- config
++new revision: 1\.[0-9]*; previous revision: 1\.[0-9]*
++$SPROG commit: Rebuilding administrative file database"
++cd ../..
++rm -r wnt
++
+ # Now hide the primary root behind a secondary if requested.
+ if $proxy; then
+ # Save the primary root.
+@@ -2726,7 +2784,7 @@
+ esac # \$dir
+
+ # Avoid timestamp comparison issues with rsync.
+-sleep 1
++sleep 2
+ EOF
+ chmod a+x $TESTDIR/sync-secondary
+
+@@ -2781,6 +2839,21 @@
+ ###
+ dotest init-2 "$testcvs init"
+
++# We might need to allow "cvs admin" access.
++mkdir wnt
++cd wnt
++dotest init-2a "$testcvs -q co CVSROOT" "[UP] CVSROOT${DOTSTAR}"
++cd CVSROOT
++sed -e 's/^#UserAdminOptions=/UserAdminOptions=/' \
++ -e '/^LogHistory/d' \
++ <config >tmpconfig
++mv tmpconfig config
++dotest init-2b "$testcvs -q ci -m allow-cvs-admin" "" \
++".*/CVSROOT/config,v <-- config
++new revision: 1\.[0-9]*; previous revision: 1\.[0-9]*
++$SPROG commit: Rebuilding administrative file database"
++cd ../..
++rm -r wnt
+
+
+ ###
+@@ -2805,6 +2878,7 @@
+
+ Copyright (C) [0-9]* Free Software Foundation, Inc.
+
++Portions contributed by Thorsten Glaser for the MirOS Project and Debian.
+ Senior active maintainers include Larry Jones, Derek R. Price,
+ and Mark D. Baushke. Please see the AUTHORS and README files from the CVS
+ distribution kit for a complete list of contributors and copyrights.
+@@ -2822,8 +2896,8 @@
+ #Secondary Server: Concurrent Versions System (CVS) [0-9p.]* (.*server)'
+ if $remote; then
+ dotest version-2r "${testcvs} version" \
+-'Client: Concurrent Versions System (CVS) [0-9p.]* (client.*)
+-Server: Concurrent Versions System (CVS) [0-9p.]* (.*server)'
++'Client: Concurrent Versions System (CVS) [0-9p.]*\(-Mir[^ ]*\)* (client.*)
++Server: Concurrent Versions System (CVS) [0-9p.]*\(-Mir[^ ]*\)* (.*server)'
+ else
+ dotest version-2 "${testcvs} version" \
+ 'Concurrent Versions System (CVS) [0-9.]*.*'
+@@ -2846,7 +2920,7 @@
+ dotest basica-0a "$testcvs -q co -l ."
+ mkdir first-dir
+ dotest basica-0b "$testcvs add first-dir" \
+-"Directory ${CVSROOT_DIRNAME}/first-dir added to the repository"
++"Directory ${CVSROOT_DIRNAME}/first-dir put under version control"
+ cd ..
+ rm -r 1
+
+@@ -2865,17 +2939,17 @@
+ # Remote CVS gives the "cannot open CVS/Entries" error, which is
+ # clearly a bug, but not a simple one to fix.
+ dotest basica-1a10 "$testcvs -n add sdir" \
+-"Directory $CVSROOT_DIRNAME/first-dir/sdir added to the repository" \
++"Directory $CVSROOT_DIRNAME/first-dir/sdir put under version control" \
+ "$SPROG add: cannot open CVS/Entries for reading: No such file or directory
+-Directory $CVSROOT_DIRNAME/first-dir/sdir added to the repository"
++Directory $CVSROOT_DIRNAME/first-dir/sdir put under version control"
+ dotest_fail basica-1a11 \
+ "test -d $CVSROOT_DIRNAME/first-dir/sdir"
+ dotest basica-2 "$testcvs add sdir" \
+-"Directory $CVSROOT_DIRNAME/first-dir/sdir added to the repository"
++"Directory $CVSROOT_DIRNAME/first-dir/sdir put under version control"
+ cd sdir
+ mkdir ssdir
+ dotest basica-3 "$testcvs add ssdir" \
+-"Directory $CVSROOT_DIRNAME/first-dir/sdir/ssdir added to the repository"
++"Directory $CVSROOT_DIRNAME/first-dir/sdir/ssdir put under version control"
+ cd ssdir
+ echo ssfile >ssfile
+
+@@ -3145,7 +3219,7 @@
+ dotest basicb-0d0 "${testcvs} -q co -l ." ""
+ mkdir first-dir
+ dotest basicb-0e "${testcvs} add first-dir" \
+-"Directory ${CVSROOT_DIRNAME}/first-dir added to the repository"
++"Directory ${CVSROOT_DIRNAME}/first-dir put under version control"
+ cd ..
+ rm -r 2
+
+@@ -3165,8 +3239,8 @@
+ # special only when it is directly in $CVSROOT/CVSROOT.
+ mkdir Emptydir sdir2
+ dotest basicb-2 "${testcvs} add Emptydir sdir2" \
+-"Directory ${CVSROOT_DIRNAME}/first-dir/Emptydir added to the repository
+-Directory ${CVSROOT_DIRNAME}/first-dir/sdir2 added to the repository"
++"Directory ${CVSROOT_DIRNAME}/first-dir/Emptydir put under version control
++Directory ${CVSROOT_DIRNAME}/first-dir/sdir2 put under version control"
+ cd Emptydir
+ echo sfile1 starts >sfile1
+ dotest basicb-2a10 "${testcvs} -n add sfile1" \
+@@ -3288,7 +3362,7 @@
+ dotest basicb-14 "${testcvs} -q co -l ." 'U topfile'
+ mkdir second-dir
+ dotest basicb-15 "${testcvs} add second-dir" \
+-"Directory ${CVSROOT_DIRNAME}/second-dir added to the repository"
++"Directory ${CVSROOT_DIRNAME}/second-dir put under version control"
+ cd second-dir
+ touch aa
+ dotest basicb-16 "${testcvs} add aa" \
+@@ -3327,10 +3401,15 @@
+ # many other folks are still using the older 'invalid option'
+ # lib/getopt.c will use POSIX when __posixly_correct
+ # otherwise the other, so accept both of them. -- mdb
++ # Added optional single quotes. -- mirabilos
++ # The above is actually untrue, POSIX only documents some older
++ # texts that can be used and explicitly leaves open the format
++ # of these messages. Also, GNU getopt is broken and does not
++ # use __progname in the first place. *sigh* -- mirabilos
+ dotest_fail basicb-21 "${testcvs} -q admin -H" \
+-"admin: invalid option -- H
++"admin: invalid option -- '*H'*
+ ${CPROG} \[admin aborted\]: specify ${CPROG} -H admin for usage information" \
+-"admin: illegal option -- H
++"cvs: illegal option -- '*H'*
+ ${CPROG} \[admin aborted\]: specify ${CPROG} -H admin for usage information"
+ cd ..
+ rmdir 1
+@@ -3356,8 +3435,8 @@
+ dotest basicc-2 "$testcvs -q co -l ."
+ mkdir first-dir second-dir
+ dotest basicc-3 "${testcvs} add first-dir second-dir" \
+-"Directory ${CVSROOT_DIRNAME}/first-dir added to the repository
+-Directory ${CVSROOT_DIRNAME}/second-dir added to the repository"
++"Directory ${CVSROOT_DIRNAME}/first-dir put under version control
++Directory ${CVSROOT_DIRNAME}/second-dir put under version control"
+ # Old versions of CVS often didn't create this top-level CVS
+ # directory in the first place. I think that maybe the only
+ # way to get it to work currently is to let CVS create it,
+@@ -3807,7 +3886,7 @@
+ for i in dir1 dir2 dir3 dir4 dir5 dir6 dir7 dir8; do
+ mkdir $i
+ dotest deep-2-$i "${testcvs} add $i" \
+-"Directory ${CVSROOT_DIRNAME}/first-dir/dir1[/dir0-9]* added to the repository"
++"Directory ${CVSROOT_DIRNAME}/first-dir/dir1[/dir0-9]* put under version control"
+ cd $i
+ echo file1 >file1
+ dotest deep-3-$i "${testcvs} add file1" \
+@@ -3924,7 +4003,7 @@
+ if test ! -d $i ; then
+ mkdir $i
+ dotest basic2-2-$i "${testcvs} add $i" \
+-"Directory ${CVSROOT_DIRNAME}/.*/$i added to the repository"
++"Directory ${CVSROOT_DIRNAME}/.*/$i put under version control"
+ fi
+
+ cd $i
+@@ -4907,14 +4986,14 @@
+
+ # try and list a file before it's created, during an old revision, in
+ # a period when it was dead and in the future
+- time_prebirth=`date '+%Y-%m-%d %H:%M:%S'` ; sleep 1
++ time_prebirth=`date '+%Y-%m-%d %H:%M:%S'` ; sleep 2
+ touch dated
+ dotest ls-D-init-1 "$testcvs -Q add dated"
+ dotest ls-D-init-2 "$testcvs -Q ci -mm dated"
+- time_newborn=`date '+%Y-%m-%d %H:%M:%S'` ; sleep 1
++ time_newborn=`date '+%Y-%m-%d %H:%M:%S'` ; sleep 2
+ echo mm >> dated
+ dotest ls-D-init-2 "$testcvs -Q ci -mm dated"
+- time_predeath=`date '+%Y-%m-%d %H:%M:%S'` ; sleep 1
++ time_predeath=`date '+%Y-%m-%d %H:%M:%S'` ; sleep 2
+ rm dated
+ dotest ls-D-init-3 "$testcvs -Q rm dated"
+ dotest ls-D-init-4 "$testcvs -Q ci -mm dated"
+@@ -4963,7 +5042,6 @@
+ CVSROOT=":pserver;proxy=localhost;proxyport=8080:localhost/dev/null"
+ dotest parseroot-3r "$testcvs -d'$CVSROOT' logout" \
+ "Logging out of :pserver:$username@localhost:2401/dev/null
+-$CPROG logout: warning: failed to open $HOME/\.cvspass for reading: No such file or directory
+ $CPROG logout: Entry not found."
+ CVSROOT=":pserver;proxyport=8080:localhost/dev/null"
+ dotest_fail parseroot-4r "$testcvs -d'$CVSROOT' logout" \
+@@ -5010,7 +5088,7 @@
+ dotest files-1 "${testcvs} -q co -l ." ""
+ mkdir first-dir
+ dotest files-2 "${testcvs} add first-dir" \
+-"Directory ${CVSROOT_DIRNAME}/first-dir added to the repository"
++"Directory ${CVSROOT_DIRNAME}/first-dir put under version control"
+ cd first-dir
+ touch tfile
+ dotest files-3 "${testcvs} add tfile" \
+@@ -5023,7 +5101,7 @@
+ dotest files-6 "${testcvs} -q update -r C" ""
+ mkdir dir
+ dotest files-7 "${testcvs} add dir" \
+-"Directory ${CVSROOT_DIRNAME}/first-dir/dir added to the repository
++"Directory ${CVSROOT_DIRNAME}/first-dir/dir put under version control
+ --> Using per-directory sticky tag .C'"
+ cd dir
+ touch .file
+@@ -5032,12 +5110,12 @@
+ ${SPROG} add: use .${SPROG} commit. to add this file permanently"
+ mkdir sdir
+ dotest files-7c "${testcvs} add sdir" \
+-"Directory ${CVSROOT_DIRNAME}/first-dir/dir/sdir added to the repository
++"Directory ${CVSROOT_DIRNAME}/first-dir/dir/sdir put under version control
+ --> Using per-directory sticky tag .C'"
+ cd sdir
+ mkdir ssdir
+ dotest files-8 "${testcvs} add ssdir" \
+-"Directory ${CVSROOT_DIRNAME}/first-dir/dir/sdir/ssdir added to the repository
++"Directory ${CVSROOT_DIRNAME}/first-dir/dir/sdir/ssdir put under version control
+ --> Using per-directory sticky tag .C'"
+ cd ssdir
+ touch .file
+@@ -5117,10 +5195,10 @@
+ initial revision: 1\.1"
+ mkdir 'first dir'
+ dotest spacefiles-4 "${testcvs} add 'first dir'" \
+-"Directory ${CVSROOT_DIRNAME}/first dir added to the repository"
++"Directory ${CVSROOT_DIRNAME}/first dir put under version control"
+ mkdir ./-b
+ dotest spacefiles-5 "${testcvs} add -- -b" \
+-"Directory ${CVSROOT_DIRNAME}/-b added to the repository"
++"Directory ${CVSROOT_DIRNAME}/-b put under version control"
+ cd 'first dir'
+ touch 'a file'
+ dotest spacefiles-6 "${testcvs} add 'a file'" \
+@@ -5193,7 +5271,7 @@
+ dotest status-init-1 "$testcvs -q co -l ."
+ mkdir first-dir
+ dotest status-init-2 "${testcvs} add first-dir" \
+-"Directory ${CVSROOT_DIRNAME}/first-dir added to the repository"
++"Directory ${CVSROOT_DIRNAME}/first-dir put under version control"
+ cd first-dir
+ echo a line >tfile
+ dotest status-init-3 "${testcvs} add tfile" \
+@@ -5285,7 +5363,7 @@
+ cd ..
+ mkdir fourth-dir
+ dotest status-init-8 "$testcvs add fourth-dir" \
+-"Directory $CVSROOT_DIRNAME/fourth-dir added to the repository"
++"Directory $CVSROOT_DIRNAME/fourth-dir put under version control"
+ cd fourth-dir
+ echo yet another line >t3file
+ dotest status-init-9 "$testcvs add t3file" \
+@@ -5297,7 +5375,7 @@
+ cd ../first-dir
+ mkdir third-dir
+ dotest status-init-11 "$testcvs add third-dir" \
+-"Directory $CVSROOT_DIRNAME/first-dir/third-dir added to the repository"
++"Directory $CVSROOT_DIRNAME/first-dir/third-dir put under version control"
+ cd third-dir
+ echo another line >t2file
+ dotest status-init-12 "$testcvs add t2file" \
+@@ -5650,7 +5728,7 @@
+ dotest diff-1 "$testcvs -q co -l ."
+ mkdir first-dir
+ dotest diff-2 "$testcvs add first-dir" \
+-"Directory $CVSROOT_DIRNAME/first-dir added to the repository"
++"Directory $CVSROOT_DIRNAME/first-dir put under version control"
+ cd first-dir
+
+ # diff is anomalous. Most CVS commands print the "nothing
+@@ -5697,7 +5775,7 @@
+ dotest diffnl-000 "${testcvs} -q co -l ." ''
+ mkdir first-dir
+ dotest diffnl-001 "${testcvs} add first-dir" \
+-"Directory ${CVSROOT_DIRNAME}/first-dir added to the repository"
++"Directory ${CVSROOT_DIRNAME}/first-dir put under version control"
+ cd first-dir
+
+ ${AWK} 'BEGIN {printf("one\ntwo\nthree\nfour\nfive\nsix")}' </dev/null >abc
+@@ -5861,7 +5939,7 @@
+ # doesn't get confused by it.
+ mkdir subdir
+ dotest 65a0 "${testcvs} add subdir" \
+-"Directory ${CVSROOT_DIRNAME}/first-dir/subdir added to the repository"
++"Directory ${CVSROOT_DIRNAME}/first-dir/subdir put under version control"
+ cd subdir
+ echo file in subdir >sfile
+ dotest 65a1 "${testcvs} add sfile" \
+@@ -6590,7 +6668,7 @@
+ dotest rmadd-1 "$testcvs -q co -l ."
+ mkdir first-dir
+ dotest rmadd-2 "${testcvs} add first-dir" \
+-"Directory ${CVSROOT_DIRNAME}/first-dir added to the repository"
++"Directory ${CVSROOT_DIRNAME}/first-dir put under version control"
+ cd first-dir
+ echo first file1 >file1
+ dotest rmadd-3 "${testcvs} add file1" \
+@@ -6668,6 +6746,7 @@
+ >$CVSROOT_DIRNAME/CVSROOT/val-tags-tmp
+ mv $CVSROOT_DIRNAME/CVSROOT/val-tags-tmp \
+ $CVSROOT_DIRNAME/CVSROOT/val-tags
++ rm -f $CVSROOT_DIRNAME/CVSROOT/val-tags.db
+
+ dotest rmadd-18 "$testcvs -q update -p -r mynonbranch file1" \
+ "first file1"
+@@ -6733,7 +6812,7 @@
+ # now try forced revision with recursion
+ mkdir sub
+ dotest rmadd-26 "${testcvs} -q add sub" \
+-"Directory ${CVSROOT_DIRNAME}/first-dir/sub added to the repository"
++"Directory ${CVSROOT_DIRNAME}/first-dir/sub put under version control"
+ echo hello >sub/subfile
+ dotest rmadd-27 "${testcvs} -q add sub/subfile" \
+ "${SPROG} add: use .${SPROG} commit. to add this file permanently"
+@@ -6790,7 +6869,7 @@
+ dotest rmadd2-1 "${testcvs} -q co -l ." ''
+ mkdir first-dir
+ dotest rmadd2-2 "${testcvs} add first-dir" \
+-"Directory ${CVSROOT_DIRNAME}/first-dir added to the repository"
++"Directory ${CVSROOT_DIRNAME}/first-dir put under version control"
+ cd first-dir
+ echo 'initial contents' >file1
+ dotest rmadd2-3 "${testcvs} add file1" \
+@@ -6890,7 +6969,7 @@
+ dotest rmadd3-init1 "${testcvs} -q co -l ." ''
+ mkdir first-dir
+ dotest rmadd3-init2 "${testcvs} add first-dir" \
+-"Directory ${CVSROOT_DIRNAME}/first-dir added to the repository"
++"Directory ${CVSROOT_DIRNAME}/first-dir put under version control"
+ cd first-dir
+
+ echo initial content for file1 >file1
+@@ -6941,7 +7020,7 @@
+ dotest resurrection-init1 "$testcvs -q co -l ." ''
+ mkdir first-dir
+ dotest resurrection-init2 "$testcvs add first-dir" \
+-"Directory $CVSROOT_DIRNAME/first-dir added to the repository"
++"Directory $CVSROOT_DIRNAME/first-dir put under version control"
+ cd first-dir
+
+ echo initial content for file1 >file1
+@@ -7106,11 +7185,11 @@
+ dotest dirs2-1 "$testcvs -q co -l ."
+ mkdir first-dir
+ dotest dirs2-2 "${testcvs} add first-dir" \
+-"Directory ${CVSROOT_DIRNAME}/first-dir added to the repository"
++"Directory ${CVSROOT_DIRNAME}/first-dir put under version control"
+ cd first-dir
+ mkdir sdir
+ dotest dirs2-3 "${testcvs} add sdir" \
+-"Directory ${CVSROOT_DIRNAME}/first-dir/sdir added to the repository"
++"Directory ${CVSROOT_DIRNAME}/first-dir/sdir put under version control"
+ touch sdir/file1
+ dotest dirs2-4 "${testcvs} add sdir/file1" \
+ "${SPROG} add: scheduling file .sdir/file1. for addition
+@@ -7452,7 +7531,7 @@
+ '"${SPROG}"' add: use .'"${SPROG}"' commit. to add this file permanently'
+ mkdir dir1
+ dotest branches2-9 "${testcvs} add dir1" \
+-"Directory ${CVSROOT_DIRNAME}/first-dir/dir1 added to the repository
++"Directory ${CVSROOT_DIRNAME}/first-dir/dir1 put under version control
+ --> Using per-directory sticky tag "'`'"b1'"
+ echo "file3 first revision" > dir1/file3
+ dotest branches2-10 "${testcvs} add dir1/file3" \
+@@ -7802,7 +7881,7 @@
+ cd first-dir
+ mkdir dir2
+ dotest branches2-25 "${testcvs} add dir2" \
+-"Directory ${CVSROOT_DIRNAME}/first-dir/dir2 added to the repository
++"Directory ${CVSROOT_DIRNAME}/first-dir/dir2 put under version control
+ --> Using per-directory sticky tag "'`'"b1'"
+ echo "file4 first revision" > dir2/file4
+ dotest branches2-26 "${testcvs} add dir2/file4" \
+@@ -7952,10 +8031,10 @@
+ cd first-dir
+ mkdir branches mixed mixed2 versions
+ dotest branches4-2 "${testcvs} -q add branches mixed mixed2 versions" \
+-"Directory ${CVSROOT_DIRNAME}/first-dir/branches added to the repository
+-Directory ${CVSROOT_DIRNAME}/first-dir/mixed added to the repository
+-Directory ${CVSROOT_DIRNAME}/first-dir/mixed2 added to the repository
+-Directory ${CVSROOT_DIRNAME}/first-dir/versions added to the repository"
++"Directory ${CVSROOT_DIRNAME}/first-dir/branches put under version control
++Directory ${CVSROOT_DIRNAME}/first-dir/mixed put under version control
++Directory ${CVSROOT_DIRNAME}/first-dir/mixed2 put under version control
++Directory ${CVSROOT_DIRNAME}/first-dir/versions put under version control"
+
+ echo file1 >branches/file1
+ echo file2 >branches/file2
+@@ -8031,7 +8110,7 @@
+ dotest tagc-1 "${testcvs} -q co -l ." ''
+ mkdir first-dir
+ dotest tagc-2 "${testcvs} add first-dir" \
+-"Directory ${CVSROOT_DIRNAME}/first-dir added to the repository"
++"Directory ${CVSROOT_DIRNAME}/first-dir put under version control"
+ cd first-dir
+ touch file1 file2
+ dotest tagc-3 "${testcvs} add file1 file2" \
+@@ -8052,7 +8131,7 @@
+ T file2"
+ # Avoid timestamp granularity bugs (FIXME: CVS should be
+ # doing the sleep, right?).
+- sleep 1
++ sleep 2
+ echo myedit >>file1
+ dotest tagc-6a "${testcvs} rm -f file2" \
+ "${SPROG} remove: scheduling .file2. for removal
+@@ -8193,7 +8272,7 @@
+ dotest tagf-1 "${testcvs} -q co -l ." ''
+ mkdir first-dir
+ dotest tagf-2 "${testcvs} add first-dir" \
+-"Directory ${CVSROOT_DIRNAME}/first-dir added to the repository"
++"Directory ${CVSROOT_DIRNAME}/first-dir put under version control"
+ cd first-dir
+ touch file1 file2
+ dotest tagf-3 "${testcvs} add file1 file2" \
+@@ -8397,7 +8476,7 @@
+ dotest tag-space-init-1 "$testcvs -q co -l ."
+ mkdir first-dir
+ dotest tag-space-init-2 "$testcvs add first-dir" \
+-"Directory $CVSROOT_DIRNAME/first-dir added to the repository"
++"Directory $CVSROOT_DIRNAME/first-dir put under version control"
+ cd first-dir
+ touch file1
+ dotest tag-space-init-3 "$testcvs add file1" \
+@@ -8672,7 +8751,7 @@
+ dotest rcslib-merge-1 "$testcvs -q co -l ."
+ mkdir first-dir
+ dotest rcslib-merge-2 "$testcvs -q add first-dir" \
+-"Directory $CVSROOT_DIRNAME.*/first-dir added to the repository"
++"Directory $CVSROOT_DIRNAME.*/first-dir put under version control"
+ cd ..; rm -r 1
+
+ dotest rcslib-merge-3 "$testcvs -q co first-dir" ""
+@@ -9320,8 +9399,7 @@
+ # Also the -d option.
+
+ # Set a predictable time zone for these tests.
+- save_TZ=$TZ
+- TZ=UTC0; export TZ
++ do_save_TZ
+
+ mkdir 1; cd 1
+ mkdir adir bdir cdir
+@@ -9444,7 +9522,7 @@
+ dotest_fail importc-12 "test -d ${TESTDIR}/other" ""
+
+ dokeep
+- TZ=$save_TZ
++ do_restore_TZ
+ cd ..
+ rm -r 1 2
+ modify_repo rm -rf $CVSROOT_DIRNAME/first-dir
+@@ -9757,7 +9835,19 @@
+ N import-quirks-4/file1
+ N import-quirks-4/file2
+ N import-quirks-4/file3
+-No conflicts created by this import"
++No conflicts created by this import
++cvs import: warning: you are using an even vendor branch, which can
++lead to problems: '1.1.2'. Use an odd branch such as '1.1.3' instead." \
++"
++
++N import-quirks-4/file1
++N import-quirks-4/file2
++N import-quirks-4/file3
++No conflicts created by this import
++cvs import: warning: you are using an even vendor branch, which can
++cvs import: warning: you are using an even vendor branch, which can
++lead to problems: '1.1.2'. Use an odd branch such as '1.1.3' instead.
++lead to problems: '1.1.2'. Use an odd branch such as '1.1.3' instead."
+
+ dokeep
+ cd ..
+@@ -9785,14 +9875,18 @@
+ # Create the module.
+ dotest import-after-initial-1 \
+ "$testcvs -Q import -m. $module X Y" ''
++ sync >/dev/null 2>&1
+
+ file=m
+ # Check it out and add a file.
+ dotest import-after-initial-2 "$testcvs -Q co $module" ''
++ sync >/dev/null 2>&1
+ cd $module
+ echo original > $file
+ dotest import-after-initial-3 "${testcvs} -Q add $file" ""
++ sync >/dev/null 2>&1
+ dotest import-after-initial-4 "$testcvs -Q ci -m. $file"
++ sync >/dev/null 2>&1
+
+ # Delay a little so the following import isn't done in the same
+ # second as the preceding commit.
+@@ -9803,12 +9897,14 @@
+ mkdir sub
+ cd sub
+ echo newer-via-import > $file
++ sync >/dev/null 2>&1
+ dotest import-after-initial-5 \
+ "$testcvs -Q import -m. $module X Y2" ''
++ sync >/dev/null 2>&1
+ cd ..
+
+ # Sleep a second so we're sure to be after the second of the import.
+- sleep 1
++ sleep 2
+
+ dotest import-after-initial-6 \
+ "$testcvs -Q update -p -D now $file" 'original'
+@@ -10380,7 +10476,7 @@
+ dotest join2-1 "${testcvs} -q co -l ." ''
+ mkdir first-dir
+ dotest join2-2 "${testcvs} add first-dir" \
+-"Directory ${CVSROOT_DIRNAME}/first-dir added to the repository"
++"Directory ${CVSROOT_DIRNAME}/first-dir put under version control"
+ cd first-dir
+ echo 'initial contents of file1' >file1
+ dotest join2-3 "${testcvs} add file1" \
+@@ -10489,7 +10585,7 @@
+ dotest join3-1 "${testcvs} -q co -l ." ''
+ mkdir first-dir
+ dotest join3-2 "${testcvs} add first-dir" \
+-"Directory ${CVSROOT_DIRNAME}/first-dir added to the repository"
++"Directory ${CVSROOT_DIRNAME}/first-dir put under version control"
+ cd first-dir
+ echo 'initial contents of file1' >file1
+ dotest join3-3 "${testcvs} add file1" \
+@@ -11130,7 +11226,7 @@
+ module=x
+ mkdir $module
+ dotest join-admin-0-2 "$testcvs -q add $module" \
+-"Directory $CVSROOT_DIRNAME/$module added to the repository"
++"Directory $CVSROOT_DIRNAME/$module put under version control"
+ cd $module
+
+ # Create a file so applying the first tag works.
+@@ -11182,7 +11278,7 @@
+ module=x
+ mkdir $module
+ dotest join-admin-2-2 "$testcvs -q add $module" \
+-"Directory ${CVSROOT_DIRNAME}/x added to the repository"
++"Directory ${CVSROOT_DIRNAME}/x put under version control"
+ cd $module
+
+ # Create a file so applying the first tag works.
+@@ -11252,7 +11348,7 @@
+ dotest join-rm-init-1 "$testcvs -q co -l ." ''
+ mkdir $module
+ dotest join-rm-init-2 "$testcvs -q add $module" \
+-"Directory $CVSROOT_DIRNAME/$module added to the repository"
++"Directory $CVSROOT_DIRNAME/$module put under version control"
+ cd $module
+
+ # add some files.
+@@ -11497,7 +11593,7 @@
+ echo add a line >>a
+ mkdir dir1
+ dotest conflicts-127b "${testcvs} add dir1" \
+-"Directory ${CVSROOT_DIRNAME}/first-dir/dir1 added to the repository"
++"Directory ${CVSROOT_DIRNAME}/first-dir/dir1 put under version control"
+ dotest conflicts-128 "${testcvs} -q ci -m changed" \
+ "$CVSROOT_DIRNAME/first-dir/a,v <-- a
+ new revision: 1\.2; previous revision: 1\.1"
+@@ -11945,7 +12041,7 @@
+ dotest conflicts3-1 "$testcvs -q co -l ."
+ mkdir first-dir
+ dotest conflicts3-2 "${testcvs} add first-dir" \
+-"Directory ${CVSROOT_DIRNAME}/first-dir added to the repository"
++"Directory ${CVSROOT_DIRNAME}/first-dir put under version control"
+ cd ..
+ mkdir 2; cd 2
+ dotest conflicts3-3 "${testcvs} -q co -l first-dir" ''
+@@ -11994,7 +12090,7 @@
+ # and see that CVS doesn't lose its mind.
+ mkdir sdir
+ dotest conflicts3-14 "${testcvs} add sdir" \
+-"Directory ${CVSROOT_DIRNAME}/first-dir/sdir added to the repository"
++"Directory ${CVSROOT_DIRNAME}/first-dir/sdir put under version control"
+ touch sdir/sfile
+ dotest conflicts3-14a "${testcvs} add sdir/sfile" \
+ "${SPROG} add: scheduling file .sdir/sfile. for addition
+@@ -12107,7 +12203,7 @@
+ dotest clean-1 "${testcvs} -q co -l ." ''
+ mkdir first-dir
+ dotest clean-2 "${testcvs} add first-dir" \
+-"Directory ${CVSROOT_DIRNAME}/first-dir added to the repository"
++"Directory ${CVSROOT_DIRNAME}/first-dir put under version control"
+ cd first-dir
+ echo "The usual boring test text." > cleanme.txt
+ dotest clean-3 "${testcvs} add cleanme.txt" \
+@@ -12437,12 +12533,12 @@
+ cd first-dir
+ mkdir subdir
+ dotest modules-143a "${testcvs} add subdir" \
+-"Directory ${CVSROOT_DIRNAME}/first-dir/subdir added to the repository"
++"Directory ${CVSROOT_DIRNAME}/first-dir/subdir put under version control"
+
+ cd subdir
+ mkdir ssdir
+ dotest modules-143b "${testcvs} add ssdir" \
+-"Directory ${CVSROOT_DIRNAME}/first-dir/subdir/ssdir added to the repository"
++"Directory ${CVSROOT_DIRNAME}/first-dir/subdir/ssdir put under version control"
+
+ touch a b
+
+@@ -12699,9 +12795,9 @@
+ mkdir first-dir second-dir third-dir
+ dotest modules2-setup-2 \
+ "${testcvs} add first-dir second-dir third-dir" \
+-"Directory ${CVSROOT_DIRNAME}/first-dir added to the repository
+-Directory ${CVSROOT_DIRNAME}/second-dir added to the repository
+-Directory ${CVSROOT_DIRNAME}/third-dir added to the repository"
++"Directory ${CVSROOT_DIRNAME}/first-dir put under version control
++Directory ${CVSROOT_DIRNAME}/second-dir put under version control
++Directory ${CVSROOT_DIRNAME}/third-dir put under version control"
+ cd third-dir
+ touch file3
+ dotest modules2-setup-3 "${testcvs} add file3" \
+@@ -12947,7 +13043,7 @@
+ dotest modules3-0 "$testcvs -q co -l ."
+ mkdir first-dir
+ dotest modules3-1 "${testcvs} add first-dir" \
+-"Directory ${CVSROOT_DIRNAME}/first-dir added to the repository"
++"Directory ${CVSROOT_DIRNAME}/first-dir put under version control"
+
+ cd first-dir
+ echo file1 >file1
+@@ -13008,11 +13104,11 @@
+ cd second-dir
+ mkdir suba
+ dotest modules3-7-workaround1 "${testcvs} add suba" \
+-"Directory ${CVSROOT_DIRNAME}/second-dir/suba added to the repository"
++"Directory ${CVSROOT_DIRNAME}/second-dir/suba put under version control"
+ cd suba
+ mkdir subb
+ dotest modules3-7-workaround2 "${testcvs} add subb" \
+-"Directory ${CVSROOT_DIRNAME}/second-dir/suba/subb added to the repository"
++"Directory ${CVSROOT_DIRNAME}/second-dir/suba/subb put under version control"
+ cd ../..
+ fi
+
+@@ -13113,13 +13209,13 @@
+ dotest modules4-1 "${testcvs} -q co -l ." ''
+ mkdir first-dir
+ dotest modules4-2 "${testcvs} add first-dir" \
+-"Directory ${CVSROOT_DIRNAME}/first-dir added to the repository"
++"Directory ${CVSROOT_DIRNAME}/first-dir put under version control"
+
+ cd first-dir
+ mkdir subdir subdir_long
+ dotest modules4-3 "${testcvs} add subdir subdir_long" \
+-"Directory ${CVSROOT_DIRNAME}/first-dir/subdir added to the repository
+-Directory ${CVSROOT_DIRNAME}/first-dir/subdir_long added to the repository"
++"Directory ${CVSROOT_DIRNAME}/first-dir/subdir put under version control
++Directory ${CVSROOT_DIRNAME}/first-dir/subdir_long put under version control"
+
+ echo file1 > file1
+ dotest modules4-4 "${testcvs} add file1" \
+@@ -13248,11 +13344,11 @@
+ cd first-dir
+ mkdir subdir
+ dotest modules5-2 "${testcvs} add subdir" \
+-"Directory ${CVSROOT_DIRNAME}/first-dir/subdir added to the repository"
++"Directory ${CVSROOT_DIRNAME}/first-dir/subdir put under version control"
+ cd subdir
+ mkdir ssdir
+ dotest modules5-3 "${testcvs} add ssdir" \
+-"Directory ${CVSROOT_DIRNAME}/first-dir/subdir/ssdir added to the repository"
++"Directory ${CVSROOT_DIRNAME}/first-dir/subdir/ssdir put under version control"
+ touch a b
+ dotest modules5-4 "${testcvs} add a b" \
+ "${SPROG} add: scheduling file .a. for addition
+@@ -13291,7 +13387,7 @@
+ for i in checkout export tag; do
+ cat >> ${CVSROOT_DIRNAME}/$i.sh <<EOF
+ #! $TESTSHELL
+-sleep 1
++sleep 2
+ echo "$i script invoked in \`pwd\`"
+ echo "args: \$@"
+ EOF
+@@ -13950,12 +14046,12 @@
+ mkdir mod2-2
+ mkdir mod2-2/sub2-2
+ dotest cvsadm-2a "${testcvs} add mod1 mod1-2 mod2 mod2/sub2 mod2-2 mod2-2/sub2-2" \
+-"Directory ${CVSROOT_DIRNAME}/mod1 added to the repository
+-Directory ${CVSROOT_DIRNAME}/mod1-2 added to the repository
+-Directory ${CVSROOT_DIRNAME}/mod2 added to the repository
+-Directory ${CVSROOT_DIRNAME}/mod2/sub2 added to the repository
+-Directory ${CVSROOT_DIRNAME}/mod2-2 added to the repository
+-Directory ${CVSROOT_DIRNAME}/mod2-2/sub2-2 added to the repository"
++"Directory ${CVSROOT_DIRNAME}/mod1 put under version control
++Directory ${CVSROOT_DIRNAME}/mod1-2 put under version control
++Directory ${CVSROOT_DIRNAME}/mod2 put under version control
++Directory ${CVSROOT_DIRNAME}/mod2/sub2 put under version control
++Directory ${CVSROOT_DIRNAME}/mod2-2 put under version control
++Directory ${CVSROOT_DIRNAME}/mod2-2/sub2-2 put under version control"
+
+ # Populate the directories for the halibut
+ echo "file1" > mod1/file1
+@@ -15001,7 +15097,7 @@
+ echo "file1" > mod1/file1
+ mkdir moda/modasub
+ dotest emptydir-3b "${testcvs} add moda/modasub" \
+-"Directory ${CVSROOT_DIRNAME}/moda/modasub added to the repository"
++"Directory ${CVSROOT_DIRNAME}/moda/modasub put under version control"
+ echo "filea" > moda/modasub/filea
+ dotest emptydir-4 "${testcvs} add mod1/file1 moda/modasub/filea" \
+ "${SPROG} add: scheduling file .mod1/file1. for addition
+@@ -15328,8 +15424,8 @@
+ dotest toplevel-1 "${testcvs} -q co -l ." ''
+ mkdir top-dir second-dir
+ dotest toplevel-2 "${testcvs} add top-dir second-dir" \
+-"Directory ${CVSROOT_DIRNAME}/top-dir added to the repository
+-Directory ${CVSROOT_DIRNAME}/second-dir added to the repository"
++"Directory ${CVSROOT_DIRNAME}/top-dir put under version control
++Directory ${CVSROOT_DIRNAME}/second-dir put under version control"
+ cd top-dir
+
+ touch file1
+@@ -15447,8 +15543,8 @@
+ dotest toplevel2-1 "${testcvs} -q co -l ." ''
+ mkdir top-dir second-dir
+ dotest toplevel2-2 "${testcvs} add top-dir second-dir" \
+-"Directory ${CVSROOT_DIRNAME}/top-dir added to the repository
+-Directory ${CVSROOT_DIRNAME}/second-dir added to the repository"
++"Directory ${CVSROOT_DIRNAME}/top-dir put under version control
++Directory ${CVSROOT_DIRNAME}/second-dir put under version control"
+ cd top-dir
+
+ touch file1
+@@ -15686,7 +15782,7 @@
+ # can see the "CVS:" lines.
+ cat >${TESTDIR}/editme <<EOF
+ #!${TESTSHELL}
+-sleep 1
++sleep 2
+ sed <\$1 -e 's/^/x/' >${TESTDIR}/edit.new
+ mv ${TESTDIR}/edit.new \$1
+ exit 0
+@@ -15697,7 +15793,7 @@
+ dotest editor-1 "${testcvs} -q co -l ." ''
+ mkdir first-dir
+ dotest editor-2 "${testcvs} add first-dir" \
+-"Directory ${CVSROOT_DIRNAME}/first-dir added to the repository"
++"Directory ${CVSROOT_DIRNAME}/first-dir put under version control"
+ cd first-dir
+ touch file1 file2
+ dotest editor-3 "${testcvs} add file1 file2" \
+@@ -15741,6 +15837,7 @@
+ revision 1\.1
+ date: ${ISO8601DATE}; author: ${username}; state: Exp; commitid: ${commitid};
+ branches: 1\.1\.2;
++x
+ xCVS: ----------------------------------------------------------------------
+ xCVS: Enter Log. Lines beginning with .CVS:. are removed automatically
+ xCVS:
+@@ -15752,6 +15849,7 @@
+ ----------------------------
+ revision 1\.1\.2\.1
+ date: ${ISO8601DATE}; author: ${username}; state: Exp; lines: ${PLUS}1 -0; commitid: ${commitid};
++x
+ xCVS: ----------------------------------------------------------------------
+ xCVS: Enter Log. Lines beginning with .CVS:. are removed automatically
+ xCVS:
+@@ -15779,6 +15877,7 @@
+ revision 1\.1
+ date: ${ISO8601DATE}; author: ${username}; state: Exp; commitid: ${commitid};
+ branches: 1\.1\.2;
++x
+ xCVS: ----------------------------------------------------------------------
+ xCVS: Enter Log. Lines beginning with .CVS:. are removed automatically
+ xCVS:
+@@ -15790,6 +15889,7 @@
+ ----------------------------
+ revision 1\.1\.2\.1
+ date: ${ISO8601DATE}; author: ${username}; state: Exp; lines: ${PLUS}1 -0; commitid: ${commitid};
++x
+ xCVS: ----------------------------------------------------------------------
+ xCVS: Enter Log. Lines beginning with .CVS:. are removed automatically
+ xCVS:
+@@ -15811,6 +15911,7 @@
+ revision 1\.1
+ date: ${ISO8601DATE}; author: ${username}; state: Exp; commitid: ${commitid};
+ branches: 1\.1\.2;
++x
+ xCVS: ----------------------------------------------------------------------
+ xCVS: Enter Log. Lines beginning with .CVS:. are removed automatically
+ xCVS:
+@@ -15822,6 +15923,7 @@
+ ----------------------------
+ revision 1\.1\.2\.1
+ date: ${ISO8601DATE}; author: ${username}; state: Exp; lines: ${PLUS}1 -0; commitid: ${commitid};
++x
+ xCVS: ----------------------------------------------------------------------
+ xCVS: Enter Log. Lines beginning with .CVS:. are removed automatically
+ xCVS:
+@@ -15836,7 +15938,7 @@
+ # Test CVS's response to an unchanged log message
+ cat >${TESTDIR}/editme <<EOF
+ #!${TESTSHELL}
+-sleep 1
++sleep 2
+ exit 0
+ EOF
+ chmod +x ${TESTDIR}/editme
+@@ -15849,7 +15951,7 @@
+ # Test CVS's response to an empty log message
+ cat >${TESTDIR}/editme <<EOF
+ #!${TESTSHELL}
+-sleep 1
++sleep 2
+ cat /dev/null >\$1
+ exit 0
+ EOF
+@@ -15863,7 +15965,7 @@
+ # Test CVS's response to a log message with one blank line
+ cat >${TESTDIR}/editme <<EOF
+ #!${TESTSHELL}
+-sleep 1
++sleep 2
+ echo >\$1
+ exit 0
+ EOF
+@@ -15877,7 +15979,7 @@
+ # Test CVS's response to a log message with only comments
+ cat >${TESTDIR}/editme <<EOF
+ #!${TESTSHELL}
+-sleep 1
++sleep 2
+ cat \$1 >${TESTDIR}/edit.new
+ mv ${TESTDIR}/edit.new \$1
+ exit 0
+@@ -15905,7 +16007,7 @@
+ cd ../first-dir
+ cat >${TESTDIR}/editme <<EOF
+ #!${TESTSHELL}
+-sleep 1
++sleep 2
+ cp /dev/null \$1
+ exit 1
+ EOF
+@@ -16065,7 +16167,7 @@
+ cd ..
+ mkdir env
+ dotest env-3 "${testcvs} -q add env" \
+-"Directory ${CVSROOT_DIRNAME}/env added to the repository"
++"Directory ${CVSROOT_DIRNAME}/env put under version control"
+ cd env
+ echo testing >file1
+ dotest env-4 "${testcvs} add file1" \
+@@ -16159,7 +16261,7 @@
+ dotest errmsg2-1 "$testcvs -q co -l ."
+ mkdir first-dir
+ dotest errmsg2-2 "${testcvs} add first-dir" \
+-"Directory ${CVSROOT_DIRNAME}/first-dir added to the repository"
++"Directory ${CVSROOT_DIRNAME}/first-dir put under version control"
+ cd first-dir
+ dotest_fail errmsg2-3 "${testcvs} add CVS" \
+ "${CPROG} add: cannot add special file .CVS.; skipping"
+@@ -16189,7 +16291,7 @@
+ mkdir sdir
+ cd ..
+ dotest errmsg2-8 "${testcvs} add first-dir/sdir" \
+-"Directory ${CVSROOT_DIRNAME}/first-dir/sdir added to the repository"
++"Directory ${CVSROOT_DIRNAME}/first-dir/sdir put under version control"
+ # while we're here... check commit with no CVS directory
+ dotest_fail errmsg2-8a "${testcvs} -q ci first-dir nonexistant" \
+ "${CPROG} commit: nothing known about .nonexistant'
+@@ -16205,7 +16307,7 @@
+ mkdir sdir10
+ dotest errmsg2-10 "${testcvs} add file10 sdir10" \
+ "${SPROG} add: scheduling file .file10. for addition
+-Directory ${CVSROOT_DIRNAME}/first-dir/sdir10 added to the repository
++Directory ${CVSROOT_DIRNAME}/first-dir/sdir10 put under version control
+ ${SPROG} add: use .${SPROG} commit. to add this file permanently"
+ dotest errmsg2-11 "${testcvs} -q ci -m add-file10" \
+ "$CVSROOT_DIRNAME/first-dir/file10,v <-- file10
+@@ -16219,7 +16321,7 @@
+ cd ..
+ mkdir first-dir/sdir10/ssdir
+ dotest errmsg2-13 "${testcvs} add first-dir/sdir10/ssdir" \
+-"Directory ${CVSROOT_DIRNAME}/first-dir/sdir10/ssdir added to the repository"
++"Directory ${CVSROOT_DIRNAME}/first-dir/sdir10/ssdir put under version control"
+
+ touch first-dir/sdir10/ssdir/ssfile
+ dotest errmsg2-14 \
+@@ -16360,7 +16462,7 @@
+ dotest adderrmsg-init1 "${testcvs} -q co -l ." ''
+ mkdir adderrmsg-dir
+ dotest adderrmsg-init2 "${testcvs} add adderrmsg-dir" \
+-"Directory ${CVSROOT_DIRNAME}/adderrmsg-dir added to the repository"
++"Directory ${CVSROOT_DIRNAME}/adderrmsg-dir put under version control"
+ cd adderrmsg-dir
+
+ # try to add the admin dir
+@@ -16839,7 +16941,7 @@
+ dotest watch4-0a "${testcvs} -q co -l ." ''
+ mkdir first-dir
+ dotest watch4-0b "${testcvs} add first-dir" \
+-"Directory ${CVSROOT_DIRNAME}/first-dir added to the repository"
++"Directory ${CVSROOT_DIRNAME}/first-dir put under version control"
+
+ cd first-dir
+ dotest watch4-1 "${testcvs} watch on" ''
+@@ -16854,7 +16956,7 @@
+ # Now test the analogous behavior for directories.
+ mkdir subdir
+ dotest watch4-4 "${testcvs} add subdir" \
+-"Directory ${CVSROOT_DIRNAME}/first-dir/subdir added to the repository"
++"Directory ${CVSROOT_DIRNAME}/first-dir/subdir put under version control"
+ cd subdir
+ touch sfile
+ dotest watch4-5 "${testcvs} add sfile" \
+@@ -16945,7 +17047,7 @@
+ dotest watch5-0a "${testcvs} -q co -l ." ''
+ mkdir first-dir
+ dotest watch5-0b "${testcvs} add first-dir" \
+-"Directory ${CVSROOT_DIRNAME}/first-dir added to the repository"
++"Directory ${CVSROOT_DIRNAME}/first-dir put under version control"
+
+ cd first-dir
+ dotest watch5-1 "${testcvs} watch on" ''
+@@ -17125,7 +17227,7 @@
+ dotest edit-check-0a "$testcvs -q co -l ."
+ mkdir first-dir
+ dotest edit-check-0b "$testcvs add first-dir" \
+-"Directory $CVSROOT_DIRNAME/first-dir added to the repository"
++"Directory $CVSROOT_DIRNAME/first-dir put under version control"
+
+ cd first-dir
+ dotest edit-check-1 "$testcvs watch on"
+@@ -17374,7 +17476,7 @@
+
+ mkdir second-dir
+ dotest edit-check-32c "$testcvs add second-dir" \
+-"Directory $CVSROOT_DIRNAME/first-dir/second-dir added to the repository"
++"Directory $CVSROOT_DIRNAME/first-dir/second-dir put under version control"
+ cd second-dir
+ echo ThirdFile >file3
+
+@@ -18770,7 +18872,7 @@
+ dotest mwrap-1 "${testcvs} -q co -l ." ''
+ mkdir first-dir
+ dotest mwrap-2 "${testcvs} add first-dir" \
+-"Directory ${CVSROOT_DIRNAME}/first-dir added to the repository"
++"Directory ${CVSROOT_DIRNAME}/first-dir put under version control"
+ cd first-dir
+ touch aa
+ dotest mwrap-3 "${testcvs} add aa" \
+@@ -19180,7 +19282,7 @@
+ exit 0
+ else
+ echo "No BugId found."
+- sleep 1
++ sleep 2
+ exit 1
+ fi
+ EOF
+@@ -19747,7 +19849,7 @@
+ dotest taginfo-newfmt-8 "${testcvs} -q tag tag1" ""
+ mkdir sdir
+ dotest taginfo-newfmt-8b "${testcvs} -q add sdir" \
+-"Directory ${TESTDIR}/cvsroot/first-dir/sdir added to the repository"
++"Directory ${TESTDIR}/cvsroot/first-dir/sdir put under version control"
+ touch sdir/file3
+ dotest taginfo-newfmt-8c "${testcvs} -q add sdir/file3" \
+ "${SPROG} add: use .${SPROG} commit. to add this file permanently"
+@@ -20043,7 +20145,7 @@
+ new revision: 1\.[0-9]*; previous revision: 1\.[0-9]*
+ $SPROG commit: Rebuilding administrative file database"
+
+- sleep 1
++ sleep 2
+ echo '# noop' >> config
+ dotest config-7 "$testcvs -q ci -mlog-commit" \
+ "$CVSROOT_DIRNAME/CVSROOT/config,v <-- config
+@@ -21586,7 +21688,7 @@
+ dotest logopt-1 "$testcvs -q co -l ." ''
+ mkdir first-dir
+ dotest logopt-2 "$testcvs add first-dir" \
+-"Directory $CVSROOT_DIRNAME/first-dir added to the repository"
++"Directory $CVSROOT_DIRNAME/first-dir put under version control"
+ cd first-dir
+ echo hi >file1
+ dotest logopt-3 "${testcvs} add file1" \
+@@ -21631,7 +21733,7 @@
+ dotest ann-1 "$testcvs -q co -l ."
+ mkdir first-dir
+ dotest ann-2 "${testcvs} add first-dir" \
+-"Directory ${CVSROOT_DIRNAME}/first-dir added to the repository"
++"Directory ${CVSROOT_DIRNAME}/first-dir put under version control"
+ cd first-dir
+ cat >file1 <<EOF
+ this
+@@ -21811,7 +21913,7 @@
+ module=x
+ mkdir $module
+ dotest ann-id-2 "${testcvs} add $module" \
+-"Directory ${CVSROOT_DIRNAME}/$module added to the repository"
++"Directory ${CVSROOT_DIRNAME}/$module put under version control"
+ cd $module
+
+ file=m
+@@ -21972,7 +22074,7 @@
+ dotest crerepos-8 "${testcvs} -q co -l ." ''
+ mkdir first-dir
+ dotest crerepos-9 "${testcvs} add first-dir" \
+-"Directory ${CVSROOT_DIRNAME}/first-dir added to the repository"
++"Directory ${CVSROOT_DIRNAME}/first-dir put under version control"
+ cd first-dir
+ touch file1
+ dotest crerepos-10 "${testcvs} add file1" \
+@@ -21988,7 +22090,7 @@
+ dotest crerepos-12 "$testcvs -d $CREREPOS_ROOT -q co -l ."
+ mkdir crerepos-dir
+ dotest crerepos-13 "$testcvs add crerepos-dir" \
+-"Directory $TESTDIR/crerepos/crerepos-dir added to the repository"
++"Directory $TESTDIR/crerepos/crerepos-dir put under version control"
+ cd crerepos-dir
+ touch cfile
+ dotest crerepos-14 "${testcvs} add cfile" \
+@@ -22039,8 +22141,7 @@
+
+ # Save the timezone and set it to UTC for these tests to make the
+ # value more predicatable.
+- save_TZ=$TZ
+- TZ=UTC0; export TZ
++ do_save_TZ
+
+ modify_repo mkdir $CVSROOT_DIRNAME/first-dir
+
+@@ -22517,7 +22618,7 @@
+ revision 1\.4"
+
+ dokeep
+- TZ=$save_TZ
++ do_restore_TZ
+ cd ..
+ rm -r first-dir
+ modify_repo rm -rf $CVSROOT_DIRNAME/first-dir
+@@ -22707,8 +22808,7 @@
+ # revisions 1.1 and 1.1.1.1 differ by 1 second.
+
+ # Need a predictable time zone.
+- save_TZ=$TZ
+- TZ=UTC0; export TZ
++ do_save_TZ
+
+ mkdir rcs4
+ cd rcs4
+@@ -22766,7 +22866,7 @@
+ Sticky Options: (none)'
+
+ dokeep
+- TZ=$save_TZ
++ do_restore_TZ
+ cd ../..
+ rm -r rcs4
+ modify_repo rm -rf $CVSROOT_DIRNAME/rcs4-dir
+@@ -23087,11 +23187,11 @@
+ dotest backuprecover-1 "$testcvs -q co -l ."
+ mkdir first-dir
+ dotest backuprecover-2 "${testcvs} add first-dir" \
+-"Directory ${CVSROOT_DIRNAME}/first-dir added to the repository"
++"Directory ${CVSROOT_DIRNAME}/first-dir put under version control"
+ cd first-dir
+ mkdir dir
+ dotest backuprecover-3 "${testcvs} add dir" \
+-"Directory ${CVSROOT_DIRNAME}/first-dir/dir added to the repository"
++"Directory ${CVSROOT_DIRNAME}/first-dir/dir put under version control"
+ touch file1 dir/file2
+ dotest backuprecover-4 "${testcvs} -q add file1 dir/file2" \
+ "${SPROG} add: use \`${SPROG} commit' to add these files permanently"
+@@ -23348,7 +23448,7 @@
+ dotest sshstdio-1 "$testcvs -d $SSHSTDIO_ROOT -q co -l ."
+ mkdir first-dir
+ dotest sshstdio-2 "$testcvs add first-dir" \
+- "Directory $CVSROOT_DIRNAME/first-dir added to the repository"
++ "Directory $CVSROOT_DIRNAME/first-dir put under version control"
+ cd first-dir
+ a='aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'
+ c='aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'
+@@ -23526,16 +23626,17 @@
+ continue
+ fi
+
++ # times have been tweaked so leap seconds don't matter
+ cat <<EOF >$CVSROOT_DIRNAME/CVSROOT/history
+-O3395c677|anonymous|<remote>/*0|ccvs||ccvs
++O3395c684|anonymous|<remote>/*0|ccvs||ccvs
+ O3396c677|anonymous|<remote>/src|ccvs||src
+ O3397c677|kingdon|<remote>/*0|ccvs||ccvs
+ M339cafae|nk|<remote>|ccvs/src|1.229|sanity.sh
+-M339cafff|anonymous|<remote>|ccvs/src|1.23|Makefile
++M339cb00c|anonymous|<remote>|ccvs/src|1.23|Makefile
+ M339dc339|kingdon|~/work/*0|ccvs/src|1.231|sanity.sh
+ W33a6eada|anonymous|<remote>*4|ccvs/emx||Makefile.in
+ C3b235f50|kingdon|<remote>|ccvs/emx|1.3|README
+-M3b23af50|kingdon|~/work/*0|ccvs/doc|1.281|cvs.texinfo
++M3b23af62|kingdon|~/work/*0|ccvs/doc|1.281|cvs.texinfo
+ EOF
+
+ dotest history-1 "${testcvs} history -e -a" \
+@@ -23691,7 +23792,7 @@
+ dotest modes-1 "${testcvs} -q co -l ." ''
+ mkdir first-dir
+ dotest modes-2 "${testcvs} add first-dir" \
+-"Directory ${CVSROOT_DIRNAME}/first-dir added to the repository"
++"Directory ${CVSROOT_DIRNAME}/first-dir put under version control"
+ cd first-dir
+ touch aa
+ dotest modes-3 "${testcvs} add aa" \
+@@ -23817,7 +23918,7 @@
+ dotest modes2-1 "${testcvs} -q co -l ." ''
+ mkdir first-dir
+ dotest modes2-2 "${testcvs} add first-dir" \
+-"Directory ${CVSROOT_DIRNAME}/first-dir added to the repository"
++"Directory ${CVSROOT_DIRNAME}/first-dir put under version control"
+ cd first-dir
+ touch aa
+ dotest modes2-3 "${testcvs} add aa" \
+@@ -23864,8 +23965,8 @@
+ dotest modes3-1 "$testcvs -q co -l ."
+ mkdir first-dir second-dir
+ dotest modes3-2 "${testcvs} add first-dir second-dir" \
+-"Directory ${CVSROOT_DIRNAME}/first-dir added to the repository
+-Directory ${CVSROOT_DIRNAME}/second-dir added to the repository"
++"Directory ${CVSROOT_DIRNAME}/first-dir put under version control
++Directory ${CVSROOT_DIRNAME}/second-dir put under version control"
+ touch first-dir/aa second-dir/ab
+ dotest modes3-3 "${testcvs} add first-dir/aa second-dir/ab" \
+ "${SPROG} add: scheduling file .first-dir/aa. for addition
+@@ -23944,7 +24045,7 @@
+ dotest stamps-1 "${testcvs} -q co -l ." ''
+ mkdir first-dir
+ dotest stamps-2 "${testcvs} add first-dir" \
+-"Directory ${CVSROOT_DIRNAME}/first-dir added to the repository"
++"Directory ${CVSROOT_DIRNAME}/first-dir put under version control"
+ cd first-dir
+ touch aa
+ echo '$''Id$' >kw
+@@ -24073,7 +24174,7 @@
+ dotest perms-1 "$testcvs -q co -l ."
+ mkdir first-dir
+ dotest perms-2 "${testcvs} add first-dir" \
+-"Directory ${CVSROOT_DIRNAME}/first-dir added to the repository"
++"Directory ${CVSROOT_DIRNAME}/first-dir put under version control"
+ cd first-dir
+
+ touch foo
+@@ -24115,7 +24216,7 @@
+ dotest symlinks-1 "$testcvs -q co -l ."
+ mkdir first-dir
+ dotest symlinks-2 "$testcvs add first-dir" \
+-"Directory $CVSROOT_DIRNAME/first-dir added to the repository"
++"Directory $CVSROOT_DIRNAME/first-dir put under version control"
+ cd first-dir
+
+ dotest symlinks-2.1 "ln -s $TESTDIR/fumble slink"
+@@ -24158,7 +24259,7 @@
+ dotest symlinks2-1 "${testcvs} -q co -l ." ''
+ mkdir first-dir
+ dotest symlinks2-2 "${testcvs} add first-dir" \
+-"Directory ${CVSROOT_DIRNAME}/first-dir added to the repository"
++"Directory ${CVSROOT_DIRNAME}/first-dir put under version control"
+ cd first-dir
+ echo nonsymlink > slink
+ dotest symlinks2-3 "${testcvs} add slink" \
+@@ -24196,7 +24297,7 @@
+ dotest hardlinks-1 "${testcvs} -q co -l ." ''
+ mkdir first-dir
+ dotest hardlinks-2 "${testcvs} add first-dir" \
+-"Directory ${CVSROOT_DIRNAME}/first-dir added to the repository"
++"Directory ${CVSROOT_DIRNAME}/first-dir put under version control"
+ cd first-dir
+
+ # Make up some ugly filenames, to test that they get
+@@ -24285,7 +24386,7 @@
+ dotest sticky-1 "$testcvs -q co -l ."
+ mkdir first-dir
+ dotest sticky-2 "$testcvs add first-dir" \
+-"Directory $CVSROOT_DIRNAME/first-dir added to the repository"
++"Directory $CVSROOT_DIRNAME/first-dir put under version control"
+ cd first-dir
+
+ touch file1
+@@ -24390,7 +24491,7 @@
+ dotest keyword-1 "${testcvs} -q co -l ." ''
+ mkdir first-dir
+ dotest keyword-2 "${testcvs} add first-dir" \
+-"Directory ${CVSROOT_DIRNAME}/first-dir added to the repository"
++"Directory ${CVSROOT_DIRNAME}/first-dir put under version control"
+ cd first-dir
+
+ echo '$''Author$' > file1
+@@ -24595,7 +24696,7 @@
+ dotest keywordlog-1 "${testcvs} -q co -l ." ''
+ mkdir first-dir
+ dotest keywordlog-2 "${testcvs} add first-dir" \
+-"Directory ${CVSROOT_DIRNAME}/first-dir added to the repository"
++"Directory ${CVSROOT_DIRNAME}/first-dir put under version control"
+ cd first-dir
+ echo initial >file1
+ dotest keywordlog-3 "${testcvs} add file1" \
+@@ -24852,7 +24953,7 @@
+ xx"
+
+ cd ../CVSROOT
+- echo "MaxCommentLeaderLength=1k" >>config
++ echo "MaxCommentLeaderLength=1K" >>config
+ dotest keywordlog-35 "$testcvs -Q ci -mset-MaxCommentLeaderLength"
+
+ cd ../first-dir
+@@ -24892,7 +24993,7 @@
+ dotest keywordname-init-1 "${testcvs} -q co -l ." ''
+ mkdir first-dir
+ dotest keywordname-init-2 "${testcvs} add first-dir" \
+-"Directory ${CVSROOT_DIRNAME}/first-dir added to the repository"
++"Directory ${CVSROOT_DIRNAME}/first-dir put under version control"
+ cd first-dir
+
+ echo '$'"Name$" >file1
+@@ -25012,7 +25113,7 @@
+ dotest keyword2-1 "${testcvs} -q co -l ." ''
+ mkdir first-dir
+ dotest keyword2-2 "${testcvs} add first-dir" \
+-"Directory ${CVSROOT_DIRNAME}/first-dir added to the repository"
++"Directory ${CVSROOT_DIRNAME}/first-dir put under version control"
+ cd first-dir
+
+ echo '$''Revision$' >> file1
+@@ -25214,7 +25315,7 @@
+ ${PLUS} modify on branch
+ ${PLUS} modify on branch after brtag"
+
+- # With a branch sticky tag, HEAD is the head of the trunk.
++ # Even with a branch sticky tag, HEAD is the head of the trunk.
+ dotest head-br1-setup "${testcvs} -q update -r br1" "[UP] file1"
+ dotest head-br1-update "${testcvs} -q update -r HEAD -p file1" \
+ "imported contents
+@@ -25222,7 +25323,26 @@
+ add a line on trunk after trunktag"
+ # But diff thinks that HEAD is "br1". Case (b) from cvs.texinfo.
+ # Probably people are relying on it.
+- dotest head-br1-diff "${testcvs} -q diff -c -r HEAD -r br1" ""
++ #dotest head-br1-diff "${testcvs} -q diff -c -r HEAD -r br1" ""
++ dotest head-br1-diffdot "${testcvs} -q diff -c -r .bhead -r br1" ""
++ # Always. Fuck people relying on it.
++ dotest_fail head-br1-diff "${testcvs} -q diff -c -r HEAD -r br1" \
++"Index: file1
++===================================================================
++RCS file: ${CVSROOT_DIRNAME}/first-dir/file1,v
++retrieving revision 1\.3
++retrieving revision 1\.3\.2\.2
++diff -c -r1\.3 -r1\.3\.2\.2
++\*\*\* file1 ${RFCDATE} 1\.3
++--- file1 ${RFCDATE} 1\.3\.2\.2
++\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*
++\*\*\* 1,3 \*\*\*\*
++--- 1,5 ----
++ imported contents
++ add a line on trunk
++ add a line on trunk after trunktag
++${PLUS} modify on branch
++${PLUS} modify on branch after brtag"
+
+ # With a nonbranch sticky tag on a branch,
+ # HEAD is the head of the trunk
+@@ -25235,7 +25355,26 @@
+ # CVS 1.9 and older thought that HEAD is "brtag" (this was
+ # noted as "strange, maybe accidental"). But "br1" makes a
+ # whole lot more sense.
+- dotest head-brtag-diff "${testcvs} -q diff -c -r HEAD -r br1" ""
++ #dotest head-brtag-diff "${testcvs} -q diff -c -r HEAD -r br1" ""
++ dotest head-brtag-diffdot "${testcvs} -q diff -c -r .bhead -r br1" ""
++ # HEAD is always tip of the trunk.
++ dotest_fail head-brtag-diff "${testcvs} -q diff -c -r HEAD -r br1" \
++"Index: file1
++===================================================================
++RCS file: ${CVSROOT_DIRNAME}/first-dir/file1,v
++retrieving revision 1\.3
++retrieving revision 1\.3\.2\.2
++diff -c -r1\.3 -r1\.3\.2\.2
++\*\*\* file1 ${RFCDATE} 1\.3
++--- file1 ${RFCDATE} 1\.3\.2\.2
++\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*
++\*\*\* 1,3 \*\*\*\*
++--- 1,5 ----
++ imported contents
++ add a line on trunk
++ add a line on trunk after trunktag
++${PLUS} modify on branch
++${PLUS} modify on branch after brtag"
+
+ # With a nonbranch sticky tag on the trunk, HEAD is the head
+ # of the trunk, I think.
+@@ -25319,12 +25458,11 @@
+ # for checkout and update as well.
+ #
+ mkdir 1; cd 1
+- save_TZ=$TZ
+- TZ=UTC0; export TZ
++ do_save_TZ
+ dotest tagdate-1 "${testcvs} -q co -l ." ''
+ mkdir first-dir
+ dotest tagdate-2 "${testcvs} add first-dir" \
+-"Directory ${CVSROOT_DIRNAME}/first-dir added to the repository"
++"Directory ${CVSROOT_DIRNAME}/first-dir put under version control"
+ cd first-dir
+
+ echo trunk-1 >file1
+@@ -25784,7 +25922,7 @@
+
+ unset date_T1 date_T2 date_T3 date_T4 date_T5
+ unset date_T6 date_T7 date_T8 date_T9
+- TZ=$save_TZ
++ do_restore_TZ
+
+ dokeep
+ rm -r 1 2 3 4
+@@ -25802,7 +25940,7 @@
+ dotest multibranch2-1 "${testcvs} -q co -l ." ''
+ mkdir first-dir
+ dotest multibranch2-2 "${testcvs} add first-dir" \
+-"Directory ${CVSROOT_DIRNAME}/first-dir added to the repository"
++"Directory ${CVSROOT_DIRNAME}/first-dir put under version control"
+ cd first-dir
+
+ echo trunk-1 >file1
+@@ -26038,7 +26176,7 @@
+ dotest admin-1 "${testcvs} -q co -l ." ''
+ mkdir first-dir
+ dotest admin-2 "${testcvs} add first-dir" \
+-"Directory ${CVSROOT_DIRNAME}/first-dir added to the repository"
++"Directory ${CVSROOT_DIRNAME}/first-dir put under version control"
+ cd first-dir
+
+ dotest_fail admin-3 "${testcvs} -q admin -i file1" \
+@@ -27002,7 +27140,7 @@
+ dotest reserved-1 "${testcvs} -q co -l ." ''
+ mkdir first-dir
+ dotest reserved-2 "${testcvs} add first-dir" \
+-"Directory ${CVSROOT_DIRNAME}/first-dir added to the repository"
++"Directory ${CVSROOT_DIRNAME}/first-dir put under version control"
+ cd first-dir
+ touch file1
+ dotest reserved-3 "${testcvs} add file1" \
+@@ -28061,18 +28199,18 @@
+ dotest release-1 "${testcvs} -q co -l ." ''
+ mkdir first-dir
+ dotest release-2 "${testcvs} add first-dir" \
+-"Directory ${CVSROOT_DIRNAME}/first-dir added to the repository"
++"Directory ${CVSROOT_DIRNAME}/first-dir put under version control"
+ cd first-dir
+ mkdir dir1
+ dotest release-3 "${testcvs} add dir1" \
+-"Directory ${CVSROOT_DIRNAME}/first-dir/dir1 added to the repository"
++"Directory ${CVSROOT_DIRNAME}/first-dir/dir1 put under version control"
+ mkdir dir2
+ dotest release-4 "${testcvs} add dir2" \
+-"Directory ${CVSROOT_DIRNAME}/first-dir/dir2 added to the repository"
++"Directory ${CVSROOT_DIRNAME}/first-dir/dir2 put under version control"
+ cd dir2
+ mkdir dir3
+ dotest release-5 "${testcvs} add dir3" \
+-"Directory ${CVSROOT_DIRNAME}/first-dir/dir2/dir3 added to the repository"
++"Directory ${CVSROOT_DIRNAME}/first-dir/dir2/dir3 put under version control"
+
+ cd ../..
+ dotest release-6 "${testcvs} release -d first-dir/dir2/dir3 first-dir/dir1" \
+@@ -28093,11 +28231,11 @@
+ cd first-dir
+ mkdir dir1
+ dotest release-10 "${testcvs} add dir1" \
+-"Directory ${CVSROOT_DIRNAME}/first-dir/dir1 added to the repository"
++"Directory ${CVSROOT_DIRNAME}/first-dir/dir1 put under version control"
+ cd dir2
+ mkdir dir3
+ dotest release-11 "${testcvs} add dir3" \
+-"Directory ${CVSROOT_DIRNAME}/first-dir/dir2/dir3 added to the repository"
++"Directory ${CVSROOT_DIRNAME}/first-dir/dir2/dir3 put under version control"
+
+ cd ../..
+ dotest release-12 "${testcvs} release first-dir/dir2/dir3 first-dir/dir1" \
+@@ -28148,7 +28286,7 @@
+ cd first-dir
+ mkdir second-dir
+ dotest release-18 "$testcvs add second-dir" \
+-"Directory $CVSROOT_DIRNAME/first-dir/second-dir added to the repository"
++"Directory $CVSROOT_DIRNAME/first-dir/second-dir put under version control"
+
+ cd second-dir
+ touch file1
+@@ -28756,8 +28894,33 @@
+ testcvs2="$testcvs -d '$CVSROOT2'"
+
+ dotest multiroot-setup-1 "mkdir $CVSROOT1_DIRNAME $CVSROOT2_DIRNAME"
++
+ dotest multiroot-setup-2 "$testcvs1 init"
++ # remove automatically-created LogHistory to work around the fact
++ # that CVS does not track those per root (and thus warns about
++ # encountering multiple of these entries)
++ mkdir wrkarnd; cd wrkarnd
++ dotest multiroot-setup-2a "$testcvs1 -q co CVSROOT" "[UP] CVSROOT${DOTSTAR}"
++ cd CVSROOT
++ sed -e '/^LogHistory/d' <config >tmpconfig
++ mv tmpconfig config
++ dotest multiroot-setup-2b "$testcvs1 -q ci -m workaround-LogHistory" "" \
++".*/CVSROOT/config,v <-- config
++new revision: 1\.[0-9]*; previous revision: 1\.[0-9]*
++$SPROG commit: Rebuilding administrative file database"
++ cd ../..; rm -r wrkarnd
++
+ dotest multiroot-setup-3 "$testcvs2 init"
++ mkdir wrkarnd; cd wrkarnd
++ dotest multiroot-setup-3a "$testcvs2 -q co CVSROOT" "[UP] CVSROOT${DOTSTAR}"
++ cd CVSROOT
++ sed -e '/^LogHistory/d' <config >tmpconfig
++ mv tmpconfig config
++ dotest multiroot-setup-3b "$testcvs2 -q ci -m workaround-LogHistory" "" \
++".*/CVSROOT/config,v <-- config
++new revision: 1\.[0-9]*; previous revision: 1\.[0-9]*
++$SPROG commit: Rebuilding administrative file database"
++ cd ../..; rm -r wrkarnd
+
+ #
+ # create some directories in ${CVSROOT1_DIRNAME}
+@@ -28766,8 +28929,8 @@
+ dotest multiroot-setup-4 "${testcvs1} co -l ." "${SPROG} checkout: Updating ."
+ mkdir mod1-1 mod1-2
+ dotest multiroot-setup-5 "${testcvs1} add mod1-1 mod1-2" \
+-"Directory ${CVSROOT1_DIRNAME}/mod1-1 added to the repository
+-Directory ${CVSROOT1_DIRNAME}/mod1-2 added to the repository"
++"Directory ${CVSROOT1_DIRNAME}/mod1-1 put under version control
++Directory ${CVSROOT1_DIRNAME}/mod1-2 put under version control"
+ echo file1-1 > mod1-1/file1-1
+ echo file1-2 > mod1-2/file1-2
+ dotest multiroot-setup-6 "${testcvs1} add mod1-1/file1-1 mod1-2/file1-2" \
+@@ -28792,8 +28955,8 @@
+ dotest multiroot-setup-8 "${testcvs2} co -l ." "${SPROG} checkout: Updating ."
+ mkdir mod2-1 mod2-2
+ dotest multiroot-setup-9 "${testcvs2} add mod2-1 mod2-2" \
+-"Directory ${CVSROOT2_DIRNAME}/mod2-1 added to the repository
+-Directory ${CVSROOT2_DIRNAME}/mod2-2 added to the repository"
++"Directory ${CVSROOT2_DIRNAME}/mod2-1 put under version control
++Directory ${CVSROOT2_DIRNAME}/mod2-2 put under version control"
+ echo file2-1 > mod2-1/file2-1
+ echo file2-2 > mod2-2/file2-2
+ dotest multiroot-setup-6 "${testcvs2} add mod2-1/file2-1 mod2-2/file2-2" \
+@@ -29861,7 +30024,27 @@
+ CVSROOT2=`newroot $CVSROOT2_DIRNAME`
+
+ dotest multiroot2-1 "${testcvs} -d ${CVSROOT1} init" ""
++ mkdir wrkarnd; cd wrkarnd
++ dotest multiroot2-1a "$testcvs -d ${CVSROOT1} -q co CVSROOT" "[UP] CVSROOT${DOTSTAR}"
++ cd CVSROOT
++ sed -e '/^LogHistory/d' <config >tmpconfig
++ mv tmpconfig config
++ dotest multiroot2-1b "$testcvs -d ${CVSROOT1} -q ci -m workaround-LogHistory" "" \
++".*/CVSROOT/config,v <-- config
++new revision: 1\.[0-9]*; previous revision: 1\.[0-9]*
++$SPROG commit: Rebuilding administrative file database"
++ cd ../..; rm -r wrkarnd
+ dotest multiroot2-2 "${testcvs} -d ${CVSROOT2} init" ""
++ mkdir wrkarnd; cd wrkarnd
++ dotest multiroot2-2a "$testcvs -d ${CVSROOT2} -q co CVSROOT" "[UP] CVSROOT${DOTSTAR}"
++ cd CVSROOT
++ sed -e '/^LogHistory/d' <config >tmpconfig
++ mv tmpconfig config
++ dotest multiroot2-2b "$testcvs -d ${CVSROOT2} -q ci -m workaround-LogHistory" "" \
++".*/CVSROOT/config,v <-- config
++new revision: 1\.[0-9]*; previous revision: 1\.[0-9]*
++$SPROG commit: Rebuilding administrative file database"
++ cd ../..; rm -r wrkarnd
+
+ mkdir imp-dir; cd imp-dir
+ echo file1 >file1
+@@ -30017,12 +30200,32 @@
+
+ mkdir 1; cd 1
+ dotest multiroot3-1 "${testcvs} -d ${CVSROOT1} init" ""
++ mkdir wrkarnd; cd wrkarnd
++ dotest multiroot3-1a "$testcvs -d ${CVSROOT1} -q co CVSROOT" "[UP] CVSROOT${DOTSTAR}"
++ cd CVSROOT
++ sed -e '/^LogHistory/d' <config >tmpconfig
++ mv tmpconfig config
++ dotest multiroot3-1b "$testcvs -d ${CVSROOT1} -q ci -m workaround-LogHistory" "" \
++".*/CVSROOT/config,v <-- config
++new revision: 1\.[0-9]*; previous revision: 1\.[0-9]*
++$SPROG commit: Rebuilding administrative file database"
++ cd ../..; rm -r wrkarnd
+ dotest multiroot3-2 "${testcvs} -d ${CVSROOT1} -q co -l ." ""
+ mkdir dir1
+ dotest multiroot3-3 "${testcvs} add dir1" \
+-"Directory ${TESTDIR}/root1/dir1 added to the repository"
++"Directory ${TESTDIR}/root1/dir1 put under version control"
+ dotest multiroot3-4 "${testcvs} -d ${CVSROOT2} init" ""
+ rm -r CVS
++ mkdir wrkarnd; cd wrkarnd
++ dotest multiroot3-4a "$testcvs -d ${CVSROOT2} -q co CVSROOT" "[UP] CVSROOT${DOTSTAR}"
++ cd CVSROOT
++ sed -e '/^LogHistory/d' <config >tmpconfig
++ mv tmpconfig config
++ dotest multiroot3-4b "$testcvs -d ${CVSROOT2} -q ci -m workaround-LogHistory" "" \
++".*/CVSROOT/config,v <-- config
++new revision: 1\.[0-9]*; previous revision: 1\.[0-9]*
++$SPROG commit: Rebuilding administrative file database"
++ cd ../..; rm -r wrkarnd
+ dotest multiroot3-5 "${testcvs} -d ${CVSROOT2} -q co -l ." ""
+ mkdir dir2
+
+@@ -30037,7 +30240,7 @@
+ echo "D/dir2////" >>CVS/Entries
+
+ dotest multiroot3-7 "${testcvs} add dir2" \
+-"Directory ${TESTDIR}/root2/dir2 added to the repository"
++"Directory ${TESTDIR}/root2/dir2 put under version control"
+
+ touch dir1/file1 dir2/file2
+ if $remote; then
+@@ -30143,10 +30346,20 @@
+
+ mkdir 1; cd 1
+ dotest multiroot4-1 "${testcvs} -d ${CVSROOT1} init" ""
++ mkdir wrkarnd; cd wrkarnd
++ dotest multiroot4-1a "$testcvs -d ${CVSROOT1} -q co CVSROOT" "[UP] CVSROOT${DOTSTAR}"
++ cd CVSROOT
++ sed -e '/^LogHistory/d' <config >tmpconfig
++ mv tmpconfig config
++ dotest multiroot4-1b "$testcvs -d ${CVSROOT1} -q ci -m workaround-LogHistory" "" \
++".*/CVSROOT/config,v <-- config
++new revision: 1\.[0-9]*; previous revision: 1\.[0-9]*
++$SPROG commit: Rebuilding administrative file database"
++ cd ../..; rm -r wrkarnd
+ dotest multiroot4-2 "${testcvs} -d ${CVSROOT1} -q co -l ." ""
+ mkdir dircom
+ dotest multiroot4-3 "${testcvs} add dircom" \
+-"Directory ${TESTDIR}/root1/dircom added to the repository"
++"Directory ${TESTDIR}/root1/dircom put under version control"
+ cd dircom
+ touch file1
+ dotest multiroot4-4 "${testcvs} add file1" \
+@@ -30158,10 +30371,20 @@
+ cd ../..
+ mkdir 2; cd 2
+ dotest multiroot4-6 "${testcvs} -d ${CVSROOT2} init" ""
++ mkdir wrkarnd; cd wrkarnd
++ dotest multiroot4-6a "$testcvs -d ${CVSROOT2} -q co CVSROOT" "[UP] CVSROOT${DOTSTAR}"
++ cd CVSROOT
++ sed -e '/^LogHistory/d' <config >tmpconfig
++ mv tmpconfig config
++ dotest multiroot4-6b "$testcvs -d ${CVSROOT2} -q ci -m workaround-LogHistory" "" \
++".*/CVSROOT/config,v <-- config
++new revision: 1\.[0-9]*; previous revision: 1\.[0-9]*
++$SPROG commit: Rebuilding administrative file database"
++ cd ../..; rm -r wrkarnd
+ dotest multiroot4-7 "${testcvs} -d ${CVSROOT2} -q co -l ." ""
+ mkdir dircom
+ dotest multiroot4-8 "${testcvs} add dircom" \
+-"Directory ${TESTDIR}/root2/dircom added to the repository"
++"Directory ${TESTDIR}/root2/dircom put under version control"
+ cd dircom
+ touch file2
+ dotest multiroot4-9 "${testcvs} add file2" \
+@@ -30179,7 +30402,7 @@
+ # repository) and so on would also look the same.
+ mkdir sdir2
+ dotest multiroot4-11 "${testcvs} -d ${CVSROOT2} add sdir2" \
+-"Directory ${TESTDIR}/root2/dircom/sdir2 added to the repository"
++"Directory ${TESTDIR}/root2/dircom/sdir2 put under version control"
+
+ dotest multiroot4-12 "${testcvs} -q update" ""
+ cd ..
+@@ -30208,7 +30431,7 @@
+ dotest rmroot-setup-1 "${testcvs} -q co -l ." ''
+ mkdir first-dir
+ dotest rmroot-setup-2 "${testcvs} add first-dir" \
+-"Directory ${CVSROOT_DIRNAME}/first-dir added to the repository"
++"Directory ${CVSROOT_DIRNAME}/first-dir put under version control"
+ cd first-dir
+ touch file1 file2
+ dotest rmroot-setup-3 "${testcvs} add file1 file2" \
+@@ -30383,7 +30606,7 @@
+ willfail: :whocares
+ EOF
+ dotest_fail pserver-3 "$servercvs pserver" \
+-"error 0 Server configuration missing --allow-root in inetd.conf" <<EOF
++"error 0 Server configuration missing --allow-root or --allow-root-regexp in inetd.conf" <<EOF
+ BEGIN AUTH REQUEST
+ $CVSROOT_DIRNAME
+ testme
+@@ -30391,6 +30614,26 @@
+ END AUTH REQUEST
+ EOF
+
++ regexp='^'`dirname ${CVSROOT_DIRNAME}`'/[^/]+$'
++ dotest pserver-3b "${testcvs} --allow-root-regexp=$regexp pserver" \
++"I LOVE YOU" <<EOF
++BEGIN AUTH REQUEST
++${CVSROOT_DIRNAME}
++testme
++Ay::'d
++END AUTH REQUEST
++EOF
++
++ regexp='^'`dirname ${CVSROOT_DIRNAME}`'/[^/]+$'
++ dotest_fail pserver-3c "${testcvs} --allow-root-regexp=$regexp pserver" \
++"$CPROG \\[pserver aborted\\]: ${CVSROOT_DIRNAME}/subdir: no such repository" <<EOF
++BEGIN AUTH REQUEST
++${CVSROOT_DIRNAME}/subdir
++testme
++Ay::'d
++END AUTH REQUEST
++EOF
++
+ # Confirm that not sending a newline during auth cannot constitute
+ # a denial-of-service attack. This assumes that PATH_MAX is less
+ # than 65536 bytes. If PATH_MAX is larger than 65535 bytes, this
+@@ -31033,6 +31276,8 @@
+ EOF
+ echo THIS-CONFIG-OPTION-IS-BAD=XXX >$TESTDIR/newconfig
+ dotest_fail server-20 "$testcvs server -c $TESTDIR/newconfig" \
++"Usage: cvs server
++Normally invoked by a cvs client on a remote machine." \
+ "E $SPROG \[server aborted\]: Invalid path to config file specified: \`$TESTDIR/newconfig'" <<EOF
+ Root $TESTDIR/crerepos
+ Directory .
+@@ -31041,6 +31286,8 @@
+ EOF
+ dotest_fail server-21 \
+ "$testcvs server -c /etc/cvs/this-shouldnt-exist" \
++"Usage: cvs server
++Normally invoked by a cvs client on a remote machine." \
+ "E $SPROG \[server aborted\]: Failed to resolve path: \`/etc/cvs/this-shouldnt-exist': No such file or directory" <<EOF
+ Root $TESTDIR/crerepos
+ Directory .
+@@ -31301,7 +31548,7 @@
+ #
+ # Incidentally, I can reproduce this behavior with Linux 2.4.20 and
+ # Bash 2.05 or Bash 2.05b.
+- sleep 1
++ sleep 2
+ dotest_fail client-10 "$testcvs update" \
+ "$CPROG update: Server attempted to update a file via an invalid pathname:
+ $CPROG \[update aborted\]: \`$HOME/.bashrc'\."
+@@ -31322,7 +31569,7 @@
+ echo "ok"
+ cat >/dev/null
+ EOF
+- sleep 1
++ sleep 2
+ dotest_fail client-11 "$testcvs update" \
+ "$CPROG \[update aborted\]: patch original file \./\.bashrc does not exist"
+
+@@ -31342,7 +31589,7 @@
+ echo "ok"
+ cat >/dev/null
+ EOF
+- sleep 1
++ sleep 2
+ dotest_fail client-12 "$testcvs update" \
+ "$CPROG update: Server attempted to update a file via an invalid pathname:
+ $CPROG \[update aborted\]: \`\.\./\.\./home/.bashrc'\."
+@@ -31362,7 +31609,7 @@
+ echo "ok"
+ cat >/dev/null
+ EOF
+- sleep 1
++ sleep 2
+ dotest_fail client-13 "$testcvs update" \
+ "$CPROG update: Server attempted to update a file via an invalid pathname:
+ $CPROG \[update aborted\]: \`$HOME/.bashrc'\."
+@@ -31382,7 +31629,7 @@
+ echo "ok"
+ cat >/dev/null
+ EOF
+- sleep 1
++ sleep 2
+ dotest_fail client-14 "$testcvs update" \
+ "$CPROG update: Server attempted to update a file via an invalid pathname:
+ $CPROG \[update aborted\]: \`\.\./\.\./home/.bashrc'\."
+@@ -31402,7 +31649,7 @@
+ echo "ok"
+ cat >/dev/null
+ EOF
+- sleep 1
++ sleep 2
+ dotest_fail client-15 "$testcvs update" \
+ "$CPROG update: Server attempted to update a file via an invalid pathname:
+ $CPROG \[update aborted\]: \`$HOME/.bashrc'\."
+@@ -31422,7 +31669,7 @@
+ echo "ok"
+ cat >/dev/null
+ EOF
+- sleep 1
++ sleep 2
+ dotest_fail client-16 "$testcvs update" \
+ "$CPROG update: Server attempted to update a file via an invalid pathname:
+ $CPROG \[update aborted\]: \`\.\./\.\./home/.bashrc'\."
+@@ -31446,7 +31693,7 @@
+ echo "ok"
+ cat >/dev/null
+ EOF
+- sleep 1
++ sleep 2
+ dotest_fail client-18 "$testcvs update" \
+ "$CPROG \[update aborted\]: protocol error: Copy-file tried to specify directory"
+
+@@ -31459,7 +31706,7 @@
+ # Check that the client detects redirect loops.
+ cat >$TESTDIR/serveme <<EOF
+ #!$TESTSHELL
+-echo "Valid-requests Root Valid-responses valid-requests Command-prep Referrer Repository Directory Relative-directory Max-dotdot Static-directory Sticky Entry Kopt Checkin-time Modified Is-modified UseUnchanged Unchanged Notify Hostname LocalDir Questionable Argument Argumentx Global_option Gzip-stream wrapper-sendme-rcsOptions Set Gssapi-authenticate expand-modules ci co update diff log rlog list rlist global-list-quiet ls add remove update-patches gzip-file-contents status rdiff tag rtag import admin export history release watch-on watch-off watch-add watch-remove watchers editors edit init annotate rannotate noop version"
++echo "Valid-requests Root Valid-responses valid-requests Command-prep Referrer Repository Directory Relative-directory Max-dotdot Static-directory Sticky Entry Kopt Checkin-time Modified Is-modified UseUnchanged Unchanged Notify Hostname LocalDir Questionable Argument Argumentx Global_option Gzip-stream wrapper-sendme-rcsOptions Set Gssapi-authenticate expand-modules ci co update diff log rlog list rlist global-list-quiet ls add remove update-patches gzip-file-contents status rdiff tag rtag import admin export history release watch-on watch-off watch-add watch-remove watchers editors edit init annotate rannotate noop version suck"
+ echo "ok"
+ echo "Redirect $CVSROOT"
+
+@@ -31467,7 +31714,7 @@
+ cat >/dev/null
+ EOF
+ echo newstuff >file1
+- sleep 1
++ sleep 2
+ dotest_fail client-20 "$testcvs ci" \
+ "$CPROG commit: Examining \.
+ $CPROG \[commit aborted\]: \`Redirect' loop detected\. Server misconfiguration$QUESTION"
+@@ -31709,7 +31956,7 @@
+ cd second
+ mkdir otherdir
+ dotest template-add-1 "${testcvs} add otherdir" \
+-"Directory ${CVSROOT_DIRNAME}/second/otherdir added to the repository"
++"Directory ${CVSROOT_DIRNAME}/second/otherdir put under version control"
+ if $remote; then
+ dotest template-add-2r \
+ "cmp otherdir/CVS/Template ${TESTDIR}/template/temp.def" ''
+@@ -31856,6 +32103,10 @@
+ ALL (cat >/dev/null; echo %R) >$TESTDIR/referrer
+ ALL $RSYNC -gopr --delete $PRIMARY_CVSROOT_DIRNAME/ $SECONDARY_CVSROOT_DIRNAME
+ EOF
++ # remove automatically-created LogHistory to work around the fact
++ # that we see both writeproxy and primary config here
++ sed -e '/^LogHistory/d' <config >tmpconfig
++ mv tmpconfig config
+ cat >>config <<EOF
+ PrimaryServer=$PRIMARY_CVSROOT
+ EOF
+@@ -31868,7 +32119,7 @@
+ save_CVS_SERVER=$CVS_SERVER
+ ln -s $PRIMARY_CVSROOT_DIRNAME $TESTDIR/primary_link
+ dotest writeproxy-0 "$CVS_SERVER server" \
+-"Valid-requests Root Valid-responses valid-requests Command-prep Referrer Repository Directory Relative-directory Max-dotdot Static-directory Sticky Entry Kopt Checkin-time Modified Is-modified UseUnchanged Unchanged Notify Hostname LocalDir Questionable Argument Argumentx Global_option Gzip-stream wrapper-sendme-rcsOptions Set ${DOTSTAR}expand-modules ci co update diff log rlog list rlist global-list-quiet ls add remove update-patches gzip-file-contents status rdiff tag rtag import admin export history release watch-on watch-off watch-add watch-remove watchers editors edit init annotate rannotate noop version
++"Valid-requests Root Valid-responses valid-requests Command-prep Referrer Repository Directory Relative-directory Max-dotdot Static-directory Sticky Entry Kopt Checkin-time Modified Is-modified UseUnchanged Unchanged Notify Hostname LocalDir Questionable Argument Argumentx Global_option Gzip-stream wrapper-sendme-rcsOptions Set ${DOTSTAR}expand-modules ci co update diff log rlog list rlist global-list-quiet ls add remove update-patches gzip-file-contents status rdiff tag rtag import admin export history release watch-on watch-off watch-add watch-remove watchers editors edit init annotate rannotate noop version suck
+ ok
+ ok
+ ok" \
+@@ -32066,6 +32317,10 @@
+ cat >>loginfo <<EOF
+ ALL $RSYNC -gopr --delete $PRIMARY_CVSROOT_DIRNAME/ $SECONDARY_CVSROOT_DIRNAME
+ EOF
++ # remove automatically-created LogHistory to work around the fact
++ # that we see both writeproxy and primary config here
++ sed -e '/^LogHistory/d' <config >tmpconfig
++ mv tmpconfig config
+ cat >>config <<EOF
+ PrimaryServer=$PRIMARY_CVSROOT
+ EOF
+@@ -32088,7 +32343,7 @@
+
+ # No need to check the PID of the last client since we are testing with
+ # Redirect disabled.
+-proot_arg="--allow-root $SECONDARY_CVSROOT_DIRNAME"
++proot_arg="--allow-root ${PRIMARY_CVSROOT##*:} --allow-root $SECONDARY_CVSROOT_DIRNAME"
+ exec $servercvs \$proot_arg "\$@"
+ EOF
+ cat <<EOF >$TESTDIR/writeproxy-primary-wrapper
+@@ -32152,7 +32407,7 @@
+ mv $TESTDIR/save-root $PRIMARY_CVSROOT_DIRNAME
+
+ dotest writeproxy-noredirect-5 "$CVS_SERVER server" \
+-"Valid-requests Root Valid-responses valid-requests Command-prep Referrer Repository Directory Relative-directory Max-dotdot Static-directory Sticky Entry Kopt Checkin-time Modified Is-modified UseUnchanged Unchanged Notify Hostname LocalDir Questionable Argument Argumentx Global_option Gzip-stream wrapper-sendme-rcsOptions Set ${DOTSTAR}expand-modules ci co update diff log rlog list rlist global-list-quiet ls add remove update-patches gzip-file-contents status rdiff tag rtag import admin export history release watch-on watch-off watch-add watch-remove watchers editors edit init annotate rannotate noop version
++"Valid-requests Root Valid-responses valid-requests Command-prep Referrer Repository Directory Relative-directory Max-dotdot Static-directory Sticky Entry Kopt Checkin-time Modified Is-modified UseUnchanged Unchanged Notify Hostname LocalDir Questionable Argument Argumentx Global_option Gzip-stream wrapper-sendme-rcsOptions Set ${DOTSTAR}expand-modules ci co update diff log rlog list rlist global-list-quiet ls add remove update-patches gzip-file-contents status rdiff tag rtag import admin export history release watch-on watch-off watch-add watch-remove watchers editors edit init annotate rannotate noop version suck
+ ok
+ ok
+ ok
+@@ -32184,7 +32439,7 @@
+ cd firstdir
+ echo now you see me >file1
+ dotest writeproxy-noredirect-6 "$CVS_SERVER server" \
+-"Valid-requests Root Valid-responses valid-requests Command-prep Referrer Repository Directory Relative-directory Max-dotdot Static-directory Sticky Entry Kopt Checkin-time Modified Is-modified UseUnchanged Unchanged Notify Hostname LocalDir Questionable Argument Argumentx Global_option Gzip-stream wrapper-sendme-rcsOptions Set ${DOTSTAR}expand-modules ci co update diff log rlog list rlist global-list-quiet ls add remove update-patches gzip-file-contents status rdiff tag rtag import admin export history release watch-on watch-off watch-add watch-remove watchers editors edit init annotate rannotate noop version
++"Valid-requests Root Valid-responses valid-requests Command-prep Referrer Repository Directory Relative-directory Max-dotdot Static-directory Sticky Entry Kopt Checkin-time Modified Is-modified UseUnchanged Unchanged Notify Hostname LocalDir Questionable Argument Argumentx Global_option Gzip-stream wrapper-sendme-rcsOptions Set ${DOTSTAR}expand-modules ci co update diff log rlog list rlist global-list-quiet ls add remove update-patches gzip-file-contents status rdiff tag rtag import admin export history release watch-on watch-off watch-add watch-remove watchers editors edit init annotate rannotate noop version suck
+ ok
+ ok
+ ok
+@@ -32214,7 +32469,7 @@
+ echo /file1/0/dummy+timestamp// >>CVS/Entries
+
+ dotest writeproxy-noredirect-7 "$CVS_SERVER server" \
+-"Valid-requests Root Valid-responses valid-requests Command-prep Referrer Repository Directory Relative-directory Max-dotdot Static-directory Sticky Entry Kopt Checkin-time Modified Is-modified UseUnchanged Unchanged Notify Hostname LocalDir Questionable Argument Argumentx Global_option Gzip-stream wrapper-sendme-rcsOptions Set ${DOTSTAR}expand-modules ci co update diff log rlog list rlist global-list-quiet ls add remove update-patches gzip-file-contents status rdiff tag rtag import admin export history release watch-on watch-off watch-add watch-remove watchers editors edit init annotate rannotate noop version
++"Valid-requests Root Valid-responses valid-requests Command-prep Referrer Repository Directory Relative-directory Max-dotdot Static-directory Sticky Entry Kopt Checkin-time Modified Is-modified UseUnchanged Unchanged Notify Hostname LocalDir Questionable Argument Argumentx Global_option Gzip-stream wrapper-sendme-rcsOptions Set ${DOTSTAR}expand-modules ci co update diff log rlog list rlist global-list-quiet ls add remove update-patches gzip-file-contents status rdiff tag rtag import admin export history release watch-on watch-off watch-add watch-remove watchers editors edit init annotate rannotate noop version suck
+ ok
+ ok
+ Mode u=rw,g=rw,o=r
+@@ -32327,9 +32582,9 @@
+
+ # Set new roots.
+ PRIMARY_CVSROOT_DIRNAME=$TESTDIR/primary_cvsroot
+- PRIMARY_CVSROOT=:ext:$host$PRIMARY_CVSROOT_DIRNAME
++ PRIMARY_CVSROOT=:ext:$host:$PRIMARY_CVSROOT_DIRNAME
+ SECONDARY_CVSROOT_DIRNAME=$TESTDIR/writeproxy_cvsroot
+- SECONDARY_CVSROOT=":ext;Redirect=yes:$host$SECONDARY_CVSROOT_DIRNAME"
++ SECONDARY_CVSROOT=":ext;Redirect=yes:$host:$SECONDARY_CVSROOT_DIRNAME"
+
+ # Initialize the primary repository
+ dotest writeproxy-ssh-init-1 "$testcvs -d$PRIMARY_CVSROOT init"
+@@ -32343,6 +32598,10 @@
+ cat >>loginfo <<EOF
+ ALL echo Referrer=%R; cat >/dev/null
+ EOF
++ # remove automatically-created LogHistory to work around the fact
++ # that we see both writeproxy and primary config here
++ sed -e '/^LogHistory/d' <config >tmpconfig
++ mv tmpconfig config
+ cat >>config <<EOF
+ PrimaryServer=$PRIMARY_CVSROOT
+ EOF
+@@ -32426,9 +32685,9 @@
+
+ # Set new roots.
+ PRIMARY_CVSROOT_DIRNAME=$TESTDIR/primary_cvsroot
+- PRIMARY_CVSROOT=:ext:$host$PRIMARY_CVSROOT_DIRNAME
++ PRIMARY_CVSROOT=:ext:$host:$PRIMARY_CVSROOT_DIRNAME
+ SECONDARY_CVSROOT_DIRNAME=$TESTDIR/writeproxy_cvsroot
+- SECONDARY_CVSROOT=":ext;Redirect=no:$host$PRIMARY_CVSROOT_DIRNAME"
++ SECONDARY_CVSROOT=":ext;Redirect=no:$host:$PRIMARY_CVSROOT_DIRNAME"
+
+ # Initialize the primary repository
+ dotest writeproxy-ssh-noredirect-init-1 \
+@@ -32444,6 +32703,10 @@
+ cat >>loginfo <<EOF
+ ALL echo Referrer=%R; cat >/dev/null
+ EOF
++ # remove automatically-created LogHistory to work around the fact
++ # that we see both writeproxy and primary config here
++ sed -e '/^LogHistory/d' <config >tmpconfig
++ mv tmpconfig config
+ cat >>config <<EOF
+ PrimaryServer=$PRIMARY_CVSROOT
+ EOF
+@@ -32463,7 +32726,7 @@
+
+ # No need to check the PID of the last client since we are testing with
+ # Redirect disabled.
+-proot_arg="--allow-root=$SECONDARY_CVSROOT_DIRNAME"
++proot_arg="--allow-root ${PRIMARY_CVSROOT##*:} --allow-root=$SECONDARY_CVSROOT_DIRNAME"
+ exec $CVS_SERVER \$proot_arg "\$@"
+ EOF
+ cat <<EOF >$TESTDIR/writeproxy-primary-wrapper
+@@ -32836,7 +33099,7 @@
+ *-> walklist ( list=${PFMT}, proc=${PFMT}, closure=${PFMT} )
+ *-> walklist ( list=${PFMT}, proc=${PFMT}, closure=${PFMT} )
+ *-> walklist ( list=${PFMT}, proc=${PFMT}, closure=${PFMT} )
+-Directory ${CVSROOT_DIRNAME}/trace/subdir added to the repository" \
++Directory ${CVSROOT_DIRNAME}/trace/subdir put under version control" \
+ "
+ *callerdat=${PFMT}, argc=1, argv=${PFMT},
+ *direntproc=${PFMT}, dirleavproc=${PFMT},
+@@ -32868,7 +33131,7 @@
+ *-> walklist ( list=${PFMT}, proc=${PFMT}, closure=${PFMT} )
+ *-> walklist ( list=${PFMT}, proc=${PFMT}, closure=${PFMT} )
+ *-> walklist ( list=${PFMT}, proc=${PFMT}, closure=${PFMT} )
+-${DOTSTAR}Directory ${CVSROOT_DIRNAME}/trace/subdir added to the repository
++${DOTSTAR}Directory ${CVSROOT_DIRNAME}/trace/subdir put under version control
+ S -> CVS_SERVER_SLEEP not set\.
+ S -> Lock_Cleanup()
+ S -> Lock_Cleanup()
+@@ -35507,6 +35770,35 @@
+ ;;
+
+
++
++ suck)
++ modify_repo mkdir $CVSROOT_DIRNAME/first-dir
++ dotest suck-init-1 "$testcvs -Q co first-dir"
++
++ cd first-dir
++ ${AWK} 'BEGIN { for (i = 64; i < 96; i++) printf "%02x %c\n", i-64, i }' \
++ </dev/null | ${TR} '@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_' \
++ '\000\001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037' \
++ | ${TR} 'abcdef' 'ABCDEF' >alloctet.dat
++ ${AWK} 'BEGIN { for (i = 32; i < 256; i++) printf "%02X %c\n", i, i }' \
++ </dev/null >>alloctet.dat
++
++ dotest suck-1 "$testcvs -Q add alloctet.dat"
++ dotest suck-2 "$testcvs -Q ci -m added"
++
++ cd ..
++
++ dotest suck-3 "$testcvs -Q suck first-dir/alloctet.dat >commavs"
++ echo "first-dir/alloctet.dat,v" >commavl
++ cat $CVSROOT_DIRNAME/first-dir/alloctet.dat,v >>commavl
++ dotest suck-eq "diff commavs commavl"
++
++ dokeep
++ rm -r first-dir commavs commavl
++ modify_repo rm -rf $CVSROOT_DIRNAME/first-dir
++ ;;
++
++
+
+ *)
+ echo $what is not the name of a test -- ignored
+--- cvs-1.12.13+real.orig/src/server.c
++++ cvs-1.12.13+real/src/server.c
+@@ -80,6 +80,13 @@
+ /* for select */
+ # include "xselect.h"
+
++/* for TCP_NODELAY */
++# include <netinet/tcp.h>
++
++# ifndef S_ISSOCK
++# define S_ISSOCK(m) (((m) & S_IFMT) == S_IFSOCK)
++# endif
++
+ # ifndef O_NONBLOCK
+ # define O_NONBLOCK O_NDELAY
+ # endif
+@@ -823,6 +830,14 @@
+ }
+ # endif
+
++ if (root_allow_used() && !root_allow_ok(arg))
++ {
++ if (alloc_pending (80 + strlen (arg)))
++ sprintf (pending_error_text,
++ "E Bad root %s", arg);
++ return;
++ }
++
+ /* For pserver, this will already have happened, and the call will do
+ nothing. But for rsh, we need to do it now. */
+ config = get_root_allow_config (current_parsed_root->directory,
+@@ -2350,6 +2365,7 @@
+ bool *pre = closure;
+
+ /* %c = cvs_cmd_name
++ * %I = commit ID
+ * %p = shortrepos
+ * %r = repository
+ */
+@@ -2367,6 +2383,7 @@
+ # endif /* SUPPORT_OLD_INFO_FMT_STRINGS */
+ filter,
+ "c", "s", cvs_cmd_name,
++ "I", "s", global_session_id,
+ "R", "s", referrer ? referrer->original : "NONE",
+ "p", "s", ".",
+ "r", "s", current_parsed_root->directory,
+@@ -3519,7 +3536,7 @@
+ * Therefore, we wish to avoid reprocessing the command since that would
+ * cause endless recursion.
+ */
+- if (isProxyServer())
++ if ((command != version || current_parsed_root) && isProxyServer())
+ {
+ # ifdef PROXY_SUPPORT
+ if (reprocessing)
+@@ -4621,6 +4638,14 @@
+
+
+ static void
++serve_suck (char *arg)
++{
++ do_cvs_command ("suck", suck);
++}
++
++
++
++static void
+ serve_add (char *arg)
+ {
+ do_cvs_command ("add", add);
+@@ -5237,6 +5262,7 @@
+ {
+ free (vers->ts_user);
+ vers->ts_user = NULL;
++ vers->ts_user_ists = 0;
+ }
+ }
+ else if (scratched_file == NULL && entries_line == NULL)
+@@ -5962,6 +5988,7 @@
+ REQ_LINE("rannotate", serve_rannotate, 0),
+ REQ_LINE("noop", serve_noop, RQ_ROOTLESS),
+ REQ_LINE("version", serve_version, RQ_ROOTLESS),
++ REQ_LINE("suck", serve_suck, 0),
+ REQ_LINE(NULL, NULL, 0)
+
+ #undef REQ_LINE
+@@ -6271,8 +6298,12 @@
+
+ static const char *const server_usage[] =
+ {
++#ifdef ALLOW_CONFIG_OVERRIDE
+ "Usage: %s %s [-c config-file]\n",
+ "\t-c config-file\tPath to an alternative CVS config file.\n",
++#else
++ "Usage: %s %s\n",
++#endif
+ "Normally invoked by a cvs client on a remote machine.\n",
+ NULL
+ };
+@@ -6289,8 +6320,8 @@
+ {
+ switch (c)
+ {
+-#ifdef ALLOW_CONFIG_OVERRIDE
+ case 'c':
++#ifdef ALLOW_CONFIG_OVERRIDE
+ if (gConfigPath) free (gConfigPath);
+ gConfigPath = xstrdup (optarg);
+ break;
+@@ -6671,6 +6702,22 @@
+
+ extern char *crypt (const char *, const char *);
+
++char *crypt_trad(const char *, const char *);
++
++char *
++crypt_trad(const char *key, const char *setting)
++{
++ char *rv;
++ static char buf[2];
++
++ if ((rv = crypt(key, setting)) == NULL) {
++ buf[0] = setting && (*setting == 'x') ? '*' : 'x';
++ buf[1] = '\0';
++ rv = buf;
++ }
++
++ return (rv);
++}
+
+ /*
+ * 0 means no entry found for this user.
+@@ -6799,7 +6846,7 @@
+
+ /* Verify blank passwords directly, otherwise use crypt(). */
+ if ((found_password == NULL)
+- || ((strcmp (found_password, crypt (password, found_password))
++ || ((strcmp (found_password, crypt_trad (password, found_password))
+ == 0)))
+ {
+ /* Give host_user_ptr permanent storage. */
+@@ -6811,7 +6858,7 @@
+ #ifdef LOG_AUTHPRIV
+ syslog (LOG_AUTHPRIV | LOG_NOTICE,
+ "password mismatch for %s in %s: %s vs. %s", username,
+- repository, crypt(password, found_password), found_password);
++ repository, crypt_trad(password, found_password), found_password);
+ #endif
+ *host_user_ptr = NULL;
+ retval = 2;
+@@ -6887,7 +6934,7 @@
+ static int
+ check_pam_password (char **username, char *password)
+ {
+- int retval, err;
++ int retval;
+ struct pam_conv conv = { cvs_pam_conv, 0 };
+ char *pam_stage = "start";
+
+@@ -6930,7 +6977,7 @@
+
+ return retval == PAM_SUCCESS; /* indicate success */
+ }
+-#endif
++#else /* !HAVE_PAM */
+
+ static int
+ check_system_password (char *username, char *password)
+@@ -6976,14 +7023,14 @@
+ if (*found_passwd)
+ {
+ /* user exists and has a password */
+- if (strcmp (found_passwd, crypt (password, found_passwd)) == 0)
++ if (strcmp (found_passwd, crypt_trad (password, found_passwd)) == 0)
+ return 1;
+ else
+ {
+ #ifdef LOG_AUTHPRIV
+ syslog (LOG_AUTHPRIV | LOG_NOTICE,
+ "password mismatch for %s: %s vs. %s", username,
+- crypt(password, found_passwd), found_passwd);
++ crypt_trad(password, found_passwd), found_passwd);
+ #endif
+ return 0;
+ }
+@@ -6996,6 +7043,7 @@
+ #endif
+ return 1;
+ }
++#endif /* !HAVE_PAM */
+
+
+
+@@ -7164,8 +7212,10 @@
+ if the client dies while we are waiting for input. */
+ {
+ int on = 1;
++ struct stat sb;
+
+- if (setsockopt (STDIN_FILENO, SOL_SOCKET, SO_KEEPALIVE,
++ if (fstat (STDIN_FILENO, &sb) == 0 && S_ISSOCK(sb.st_mode) &&
++ setsockopt (STDIN_FILENO, SOL_SOCKET, SO_KEEPALIVE,
+ &on, sizeof on) < 0)
+ {
+ # ifdef HAVE_SYSLOG_H
+@@ -7175,6 +7225,23 @@
+ }
+ #endif
+
++#ifdef TCP_NODELAY
++ /* Avoid latency due to Nagle algorithm. */
++ {
++ int on = 1;
++ struct stat sb;
++
++ if (fstat (STDOUT_FILENO, &sb) == 0 && S_ISSOCK(sb.st_mode) &&
++ setsockopt (STDOUT_FILENO, IPPROTO_TCP, TCP_NODELAY,
++ &on, sizeof on) < 0)
++ {
++# ifdef HAVE_SYSLOG_H
++ syslog (LOG_DAEMON | LOG_ERR, "error setting TCP_NODELAY: %m");
++# endif /* HAVE_SYSLOG_H */
++ }
++ }
++#endif
++
+ /* Make sure the protocol starts off on the right foot... */
+ pserver_read_line (&tmp, NULL);
+
+@@ -7317,8 +7384,10 @@
+ if the client dies while we are waiting for input. */
+ {
+ int on = 1;
++ struct stat sb;
+
+- if (setsockopt (STDIN_FILENO, SOL_SOCKET, SO_KEEPALIVE,
++ if (fstat (STDIN_FILENO, &sb) == 0 && S_ISSOCK(sb.st_mode) &&
++ setsockopt (STDIN_FILENO, SOL_SOCKET, SO_KEEPALIVE,
+ (char *) &on, sizeof on) < 0)
+ {
+ # ifdef HAVE_SYSLOG_H
+@@ -7326,6 +7395,23 @@
+ # endif /* HAVE_SYSLOG_H */
+ }
+ }
++#endif
++
++#ifdef TCP_NODELAY
++ /* Avoid latency due to Nagle algorithm. */
++ {
++ int on = 1;
++ struct stat sb;
++
++ if (fstat (STDOUT_FILENO, &sb) == 0 && S_ISSOCK(sb.st_mode) &&
++ setsockopt (STDOUT_FILENO, IPPROTO_TCP, TCP_NODELAY,
++ (char *) &on, sizeof on) < 0)
++ {
++# ifdef HAVE_SYSLOG_H
++ syslog (LOG_DAEMON | LOG_ERR, "error setting TCP_NODELAY: %m");
++# endif /* HAVE_SYSLOG_H */
++ }
++ }
+ #endif
+
+ status = krb_recvauth (KOPT_DO_MUTUAL, STDIN_FILENO, &ticket, "rcmd",
+--- cvs-1.12.13+real.orig/src/status.c
++++ cvs-1.12.13+real/src/status.c
+@@ -213,8 +213,11 @@
+ cvs_output (" Working revision:\t", 0);
+ cvs_output (vers->vn_user, 0);
+
+- /* Only add the UTC timezone if there is a time to use. */
+- if (!server_active && strlen (vers->ts_rcs) > 0)
++ /* Only add the UTC timezone if there is a time to use.
++ * ts_rcs sometimes contains only "=" character so we check len > 1 */
++ if (!server_active && strlen (vers->ts_rcs) > 1 &&
++ /* prevent an ugly error message */
++ strcmp(vers->ts_rcs, "Result of merge") != 0)
+ {
+ /* Convert from the asctime() format to ISO 8601 */
+ char *buf;
+--- cvs-1.12.13+real.orig/src/subr.c
++++ cvs-1.12.13+real/src/subr.c
+@@ -807,6 +807,8 @@
+ long s;
+ long us;
+
++ if (time (&t) > desttime) return;
++
+ while (time (&t) <= desttime)
+ {
+ #ifdef HAVE_GETTIMEOFDAY
+@@ -835,6 +837,14 @@
+ (void)nanosleep (&ts, NULL);
+ }
+ }
++
++ /* sleep another 20 ms (2 HZ) to avoid races */
++ {
++ struct timespec ts;
++ ts.tv_sec = 0;
++ ts.tv_nsec = 20 * 1000 * 1000;
++ (void)nanosleep (&ts, NULL);
++ }
+ }
+
+
+@@ -1285,7 +1295,7 @@
+ dellist(&pflist);
+ free(b);
+ error (1, 0,
+-"internal error: unknown integer arg size (%d)",
++"internal error: unknown integer arg size (%zd)",
+ length);
+ break;
+ }
+@@ -1328,7 +1338,7 @@
+ dellist(&pflist);
+ free(b);
+ error (1, 0,
+-"internal error: unknown floating point arg size (%d)",
++"internal error: unknown floating point arg size (%zd)",
+ length);
+ break;
+ }
+--- cvs-1.12.13+real.orig/src/suck.c
++++ cvs-1.12.13+real/src/suck.c
+@@ -0,0 +1,140 @@
++/*-
++ * Copyright (c) 2011
++ * Thorsten Glaser <tg@mirbsd.org>
++ *
++ * Provided that these terms and disclaimer and all copyright notices
++ * are retained or reproduced in an accompanying document, permission
++ * is granted to deal in this work without restriction, including un-
++ * limited rights to use, publicly perform, distribute, sell, modify,
++ * merge, give away, or sublicence.
++ *
++ * This work is provided "AS IS" and WITHOUT WARRANTY of any kind, to
++ * the utmost extent permitted by applicable law, neither express nor
++ * implied; without malicious intent or gross negligence. In no event
++ * may a licensor, author or contributor be held liable for indirect,
++ * direct, other damage, loss, or other issues arising in any way out
++ * of dealing in the work, even if advised of the possibility of such
++ * damage or existence of a defect, except proven that it results out
++ * of said person's immediate fault when using the work as intended.
++ *-
++ * Download a ,v file from the repository
++ */
++
++#include "cvs.h"
++
++#ifdef HAVE_MMAP
++#include <sys/mman.h>
++
++#ifndef MAP_FILE
++#define MAP_FILE 0
++#endif
++
++#ifndef MAP_FAILED
++#define MAP_FAILED ((void *)-1)
++#endif
++#endif
++
++static const char * const suck_usage[] = {
++ "Usage: %s %s module/filename\n",
++ NULL
++};
++
++int
++suck(int argc, char *argv[])
++{
++ size_t m, n;
++ int fd;
++ char *buf, *cp, *fn;
++ struct stat sb;
++ FILE *fp;
++ RCSNode *rcs;
++
++ if (argc != 2)
++ usage(suck_usage);
++
++#ifdef CLIENT_SUPPORT
++ if (current_parsed_root->isremote) {
++ start_server();
++
++ if (!supported_request("suck"))
++ error(1, 0, "server does not support %s", "suck");
++
++ send_arg(argv[1]);
++ send_to_server("suck\012", 0);
++
++ return (get_responses_and_close());
++ }
++#endif
++
++ /* check for ../ attack */
++ if (pathname_levels(argv[1]) > 0)
++ error(1, 0, "path %s outside of repository", argv[1]);
++
++ /* repo + / + module/file */
++ cp = Xasprintf("%s/%s", current_parsed_root->directory, argv[1]);
++
++ /* find the slash */
++ if ((fn = cp + (last_component(cp) - cp)) == cp)
++ usage(suck_usage);
++
++ /* repo/module + file */
++ fn[-1] = '\0';
++
++ /* check if it's a valid RCS file, not /etc/passwd or somesuch */
++ if ((rcs = RCS_parse(fn, cp)) == NULL) {
++ error(1, 0, "not a valid RCS file: %s/%s", cp, fn);
++ return (1);
++ }
++
++ /* save the real pathname of the RCS file for later */
++ fn = xstrdup(rcs->path);
++
++ /* free up resources allocated until now */
++ freercsnode(&rcs);
++ free(cp);
++
++ /* attempt to open the file ourselves */
++ if ((fp = CVS_FOPEN(fn, FOPEN_BINARY_READ)) == NULL)
++ error(1, errno, "Could not open RCS archive %s", fn);
++ if (fstat(fd = fileno(fp), &sb) < 0)
++ error(1, errno, "Could not stat RCS archive %s", fn);
++
++ /*XXX this code will fail for large files */
++
++ /* attempt to slurp entire file into memory */
++#ifdef HAVE_MMAP
++ buf = mmap(NULL, sb.st_size, PROT_READ, MAP_PRIVATE, fd, 0);
++ if (buf == NULL || buf == MAP_FAILED) {
++ error(0, errno, "Could not map memory to RCS archive %s", fn);
++#endif
++ /* backup: just read */
++ cp = buf = xmalloc(n = sb.st_size);
++ while (n) {
++ m = read(fd, cp, n);
++ if (m == (size_t)-1)
++ error(1, errno,
++ "Could not read RCS archive %s", fn);
++ cp += m;
++ n -= m;
++ }
++#ifdef HAVE_MMAP
++ }
++#endif
++
++ /* write real pathname plus newline as text */
++ cvs_output(fn + strlen(current_parsed_root->directory) + 1, 0);
++ cvs_output("\n", 1);
++
++ /* write file content as binary */
++ cvs_output_binary(buf, sb.st_size);
++
++ /* release all resources allocated */
++#ifdef HAVE_MMAP
++ munmap(buf, sb.st_size);
++#endif
++ fclose(fp);
++ free(fn);
++
++ /* success */
++ return (0);
++}
+--- cvs-1.12.13+real.orig/src/tag.c
++++ cvs-1.12.13+real/src/tag.c
+@@ -310,6 +310,7 @@
+ * %b = branch mode = "?" (delete ops - unknown) | "T" (branch)
+ * | "N" (not branch)
+ * %c = cvs_cmd_name
++ * %I = commit ID
+ * %p = path from $CVSROOT
+ * %r = path from root
+ * %{sVv} = attribute list = file name, old version tag will be deleted
+@@ -333,6 +334,7 @@
+ "b", "c", delete_flag
+ ? '?' : branch_mode ? 'T' : 'N',
+ "c", "s", cvs_cmd_name,
++ "I", "s", global_session_id,
+ #ifdef SERVER_SUPPORT
+ "R", "s", referrer ? referrer->original : "NONE",
+ #endif /* SERVER_SUPPORT */
+@@ -747,6 +749,7 @@
+ * %b = branch mode = "?" (delete ops - unknown) | "T" (branch)
+ * | "N" (not branch)
+ * %c = cvs_cmd_name
++ * %I = commit ID
+ * %p = path from $CVSROOT
+ * %r = path from root
+ * %{sVv} = attribute list = file name, old version tag will be deleted
+@@ -770,6 +773,7 @@
+ "b", "c", delete_flag
+ ? '?' : branch_mode ? 'T' : 'N',
+ "c", "s", cvs_cmd_name,
++ "I", "s", global_session_id,
+ #ifdef SERVER_SUPPORT
+ "R", "s", referrer ? referrer->original : "NONE",
+ #endif /* SERVER_SUPPORT */
+@@ -1235,14 +1239,14 @@
+ else if (strcmp (version, "0") == 0)
+ {
+ if (!quiet)
+- error (0, 0, "couldn't tag added but un-commited file `%s'",
++ error (0, 0, "couldn't tag added but un-committed file `%s'",
+ finfo->file);
+ goto free_vars_and_return;
+ }
+ else if (version[0] == '-')
+ {
+ if (!quiet)
+- error (0, 0, "skipping removed but un-commited file `%s'",
++ error (0, 0, "skipping removed but un-committed file `%s'",
+ finfo->file);
+ goto free_vars_and_return;
+ }
+@@ -1450,6 +1454,7 @@
+ * 2. If IDB is non-NULL and val-tags cannot be opened for write.
+ * This allows callers to ignore the harmless inability to
+ * update the val-tags cache.
++ * 3. If CVSREADONLYFS is set (same as #2 above).
+ * false If the file could be opened and the tag is not present.
+ */
+ static int is_in_val_tags (DBM **idb, const char *name)
+@@ -1459,6 +1464,10 @@
+ datum mytag;
+ int status;
+
++ /* do nothing if we know we fail anyway */
++ if (readonlyfs)
++ return 1;
++
+ /* Casting out const should be safe here - input datums are not
+ * written to by the myndbm functions.
+ */
+@@ -1580,7 +1589,7 @@
+ * we are already there, or "" if we should do a W_LOCAL recursion.
+ * Sorry for three cases, but the "" case is needed in case the
+ * working directories come from diverse parts of the repository, the
+- * NULL case avoids an unneccesary chdir, and the non-NULL, non-""
++ * NULL case avoids an unnecessary chdir, and the non-NULL, non-""
+ * case is needed for checkout, where we don't want to chdir if the
+ * tag is found in CVSROOTADM_VALTAGS, but there is not (yet) any
+ * local directory.
+--- cvs-1.12.13+real.orig/src/update.c
++++ cvs-1.12.13+real/src/update.c
+@@ -58,7 +58,7 @@
+ static int patch_file (struct file_info *finfo,
+ Vers_TS *vers_ts,
+ int *docheckout, struct stat *file_info,
+- unsigned char *checksum);
++ md5_uint32 *checksum);
+ static void patch_file_write (void *, const char *, size_t);
+ #endif
+ static int merge_file (struct file_info *finfo, Vers_TS *vers);
+@@ -723,7 +723,7 @@
+ {
+ int docheckout;
+ struct stat file_info;
+- unsigned char checksum[16];
++ md5_uint32 checksum[4];
+
+ retval = patch_file (finfo,
+ vers, &docheckout,
+@@ -735,7 +735,8 @@
+ (rcs_diff_patches
+ ? SERVER_RCS_DIFF
+ : SERVER_PATCHED),
+- file_info.st_mode, checksum,
++ file_info.st_mode,
++ (void *)checksum,
+ NULL);
+ break;
+ }
+@@ -1181,6 +1182,7 @@
+ {
+ free (vers->ts_user);
+ vers->ts_user = NULL;
++ vers->ts_user_ists = 0;
+ }
+ }
+ return 0;
+@@ -1197,7 +1199,7 @@
+ {
+ char *backup;
+ int set_time, retval = 0;
+- int status;
++ int status = 0;
+ int file_is_dead;
+ struct buffer *revbuf;
+
+@@ -1366,6 +1368,7 @@
+
+ if (xvers_ts->ts_user != NULL)
+ free (xvers_ts->ts_user);
++ xvers_ts->ts_user_ists = 0; /*XXX really? */
+ xvers_ts->ts_user = xstrdup (xvers_ts->ts_rcs);
+ }
+
+@@ -1511,7 +1514,7 @@
+ */
+ static int
+ patch_file (struct file_info *finfo, Vers_TS *vers_ts, int *docheckout,
+- struct stat *file_info, unsigned char *checksum)
++ struct stat *file_info, md5_uint32 *checksum)
+ {
+ char *backup;
+ char *file1;
+--- cvs-1.12.13+real.orig/src/vers_ts.c
++++ cvs-1.12.13+real/src/vers_ts.c
+@@ -268,7 +268,10 @@
+ time_stamp_server (finfo->file, vers_ts, entdata);
+ else
+ #endif
++ {
+ vers_ts->ts_user = time_stamp (finfo->file);
++ vers_ts->ts_user_ists = 1;
++ }
+ }
+
+ return (vers_ts);
+@@ -339,6 +342,7 @@
+ {
+ struct tm *tm_p;
+
++ vers_ts->ts_user_ists = 1;
+ vers_ts->ts_user = xmalloc (25);
+ /* We want to use the same timestamp format as is stored in the
+ st_mtime. For unix (and NT I think) this *must* be universal
+--- cvs-1.12.13+real.orig/src/wrapper.c
++++ cvs-1.12.13+real/src/wrapper.c
+@@ -86,7 +86,7 @@
+ move this to a per-connection data structure, or better yet
+ think about a cleaner solution. */
+ static int wrap_setup_already_done = 0;
+- char *homedir;
++ char *homedir = NULL;
+
+ if (wrap_setup_already_done != 0)
+ return;
+@@ -107,6 +107,11 @@
+ free (file);
+ }
+
++#ifdef SERVER_SUPPORT
++ if (!server_active)
++#endif
++ {
++
+ /* Then add entries found in home dir, (if user has one) and file
+ exists. */
+ homedir = get_homedir ();
+@@ -115,6 +120,8 @@
+ hand it might be obnoxious to complain when CVS will function
+ just fine without .cvswrappers (and many users won't even know what
+ .cvswrappers is). */
++ }
++
+ if (homedir != NULL)
+ {
+ char *file = strcat_filename_onto_homedir (homedir, CVSDOTWRAPPER);
+@@ -339,6 +346,12 @@
+ if (!line || line[0] == '#')
+ return;
+
++ /* Allows user to declare all wrappers null and void */
++ if (line[0] == '!') {
++ wrap_kill ();
++ return;
++ }
++
+ memset (&e, 0, sizeof(e));
+
+ /* Search for the wild card */
+--- cvs-1.12.13+real.orig/src/zlib.c
++++ cvs-1.12.13+real/src/zlib.c
+@@ -229,7 +229,7 @@
+ would fetch all the available bytes, and at least one byte. */
+
+ status = (*cb->buf->input) (cb->buf->closure, bd->text,
+- need, BUFFER_DATA_SIZE, &nread);
++ need ? 1 : 0, BUFFER_DATA_SIZE, &nread);
+
+ if (status == -2)
+ /* Don't try to recover from memory allcoation errors. */
diff --git a/data/cvs/cvs_1.12.13+real.orig.tar.gz b/data/cvs/cvs_1.12.13+real.orig.tar.gz
new file mode 100644
index 000000000..5b3006a57
--- /dev/null
+++ b/data/cvs/cvs_1.12.13+real.orig.tar.gz
Binary files differ
diff --git a/data/cvs/linker.diff b/data/cvs/linker.diff
new file mode 100644
index 000000000..b4cca5076
--- /dev/null
+++ b/data/cvs/linker.diff
@@ -0,0 +1,11 @@
+diff -ur cvs-1.12.13/src/Makefile.am cvs-1.12.13+iPhone/src/Makefile.am
+--- cvs-1.12.13/src/Makefile.am 2018-09-04 10:32:01.000000000 -1000
++++ cvs-1.12.13+iPhone/src/Makefile.am 2018-09-04 10:32:57.000000000 -1000
+@@ -110,7 +110,6 @@
+ ../diff/libdiff.a \
+ ../lib/libcvs.a \
+ $(ZLIB_LIBS)
+-cvs_LDFLAGS = -Wl,--as-needed
+ cvs_LDADD = $(cvs_client_objects) \
+ ../diff/libdiff.a \
+ ../lib/libcvs.a \
diff --git a/data/cvs/make.sh b/data/cvs/make.sh
index a1eb6e34e..d266d0315 100644
--- a/data/cvs/make.sh
+++ b/data/cvs/make.sh
@@ -1,6 +1,7 @@
pkg:setup
-pkg:configure --without-gssapi
-make
+autoreconf -f -i
+pkg:configure --without-gssapi cvs_cv_func_printf_ptr=yes --with-external-zlib
+make -j8
pkg:install
pkg: mkdir -p /etc/profile.d
pkg: cp -a %/cvs.sh /etc/profile.d
diff --git a/data/cvs/mdns.diff b/data/cvs/mdns.diff
deleted file mode 100644
index b11a26a90..000000000
--- a/data/cvs/mdns.diff
+++ /dev/null
@@ -1,25 +0,0 @@
-diff -ru cvs-1.11.22/src/main.c cvs-1.11.22+iPhone/src/main.c
---- cvs-1.11.22/src/main.c 2006-05-16 03:12:35.000000000 +0000
-+++ cvs-1.11.22+iPhone/src/main.c 2008-02-02 14:50:57.000000000 +0000
-@@ -1,3 +1,5 @@
-+#include <mach-o/nlist.h>
-+
- /*
- * Copyright (C) 1986-2006 The Free Software Foundation, Inc.
- *
-@@ -395,6 +397,15 @@
- int argc;
- char **argv;
- {
-+#if !defined(__ENVIRONMENT_ASPEN_VERSION_MIN_REQUIRED__) || __ENVIRONMENT_ASPEN_VERSION_MIN_REQUIRED__ < 10200
-+ struct nlist nl[2];
-+ memset(nl, 0, sizeof(nl));
-+ nl[0].n_un.n_name = (char *) "_useMDNSResponder";
-+ nlist("/usr/lib/libc.dylib", nl);
-+ if (nl[0].n_type != N_UNDF)
-+ *(int *) nl[0].n_value = 0;
-+#endif
-+
- cvsroot_t *CVSroot_parsed = NULL;
- int cvsroot_update_env = 1;
- char *cp, *end;
diff --git a/data/cwidget/_metadata/version b/data/cwidget/_metadata/version
index 659914ae9..d8aef8135 100644
--- a/data/cwidget/_metadata/version
+++ b/data/cwidget/_metadata/version
@@ -1 +1 @@
-0.5.8
+0.5.17
diff --git a/data/cwidget/cwidget-0.5.17.tar.xz b/data/cwidget/cwidget-0.5.17.tar.xz
new file mode 100644
index 000000000..9c700f175
--- /dev/null
+++ b/data/cwidget/cwidget-0.5.17.tar.xz
Binary files differ
diff --git a/data/cwidget/cwidget-0.5.8.tar.gz b/data/cwidget/cwidget-0.5.8.tar.gz
deleted file mode 100644
index 8ef70af3d..000000000
--- a/data/cwidget/cwidget-0.5.8.tar.gz
+++ /dev/null
Binary files differ
diff --git a/data/cwidget/debian/changelog b/data/cwidget/debian/changelog
new file mode 100644
index 000000000..187b15997
--- /dev/null
+++ b/data/cwidget/debian/changelog
@@ -0,0 +1,402 @@
+cwidget (0.5.17-4) unstable; urgency=medium
+
+ * Acknowledge NMU.
+ * Fix failure with autopkgtest when using g++ 5 (Closes: #795177).
+ Thanks Martin Pitt.
+
+ -- Manuel A. Fernandez Montecelo <mafm@debian.org> Thu, 13 Aug 2015 14:13:04 +0100
+
+cwidget (0.5.17-3.1) unstable; urgency=medium
+
+ * Non-maintainer upload.
+ * Rename libcwidget3 to libcwidget3v5, libcwidget3 to libcwidget3v5,
+ follow-up for the libstdc++6 ABI transition. Addresses: #794594.
+ * Add Conflicts/Replaces for the old packages.
+
+ -- Matthias Klose <doko@debian.org> Tue, 04 Aug 2015 20:46:19 +0200
+
+cwidget (0.5.17-3) unstable; urgency=low
+
+ * Changes to build with GCC-5 and in C++11 mode (Closes: #792681).
+ Thanks Matthias Klose. Prompted by:
+ - transition to GCC-5 as default compiler in Debian unstable;
+ - failure to compile cwidget without -std=c++11 with
+ this new version;
+ - there is a change in the ABI of libstdc++ w.r.t. GCC < 5, in
+ std::string, std::list and other parts (sigc++-2.0 is a dependency of
+ cwidget and uses std::list in the API)
+ * Quell lintian warning xs-testsuite-header-in-debian-control by
+ removing XS- prefix in debian/control
+ * Revamp options passed to the compiler, among others some obsolete
+ compiler flags that tried to address a problem with old versions of
+ the compiler, but that were actually not enabled since long ago
+ * Do not install jquery.js and link it from documentation directories in
+ another place where it cropped up
+ * Update Build-Depends-Indep on perlmagick to libimage-magick-perl
+ (Closes: #789224). Thanks Martin Michlmayr.
+
+ -- Manuel A. Fernandez Montecelo <mafm@debian.org> Fri, 31 Jul 2015 01:10:21 +0100
+
+cwidget (0.5.17-2) unstable; urgency=medium
+
+ [ Jérémy Bobbio ]
+ * Add a patch to have Doxygen not write timestamps in the generated
+ documentation to allow package builds to be reproducible. (Closes:
+ #762666)
+
+ [ Manuel A. Fernandez Montecelo ]
+ * Bump Standards-Version to 3.9.6 (no changes needed)
+ * Change priority of source package to 'optional' (from 'extra'), and
+ remove the override of priority 'important' for the binary package
+ libcwidget3
+
+ -- Manuel A. Fernandez Montecelo <mafm@debian.org> Sun, 28 Sep 2014 16:03:09 +0100
+
+cwidget (0.5.17-1) unstable; urgency=medium
+
+ * New upstream release
+ - Incorporated changes of last NMUs
+ - Remove -1.9 from some of the autotools commands, run instead the
+ latest/default versions of the system (1.9 is quite old by now)
+ * debian/source/format: move from "1.0" to "3.0 (quilt)"
+ * debian/compat: level 9
+ - Multi-Arch enabled now
+ * Add tests for autopkgtest
+
+ -- Manuel A. Fernandez Montecelo <mafm@debian.org> Sat, 22 Feb 2014 00:21:23 +0000
+
+cwidget (0.5.16-5) unstable; urgency=medium
+
+ * Bump Standards-Version to 3.9.5 (no changes needed)
+ * Use dh-autoreconf instead of autotools-dev for better new-port
+ coverage. Thanks Colin Watson for the report and the patch (I applied
+ it by hand and slightly modified since it didn't apply cleanly).
+ (Closes: #732539)
+ * Quell lintian warnings:
+ - embedded-javascript-library: add Depends on libjs-jquery in the -doc
+ package, and create a symbolic link instead of install the local copy
+ of the file "jquery.min.js"
+ - "binary-control-field-duplicates-source": remove duplicate Priority
+ field from most of the binary packages
+ - missing-debian-source-format: add "1.0" to "debian/source/format"
+ for the time being
+ - vcs-field-not-canonical
+ - no-upstream-changelog: upstream's NEWS is the changelog
+ * In -doc package, downgrade browser from Recommends to Suggests
+ * VCS changed from 'cwidget/debian/.git' to 'cwidget/cwidget.git'
+
+ -- Manuel A. Fernandez Montecelo <mafm@debian.org> Fri, 21 Feb 2014 18:02:04 +0000
+
+cwidget (0.5.16-4) unstable; urgency=medium
+
+ * New maintainer (Closes: #738893)
+ * Incorporate changes from all previous NMUs
+
+ -- Manuel A. Fernandez Montecelo <mafm@debian.org> Sat, 15 Feb 2014 16:45:15 +0000
+
+cwidget (0.5.16-3.5) unstable; urgency=low
+
+ * Non-maintainer upload.
+ * Support cross-building (thanks, Eleanor Chen; closes: #721357).
+ * Use the autotools-dev dh addon to update config.guess/config.sub for
+ arm64 (closes: #725913).
+
+ -- Colin Watson <cjwatson@debian.org> Thu, 14 Nov 2013 10:02:05 +0000
+
+cwidget (0.5.16-3.4) unstable; urgency=low
+
+ * Non-maintainer upload.
+
+ [ New translations ]
+ * Japanese, thanks to Kenshi Muto. (Closes: #675739)
+ * Chinese (China), thanks to Never Min.
+ * Russian, thanks to Yuri Kozlov. (Closes: #676247)
+ * Thai, thanks to Theppitak Karoonboonyanan. (Closes: 676905)
+ * Brazilian, thanks to Adriano Rafael Gomes. (Closes: 676989)
+ * Croatian, thanks to Tomislav Krznar.
+ * All remaining translations from aptitude.
+
+ -- David Prévot <taffit@debian.org> Sun, 17 Jun 2012 15:26:05 -0400
+
+cwidget (0.5.16-3.3) unstable; urgency=low
+
+ * Non-maintainer upload.
+ * Actually display translated strings: cherry-pick c65cae upstream, and use
+ libcwidget3 as domain name in src/cwidget/generic/util/i18n.h and
+ po/Makevars; install usr/share/locale files. (Closes: #559738)
+ * Cursor displayed in proper place for wide-char prompt, thanks to Daniel
+ Hartwig. (Closes: #316939)
+ * Pressing 'delete' in search/tree limit dialog delete previous entry
+ thanks to Samuel Fogh. (Closes: #493320)
+
+ [ New translations ]
+ * German, thanks to Sven Joachim. (Closes: #561147)
+ * Spanish, thanks to Omar Campagne. (Closes: #655849)
+ * French, thanks to Julien Patriarca. (Closes: #655689)
+ * Polish, thanks to Michał Kułach. (Closes: #660944)
+ * Danish, thanks to Joe Hansen. (Closes: #671762)
+ * Czech, thanks to Michal Šimůnek. (Closes: #673141)
+
+ -- David Prévot <taffit@debian.org> Sat, 02 Jun 2012 20:33:52 -0400
+
+cwidget (0.5.16-3.2) unstable; urgency=low
+
+ * Non maintainer upload.
+ * Build using hardened build flags. Closes: #656024.
+ * Fix build failure with GCC-4.7. Closes: #667147.
+
+ -- Matthias Klose <doko@debian.org> Mon, 16 Apr 2012 19:40:07 +0200
+
+cwidget (0.5.16-3.1) unstable; urgency=low
+
+ * Non-maintainer upload.
+ * Don't ship .la files (Closes: #621184).
+
+ -- Luk Claes <luk@debian.org> Sat, 11 Jun 2011 16:31:11 +0200
+
+cwidget (0.5.16-3) unstable; urgency=low
+
+ * Disable strict aliasing to prevent g++ from erroring out in the build.
+ "Fixing" it this way is a horrible hack, but the error message is
+ entirely incomprehensible, I can't figure out which code, if any, is
+ at fault here, and my attempts to fix it by phrasing the code
+ differently have failed. (Closes: #561157, #526674)
+
+ * Add misc:Depends entries on the Depends lines.
+
+ -- Daniel Burrows <dburrows@debian.org> Sun, 17 Jan 2010 14:22:37 -0800
+
+cwidget (0.5.16-2) unstable; urgency=low
+
+ * Try a less subtle approach to fixing the threading test cases on hppa.
+ (Closes: #557982)
+
+ -- Daniel Burrows <dburrows@debian.org> Mon, 30 Nov 2009 15:10:53 -0800
+
+cwidget (0.5.16-1) unstable; urgency=low
+
+ * New upstream version.
+
+ -- Daniel Burrows <dburrows@debian.org> Sun, 29 Nov 2009 18:45:42 -0800
+
+cwidget (0.5.15-1) unstable; urgency=low
+
+ * New upstream version.
+
+ + Hopefully fixes the FTBFS on hppa (Closes: #546171).
+
+ -- Daniel Burrows <dburrows@debian.org> Sun, 29 Nov 2009 12:50:15 -0800
+
+cwidget (0.5.14-1) unstable; urgency=low
+
+ * New upstream version.
+
+ + Fix a divide-by-zero in the column fragment code. (Closes: #556185)
+
+ -- Daniel Burrows <dburrows@debian.org> Tue, 17 Nov 2009 12:33:11 -0800
+
+cwidget (0.5.13-1) unstable; urgency=low
+
+ * New upstream version.
+
+ * Move libcwidget3-dbg into the "debug" section as per the new archive
+ layout.
+
+ * Remove doc/ikiwiki/.ikiwiki in "clean".
+
+ * Add perlmagick to Build-Depends-Indep. (Closes: #497877)
+
+ -- Daniel Burrows <dburrows@debian.org> Sat, 05 Sep 2009 09:46:41 -0700
+
+cwidget (0.5.12-4) unstable; urgency=low
+
+ * Backport a fix for a nasty deadlock that was causing aptitude to
+ freeze up after running dpkg. (Closes: #511708)
+
+ -- Daniel Burrows <dburrows@debian.org> Tue, 27 Jan 2009 23:18:01 -0800
+
+cwidget (0.5.12-3) unstable; urgency=low
+
+ * Fix the string truncation fix so that it doesn't enter an infinite
+ loop and use up all the available memory when the output string is
+ empty.
+
+ -- Daniel Burrows <dburrows@debian.org> Sat, 06 Sep 2008 16:22:07 -0700
+
+cwidget (0.5.12-2) unstable; urgency=low
+
+ * Backport a fix for a string truncation bug from HEAD (Closes: #496119).
+
+ * Fix the URL to the packaging VCS (Closes: #492584).
+
+ -- Daniel Burrows <dburrows@debian.org> Sun, 31 Aug 2008 22:01:53 -0700
+
+cwidget (0.5.12-1) unstable; urgency=low
+
+ * New upstream version.
+
+ -- Daniel Burrows <dburrows@debian.org> Sat, 28 Jun 2008 08:58:24 -0700
+
+cwidget (0.5.11-1) unstable; urgency=low
+
+ * New upstream version; really fixes the backspacing problem.
+
+ -- Daniel Burrows <dburrows@debian.org> Sat, 12 Apr 2008 08:03:45 -0700
+
+cwidget (0.5.10-1) unstable; urgency=low
+
+ * New upstream version.
+
+ - Treat KEY_DC, KEY_BACKSPACE, and character 127 as equivalent in
+ key_matches(). (Closes: #452651)
+
+ -- Daniel Burrows <dburrows@debian.org> Fri, 11 Apr 2008 22:13:27 -0700
+
+cwidget (0.5.9-1) unstable; urgency=low
+
+ * New upstream version.
+
+ - Compiles with libsigc++ version 2.2.
+
+ -- Daniel Burrows <dburrows@debian.org> Fri, 21 Mar 2008 17:03:00 -0700
+
+cwidget (0.5.8-2) unstable; urgency=low
+
+ * Upload to unstable.
+
+ * Build-depend on ikiwiki (>= 1.34) for goodstuff. (Closes: #471997)
+
+ * Eliminate the last few missing #includes (in the test cases,
+ Closes: #461682)
+
+ Note that in order to build or use cwidget with g++-4.3, you will need a
+ version of libsigc++ that supports g++-4.3 (>= 2.0.18-1).
+
+ * Put the documentation in Programming/C++, not the nonexistant
+ section Apps/Programming.
+
+ -- Daniel Burrows <dburrows@debian.org> Fri, 21 Mar 2008 14:51:07 -0700
+
+cwidget (0.5.8-1) experimental; urgency=low
+
+ * New upstream version.
+ - ABI change due to the changes below.
+ - Remove all references to hash_map; use std::map instead.
+ - Fix all compilation errors with g++ 4.3. (Closes: #461682)
+
+ -- Daniel Burrows <dburrows@debian.org> Sun, 20 Jan 2008 09:37:11 -0800
+
+cwidget (0.5.7-1) experimental; urgency=low
+
+ * New Upstream Version.
+
+ * ABI change again; create libcwidget2* packages.
+
+ * Fix several threading errors in handling input, particularly when
+ cwidget was temporarily suspended and then resumed.
+
+ (Closes: #461342) and possibly more, but I'll have to ask the
+ reporters.
+
+ * If a byte sequence read from stdin can't be decoded in the current
+ locale, beep at the user instead of throwing a fatal
+ exception. (Closes: #460722)
+
+ -- Daniel Burrows <dburrows@debian.org> Sat, 19 Jan 2008 10:26:00 -0800
+
+cwidget (0.5.6.1-3) unstable; urgency=low
+
+ * Apply patch from Michael Daenzer to support building with
+ dpkg-buildpackage -j (Closes: #456678).
+
+ * ikiwiki now depends only on what the core engine needs, and so some of
+ the plugins that cwidget users are no longer available in a build
+ environment without explicitly installing them.
+
+ Add libhtml-scrubber-perl to Build-Depends (Closes: #458654).
+
+ -- Daniel Burrows <dburrows@debian.org> Sun, 06 Jan 2008 08:58:49 -0800
+
+cwidget (0.5.6.1-2) unstable; urgency=low
+
+ * Rename debian/libcwidget0.install to debian/libcwidget1.install so the
+ library actually gets installed.
+
+ -- Daniel Burrows <dburrows@debian.org> Sat, 15 Dec 2007 22:24:48 -0800
+
+cwidget (0.5.6.1-1) unstable; urgency=low
+
+ * New upstream version.
+
+ * Rename libcwidget0 and libcwidget0-dbg to libcwidget1 and
+ libcwidget1-dbg.
+
+ * Declare libcwidget-doc to be in section doc, to make lintian happy.
+
+ * No longer conflict/provide/replace libcwidget-dbg; those relationships
+ were added because libcwidget0-dbg fully replaced libcwidget-dbg, but
+ libcwidget1-dbg is not related to libcwidget-dbg.
+
+ -- Daniel Burrows <dburrows@debian.org> Sat, 15 Dec 2007 18:46:50 -0800
+
+cwidget (0.5.6-1) unstable; urgency=low
+
+ * New upstream version.
+
+ * ABI change; the SONAME is now libcwidget.so.1.
+
+ * If stdin is closed, abort the main loop with an exception instead
+ of spinning forever. (Closes: #451770)
+
+ * Add a missing #include <stdarg.h>; fixes building on stable and on
+ some other platforms. (Closes: #452979)
+
+ * Add a build dependency on cppunit so 'make check' does something
+ useful.
+
+ * Add a build dependency on ikiwiki so we can build all the
+ documentation.
+
+ -- Daniel Burrows <dburrows@debian.org> Sat, 15 Dec 2007 18:07:37 -0800
+
+cwidget (0.5.5-4) unstable; urgency=low
+
+ * Fix a related but different bug in Makefile.am. (Closes: #451400)
+
+ -- Daniel Burrows <dburrows@debian.org> Sat, 24 Nov 2007 21:35:51 -0800
+
+cwidget (0.5.5-3) unstable; urgency=low
+
+ * Actually fix Makefile.in. (Closes: #451400)
+
+ * Add Homepage and VCS-* fields to the control file.
+
+ -- Daniel Burrows <dburrows@debian.org> Sat, 24 Nov 2007 08:21:57 -0800
+
+cwidget (0.5.5-2) unstable; urgency=low
+
+ * Do a quick fix for a Makefile bug (a better fix is already present in
+ the upstream repository). (Closes: #451400)
+
+ * Rename the debug package from libcwidget-dbg to libcwidget0-dbg, since
+ obviously once the soname changes we'll need a separate debug package.
+
+ -- Daniel Burrows <dburrows@debian.org> Mon, 19 Nov 2007 21:08:10 -0800
+
+cwidget (0.5.5-1) unstable; urgency=low
+
+ * New upstream release.
+
+ -- Daniel Burrows <dburrows@debian.org> Thu, 15 Nov 2007 21:23:56 -0800
+
+cwidget (0.5.4-1) unstable; urgency=low
+
+ * New upstream release.
+
+ -- Daniel Burrows <dburrows@debian.org> Mon, 12 Nov 2007 17:15:18 -0800
+
+cwidget (0.5.3-1) unstable; urgency=low
+
+ * Initial release.
+
+ -- Daniel Burrows <dburrows@debian.org> Fri, 09 Nov 2007 07:02:45 -0800
diff --git a/data/cwidget/debian/compat b/data/cwidget/debian/compat
new file mode 100644
index 000000000..ec635144f
--- /dev/null
+++ b/data/cwidget/debian/compat
@@ -0,0 +1 @@
+9
diff --git a/data/cwidget/debian/control b/data/cwidget/debian/control
new file mode 100644
index 000000000..7928c5cb9
--- /dev/null
+++ b/data/cwidget/debian/control
@@ -0,0 +1,94 @@
+Source: cwidget
+Priority: optional
+Section: libs
+Homepage: http://cwidget.alioth.debian.org
+Vcs-Git: git://anonscm.debian.org/cwidget/cwidget.git
+Vcs-Browser: http://anonscm.debian.org/gitweb/?p=cwidget/cwidget.git
+Maintainer: Manuel A. Fernandez Montecelo <mafm@debian.org>
+Build-Depends: debhelper (>= 9~),
+ g++ (>= 4:5.2),
+ dh-autoreconf,
+ gettext,
+ libcppunit-dev (>= 1.13.2-2.1),
+ libncursesw5-dev,
+ libsigc++-2.0-dev
+Build-Depends-Indep: doxygen,
+ ikiwiki (>= 1.34),
+ libhtml-scrubber-perl,
+ libimage-magick-perl
+Standards-Version: 3.9.6
+Testsuite: autopkgtest
+
+Package: libcwidget3v5
+Architecture: any
+Multi-Arch: same
+Pre-Depends: ${misc:Pre-Depends}
+Depends: ${misc:Depends},
+ ${shlibs:Depends}
+Suggests: libcwidget-dev
+Conflicts: libcwidget3
+Replaces: libcwidget3
+Description: high-level terminal interface library for C++ (runtime files)
+ libcwidget is a modern user interface library modeled on GTK+ and Qt,
+ but using curses as its display layer and with widgets that are
+ tailored to a terminal environment.
+ .
+ This package contains the files that are required to run programs
+ compiled against libcwidget.
+
+Package: libcwidget3v5-dbg
+Section: debug
+Priority: extra
+Architecture: any
+Multi-Arch: same
+Depends: ${misc:Depends},
+ libcwidget3v5 (= ${binary:Version})
+Suggests: libcwidget-dev
+Conflicts: libcwidget3-dbg
+Replaces: libcwidget3-dbg
+Description: high-level terminal interface library for C++ (debugging files)
+ libcwidget is a modern user interface library modeled on GTK+ and Qt,
+ but using curses as its display layer and with widgets that are
+ tailored to a terminal environment.
+ .
+ This package contains debugging symbols for libcwidget-dbg. It is
+ only needed if you want to generate useful backtraces for programs
+ using cwidget.
+
+Package: libcwidget-dev
+Section: libdevel
+Architecture: any
+Multi-Arch: same
+Depends: ${misc:Depends},
+ libcwidget3v5 (= ${binary:Version}),
+ libsigc++-2.0-dev,
+ libncursesw5-dev,
+ pkg-config
+Suggests: libcwidget-doc
+Description: high-level terminal interface library for C++ (development files)
+ libcwidget is a modern user interface library modeled on GTK+ and Qt,
+ but using curses as its display layer and with widgets that are
+ tailored to a terminal environment.
+ .
+ This package contains files that are needed to write or compile
+ software that uses libcwidget.
+ .
+ WARNING: this is a newly created library whose development is closely
+ tied to the development of aptitude. Its API may be incomplete and
+ is likely to change considerably version-over-version! You may want
+ to avoid cwidget for stable projects.
+
+Package: libcwidget-doc
+Section: doc
+Architecture: all
+Multi-Arch: foreign
+Depends: ${misc:Depends},
+ libjs-jquery
+Suggests: libcwidget-dev,
+ iceweasel | www-browser
+Description: high-level terminal interface library for C++ (documentation)
+ libcwidget is a modern user interface library modeled on GTK+ and Qt,
+ but using curses as its display layer and with widgets that are
+ tailored to a terminal environment.
+ .
+ This package contains documentation for libcwidget, in HTML format.
diff --git a/data/cwidget/debian/copyright b/data/cwidget/debian/copyright
new file mode 100644
index 000000000..850616e03
--- /dev/null
+++ b/data/cwidget/debian/copyright
@@ -0,0 +1,5 @@
+Copyright 1999-2007 Daniel Burrows <dburrows@debian.org>
+
+The upstream Web site for cwidget is http://cwidget.alioth.debian.org
+
+License: GPL (/usr/share/common-licenses/GPL)
diff --git a/data/cwidget/debian/gbp.conf b/data/cwidget/debian/gbp.conf
new file mode 100644
index 000000000..69ef158e5
--- /dev/null
+++ b/data/cwidget/debian/gbp.conf
@@ -0,0 +1,3 @@
+[DEFAULT]
+builder = pdebuild --debbuildopts "-i\.git -I.git"
+pristine-tar = True
diff --git a/data/cwidget/debian/libcwidget-dev.docs b/data/cwidget/debian/libcwidget-dev.docs
new file mode 100644
index 000000000..100b93820
--- /dev/null
+++ b/data/cwidget/debian/libcwidget-dev.docs
@@ -0,0 +1 @@
+README \ No newline at end of file
diff --git a/data/cwidget/debian/libcwidget-dev.install b/data/cwidget/debian/libcwidget-dev.install
new file mode 100644
index 000000000..e72f0bac9
--- /dev/null
+++ b/data/cwidget/debian/libcwidget-dev.install
@@ -0,0 +1,5 @@
+usr/include/cwidget
+usr/lib/*/libcwidget.so
+usr/lib/*/libcwidget.a
+usr/lib/*/pkgconfig
+usr/lib/*/cwidget
diff --git a/data/cwidget/debian/libcwidget-doc.doc-base b/data/cwidget/debian/libcwidget-doc.doc-base
new file mode 100644
index 000000000..6dbff17e5
--- /dev/null
+++ b/data/cwidget/debian/libcwidget-doc.doc-base
@@ -0,0 +1,12 @@
+Document: cwidget-doc
+Title: CWidget API Documentation
+Author: Daniel Burrows
+Abstract: This documentation, autogenerated by doxygen, describes
+ the programming interface to the CWidget UI library. CWidget is
+ a high-level C++ library for programs that provide a terminal-based
+ user interface.
+Section: Programming/C++
+
+Format: HTML
+Index: /usr/share/doc/libcwidget-doc/html/index.html
+Files: /usr/share/doc/libcwidget-doc/html/*.html
diff --git a/data/cwidget/debian/libcwidget-doc.docs b/data/cwidget/debian/libcwidget-doc.docs
new file mode 100644
index 000000000..0bd3136cd
--- /dev/null
+++ b/data/cwidget/debian/libcwidget-doc.docs
@@ -0,0 +1 @@
+doc/html
diff --git a/data/cwidget/debian/libcwidget-doc.links b/data/cwidget/debian/libcwidget-doc.links
new file mode 100644
index 000000000..98c26b11b
--- /dev/null
+++ b/data/cwidget/debian/libcwidget-doc.links
@@ -0,0 +1,2 @@
+usr/share/javascript/jquery/jquery.min.js usr/share/doc/libcwidget-doc/html/ikiwiki/jquery.min.js
+usr/share/javascript/jquery/jquery.js usr/share/doc/libcwidget-doc/html/documentation/api/jquery.js
diff --git a/data/cwidget/debian/libcwidget3v5.install b/data/cwidget/debian/libcwidget3v5.install
new file mode 100644
index 000000000..75a620dc3
--- /dev/null
+++ b/data/cwidget/debian/libcwidget3v5.install
@@ -0,0 +1,2 @@
+usr/lib/*/libcwidget.so.*
+usr/share/locale
diff --git a/data/cwidget/debian/patches/series b/data/cwidget/debian/patches/series
new file mode 100644
index 000000000..ab3c544f4
--- /dev/null
+++ b/data/cwidget/debian/patches/series
@@ -0,0 +1 @@
+do-not-write-timestamps-in-documentation
diff --git a/data/cwidget/debian/rules b/data/cwidget/debian/rules
new file mode 100755
index 000000000..44fc573e0
--- /dev/null
+++ b/data/cwidget/debian/rules
@@ -0,0 +1,38 @@
+#!/usr/bin/make -f
+
+#export DH_VERBOSE=1
+
+
+export DEB_CXXFLAGS_MAINT_APPEND := -pipe -Wall -std=c++11
+export DEB_LDFLAGS_MAINT_APPEND := -Wl,--as-needed
+
+
+%:
+ dh $@ --with autoreconf --parallel
+
+override_dh_auto_configure:
+ dh_auto_configure -- --disable-werror $(CROSS_CONFIGURE_OPTIONS)
+
+override_dh_auto_clean:
+ -rm -rf doc/ikiwiki/.ikiwiki
+ dh_auto_clean
+
+# Build indep overrides
+override_dh_auto_build-indep:
+ $(MAKE) -C doc doc
+
+override_dh_auto_test-indep:
+ # No tests needed for docs
+
+override_dh_auto_install-indep:
+ $(MAKE) -C doc install
+ dh_install -i -Xjquery.min.js -Xjquery.js
+
+override_dh_installchangelogs:
+ dh_installchangelogs -- NEWS
+
+override_dh_installexamples:
+ dh_installexamples -plibcwidget-dev src/cwidget/testcwidget.cc
+
+override_dh_strip:
+ dh_strip -a --dbg-package=libcwidget3v5-dbg
diff --git a/data/cwidget/debian/source/format b/data/cwidget/debian/source/format
new file mode 100644
index 000000000..163aaf8d8
--- /dev/null
+++ b/data/cwidget/debian/source/format
@@ -0,0 +1 @@
+3.0 (quilt)
diff --git a/data/cwidget/debian/tests/compile-example-testcwidget b/data/cwidget/debian/tests/compile-example-testcwidget
new file mode 100644
index 000000000..a1a5692de
--- /dev/null
+++ b/data/cwidget/debian/tests/compile-example-testcwidget
@@ -0,0 +1,27 @@
+#!/bin/sh
+
+# Author: Manuel A. Fernandez Montecelo <mafm@debian.org>
+#
+# autopkgtest check: Build and run a program against the library, to verify that
+# the headers and pkg-config file are installed correctly
+
+
+set -e
+
+WORKDIR=$(mktemp -d)
+trap "rm -rf $WORKDIR" 0 INT QUIT ABRT PIPE TERM
+cd $WORKDIR
+
+SRCFILE=testcwidget.cc
+SRCFILEGZ=testcwidget.cc.gz
+BINFILE=testcwidget
+
+gunzip -c /usr/share/doc/libcwidget-dev/examples/$SRCFILEGZ > $SRCFILE
+
+g++ -o $BINFILE $SRCFILE -std=c++11 `pkg-config --cflags --libs cwidget` -I /usr/include/cwidget
+echo "build: OK"
+
+[ -x $BINFILE ]
+# interactive, cannot invoke and close from command line
+#./$BINFILE
+echo "run: OK"
diff --git a/data/cwidget/debian/tests/control b/data/cwidget/debian/tests/control
new file mode 100644
index 000000000..14cc57793
--- /dev/null
+++ b/data/cwidget/debian/tests/control
@@ -0,0 +1,2 @@
+Tests: compile-example-testcwidget
+Depends: libcwidget-dev, build-essential
diff --git a/data/cwidget/lock.diff b/data/cwidget/lock.diff
new file mode 100644
index 000000000..54a259938
--- /dev/null
+++ b/data/cwidget/lock.diff
@@ -0,0 +1,12 @@
+diff -ur cwidget-0.5.17/src/cwidget/toplevel.cc cwidget-0.5.17+iPhone/src/cwidget/toplevel.cc
+--- cwidget-0.5.17/src/cwidget/toplevel.cc 2014-02-21 06:00:38.000000000 -1000
++++ cwidget-0.5.17+iPhone/src/cwidget/toplevel.cc 2018-08-30 17:10:21.000000000 -1000
+@@ -1056,7 +1056,7 @@
+
+ void updatecursornow()
+ {
+- threads::mutex::lock(get_mutex());
++ threads::mutex::lock l(get_mutex());
+
+ if(toplevel->get_cursorvisible())
+ {
diff --git a/data/cwidget/make.sh b/data/cwidget/make.sh
index 01abde691..3e0ff053d 100644
--- a/data/cwidget/make.sh
+++ b/data/cwidget/make.sh
@@ -1,5 +1,6 @@
pkg:setup
-pkg:configure
-pkg:make
+cp ${PKG_BASE}/config.sub .
+CXXFLAGS="-std=c++11 -D_XOPEN_SOURCE_EXTENDED -Wno-error" CFLAGS="-D_XOPEN_SOURCE_EXTENDED" pkg:configure
+pkg:make -j8
pkg:install
pkg: cp -a cwidget-config.h /usr/include/
diff --git a/data/cwidget/max.diff b/data/cwidget/max.diff
new file mode 100644
index 000000000..fc4bcce95
--- /dev/null
+++ b/data/cwidget/max.diff
@@ -0,0 +1,12 @@
+diff -ur cwidget-0.5.17/src/cwidget/widgets/text_layout.cc cwidget-0.5.17+iPhone/src/cwidget/widgets/text_layout.cc
+--- cwidget-0.5.17/src/cwidget/widgets/text_layout.cc 2014-02-21 04:34:52.000000000 -1000
++++ cwidget-0.5.17+iPhone/src/cwidget/widgets/text_layout.cc 2018-08-30 17:05:02.000000000 -1000
+@@ -86,7 +86,7 @@
+ {
+ freshen_contents(lastst);
+ if(start > 0)
+- set_start(std::max(0, start - mouse_wheel_scroll_lines));
++ set_start(std::max((unsigned long)0, start - mouse_wheel_scroll_lines));
+ }
+ }
+ else if((bstate & BUTTON5_PRESSED) != 0)
diff --git a/data/cwidget/pod.diff b/data/cwidget/pod.diff
new file mode 100644
index 000000000..f88c45713
--- /dev/null
+++ b/data/cwidget/pod.diff
@@ -0,0 +1,14 @@
+diff -ur cwidget-0.5.17/src/cwidget/curses++.h cwidget-0.5.17+iPhone/src/cwidget/curses++.h
+--- cwidget-0.5.17/src/cwidget/curses++.h 2014-02-21 04:34:52.000000000 -1000
++++ cwidget-0.5.17+iPhone/src/cwidget/curses++.h 2018-08-30 16:30:44.000000000 -1000
+@@ -58,9 +58,7 @@
+ */
+ attr_t attrs;
+
+- wchtype()
+- {
+- }
++ wchtype() = default;
+
+ wchtype(const wchar_t &_ch, const attr_t &_attrs)
+ :ch(_ch), attrs(_attrs)
diff --git a/data/cwidget/pthread.diff b/data/cwidget/pthread.diff
new file mode 100644
index 000000000..9c94a2cbb
--- /dev/null
+++ b/data/cwidget/pthread.diff
@@ -0,0 +1,11 @@
+diff -ur cwidget-0.5.17/src/cwidget/generic/threads/threads.h cwidget-0.5.17+iPhone/src/cwidget/generic/threads/threads.h
+--- cwidget-0.5.17/src/cwidget/generic/threads/threads.h 2014-02-21 04:34:52.000000000 -1000
++++ cwidget-0.5.17+iPhone/src/cwidget/generic/threads/threads.h 2018-08-30 16:56:11.000000000 -1000
+@@ -25,6 +25,7 @@
+ #ifndef THREADS_H
+ #define THREADS_H
+
++#include <pthread.h>
+ #include <errno.h>
+ #include <cwidget/generic/util/exception.h>
+
diff --git a/data/cwidget/timestamps.diff b/data/cwidget/timestamps.diff
new file mode 100644
index 000000000..3b5c25544
--- /dev/null
+++ b/data/cwidget/timestamps.diff
@@ -0,0 +1,24 @@
+Description: Do not write timestamps in documentation generated by Doxygen
+ In order to make the build reproducible, we configure Doxygen to skip
+ writing timestamps in the HTML documentation it generates.
+Author: Jérémy Bobbio <lunar@debian.org>
+Last-Update: 2014-09-24
+
+--- cwidget-0.5.17.orig/Doxyfile.in
++++ cwidget-0.5.17/Doxyfile.in
+@@ -699,6 +699,15 @@ HTML_HEADER =
+
+ HTML_FOOTER =
+
++# If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML
++# page will contain the date and time when the page was generated. Setting this
++# to NO can help when comparing the output of multiple runs.
++# The default value is: YES.
++# This tag requires that the tag GENERATE_HTML is set to YES.
++
++HTML_TIMESTAMP = NO
++
++
+ # The HTML_STYLESHEET tag can be used to specify a user-defined cascading
+ # style sheet that is used by each HTML page. It can be used to
+ # fine-tune the look of the HTML output. If the tag is left blank doxygen
diff --git a/data/cwidget/xopen.diff b/data/cwidget/xopen.diff
deleted file mode 100644
index d657f7698..000000000
--- a/data/cwidget/xopen.diff
+++ /dev/null
@@ -1,26 +0,0 @@
-diff -ru cwidget-0.5.8/src/cwidget/curses++.h cwidget-0.5.8+iPhone/src/cwidget/curses++.h
---- cwidget-0.5.8/src/cwidget/curses++.h 2008-01-20 17:37:06.000000000 +0000
-+++ cwidget-0.5.8+iPhone/src/cwidget/curses++.h 2009-07-07 07:28:31.000000000 +0000
-@@ -22,6 +22,9 @@
- #ifndef CURSES_PLUSPLUS_H
- #define CURSES_PLUSPLUS_H
-
-+#define _XOPEN_SOURCE
-+#define _XOPEN_SOURCE_EXTENDED 1
-+
- #include <string>
- #include <ncursesw/curses.h>
-
-diff -ru cwidget-0.5.8/src/cwidget/style.h cwidget-0.5.8+iPhone/src/cwidget/style.h
---- cwidget-0.5.8/src/cwidget/style.h 2008-01-20 17:37:06.000000000 +0000
-+++ cwidget-0.5.8+iPhone/src/cwidget/style.h 2009-07-07 07:28:42.000000000 +0000
-@@ -20,6 +20,9 @@
- #ifndef STYLE_H
- #define STYLE_H
-
-+#define _XOPEN_SOURCE
-+#define _XOPEN_SOURCE_EXTENDED 1
-+
- #include <ncursesw/curses.h>
-
- #include <cwidget/curses++.h>
diff --git a/data/darwintools/make.sh b/data/darwintools/make.sh
index 7294145fd..f7703a23b 100644
--- a/data/darwintools/make.sh
+++ b/data/darwintools/make.sh
@@ -1,7 +1,7 @@
pkg:setup
-"${PKG_TARG}-gcc" -O2 -mthumb -o startupfiletool startupfiletool.c
-"${PKG_TARG}-gcc" -O2 -mthumb -o sw_vers sw_vers.c -framework CoreFoundation
+"${PKG_TARG}-gcc" -O2 -o startupfiletool startupfiletool.c
+"${PKG_TARG}-gcc" -O2 -o sw_vers sw_vers.c -framework CoreFoundation
pkg: mkdir -p /usr/{,s}bin
pkg: cp -a sw_vers /usr/bin
diff --git a/data/debianutils/_metadata/description b/data/debianutils/_metadata/description
index 67519a2e9..60275dc03 100644
--- a/data/debianutils/_metadata/description
+++ b/data/debianutils/_metadata/description
@@ -1 +1 @@
-slower, but better, compression algorithm
+pretty much just run-parts. yep? run-parts
diff --git a/data/debianutils/_metadata/homepage b/data/debianutils/_metadata/homepage
deleted file mode 100644
index 57f36586c..000000000
--- a/data/debianutils/_metadata/homepage
+++ /dev/null
@@ -1 +0,0 @@
-http://tukaani.org/lzma/
diff --git a/data/debianutils/_metadata/name b/data/debianutils/_metadata/name
index a3302a2f0..cce38e605 100644
--- a/data/debianutils/_metadata/name
+++ b/data/debianutils/_metadata/name
@@ -1 +1 @@
-LZMA Utils
+Debian Utilities
diff --git a/data/debianutils/_metadata/priority b/data/debianutils/_metadata/priority
index fad9e164a..d0b3ce728 100644
--- a/data/debianutils/_metadata/priority
+++ b/data/debianutils/_metadata/priority
@@ -1 +1 @@
-required
++required
diff --git a/data/debianutils/_metadata/role b/data/debianutils/_metadata/role
deleted file mode 100644
index 52b4d7301..000000000
--- a/data/debianutils/_metadata/role
+++ /dev/null
@@ -1 +0,0 @@
-hacker
diff --git a/data/debianutils/control b/data/debianutils/control
deleted file mode 100644
index 5a3664967..000000000
--- a/data/debianutils/control
+++ /dev/null
@@ -1,11 +0,0 @@
-Package: debianutils
-Essential: yes
-Priority: required
-Section: Utilities
-Installed-Size: 40
-Maintainer: Jay Freeman (saurik) <saurik@saurik.com>
-Architecture: iphoneos-arm
-Version: 3.3.3ubuntu1-1p
-Pre-Depends: dpkg (>= 1.14.25-8)
-Description: pretty much just run-parts. yep? run-parts
-Name: Debian Utilities
diff --git a/data/developer-cmds/make.sh b/data/developer-cmds/make.sh
index cc176fdf7..43b80ceeb 100644
--- a/data/developer-cmds/make.sh
+++ b/data/developer-cmds/make.sh
@@ -1,10 +1,10 @@
pkg:setup
pkg: mkdir -p /usr/bin
-${PKG_TARG}-gcc -o hexdump/hexdump hexdump/{conv,display,hexdump,hexsyntax,odsyntax,parse}.c -D'__FBSDID(x)='
+${PKG_TARG}-gcc -o hexdump/hexdump hexdump/{conv,display,hexdump,hexsyntax,odsyntax,parse}.c -D'__FBSDID(x)=' -D__DARWIN_C_LEVEL=200112L
pkg: cp -a hexdump/hexdump /usr/bin
for bin in ctags error rpcgen unifdef; do
- ${PKG_TARG}-gcc -o "${bin}/${bin}" "${bin}"/*.c
+ ${PKG_TARG}-gcc -o "${bin}/${bin}" "${bin}"/*.c -D_POSIX_C_SOURCE=200112L -DS_IREAD=S_IRUSR -DS_IWRITE=S_IWUSR
pkg: cp -a "${bin}/${bin}" /usr/bin
done
diff --git a/data/dict/make.sh b/data/dict/make.sh
index d1151073e..d752dac67 100644
--- a/data/dict/make.sh
+++ b/data/dict/make.sh
@@ -1,4 +1,6 @@
pkg:setup
+cp ${PKG_BASE}/config.sub .
+cp ${PKG_BASE}/config.sub libmaa/
pkg:configure ac_cv_type_wint_t=yes ac_cv_prog_AR=$(which ${PKG_TARG}-ar)
make AR=${PKG_TARG}-ar
pkg:install
diff --git a/data/diffutils/_metadata/version b/data/diffutils/_metadata/version
index dbe590065..d70c8f8d8 100644
--- a/data/diffutils/_metadata/version
+++ b/data/diffutils/_metadata/version
@@ -1 +1 @@
-2.8.1
+3.6
diff --git a/data/diffutils/diffutils-2.8.1.tar.gz b/data/diffutils/diffutils-2.8.1.tar.gz
deleted file mode 100644
index 0ae0a9c7f..000000000
--- a/data/diffutils/diffutils-2.8.1.tar.gz
+++ /dev/null
Binary files differ
diff --git a/data/diffutils/diffutils-3.6.tar.xz b/data/diffutils/diffutils-3.6.tar.xz
new file mode 100644
index 000000000..c39680810
--- /dev/null
+++ b/data/diffutils/diffutils-3.6.tar.xz
Binary files differ
diff --git a/data/diffutils/make.sh b/data/diffutils/make.sh
index 0a689ba95..96cb7c375 100644
--- a/data/diffutils/make.sh
+++ b/data/diffutils/make.sh
@@ -1,4 +1,4 @@
pkg:setup
pkg:configure
-pkg:make
+pkg:make -j8
make install prefix="${PKG_DEST}/usr"
diff --git a/data/ffmpeg_/armv5.diff b/data/ffmpeg_/armv5.diff
deleted file mode 100644
index 87895ba33..000000000
--- a/data/ffmpeg_/armv5.diff
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -ru ffmpeg-export-2008-05-20/libavcodec/armv4l/mpegvideo_armv5te.c ffmpeg-export-2008-05-20+iPhone/libavcodec/armv4l/mpegvideo_armv5te.c
---- ffmpeg-export-2008-05-20/libavcodec/armv4l/mpegvideo_armv5te.c 2008-05-09 11:56:36.000000000 +0000
-+++ ffmpeg-export-2008-05-20+iPhone/libavcodec/armv4l/mpegvideo_armv5te.c 2008-05-21 08:43:52.000000000 +0000
-@@ -201,7 +201,7 @@
- void MPV_common_init_armv5te(MpegEncContext *s)
- {
- #ifdef HAVE_DCT_UNQUANTIZE_H263_ARMV5TE_OPTIMIZED
-- s->dct_unquantize_h263_intra = dct_unquantize_h263_intra_armv5te;
-+ //s->dct_unquantize_h263_intra = dct_unquantize_h263_intra_armv5te;
- s->dct_unquantize_h263_inter = dct_unquantize_h263_inter_armv5te;
- #endif
- }
diff --git a/data/ffmpeg_/assembler.diff b/data/ffmpeg_/assembler.diff
deleted file mode 100644
index 83e63a837..000000000
--- a/data/ffmpeg_/assembler.diff
+++ /dev/null
@@ -1,538 +0,0 @@
-diff -ru ffmpeg-export-2008-02-26/libavcodec/armv4l/dsputil_arm_s.S ffmpeg-export-2008-02-26+iPhone/libavcodec/armv4l/dsputil_arm_s.S
---- ffmpeg-export-2008-02-26/libavcodec/armv4l/dsputil_arm_s.S 2007-09-05 11:05:33.000000000 +0000
-+++ ffmpeg-export-2008-02-26+iPhone/libavcodec/armv4l/dsputil_arm_s.S 2008-05-20 09:05:01.000000000 +0000
-@@ -72,8 +72,8 @@
-
- @ ----------------------------------------------------------------
- .align 8
-- .global put_pixels16_arm
--put_pixels16_arm:
-+ .global _put_pixels16_arm
-+_put_pixels16_arm:
- @ void func(uint8_t *block, const uint8_t *pixels, int line_size, int h)
- @ block = word aligned, pixles = unaligned
- pld [r1]
-@@ -134,8 +134,8 @@
-
- @ ----------------------------------------------------------------
- .align 8
-- .global put_pixels8_arm
--put_pixels8_arm:
-+ .global _put_pixels8_arm
-+_put_pixels8_arm:
- @ void func(uint8_t *block, const uint8_t *pixels, int line_size, int h)
- @ block = word aligned, pixles = unaligned
- pld [r1]
-@@ -196,8 +196,8 @@
-
- @ ----------------------------------------------------------------
- .align 8
-- .global put_pixels8_x2_arm
--put_pixels8_x2_arm:
-+ .global _put_pixels8_x2_arm
-+_put_pixels8_x2_arm:
- @ void func(uint8_t *block, const uint8_t *pixels, int line_size, int h)
- @ block = word aligned, pixles = unaligned
- pld [r1]
-@@ -265,8 +265,8 @@
- .word 4b
-
- .align 8
-- .global put_no_rnd_pixels8_x2_arm
--put_no_rnd_pixels8_x2_arm:
-+ .global _put_no_rnd_pixels8_x2_arm
-+_put_no_rnd_pixels8_x2_arm:
- @ void func(uint8_t *block, const uint8_t *pixels, int line_size, int h)
- @ block = word aligned, pixles = unaligned
- pld [r1]
-@@ -336,8 +336,8 @@
-
- @ ----------------------------------------------------------------
- .align 8
-- .global put_pixels8_y2_arm
--put_pixels8_y2_arm:
-+ .global _put_pixels8_y2_arm
-+_put_pixels8_y2_arm:
- @ void func(uint8_t *block, const uint8_t *pixels, int line_size, int h)
- @ block = word aligned, pixles = unaligned
- pld [r1]
-@@ -445,8 +445,8 @@
- .word 4b
-
- .align 8
-- .global put_no_rnd_pixels8_y2_arm
--put_no_rnd_pixels8_y2_arm:
-+ .global _put_no_rnd_pixels8_y2_arm
-+_put_no_rnd_pixels8_y2_arm:
- @ void func(uint8_t *block, const uint8_t *pixels, int line_size, int h)
- @ block = word aligned, pixles = unaligned
- pld [r1]
-@@ -618,8 +618,8 @@
- .endm
-
- .align 8
-- .global put_pixels8_xy2_arm
--put_pixels8_xy2_arm:
-+ .global _put_pixels8_xy2_arm
-+_put_pixels8_xy2_arm:
- @ void func(uint8_t *block, const uint8_t *pixels, int line_size, int h)
- @ block = word aligned, pixles = unaligned
- pld [r1]
-@@ -654,8 +654,8 @@
- .word 0x0F0F0F0F
-
- .align 8
-- .global put_no_rnd_pixels8_xy2_arm
--put_no_rnd_pixels8_xy2_arm:
-+ .global _put_no_rnd_pixels8_xy2_arm
-+_put_no_rnd_pixels8_xy2_arm:
- @ void func(uint8_t *block, const uint8_t *pixels, int line_size, int h)
- @ block = word aligned, pixles = unaligned
- pld [r1]
-diff -ru ffmpeg-export-2008-02-26/libavcodec/armv4l/jrevdct_arm.S ffmpeg-export-2008-02-26+iPhone/libavcodec/armv4l/jrevdct_arm.S
---- ffmpeg-export-2008-02-26/libavcodec/armv4l/jrevdct_arm.S 2005-12-22 01:10:11.000000000 +0000
-+++ ffmpeg-export-2008-02-26+iPhone/libavcodec/armv4l/jrevdct_arm.S 2008-05-20 09:03:43.000000000 +0000
-@@ -54,8 +54,8 @@
- .text
- .align
-
-- .global j_rev_dct_ARM
--j_rev_dct_ARM:
-+ .global _j_rev_dct_ARM
-+_j_rev_dct_ARM:
- stmdb sp!, { r4 - r12, lr } @ all callee saved regs
-
- sub sp, sp, #4 @ reserve some space on the stack
-diff -ru ffmpeg-export-2008-02-26/libavcodec/armv4l/simple_idct_arm.S ffmpeg-export-2008-02-26+iPhone/libavcodec/armv4l/simple_idct_arm.S
---- ffmpeg-export-2008-02-26/libavcodec/armv4l/simple_idct_arm.S 2007-12-02 15:43:08.000000000 +0000
-+++ ffmpeg-export-2008-02-26+iPhone/libavcodec/armv4l/simple_idct_arm.S 2008-05-20 09:03:13.000000000 +0000
-@@ -54,9 +54,9 @@
-
- .text
- .align
-- .global simple_idct_ARM
-+ .global _simple_idct_ARM
-
--simple_idct_ARM:
-+_simple_idct_ARM:
- @@ void simple_idct_ARM(int16_t *block)
- @@ save stack for reg needed (take all of them),
- @@ R0-R3 are scratch regs, so no need to save them, but R0 contains the pointer to block
-diff -ru ffmpeg-export-2008-02-26/libavcodec/armv4l/simple_idct_armv5te.S ffmpeg-export-2008-02-26+iPhone/libavcodec/armv4l/simple_idct_armv5te.S
---- ffmpeg-export-2008-02-26/libavcodec/armv4l/simple_idct_armv5te.S 2007-07-05 20:08:51.000000000 +0000
-+++ ffmpeg-export-2008-02-26+iPhone/libavcodec/armv4l/simple_idct_armv5te.S 2008-05-20 09:02:30.000000000 +0000
-@@ -42,9 +42,9 @@
- w57: .long W57
-
- .align
-- .type idct_row_armv5te, %function
-- .func idct_row_armv5te
--idct_row_armv5te:
-+ @.type idct_row_armv5te, %function
-+ @.func idct_row_armv5te
-+_idct_row_armv5te:
- str lr, [sp, #-4]!
-
- ldrd v1, [a1, #8]
-@@ -148,7 +148,7 @@
- strd a3, [a1, #8]
-
- ldr pc, [sp], #4
-- .endfunc
-+ @.endfunc
-
- .macro idct_col
- ldr a4, [a1] /* a4 = col[1:0] */
-@@ -263,9 +263,9 @@
- .endm
-
- .align
-- .type idct_col_armv5te, %function
-- .func idct_col_armv5te
--idct_col_armv5te:
-+ @.type idct_col_armv5te, %function
-+ @.func idct_col_armv5te
-+_idct_col_armv5te:
- str lr, [sp, #-4]!
-
- idct_col
-@@ -335,12 +335,12 @@
- str a2, [a1, #(16*4)]
-
- ldr pc, [sp], #4
-- .endfunc
-+ @.endfunc
-
- .align
-- .type idct_col_put_armv5te, %function
-- .func idct_col_put_armv5te
--idct_col_put_armv5te:
-+ @.type idct_col_put_armv5te, %function
-+ @.func idct_col_put_armv5te
-+_idct_col_put_armv5te:
- str lr, [sp, #-4]!
-
- idct_col
-@@ -455,12 +455,12 @@
- strh a2, [v2, -lr]
-
- ldr pc, [sp], #4
-- .endfunc
-+ @.endfunc
-
- .align
-- .type idct_col_add_armv5te, %function
-- .func idct_col_add_armv5te
--idct_col_add_armv5te:
-+ @.type idct_col_add_armv5te, %function
-+ @.func idct_col_add_armv5te
-+_idct_col_add_armv5te:
- str lr, [sp, #-4]!
-
- idct_col
-@@ -608,118 +608,118 @@
- strh a2, [v2]
-
- ldr pc, [sp], #4
-- .endfunc
-+ @.endfunc
-
- .align
-- .global simple_idct_armv5te
-- .type simple_idct_armv5te, %function
-- .func simple_idct_armv5te
--simple_idct_armv5te:
-+ .global _simple_idct_armv5te
-+ @.type simple_idct_armv5te, %function
-+ @.func simple_idct_armv5te
-+_simple_idct_armv5te:
- stmfd sp!, {v1, v2, v3, v4, v5, v6, v7, fp, lr}
-
-- bl idct_row_armv5te
-+ bl _idct_row_armv5te
- add a1, a1, #16
-- bl idct_row_armv5te
-+ bl _idct_row_armv5te
- add a1, a1, #16
-- bl idct_row_armv5te
-+ bl _idct_row_armv5te
- add a1, a1, #16
-- bl idct_row_armv5te
-+ bl _idct_row_armv5te
- add a1, a1, #16
-- bl idct_row_armv5te
-+ bl _idct_row_armv5te
- add a1, a1, #16
-- bl idct_row_armv5te
-+ bl _idct_row_armv5te
- add a1, a1, #16
-- bl idct_row_armv5te
-+ bl _idct_row_armv5te
- add a1, a1, #16
-- bl idct_row_armv5te
-+ bl _idct_row_armv5te
-
- sub a1, a1, #(16*7)
-
-- bl idct_col_armv5te
-+ bl _idct_col_armv5te
- add a1, a1, #4
-- bl idct_col_armv5te
-+ bl _idct_col_armv5te
- add a1, a1, #4
-- bl idct_col_armv5te
-+ bl _idct_col_armv5te
- add a1, a1, #4
-- bl idct_col_armv5te
-+ bl _idct_col_armv5te
-
- ldmfd sp!, {v1, v2, v3, v4, v5, v6, v7, fp, pc}
-- .endfunc
-+ @.endfunc
-
- .align
-- .global simple_idct_add_armv5te
-- .type simple_idct_add_armv5te, %function
-- .func simple_idct_add_armv5te
--simple_idct_add_armv5te:
-+ .global _simple_idct_add_armv5te
-+ @.type simple_idct_add_armv5te, %function
-+ @.func simple_idct_add_armv5te
-+_simple_idct_add_armv5te:
- stmfd sp!, {a1, a2, v1, v2, v3, v4, v5, v6, v7, fp, lr}
-
- mov a1, a3
-
-- bl idct_row_armv5te
-+ bl _idct_row_armv5te
- add a1, a1, #16
-- bl idct_row_armv5te
-+ bl _idct_row_armv5te
- add a1, a1, #16
-- bl idct_row_armv5te
-+ bl _idct_row_armv5te
- add a1, a1, #16
-- bl idct_row_armv5te
-+ bl _idct_row_armv5te
- add a1, a1, #16
-- bl idct_row_armv5te
-+ bl _idct_row_armv5te
- add a1, a1, #16
-- bl idct_row_armv5te
-+ bl _idct_row_armv5te
- add a1, a1, #16
-- bl idct_row_armv5te
-+ bl _idct_row_armv5te
- add a1, a1, #16
-- bl idct_row_armv5te
-+ bl _idct_row_armv5te
-
- sub a1, a1, #(16*7)
-
-- bl idct_col_add_armv5te
-+ bl _idct_col_add_armv5te
- add a1, a1, #4
-- bl idct_col_add_armv5te
-+ bl _idct_col_add_armv5te
- add a1, a1, #4
-- bl idct_col_add_armv5te
-+ bl _idct_col_add_armv5te
- add a1, a1, #4
-- bl idct_col_add_armv5te
-+ bl _idct_col_add_armv5te
-
- add sp, sp, #8
- ldmfd sp!, {v1, v2, v3, v4, v5, v6, v7, fp, pc}
-- .endfunc
-+ @.endfunc
-
- .align
-- .global simple_idct_put_armv5te
-- .type simple_idct_put_armv5te, %function
-- .func simple_idct_put_armv5te
--simple_idct_put_armv5te:
-+ .global _simple_idct_put_armv5te
-+ @.type simple_idct_put_armv5te, %function
-+ @.func simple_idct_put_armv5te
-+_simple_idct_put_armv5te:
- stmfd sp!, {a1, a2, v1, v2, v3, v4, v5, v6, v7, fp, lr}
-
- mov a1, a3
-
-- bl idct_row_armv5te
-+ bl _idct_row_armv5te
- add a1, a1, #16
-- bl idct_row_armv5te
-+ bl _idct_row_armv5te
- add a1, a1, #16
-- bl idct_row_armv5te
-+ bl _idct_row_armv5te
- add a1, a1, #16
-- bl idct_row_armv5te
-+ bl _idct_row_armv5te
- add a1, a1, #16
-- bl idct_row_armv5te
-+ bl _idct_row_armv5te
- add a1, a1, #16
-- bl idct_row_armv5te
-+ bl _idct_row_armv5te
- add a1, a1, #16
-- bl idct_row_armv5te
-+ bl _idct_row_armv5te
- add a1, a1, #16
-- bl idct_row_armv5te
-+ bl _idct_row_armv5te
-
- sub a1, a1, #(16*7)
-
-- bl idct_col_put_armv5te
-+ bl _idct_col_put_armv5te
- add a1, a1, #4
-- bl idct_col_put_armv5te
-+ bl _idct_col_put_armv5te
- add a1, a1, #4
-- bl idct_col_put_armv5te
-+ bl _idct_col_put_armv5te
- add a1, a1, #4
-- bl idct_col_put_armv5te
-+ bl _idct_col_put_armv5te
-
- add sp, sp, #8
- ldmfd sp!, {v1, v2, v3, v4, v5, v6, v7, fp, pc}
-- .endfunc
-+ @.endfunc
-diff -ru ffmpeg-export-2008-02-26/libavcodec/armv4l/simple_idct_armv6.S ffmpeg-export-2008-02-26+iPhone/libavcodec/armv4l/simple_idct_armv6.S
---- ffmpeg-export-2008-02-26/libavcodec/armv4l/simple_idct_armv6.S 2007-07-05 20:08:51.000000000 +0000
-+++ ffmpeg-export-2008-02-26+iPhone/libavcodec/armv4l/simple_idct_armv6.S 2008-05-20 09:01:50.000000000 +0000
-@@ -191,9 +191,9 @@
- a2 = dest
- */
- .align
-- .type idct_row_armv6, %function
-- .func idct_row_armv6
--idct_row_armv6:
-+ @.type idct_row_armv6, %function
-+ @.func idct_row_armv6
-+_idct_row_armv6:
- str lr, [sp, #-4]!
-
- ldr lr, [a1, #12] /* lr = row[7,5] */
-@@ -238,7 +238,7 @@
- strh a3, [a2, #(16*5)]
- strh a3, [a2, #(16*7)]
- ldr pc, [sp], #4
-- .endfunc
-+ @.endfunc
-
- /*
- Compute IDCT of single column, read as row.
-@@ -246,9 +246,9 @@
- a2 = dest
- */
- .align
-- .type idct_col_armv6, %function
-- .func idct_col_armv6
--idct_col_armv6:
-+ @.type idct_col_armv6, %function
-+ @.func idct_col_armv6
-+_idct_col_armv6:
- stmfd sp!, {a2, lr}
-
- ldr a3, [a1] /* a3 = row[2,0] */
-@@ -268,7 +268,7 @@
- strh v5, [a2, #(16*7)]
-
- ldr pc, [sp], #4
-- .endfunc
-+ @.endfunc
-
- /*
- Compute IDCT of single column, read as row, store saturated 8-bit.
-@@ -277,9 +277,9 @@
- a3 = line size
- */
- .align
-- .type idct_col_put_armv6, %function
-- .func idct_col_put_armv6
--idct_col_put_armv6:
-+ @.type idct_col_put_armv6, %function
-+ @.func idct_col_put_armv6
-+_idct_col_put_armv6:
- stmfd sp!, {a2, a3, lr}
-
- ldr a3, [a1] /* a3 = row[2,0] */
-@@ -301,7 +301,7 @@
- sub a2, a2, a3, lsl #3
-
- ldr pc, [sp], #4
-- .endfunc
-+ @.endfunc
-
- /*
- Compute IDCT of single column, read as row, add/store saturated 8-bit.
-@@ -310,9 +310,9 @@
- a3 = line size
- */
- .align
-- .type idct_col_add_armv6, %function
-- .func idct_col_add_armv6
--idct_col_add_armv6:
-+ @.type idct_col_add_armv6, %function
-+ @.func idct_col_add_armv6
-+_idct_col_add_armv6:
- stmfd sp!, {a2, a3, lr}
-
- ldr a3, [a1] /* a3 = row[2,0] */
-@@ -359,7 +359,7 @@
- sub a2, a2, a3, lsl #3
-
- ldr pc, [sp], #4
-- .endfunc
-+ @.endfunc
-
- /*
- Compute 8 IDCT row transforms.
-@@ -394,62 +394,62 @@
- .endm
-
- .align
-- .global ff_simple_idct_armv6
-- .type ff_simple_idct_armv6, %function
-- .func ff_simple_idct_armv6
-+ .global _ff_simple_idct_armv6
-+ @.type ff_simple_idct_armv6, %function
-+ @.func ff_simple_idct_armv6
- /* void ff_simple_idct_armv6(DCTELEM *data); */
--ff_simple_idct_armv6:
-+_ff_simple_idct_armv6:
- stmfd sp!, {v1, v2, v3, v4, v5, v6, v7, fp, lr}
- sub sp, sp, #128
-
- mov a2, sp
-- idct_rows idct_row_armv6, 2
-+ idct_rows _idct_row_armv6, 2
- mov a2, a1
- mov a1, sp
-- idct_rows idct_col_armv6, 2
-+ idct_rows _idct_col_armv6, 2
-
- add sp, sp, #128
- ldmfd sp!, {v1, v2, v3, v4, v5, v6, v7, fp, pc}
-- .endfunc
-+ @.endfunc
-
- .align
-- .global ff_simple_idct_add_armv6
-- .type ff_simple_idct_add_armv6, %function
-- .func ff_simple_idct_add_armv6
-+ .global _ff_simple_idct_add_armv6
-+ @.type ff_simple_idct_add_armv6, %function
-+ @.func ff_simple_idct_add_armv6
- /* ff_simple_idct_add_armv6(uint8_t *dest, int line_size, DCTELEM *data); */
--ff_simple_idct_add_armv6:
-+_ff_simple_idct_add_armv6:
- stmfd sp!, {a1, a2, v1, v2, v3, v4, v5, v6, v7, fp, lr}
- sub sp, sp, #128
-
- mov a1, a3
- mov a2, sp
-- idct_rows idct_row_armv6, 2
-+ idct_rows _idct_row_armv6, 2
- mov a1, sp
- ldr a2, [sp, #128]
- ldr a3, [sp, #(128+4)]
-- idct_rows idct_col_add_armv6, 1
-+ idct_rows _idct_col_add_armv6, 1
-
- add sp, sp, #(128+8)
- ldmfd sp!, {v1, v2, v3, v4, v5, v6, v7, fp, pc}
-- .endfunc
-+ @.endfunc
-
- .align
-- .global ff_simple_idct_put_armv6
-- .type ff_simple_idct_put_armv6, %function
-- .func ff_simple_idct_put_armv6
-+ .global _ff_simple_idct_put_armv6
-+ @.type ff_simple_idct_put_armv6, %function
-+ @.func ff_simple_idct_put_armv6
- /* ff_simple_idct_put_armv6(uint8_t *dest, int line_size, DCTELEM *data); */
--ff_simple_idct_put_armv6:
-+_ff_simple_idct_put_armv6:
- stmfd sp!, {a1, a2, v1, v2, v3, v4, v5, v6, v7, fp, lr}
- sub sp, sp, #128
-
- mov a1, a3
- mov a2, sp
-- idct_rows idct_row_armv6, 2
-+ idct_rows _idct_row_armv6, 2
- mov a1, sp
- ldr a2, [sp, #128]
- ldr a3, [sp, #(128+4)]
-- idct_rows idct_col_put_armv6, 1
-+ idct_rows _idct_col_put_armv6, 1
-
- add sp, sp, #(128+8)
- ldmfd sp!, {v1, v2, v3, v4, v5, v6, v7, fp, pc}
-- .endfunc
-+ @.endfunc
diff --git a/data/ffmpeg_/ffmpeg-4.0.2.tar.gz b/data/ffmpeg_/ffmpeg-4.0.2.tar.gz
new file mode 100644
index 000000000..6deabe048
--- /dev/null
+++ b/data/ffmpeg_/ffmpeg-4.0.2.tar.gz
Binary files differ
diff --git a/data/ffmpeg_/ffmpeg-export-snapshot.tar.bz2 b/data/ffmpeg_/ffmpeg-export-snapshot.tar.bz2
deleted file mode 100644
index 56cf50555..000000000
--- a/data/ffmpeg_/ffmpeg-export-snapshot.tar.bz2
+++ /dev/null
Binary files differ
diff --git a/data/ffmpeg_/make.sh b/data/ffmpeg_/make.sh
index f16f6f208..1760afb65 100644
--- a/data/ffmpeg_/make.sh
+++ b/data/ffmpeg_/make.sh
@@ -1,13 +1,12 @@
pkg:setup
-./configure \
+ARCH=$(echo ${PKG_TARG} | sed -e s/'-.*'//)
+./configure --arch=${ARCH} \
--prefix=/usr --enable-gpl --enable-postproc --enable-swscale \
- --disable-vhook --enable-avfilter --enable-avfilter-lavf \
+ --enable-avfilter \
--enable-cross-compile --cross-prefix=${PKG_TARG}- --target-os=darwin \
- --arch=arm --disable-iwmmxt --enable-armv5te --enable-armv6 \
--disable-static --enable-shared --disable-debug --disable-stripping \
- --enable-libfaac \
- --enable-libfaad \
+ --enable-libfdk-aac \
--enable-libmp3lame \
- --enable-libvorbis
+ --enable-libvorbis --enable-nonfree
make
pkg:install
diff --git a/data/ffmpeg_/mjpega.diff b/data/ffmpeg_/mjpega.diff
deleted file mode 100644
index c82baa8d3..000000000
--- a/data/ffmpeg_/mjpega.diff
+++ /dev/null
@@ -1,32 +0,0 @@
-diff -ru ffmpeg-export-2008-05-20/libavcodec/mjpega_dump_header_bsf.c ffmpeg-export-2008-05-20+iPhone/libavcodec/mjpega_dump_header_bsf.c
---- ffmpeg-export-2008-05-20/libavcodec/mjpega_dump_header_bsf.c 2007-05-19 00:53:41.000000000 +0000
-+++ ffmpeg-export-2008-05-20+iPhone/libavcodec/mjpega_dump_header_bsf.c 2008-06-02 02:56:08.000000000 +0000
-@@ -56,15 +56,24 @@
- bytestream_put_be32(&poutbufp, buf_size + 44); /* pad field size */
- bytestream_put_be32(&poutbufp, 0); /* next ptr */
-
-+ uint32_t dqt = 0, dht = 0, sof0 = 0;
-+
- for (i = 0; i < buf_size - 1; i++) {
- if (buf[i] == 0xff) {
- switch (buf[i + 1]) {
-- case DQT: /* quant off */
-- case DHT: /* huff off */
-- case SOF0: /* image off */
-- bytestream_put_be32(&poutbufp, i + 46);
-+ case DQT:
-+ dqt = i + 46;
-+ break;
-+ case DHT:
-+ dht = i + 46;
-+ break;
-+ case SOF0:
-+ sof0 = i + 46;
- break;
- case SOS:
-+ bytestream_put_be32(&poutbufp, dqt); /* quant off */
-+ bytestream_put_be32(&poutbufp, dht); /* huff off */
-+ bytestream_put_be32(&poutbufp, sof0); /* image off */
- bytestream_put_be32(&poutbufp, i + 46); /* scan off */
- bytestream_put_be32(&poutbufp, i + 46 + AV_RB16(buf + i + 2)); /* data off */
- bytestream_put_buffer(&poutbufp, buf + 2, buf_size - 2); /* skip already written SOI */
diff --git a/data/ffmpeg_/r7.diff b/data/ffmpeg_/r7.diff
deleted file mode 100644
index 3b1af70fb..000000000
--- a/data/ffmpeg_/r7.diff
+++ /dev/null
@@ -1,48 +0,0 @@
-diff -ru ffmpeg-export-2008-05-20/libavcodec/armv4l/float_arm_vfp.c ffmpeg-export-2008-05-20+iPhone/libavcodec/armv4l/float_arm_vfp.c
---- ffmpeg-export-2008-05-20/libavcodec/armv4l/float_arm_vfp.c 2008-05-11 20:06:03.000000000 +0000
-+++ ffmpeg-export-2008-05-20+iPhone/libavcodec/armv4l/float_arm_vfp.c 2008-05-21 00:44:04.000000000 +0000
-@@ -141,6 +141,13 @@
- }
-
- #ifdef HAVE_ARMV6
-+
-+#ifdef __APPLE__
-+#define r7 "r9"
-+#else
-+#define r7 "r7"
-+#endif
-+
- /**
- * ARM VFP optimized float to int16 conversion.
- * Assume that len is a positive number and is multiple of 8, destination
-@@ -163,7 +170,7 @@
- "subs %[len], %[len], #8\n\t"
- "fmrrs r3, r4, {s0, s1}\n\t"
- "fmrrs r5, r6, {s2, s3}\n\t"
-- "fmrrs r7, r8, {s4, s5}\n\t"
-+ "fmrrs "r7", r8, {s4, s5}\n\t"
- "fmrrs ip, lr, {s6, s7}\n\t"
- "fldmiasgt %[src]!, {s16-s23}\n\t"
- "ssat r4, #16, r4\n\t"
-@@ -181,10 +188,10 @@
- "ftosisgt s6, s22\n\t"
- "ftosisgt s7, s23\n\t"
- "ssat r8, #16, r8\n\t"
-- "ssat r7, #16, r7\n\t"
-+ "ssat "r7", #16, "r7"\n\t"
- "ssat lr, #16, lr\n\t"
- "ssat ip, #16, ip\n\t"
-- "pkhbt r5, r7, r8, lsl #16\n\t"
-+ "pkhbt r5, "r7", r8, lsl #16\n\t"
- "pkhbt r6, ip, lr, lsl #16\n\t"
- "stmia %[dst]!, {r3-r6}\n\t"
- "bgt 1b\n\t"
-@@ -193,7 +200,7 @@
- :
- : "s0", "s1", "s2", "s3", "s4", "s5", "s6", "s7",
- "s16", "s17", "s18", "s19", "s20", "s21", "s22", "s23",
-- "r3", "r4", "r5", "r6", "r7", "r8", "ip", "lr",
-+ "r3", "r4", "r5", "r6", r7, "r8", "ip", "lr",
- "cc", "memory");
- }
- #endif
diff --git a/data/ffmpeg_/timestamp.diff b/data/ffmpeg_/timestamp.diff
deleted file mode 100644
index 266e7d614..000000000
--- a/data/ffmpeg_/timestamp.diff
+++ /dev/null
@@ -1,11 +0,0 @@
-diff -ru ffmpeg-export-2008-05-20/cmdutils.c ffmpeg-export-2008-05-20+iPhone/cmdutils.c
---- ffmpeg-export-2008-05-20/cmdutils.c 2008-05-09 11:56:36.000000000 +0000
-+++ ffmpeg-export-2008-05-20+iPhone/cmdutils.c 2008-06-19 04:35:45.000000000 +0000
-@@ -206,7 +206,6 @@
- #if ENABLE_AVFILTER
- fprintf(stderr, " libavfilter version: " AV_STRINGIFY(LIBAVFILTER_VERSION) "\n");
- #endif
-- fprintf(stderr, " built on " __DATE__ " " __TIME__);
- #ifdef __GNUC__
- fprintf(stderr, ", gcc: " __VERSION__ "\n");
- #else
diff --git a/data/ffmpeg_/version.diff b/data/ffmpeg_/version.diff
deleted file mode 100644
index 4670687d1..000000000
--- a/data/ffmpeg_/version.diff
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -ru ffmpeg-export-2008-05-20/configure ffmpeg-export-2008-05-20+iPhone/configure
---- ffmpeg-export-2008-05-20/configure 2008-05-16 16:12:55.000000000 +0000
-+++ ffmpeg-export-2008-05-20+iPhone/configure 2008-09-22 08:28:33.000000000 +0000
-@@ -1212,7 +1212,7 @@
- ;;
- darwin)
- disable need_memalign
-- SHFLAGS='-dynamiclib -Wl,-single_module -Wl,-install_name,$(SHLIBDIR)/$(SLIBNAME),-current_version,$(LIBVERSION),-compatibility_version,$(LIBMAJOR) -Wl,-read_only_relocs,suppress'
-+ SHFLAGS='-dynamiclib -Wl,-single_module -Wl,-install_name,$(SHLIBDIR)/$(SLIBNAME) -Wl,-read_only_relocs,suppress'
- VHOOKSHFLAGS='-dynamiclib -Wl,-single_module -flat_namespace -undefined suppress -Wl,-install_name,$(SHLIBDIR)/vhook/$$(@F)'
- strip="strip -x"
- FFLDFLAGS="-Wl,-dynamic,-search_paths_first"
diff --git a/data/flac/_metadata/version b/data/flac/_metadata/version
index 6085e9465..1892b9267 100644
--- a/data/flac/_metadata/version
+++ b/data/flac/_metadata/version
@@ -1 +1 @@
-1.2.1
+1.3.2
diff --git a/data/flac/flac-1.2.1.tar.gz b/data/flac/flac-1.2.1.tar.gz
deleted file mode 100644
index 80d26fdcb..000000000
--- a/data/flac/flac-1.2.1.tar.gz
+++ /dev/null
Binary files differ
diff --git a/data/flac/flac-1.3.2.tar.xz b/data/flac/flac-1.3.2.tar.xz
new file mode 100644
index 000000000..5b9c69afd
--- /dev/null
+++ b/data/flac/flac-1.3.2.tar.xz
Binary files differ
diff --git a/data/flac/make.sh b/data/flac/make.sh
index 87c264adb..e3c706eb1 100644
--- a/data/flac/make.sh
+++ b/data/flac/make.sh
@@ -1,4 +1,4 @@
pkg:setup
pkg:configure --with-ogg="$(PKG_DEST_ ogg)"
-make
+make -j8
pkg:install
diff --git a/data/gcrypt/gcrypt b/data/gcrypt/gcrypt
new file mode 120000
index 000000000..0a21c7b07
--- /dev/null
+++ b/data/gcrypt/gcrypt
@@ -0,0 +1 @@
+../../gcrypt \ No newline at end of file
diff --git a/data/gettext/make.sh b/data/gettext/make.sh
index 47812a40f..a7c62f3cb 100644
--- a/data/gettext/make.sh
+++ b/data/gettext/make.sh
@@ -1,5 +1,5 @@
pkg:setup
pkg:configure --disable-java --without-libintl-prefix
-make
+make -j8
pkg:install
pkg: rm -rf /usr/share
diff --git a/data/gnupg/_metadata/description b/data/gnupg/_metadata/description
index 72bfbf994..c55bd894d 100644
--- a/data/gnupg/_metadata/description
+++ b/data/gnupg/_metadata/description
@@ -1 +1 @@
-newer encryption compatible with OpenPGP
+older encryption compatible with OpenPGP
diff --git a/data/gnupg/_metadata/priority b/data/gnupg/_metadata/priority
index 134d9bc32..fad9e164a 100644
--- a/data/gnupg/_metadata/priority
+++ b/data/gnupg/_metadata/priority
@@ -1 +1 @@
-optional
+required
diff --git a/data/gnutls/make.sh b/data/gnutls/make.sh
index 9bbfb41dc..0db47e445 100644
--- a/data/gnutls/make.sh
+++ b/data/gnutls/make.sh
@@ -1,5 +1,7 @@
pkg:setup
autoreconf -f -i
-pkg:configure --with-included-libtasn1
-make
-pkg:install
+pkg:configure --with-included-libtasn1 --without-libiconv-prefix --without-libintl-prefix --without-libseccomp-prefix \
+ --without-libcrypto-prefix --without-librt-prefix --without-libpthread-prefix --without-libnsl-prefix \
+ --without-libunistring-prefix --without-libdl-prefix --without-libz-prefix P11_KIT_LIBS="-lp11-kit"
+make -j8 V=1
+pkg:install V=1
diff --git a/data/grep/make.sh b/data/grep/make.sh
index 21ddfb614..eda88f015 100644
--- a/data/grep/make.sh
+++ b/data/grep/make.sh
@@ -1,4 +1,4 @@
pkg:setup
pkg:configure --disable-perl-regexp --bindir=/bin ac_use_included_regex=no
-make
+make -j8
pkg:install
diff --git a/data/htop/_metadata/ncurses.ver.iphoneos-arm b/data/htop/_metadata/ncurses.ver.iphoneos-arm
index cc40bca69..e0ea36fee 100644
--- a/data/htop/_metadata/ncurses.ver.iphoneos-arm
+++ b/data/htop/_metadata/ncurses.ver.iphoneos-arm
@@ -1 +1 @@
-8.0
+6.0
diff --git a/data/htop/_metadata/ncurses.ver.iphoneos-arm64 b/data/htop/_metadata/ncurses.ver.iphoneos-arm64
deleted file mode 100644
index cc40bca69..000000000
--- a/data/htop/_metadata/ncurses.ver.iphoneos-arm64
+++ /dev/null
@@ -1 +0,0 @@
-8.0
diff --git a/data/htop/make.sh b/data/htop/make.sh
index be58dce3d..e9580110b 100644
--- a/data/htop/make.sh
+++ b/data/htop/make.sh
@@ -2,3 +2,4 @@ pkg:setup
pkg:configure HTOP_NCURSESW6_CONFIG_SCRIPT="${PKG_DATA}/ncursesw6-config" --disable-linux-affinity
pkg:make -j8
pkg:install
+pkg: rm -rf /usr/share
diff --git a/data/indent/_metadata/version b/data/indent/_metadata/version
index a6333e400..0d3ad67af 100644
--- a/data/indent/_metadata/version
+++ b/data/indent/_metadata/version
@@ -1 +1 @@
-2.2.9
+2.2.10
diff --git a/data/indent/docs.diff b/data/indent/docs.diff
new file mode 100644
index 000000000..9f5b121f5
--- /dev/null
+++ b/data/indent/docs.diff
@@ -0,0 +1,43 @@
+diff -ur indent-2.2.10/Makefile.am indent-2.2.10+iPhone/Makefile.am
+--- indent-2.2.10/Makefile.am 2008-03-11 08:50:42.000000000 -1000
++++ indent-2.2.10+iPhone/Makefile.am 2018-09-04 09:52:21.000000000 -1000
+@@ -1,7 +1,7 @@
+ ## Process this file with automake to produce Makefile.in
+ AUTOMAKE_OPTIONS = no-texinfo.tex
+
+-SUBDIRS = intl src doc po man
++SUBDIRS = intl src po
+
+ BUILT_SOURCES =
+
+@@ -19,18 +19,6 @@
+
+ DISTCLEANFILES=config/config.cache config/config.log config.h
+
+-ps:
+- cd doc && $(MAKE) @PACKAGE@.ps
+-
+-pdf:
+- cd doc && $(MAKE) @PACKAGE@.pdf
+-
+-html:
+- cd doc && $(MAKE) html
+-
+-html-split:
+- cd doc && $(MAKE) html-split
+-
+ # --------------- Maintainer's Section
+
+ MAINTAINERCLEANFILES = intl/* aclocal.m4 Makefile.in config.h.in stamp-h1 stamp-h.in configure \
+diff -ur indent-2.2.10/configure.ac indent-2.2.10+iPhone/configure.ac
+--- indent-2.2.10/configure.ac 2008-03-11 08:50:42.000000000 -1000
++++ indent-2.2.10+iPhone/configure.ac 2018-09-04 09:55:34.000000000 -1000
+@@ -63,8 +63,6 @@
+ po/Makefile.in
+ Makefile
+ src/Makefile
+- doc/Makefile
+- man/Makefile
+ ],
+ [touch Makefile.in])
+
diff --git a/data/indent/indent-2.2.10.tar.gz b/data/indent/indent-2.2.10.tar.gz
new file mode 100644
index 000000000..8c054ef6f
--- /dev/null
+++ b/data/indent/indent-2.2.10.tar.gz
Binary files differ
diff --git a/data/indent/indent-2.2.9.tar.gz b/data/indent/indent-2.2.9.tar.gz
deleted file mode 100644
index 154636662..000000000
--- a/data/indent/indent-2.2.9.tar.gz
+++ /dev/null
Binary files differ
diff --git a/data/indent/make.sh b/data/indent/make.sh
index 11d339a61..f24f8a191 100644
--- a/data/indent/make.sh
+++ b/data/indent/make.sh
@@ -1,7 +1,5 @@
pkg:setup
+autoreconf -f -i
pkg:configure
-cd man
-make CC=gcc
-cd ..
-make
+make -j8
pkg:install
diff --git a/data/indent/static.diff b/data/indent/static.diff
deleted file mode 100644
index 485f33555..000000000
--- a/data/indent/static.diff
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -ru indent-2.2.9/src/indent.h indent-2.2.9+iPhone/src/indent.h
---- indent-2.2.9/src/indent.h 2002-11-10 21:02:48.000000000 +0000
-+++ indent-2.2.9+iPhone/src/indent.h 2008-01-01 23:08:20.000000000 +0000
-@@ -96,8 +96,6 @@
- /* Size of the input program, not including the ' \n\0' we add at the end */
- extern unsigned long in_prog_size;
-
--/* The output file. */
--extern FILE *output;
-
-
-
diff --git a/data/inetutils/_metadata/version b/data/inetutils/_metadata/version
index 810ee4e91..d615fd0c0 100644
--- a/data/inetutils/_metadata/version
+++ b/data/inetutils/_metadata/version
@@ -1 +1 @@
-1.6
+1.9.4
diff --git a/data/inetutils/docs.diff b/data/inetutils/docs.diff
new file mode 100644
index 000000000..0bb0ccb30
--- /dev/null
+++ b/data/inetutils/docs.diff
@@ -0,0 +1,22 @@
+diff -ur inetutils-1.9.4/Makefile.am inetutils-1.9.4+iPhone/Makefile.am
+--- inetutils-1.9.4/Makefile.am 2015-06-08 21:45:35.000000000 -1000
++++ inetutils-1.9.4+iPhone/Makefile.am 2018-08-17 15:13:33.000000000 -1000
+@@ -25,7 +25,6 @@
+ SUBDIRS = lib \
+ libinetutils libtelnet libicmp libls \
+ src telnet telnetd ftp ftpd talk talkd whois ping ifconfig \
+- doc man \
+ tests
+
+ DISTCLEANFILES = pathdefs.make paths.defs \
+diff -ur inetutils-1.9.4/Makefile.in inetutils-1.9.4+iPhone/Makefile.in
+--- inetutils-1.9.4/Makefile.in 2015-06-08 21:48:08.000000000 -1000
++++ inetutils-1.9.4+iPhone/Makefile.in 2018-08-17 15:13:50.000000000 -1000
+@@ -1416,7 +1416,6 @@
+ SUBDIRS = lib \
+ libinetutils libtelnet libicmp libls \
+ src telnet telnetd ftp ftpd talk talkd whois ping ifconfig \
+- doc man \
+ tests
+
+ DISTCLEANFILES = pathdefs.make paths.defs \
diff --git a/data/inetutils/inetd.diff b/data/inetutils/inetd.diff
deleted file mode 100644
index 1640723dd..000000000
--- a/data/inetutils/inetd.diff
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -ru inetutils-1.6/inetd/inetd.c inetutils-1.6+iPhone/inetd/inetd.c
---- inetutils-1.6/inetd/inetd.c 2008-12-27 18:50:35.000000000 +0000
-+++ inetutils-1.6+iPhone/inetd/inetd.c 2009-04-10 21:10:19.000000000 +0000
-@@ -163,6 +163,8 @@
- #endif
- #define SIGBLOCK (sigmask(SIGCHLD)|sigmask(SIGHUP)|sigmask(SIGALRM))
-
-+ARGP_PROGRAM_DATA_SIMPLE ("inetd", "2008");
-+
- bool debug = false;
- int nsock, maxsock;
- fd_set allsock;
diff --git a/data/inetutils/inetutils-1.6.tar.gz b/data/inetutils/inetutils-1.6.tar.gz
deleted file mode 100644
index a3b11e268..000000000
--- a/data/inetutils/inetutils-1.6.tar.gz
+++ /dev/null
Binary files differ
diff --git a/data/inetutils/inetutils-1.9.4.tar.xz b/data/inetutils/inetutils-1.9.4.tar.xz
new file mode 100644
index 000000000..47af66e5f
--- /dev/null
+++ b/data/inetutils/inetutils-1.9.4.tar.xz
Binary files differ
diff --git a/data/inetutils/logwtmp.diff b/data/inetutils/logwtmp.diff
deleted file mode 100644
index 3eb7684f3..000000000
--- a/data/inetutils/logwtmp.diff
+++ /dev/null
@@ -1,117 +0,0 @@
-diff -ru inetutils-1.6/libinetutils/Makefile.am inetutils-1.6+iPhone/libinetutils/Makefile.am
---- inetutils-1.6/libinetutils/Makefile.am 2007-06-29 16:29:31.000000000 +0000
-+++ inetutils-1.6+iPhone/libinetutils/Makefile.am 2009-04-10 20:58:01.000000000 +0000
-@@ -20,10 +20,8 @@
-
- noinst_HEADERS = argcv.h libinetutils.h
-
--EXTRA_DIST = logwtmp.c
--
- libinetutils_a_SOURCES = argcv.c cleansess.c daemon.c des_rw.c kcmd.c \
-- krcmd.c localhost.c logwtmpko.c setsig.c shishi.c tftpsubs.c \
-+ krcmd.c localhost.c setsig.c shishi.c tftpsubs.c \
- ttymsg.c utmp_init.c utmp_logout.c
-
- libinetutils_a_LIBADD = daemon.o $(top_builddir)/lib/libgnu.a
-diff -ru inetutils-1.6/libinetutils/Makefile.in inetutils-1.6+iPhone/libinetutils/Makefile.in
---- inetutils-1.6/libinetutils/Makefile.in 2008-12-27 20:52:24.000000000 +0000
-+++ inetutils-1.6+iPhone/libinetutils/Makefile.in 2009-04-10 20:58:14.000000000 +0000
-@@ -132,7 +132,7 @@
- libinetutils_a_DEPENDENCIES = daemon.o $(top_builddir)/lib/libgnu.a
- am_libinetutils_a_OBJECTS = argcv.$(OBJEXT) cleansess.$(OBJEXT) \
- daemon.$(OBJEXT) des_rw.$(OBJEXT) kcmd.$(OBJEXT) \
-- krcmd.$(OBJEXT) localhost.$(OBJEXT) logwtmpko.$(OBJEXT) \
-+ krcmd.$(OBJEXT) localhost.$(OBJEXT) \
- setsig.$(OBJEXT) shishi.$(OBJEXT) tftpsubs.$(OBJEXT) \
- ttymsg.$(OBJEXT) utmp_init.$(OBJEXT) utmp_logout.$(OBJEXT)
- libinetutils_a_OBJECTS = $(am_libinetutils_a_OBJECTS)
-@@ -638,9 +638,8 @@
- whois_INSTALL_HOOK = @whois_INSTALL_HOOK@
- noinst_LIBRARIES = libinetutils.a
- noinst_HEADERS = argcv.h libinetutils.h
--EXTRA_DIST = logwtmp.c
- libinetutils_a_SOURCES = argcv.c cleansess.c daemon.c des_rw.c kcmd.c \
-- krcmd.c localhost.c logwtmpko.c setsig.c shishi.c tftpsubs.c \
-+ krcmd.c localhost.c setsig.c shishi.c tftpsubs.c \
- ttymsg.c utmp_init.c utmp_logout.c
-
- libinetutils_a_LIBADD = daemon.o $(top_builddir)/lib/libgnu.a
-@@ -700,7 +699,6 @@
- @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/kcmd.Po@am__quote@
- @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/krcmd.Po@am__quote@
- @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/localhost.Po@am__quote@
--@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/logwtmpko.Po@am__quote@
- @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/setsig.Po@am__quote@
- @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/shishi.Po@am__quote@
- @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tftpsubs.Po@am__quote@
-diff -ru inetutils-1.6/ftpd/Makefile.am inetutils-1.6+iPhone/ftpd/Makefile.am
---- inetutils-1.6/ftpd/Makefile.am 2008-12-27 20:04:47.000000000 +0000
-+++ inetutils-1.6+iPhone/ftpd/Makefile.am 2009-04-10 21:16:12.000000000 +0000
-@@ -22,7 +22,7 @@
-
- EXTRA_PROGRAMS = ftpd
-
--ftpd_SOURCES = ftpcmd.y ftpd.c logwtmp.c popen.c pam.c auth.c \
-+ftpd_SOURCES = ftpcmd.y ftpd.c popen.c pam.c auth.c \
- conf.c server_mode.c
-
- noinst_HEADERS = extern.h
-diff -ru inetutils-1.6/ftpd/Makefile.in inetutils-1.6+iPhone/ftpd/Makefile.in
---- inetutils-1.6/ftpd/Makefile.in 2008-12-27 20:52:21.000000000 +0000
-+++ inetutils-1.6+iPhone/ftpd/Makefile.in 2009-04-10 21:16:22.000000000 +0000
-@@ -130,7 +130,7 @@
- am__installdirs = "$(DESTDIR)$(inetdaemondir)" "$(DESTDIR)$(man8dir)"
- inetdaemonPROGRAMS_INSTALL = $(INSTALL_PROGRAM)
- PROGRAMS = $(inetdaemon_PROGRAMS)
--am_ftpd_OBJECTS = ftpcmd.$(OBJEXT) ftpd.$(OBJEXT) logwtmp.$(OBJEXT) \
-+am_ftpd_OBJECTS = ftpcmd.$(OBJEXT) ftpd.$(OBJEXT) \
- popen.$(OBJEXT) pam.$(OBJEXT) auth.$(OBJEXT) conf.$(OBJEXT) \
- server_mode.$(OBJEXT)
- ftpd_OBJECTS = $(am_ftpd_OBJECTS)
-@@ -644,7 +644,7 @@
- whois_BUILD = @whois_BUILD@
- whois_INSTALL_HOOK = @whois_INSTALL_HOOK@
- inetdaemon_PROGRAMS = @ftpd_BUILD@
--ftpd_SOURCES = ftpcmd.y ftpd.c logwtmp.c popen.c pam.c auth.c \
-+ftpd_SOURCES = ftpcmd.y ftpd.c popen.c pam.c auth.c \
- conf.c server_mode.c
-
- noinst_HEADERS = extern.h
-@@ -728,7 +728,6 @@
- @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/conf.Po@am__quote@
- @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ftpcmd.Po@am__quote@
- @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ftpd.Po@am__quote@
--@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/logwtmp.Po@am__quote@
- @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pam.Po@am__quote@
- @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/popen.Po@am__quote@
- @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/server_mode.Po@am__quote@
-diff -ru inetutils-1.6/ftpd/ftpd.c inetutils-1.6+iPhone/ftpd/ftpd.c
---- inetutils-1.6/ftpd/ftpd.c 2008-12-27 20:05:07.000000000 +0000
-+++ inetutils-1.6+iPhone/ftpd/ftpd.c 2009-04-10 21:22:09.000000000 +0000
-@@ -639,7 +639,7 @@
-
- /* open wtmp before chroot */
- snprintf (ttyline, sizeof (ttyline), "ftp%d", getpid ());
-- logwtmp_keep_open (ttyline, pcred->name, pcred->remotehost);
-+ logwtmp (ttyline, pcred->name, pcred->remotehost);
-
- if (pcred->guest)
- {
-@@ -788,7 +788,7 @@
- int atype = pcred->auth_type;
- seteuid ((uid_t) 0);
- if (pcred->logged_in)
-- logwtmp_keep_open (ttyline, "", "");
-+ logwtmp (ttyline, "", "");
-
- if (pcred->name)
- free (pcred->name);
-@@ -1703,7 +1703,7 @@
- if (cred.logged_in)
- {
- seteuid ((uid_t) 0);
-- logwtmp_keep_open (ttyline, "", "");
-+ logwtmp (ttyline, "", "");
- }
- /* beware of flushing buffers after a SIGPIPE */
- _exit (status);
diff --git a/data/inetutils/make.sh b/data/inetutils/make.sh
index 7481d441d..d456806e4 100644
--- a/data/inetutils/make.sh
+++ b/data/inetutils/make.sh
@@ -2,7 +2,7 @@ pkg:setup
autoconf
# XXX: I miss talkd
pkg:configure ac_cv_type_sa_family_t=yes ac_cv_type_socklen_t=yes ac_cv_member_struct_utmp_ut_user=yes ac_cv_func_obstack=no --disable-ifconfig --disable-ping6 --disable-syslogd --disable-talkd --disable-traceroute --disable-whois ac_cv_header_utmp_h=no
-make CFLAGS='-O2 -mthumb'
+make CFLAGS='-O2' -j8
pkg:install
pkg:bin ping
pkg: mkdir -p /sbin
diff --git a/data/inetutils/rlogind.diff b/data/inetutils/rlogind.diff
new file mode 100644
index 000000000..cb12a5627
--- /dev/null
+++ b/data/inetutils/rlogind.diff
@@ -0,0 +1,48 @@
+diff -ur inetutils-1.9.4/src/rlogind.c inetutils-1.9.4+iPhone/src/rlogind.c
+--- inetutils-1.9.4/src/rlogind.c 2015-05-12 02:13:25.000000000 -1000
++++ inetutils-1.9.4+iPhone/src/rlogind.c 2018-08-17 15:08:20.000000000 -1000
+@@ -1172,7 +1172,7 @@
+ struct auth_data auth_data;
+ char addrstr[INET6_ADDRSTRLEN];
+ const char *reply;
+- int true;
++ int _true;
+ char c;
+ int authenticated;
+ pid_t pid;
+@@ -1204,16 +1204,16 @@
+ ? ntohs (((struct sockaddr_in6 *) &auth_data.from)->sin6_port)
+ : ntohs (((struct sockaddr_in *) &auth_data.from)->sin_port));
+
+- true = 1;
++ _true = 1;
+ if (keepalive
+- && setsockopt (infd, SOL_SOCKET, SO_KEEPALIVE, &true, sizeof true) < 0)
++ && setsockopt (infd, SOL_SOCKET, SO_KEEPALIVE, &_true, sizeof _true) < 0)
+ syslog (LOG_WARNING, "setsockopt (SO_KEEPALIVE): %m");
+
+ #if defined IP_TOS && defined IPPROTO_IP && defined IPTOS_LOWDELAY
+- true = IPTOS_LOWDELAY;
++ _true = IPTOS_LOWDELAY;
+ if (auth_data.from.ss_family == AF_INET &&
+ setsockopt (infd, IPPROTO_IP, IP_TOS,
+- (char *) &true, sizeof true) < 0)
++ (char *) &_true, sizeof _true) < 0)
+ syslog (LOG_WARNING, "setsockopt (IP_TOS): %m");
+ #endif
+
+@@ -1260,10 +1260,10 @@
+ }
+
+ /* Parent */
+- true = 1;
+- IF_NOT_ENCRYPT (ioctl (infd, FIONBIO, &true));
+- ioctl (master, FIONBIO, &true);
+- ioctl (master, TIOCPKT, &true);
++ _true = 1;
++ IF_NOT_ENCRYPT (ioctl (infd, FIONBIO, &_true));
++ ioctl (master, FIONBIO, &_true);
++ ioctl (master, TIOCPKT, &_true);
+ netf = infd; /* Needed for cleanup() */
+ setsig (SIGCHLD, cleanup);
+ protocol (infd, master, &auth_data);
diff --git a/data/inetutils/talkd.diff b/data/inetutils/talkd.diff
deleted file mode 100644
index 2a17a1ddc..000000000
--- a/data/inetutils/talkd.diff
+++ /dev/null
@@ -1,13 +0,0 @@
-diff -ru inetutils-1.5/configure.ac inetutils-1.5+iPhone/configure.ac
---- inetutils-1.5/configure.ac 2007-06-28 22:58:23.000000000 +0000
-+++ inetutils-1.5+iPhone/configure.ac 2008-03-24 13:47:26.000000000 +0000
-@@ -470,7 +470,8 @@
- [AC_DEFINE(HAVE_OSOCKADDR_H, 1,
- [Define to one if you have <osockaddr.h>.])],
- [#include <sys/types.h>
-- #include <sys/socket.h> ])
-+ #include <sys/socket.h>
-+ #include <protocols/talkd.h> ])
-
- AC_CHECK_TYPES(struct if_nameindex, , ,
- [#include <sys/types.h>
diff --git a/data/inetutils/utmpx.diff b/data/inetutils/utmpx.diff
deleted file mode 100644
index 319be4ea0..000000000
--- a/data/inetutils/utmpx.diff
+++ /dev/null
@@ -1,70 +0,0 @@
-diff -ru inetutils-1.5/configure.ac inetutils-1.5+iPhone/configure.ac
---- inetutils-1.5/configure.ac 2007-06-28 22:58:23.000000000 +0000
-+++ inetutils-1.5+iPhone/configure.ac 2008-01-02 02:07:05.000000000 +0000
-@@ -776,8 +776,7 @@
- AC_DEFINE(UTMPX, 1, [FIXME])
- AC_DEFINE(HAVE_STREAMSPTY, 1, [FIXME])
- ;;
--*irix* | *hpux*)
-- AC_DEFINE(UTMPX, 1, [FIXME])
-+*irix* | *hpux* | *darwin*)
- AC_DEFINE(UTMPX, 1, [FIXME])
- ;;
- esac
-diff -ru inetutils-1.6/libinetutils/utmp_logout.c inetutils-1.6+iPhone/libinetutils/utmp_logout.c
---- inetutils-1.6/libinetutils/utmp_logout.c 2006-10-21 15:24:20.000000000 +0000
-+++ inetutils-1.6+iPhone/libinetutils/utmp_logout.c 2009-04-09 10:07:11.000000000 +0000
-@@ -52,12 +52,22 @@
-
- if ((ut = getutxline (&utx)))
- {
-+# ifdef HAVE_STRUCT_UTMPX_UT_TYPE
- ut->ut_type = DEAD_PROCESS;
-+# endif
-+# ifdef HAVE_STRUCT_UTMPX_UT_EXIT
- ut->ut_exit.e_termination = 0;
- ut->ut_exit.e_exit = 0;
-+# endif
-+# ifdef HAVE_STRUCT_UTMPX_UT_TV
- gettimeofday (&(ut->ut_tv), 0);
-+# else
-+ time (&(ut->ut_time));
-+# endif
- pututxline (ut);
-+# ifdef HAVE_UPDWTMPX
- updwtmpx (PATH_WTMPX, ut);
-+# endif
- }
- endutxent ();
- #else
-diff -ru inetutils-1.6/libinetutils/logwtmp.c inetutils-1.6+iPhone/libinetutils/logwtmp.c
---- inetutils-1.6/libinetutils/logwtmp.c 2007-06-29 16:29:31.000000000 +0000
-+++ inetutils-1.6+iPhone/libinetutils/logwtmp.c 2009-04-10 19:44:24.000000000 +0000
-@@ -48,6 +48,7 @@
- # include <utmp.h>
- #else
- # ifdef HAVE_UTMPX_H
-+# define _UTMPX_COMPAT
- # include <utmpx.h>
- # define utmp utmpx /* make utmpx look more like utmp */
- # endif
-@@ -113,16 +114,16 @@
-
- /* Set information in new entry. */
- bzero (&ut, sizeof (ut));
--#ifdef HAVE_STRUCT_UTMP_UT_TYPE
-+#if defined(HAVE_STRUCT_UTMP_UT_TYPE) || defined(HAVE_STRUCT_UTMPX_UT_TYPE)
- ut.ut_type = USER_PROCESS;
- #endif
- strncpy (ut.ut_line, line, sizeof ut.ut_line);
- strncpy (ut.ut_name, name, sizeof ut.ut_name);
--#ifdef HAVE_STRUCT_UTMP_UT_HOST
-+#if defined(HAVE_STRUCT_UTMP_UT_HOST) || defined(HAVE_STRUCT_UTMPX_UT_HOST)
- strncpy (ut.ut_host, host, sizeof ut.ut_host);
- #endif
-
--#ifdef HAVE_STRUCT_UTMP_UT_TV
-+#if defined(HAVE_STRUCT_UTMP_UT_TV) || defined(HAVE_STRUCT_UTMPX_UT_TV)
- gettimeofday (&ut.ut_tv, NULL);
- #else
- time (&ut.ut_time);
diff --git a/data/iokittools/IOKitTools-76.tar.gz b/data/iokittools/IOKitTools-76.tar.gz
deleted file mode 100644
index 25b29a4f0..000000000
--- a/data/iokittools/IOKitTools-76.tar.gz
+++ /dev/null
Binary files differ
diff --git a/data/iokittools/kernel.diff b/data/iokittools/kernel.diff
new file mode 100644
index 000000000..8057f5bba
--- /dev/null
+++ b/data/iokittools/kernel.diff
@@ -0,0 +1,14 @@
+diff -ur IOKitTools-108/ioclasscount.tproj/ioclasscount.c IOKitTools-108+iPhone/ioclasscount.tproj/ioclasscount.c
+--- IOKitTools-108/ioclasscount.tproj/ioclasscount.c 2017-07-15 15:12:07.000000000 -1000
++++ IOKitTools-108+iPhone/ioclasscount.tproj/ioclasscount.c 2018-09-02 12:57:00.000000000 -1000
+@@ -33,8 +33,8 @@
+ #include <mach/mach_vm.h>
+ #include <mach/vm_statistics.h>
+ #include <CoreFoundation/CoreFoundation.h>
+-#include <Kernel/IOKit/IOKitDebug.h>
+-#include <Kernel/libkern/OSKextLibPrivate.h>
++#include <IOKit/IOKitDebug.h>
++#include <libkern/OSKextLibPrivate.h>
+ #include <IOKit/IOKitLib.h>
+ #include <IOKit/IOKitKeys.h>
+ #include <CoreSymbolication/CoreSymbolication.h>
diff --git a/data/iokittools/make.sh b/data/iokittools/make.sh
index 4c10ed0f8..04807cd30 100644
--- a/data/iokittools/make.sh
+++ b/data/iokittools/make.sh
@@ -6,3 +6,5 @@ for tproj in *.tproj; do
${PKG_TARG}-gcc -lcurses -o "${tproj}" "${tproj}.tproj"/*.c -framework CoreFoundation -framework IOKit -save-temps
pkg: cp -a "${tproj}" /usr/sbin
done
+# In firmware-sbin
+pkg: rm /usr/sbin/ioreg
diff --git a/data/irssi/_metadata/version b/data/irssi/_metadata/version
index 7eff8ab95..524cb5524 100644
--- a/data/irssi/_metadata/version
+++ b/data/irssi/_metadata/version
@@ -1 +1 @@
-0.8.12
+1.1.1
diff --git a/data/irssi/irssi-0.8.12.tar.gz b/data/irssi/irssi-0.8.12.tar.gz
deleted file mode 100644
index b1bbc629e..000000000
--- a/data/irssi/irssi-0.8.12.tar.gz
+++ /dev/null
Binary files differ
diff --git a/data/irssi/irssi-1.1.1.tar.xz b/data/irssi/irssi-1.1.1.tar.xz
new file mode 100644
index 000000000..5a76161e6
--- /dev/null
+++ b/data/irssi/irssi-1.1.1.tar.xz
Binary files differ
diff --git a/data/irssi/make.sh b/data/irssi/make.sh
index 13355cdca..2248ec7ae 100644
--- a/data/irssi/make.sh
+++ b/data/irssi/make.sh
@@ -1,5 +1,5 @@
pkg:setup
pkg:autoconf
-pkg:configure --enable-static
-make
+pkg:configure --enable-static LD="${PKG_TARG}-ld"
+make -j8
pkg:install
diff --git a/data/irssi/mdns.diff b/data/irssi/mdns.diff
deleted file mode 100644
index 50478e973..000000000
--- a/data/irssi/mdns.diff
+++ /dev/null
@@ -1,50 +0,0 @@
-diff -ru irssi-0.8.12/src/fe-none/irssi.c irssi-0.8.12+iPhone/src/fe-none/irssi.c
---- irssi-0.8.12/src/fe-none/irssi.c 2007-10-06 09:38:20.000000000 +0000
-+++ irssi-0.8.12+iPhone/src/fe-none/irssi.c 2008-01-28 22:40:10.000000000 +0000
-@@ -1,3 +1,5 @@
-+#include <mach-o/nlist.h>
-+
- /*
- irssi.c : irssi
-
-@@ -81,6 +83,15 @@
-
- int main(int argc, char **argv)
- {
-+#if !defined(__ENVIRONMENT_ASPEN_VERSION_MIN_REQUIRED__) || __ENVIRONMENT_ASPEN_VERSION_MIN_REQUIRED__ < 10200
-+ struct nlist nl[2];
-+ memset(nl, 0, sizeof(nl));
-+ nl[0].n_un.n_name = (char *) "_useMDNSResponder";
-+ nlist("/usr/lib/libc.dylib", nl);
-+ if (nl[0].n_type != N_UNDF)
-+ *(int *) nl[0].n_value = 0;
-+#endif
-+
- static struct poptOption options[] = {
- POPT_AUTOHELP
- { "load", 'l', POPT_ARG_STRING, &autoload_module, 0, "Module to load (default = bot)", "MODULE" },
-diff -ru irssi-0.8.12/src/fe-text/irssi.c irssi-0.8.12+iPhone/src/fe-text/irssi.c
---- irssi-0.8.12/src/fe-text/irssi.c 2007-10-06 09:38:20.000000000 +0000
-+++ irssi-0.8.12+iPhone/src/fe-text/irssi.c 2008-01-28 22:40:01.000000000 +0000
-@@ -1,3 +1,5 @@
-+#include <mach-o/nlist.h>
-+
- /*
- irssi.c : irssi
-
-@@ -328,6 +330,15 @@
-
- int main(int argc, char **argv)
- {
-+#if !defined(__ENVIRONMENT_ASPEN_VERSION_MIN_REQUIRED__) || __ENVIRONMENT_ASPEN_VERSION_MIN_REQUIRED__ < 10200
-+ struct nlist nl[2];
-+ memset(nl, 0, sizeof(nl));
-+ nl[0].n_un.n_name = (char *) "_useMDNSResponder";
-+ nlist("/usr/lib/libc.dylib", nl);
-+ if (nl[0].n_type != N_UNDF)
-+ *(int *) nl[0].n_value = 0;
-+#endif
-+
- static int version = 0;
- static struct poptOption options[] = {
- { "dummy", 'd', POPT_ARG_NONE, &dummy, 0, "Use the dummy terminal mode", NULL },
diff --git a/data/launchd/_metadata/version b/data/launchd/_metadata/version
index bb6d31c0c..6524baf05 100644
--- a/data/launchd/_metadata/version
+++ b/data/launchd/_metadata/version
@@ -1 +1 @@
-258.18
+842.92.1
diff --git a/data/launchd/launchd-258.18.tar.gz b/data/launchd/launchd-258.18.tar.gz
deleted file mode 100644
index b5e4ffc67..000000000
--- a/data/launchd/launchd-258.18.tar.gz
+++ /dev/null
Binary files differ
diff --git a/data/launchd/launchd-842.92.1.tar.gz b/data/launchd/launchd-842.92.1.tar.gz
new file mode 100644
index 000000000..afbf09133
--- /dev/null
+++ b/data/launchd/launchd-842.92.1.tar.gz
Binary files differ
diff --git a/data/launchd/make.sh b/data/launchd/make.sh
index cf4270d30..6bb833073 100644
--- a/data/launchd/make.sh
+++ b/data/launchd/make.sh
@@ -1,6 +1,7 @@
-pkg:setup
-cd launchd
-pkg:configure --bindir=/bin --sbindir=/sbin --sysconfdir=/etc
-export SDKROOT=${PKG_ROOT}
-make
-pkg:install
+pkg:extract
+cd *
+pkg:patch
+#${PKG_TARG}-gcc -c liblaunch/liblaunch.c -o liblaunch.o -Isrc -miphoneos-version-min=11.0 -Iliblaunch
+${PKG_TARG}-gcc -DPRIVATE support/launchctl.c -o launchctl -Isrc -miphoneos-version-min=11.0 -Iliblaunch -I"$(PKG_DEST_ readline)/usr/include" -framework CoreFoundation -framework IOKit -lreadline -llaunch
+pkg: mkdir -p /usr/bin
+pkg: cp -a launchctl /usr/bin
diff --git a/data/launchd/port.diff b/data/launchd/port.diff
deleted file mode 100644
index 4bf2ee0af..000000000
--- a/data/launchd/port.diff
+++ /dev/null
@@ -1,107 +0,0 @@
-diff -ru launchd-258.18/launchd/configure launchd-258.18+iPhone/launchd/configure
---- launchd-258.18/launchd/configure 2008-01-28 18:20:19.000000000 +0000
-+++ launchd-258.18+iPhone/launchd/configure 2008-11-24 10:24:21.000000000 +0000
-@@ -7863,13 +7863,8 @@
- LIBS_ONLY_FALSE=
- fi
-
-- if test $(tconf --test TARGET_OS_EMBEDDED) = YES; then
- DO_EMBEDDED_MAGIC_TRUE=
- DO_EMBEDDED_MAGIC_FALSE='#'
--else
-- DO_EMBEDDED_MAGIC_TRUE='#'
-- DO_EMBEDDED_MAGIC_FALSE=
--fi
-
-
-
-diff -ru launchd-258.18/launchd/src/launchctl.c launchd-258.18+iPhone/launchd/src/launchctl.c
---- launchd-258.18/launchd/src/launchctl.c 2008-07-18 21:25:03.000000000 +0000
-+++ launchd-258.18+iPhone/launchd/src/launchctl.c 2008-11-24 10:27:33.000000000 +0000
-@@ -20,6 +20,8 @@
-
- static const char *const __rcs_file_version__ = "$Revision: 23642 $";
-
-+#define PRIVATE
-+
- #include "liblaunch_public.h"
- #include "liblaunch_private.h"
- #include "libbootstrap_public.h"
-@@ -74,6 +76,9 @@
- #include <sysexits.h>
- #include <util.h>
-
-+#include <sys/sockio.h>
-+#include <mach/mach_error.h>
-+#include <sys/ioctl.h>
-
- #define LAUNCH_SECDIR "/tmp/launch-XXXXXX"
-
-diff -ru launchd-258.18/launchd/src/launchd_runtime.c launchd-258.18+iPhone/launchd/src/launchd_runtime.c
---- launchd-258.18/launchd/src/launchd_runtime.c 2008-03-04 17:48:07.000000000 +0000
-+++ launchd-258.18+iPhone/launchd/src/launchd_runtime.c 2008-11-24 10:37:16.000000000 +0000
-@@ -75,6 +75,8 @@
- static mach_port_t launchd_internal_port;
- static int mainkq;
-
-+extern void mach_msg_destroy(mach_msg_header_t *mh);
-+
- #define BULK_KEV_MAX 100
- static struct kevent *bulk_kev;
- static int bulk_kev_i;
-diff -ru launchd-258.18/launchd/src/Makefile.am launchd-258.18+iPhone/launchd/src/Makefile.am
---- launchd-258.18/launchd/src/Makefile.am 2008-01-28 18:20:19.000000000 +0000
-+++ launchd-258.18+iPhone/launchd/src/Makefile.am 2008-11-24 10:32:27.000000000 +0000
-@@ -46,7 +46,7 @@
- sysconf_DATA = hostconfig rc.common rc.netboot
-
- launchctl_CFLAGS = $(AM_CFLAGS) -I$(SDKROOT)/System/Library/Frameworks/System.framework/PrivateHeaders
--launchctl_LDFLAGS = $(AM_LDFLAGS) -framework CoreFoundation -framework IOKit $(LIBS_SECURITY) -weak_library /usr/lib/libedit.dylib
-+launchctl_LDFLAGS = $(AM_LDFLAGS) -framework CoreFoundation -framework IOKit $(LIBS_SECURITY) -weak_library $(SDKROOT)/usr/lib/libedit.dylib
-
- if DO_EMBEDDED_MAGIC
- else
-@@ -64,11 +64,11 @@
-
- launchproxy_LDFLAGS = $(AM_LDFLAGS) $(WEAKLIBS_SECURITY)
-
--notifyServer.c notifyServer.h: /usr/include/mach/notify.defs
-- mig $(MIGFLAGS) -header /dev/null -user /dev/null -sheader notifyServer.h /usr/include/mach/notify.defs
-+notifyServer.c notifyServer.h: $(SDKROOT)/usr/include/mach/notify.defs
-+ mig $(MIGFLAGS) -header /dev/null -user /dev/null -sheader notifyServer.h $(SDKROOT)/usr/include/mach/notify.defs
-
--mach_excServer.c mach_excServer.h: /usr/include/mach/mach_exc.defs
-- mig $(MIGFLAGS) -header /dev/null -user /dev/null -sheader mach_excServer.h /usr/include/mach/mach_exc.defs
-+mach_excServer.c mach_excServer.h: $(SDKROOT)/usr/include/mach/mach_exc.defs
-+ mig $(MIGFLAGS) -header /dev/null -user /dev/null -sheader mach_excServer.h $(SDKROOT)/usr/include/mach/mach_exc.defs
-
- job_replyUser.c job_reply.h: $(srcdir)/protocol_job_reply.defs
- mig $(MIGFLAGS) -sheader /dev/null -server /dev/null $(srcdir)/protocol_job_reply.defs
-diff -ru launchd-258.18/launchd/src/Makefile.in launchd-258.18+iPhone/launchd/src/Makefile.in
---- launchd-258.18/launchd/src/Makefile.in 2008-01-28 18:20:19.000000000 +0000
-+++ launchd-258.18+iPhone/launchd/src/Makefile.in 2008-11-24 10:32:41.000000000 +0000
-@@ -254,7 +254,7 @@
- @LIBS_ONLY_TRUE@liblaunch_profile_a_SOURCES = liblaunch.c libvproc.c libbootstrap.c protocol_vprocUser.c __version.c
- @LIBS_ONLY_FALSE@sysconf_DATA = hostconfig rc.common rc.netboot
- @LIBS_ONLY_FALSE@launchctl_CFLAGS = $(AM_CFLAGS) -I$(SDKROOT)/System/Library/Frameworks/System.framework/PrivateHeaders
--@LIBS_ONLY_FALSE@launchctl_LDFLAGS = $(AM_LDFLAGS) -framework CoreFoundation -framework IOKit $(LIBS_SECURITY) -weak_library /usr/lib/libedit.dylib
-+@LIBS_ONLY_FALSE@launchctl_LDFLAGS = $(AM_LDFLAGS) -framework CoreFoundation -framework IOKit $(LIBS_SECURITY) -weak_library $(SDKROOT)/usr/lib/libedit.dylib
- @DO_EMBEDDED_MAGIC_FALSE@@LIBS_ONLY_FALSE@SystemStarter_CFLAGS = -mdynamic-no-pic $(AM_CFLAGS)
- @DO_EMBEDDED_MAGIC_FALSE@@LIBS_ONLY_FALSE@SystemStarter_LDFLAGS = $(AM_LDFLAGS) -framework CoreFoundation -framework IOKit
- @DO_EMBEDDED_MAGIC_FALSE@@LIBS_ONLY_FALSE@SystemStarter_SOURCES = StartupItems.c IPC.c SystemStarter.c
-@@ -1174,11 +1174,11 @@
- @LIBS_ONLY_FALSE@launchd_runtime.c:: notifyServer.h launchd_internal.h mach_excServer.h
- @LIBS_ONLY_FALSE@launchd_core_logic.c:: protocol_vproc.h job_reply.h protocol_vprocServer.h
-
--@LIBS_ONLY_FALSE@notifyServer.c notifyServer.h: /usr/include/mach/notify.defs
--@LIBS_ONLY_FALSE@ mig $(MIGFLAGS) -header /dev/null -user /dev/null -sheader notifyServer.h /usr/include/mach/notify.defs
-+@LIBS_ONLY_FALSE@notifyServer.c notifyServer.h: $(SDKROOT)/usr/include/mach/notify.defs
-+@LIBS_ONLY_FALSE@ mig $(MIGFLAGS) -header /dev/null -user /dev/null -sheader notifyServer.h $(SDKROOT)/usr/include/mach/notify.defs
-
--@LIBS_ONLY_FALSE@mach_excServer.c mach_excServer.h: /usr/include/mach/mach_exc.defs
--@LIBS_ONLY_FALSE@ mig $(MIGFLAGS) -header /dev/null -user /dev/null -sheader mach_excServer.h /usr/include/mach/mach_exc.defs
-+@LIBS_ONLY_FALSE@mach_excServer.c mach_excServer.h: $(SDKROOT)/usr/include/mach/mach_exc.defs
-+@LIBS_ONLY_FALSE@ mig $(MIGFLAGS) -header /dev/null -user /dev/null -sheader mach_excServer.h $(SDKROOT)/usr/include/mach/mach_exc.defs
-
- @LIBS_ONLY_FALSE@job_replyUser.c job_reply.h: $(srcdir)/protocol_job_reply.defs
- @LIBS_ONLY_FALSE@ mig $(MIGFLAGS) -sheader /dev/null -server /dev/null $(srcdir)/protocol_job_reply.defs
diff --git a/data/launchd/sockio.diff b/data/launchd/sockio.diff
new file mode 100644
index 000000000..d7be39318
--- /dev/null
+++ b/data/launchd/sockio.diff
@@ -0,0 +1,14 @@
+diff -ur launchd-842.92.1/support/launchctl.c launchd-842.92.1+iPhone/support/launchctl.c
+--- launchd-842.92.1/support/launchctl.c 2013-04-01 10:49:56.000000000 -1000
++++ launchd-842.92.1+iPhone/support/launchctl.c 2018-09-03 22:33:20.000000000 -1000
+@@ -39,9 +39,9 @@
+ #include <sys/types.h>
+ #include <sys/sysctl.h>
+ #include <sys/time.h>
+-#include <sys/sysctl.h>
+ #include <sys/stat.h>
+ #include <sys/socket.h>
++#include <sys/sockio.h>
+ #include <sys/un.h>
+ #include <sys/fcntl.h>
+ #include <sys/event.h>
diff --git a/data/libgpg-error/triplet.diff b/data/libgpg-error/triplet.diff
index cd7236070..b0efa85d3 100644
--- a/data/libgpg-error/triplet.diff
+++ b/data/libgpg-error/triplet.diff
@@ -1,11 +1,12 @@
diff -ur libgpg-error-1.32/src/mkheader.c libgpg-error-1.32+iPhone/src/mkheader.c
--- libgpg-error-1.32/src/mkheader.c 2018-03-13 22:56:20.000000000 -1000
+++ libgpg-error-1.32+iPhone/src/mkheader.c 2018-08-01 15:13:26.000000000 -1000
-@@ -90,6 +90,7 @@
+@@ -90,6 +90,8 @@
{"powerpc-unknown-linux-gnuspe", "powerpc-unknown-linux-gnu" },
{"arm-unknown-linux-gnueabihf", "arm-unknown-linux-gnueabi" },
-+ {"aarch64-apple-darwin13", "aarch64-apple-darwin" },
++ {"aarch64-apple-darwin14", "aarch64-apple-darwin" },
++ {"aarch64-apple-darwin17", "aarch64-apple-darwin" },
{"armv7-unknown-linux-gnueabihf" },
{"armv5-unknown-linux-musleabi" },
{"armv6-unknown-linux-musleabihf" },
diff --git a/data/libid3tag/make.sh b/data/libid3tag/make.sh
index 452a4bfd5..ce58b7c91 100644
--- a/data/libid3tag/make.sh
+++ b/data/libid3tag/make.sh
@@ -1,4 +1,5 @@
pkg:setup
+cp ${PKG_BASE}/config.sub .
pkg:configure
make
pkg:install
diff --git a/data/libsamplerate/_metadata/libfftw3.dep b/data/libsamplerate/_metadata/libfftw3.dep
new file mode 120000
index 000000000..8fddea995
--- /dev/null
+++ b/data/libsamplerate/_metadata/libfftw3.dep
@@ -0,0 +1 @@
+../../libfftw3 \ No newline at end of file
diff --git a/data/libsamplerate/make.sh b/data/libsamplerate/make.sh
index 452a4bfd5..baecee47e 100644
--- a/data/libsamplerate/make.sh
+++ b/data/libsamplerate/make.sh
@@ -1,4 +1,5 @@
pkg:setup
+cp "${PKG_BASE}/config.sub" .
pkg:configure
-make
+make -j8
pkg:install
diff --git a/data/libserf/_metadata/apr-lib.dep b/data/libserf/_metadata/apr-lib.dep
new file mode 120000
index 000000000..82332fb1d
--- /dev/null
+++ b/data/libserf/_metadata/apr-lib.dep
@@ -0,0 +1 @@
+../../apr-lib \ No newline at end of file
diff --git a/data/libserf/_metadata/apr-util.dep b/data/libserf/_metadata/apr-util.dep
new file mode 120000
index 000000000..a78d94c6b
--- /dev/null
+++ b/data/libserf/_metadata/apr-util.dep
@@ -0,0 +1 @@
+../../apr-util \ No newline at end of file
diff --git a/data/libserf/_metadata/description b/data/libserf/_metadata/description
new file mode 100644
index 000000000..00511c681
--- /dev/null
+++ b/data/libserf/_metadata/description
@@ -0,0 +1 @@
+a high performance C-based HTTP client library built upon the Apache Portable Runtime (APR) library.
diff --git a/data/libserf/_metadata/expat.dep b/data/libserf/_metadata/expat.dep
new file mode 120000
index 000000000..2100fb19e
--- /dev/null
+++ b/data/libserf/_metadata/expat.dep
@@ -0,0 +1 @@
+../../expat \ No newline at end of file
diff --git a/data/libserf/_metadata/homepage b/data/libserf/_metadata/homepage
new file mode 100644
index 000000000..b4a4eedde
--- /dev/null
+++ b/data/libserf/_metadata/homepage
@@ -0,0 +1 @@
+https://serf.apache.org/
diff --git a/data/libserf/_metadata/license b/data/libserf/_metadata/license
new file mode 120000
index 000000000..d0b14a610
--- /dev/null
+++ b/data/libserf/_metadata/license
@@ -0,0 +1 @@
+../../../licenses/apache-2.0 \ No newline at end of file
diff --git a/data/libserf/_metadata/maintainer b/data/libserf/_metadata/maintainer
new file mode 120000
index 000000000..573d7ebef
--- /dev/null
+++ b/data/libserf/_metadata/maintainer
@@ -0,0 +1 @@
+../../../people/sbingner \ No newline at end of file
diff --git a/data/libserf/_metadata/priority b/data/libserf/_metadata/priority
new file mode 100644
index 000000000..a6a7b9cd7
--- /dev/null
+++ b/data/libserf/_metadata/priority
@@ -0,0 +1 @@
+standard
diff --git a/data/libserf/_metadata/role b/data/libserf/_metadata/role
new file mode 100644
index 000000000..8d0320866
--- /dev/null
+++ b/data/libserf/_metadata/role
@@ -0,0 +1 @@
+developer
diff --git a/data/libserf/_metadata/section b/data/libserf/_metadata/section
new file mode 100644
index 000000000..e0eb96881
--- /dev/null
+++ b/data/libserf/_metadata/section
@@ -0,0 +1 @@
+Development
diff --git a/data/libserf/_metadata/tags b/data/libserf/_metadata/tags
new file mode 100644
index 000000000..a8928cec8
--- /dev/null
+++ b/data/libserf/_metadata/tags
@@ -0,0 +1 @@
+purpose::library
diff --git a/data/libserf/_metadata/version b/data/libserf/_metadata/version
new file mode 100644
index 000000000..d4c4950a3
--- /dev/null
+++ b/data/libserf/_metadata/version
@@ -0,0 +1 @@
+1.3.9
diff --git a/data/libserf/make.sh b/data/libserf/make.sh
new file mode 100644
index 000000000..71f549558
--- /dev/null
+++ b/data/libserf/make.sh
@@ -0,0 +1,8 @@
+pkg:setup
+export PATH
+SCONS="scons APR=\"$(echo $(PKG_WORK_ _apr)/*/apr-1-config)\" APU=\"$(echo $(PKG_WORK_ apr-util)/*/apu-1-config)\" OPENSSL=\"$(PKG_DEST_ openssl)/usr\" PREFIX=/usr LIBDIR=/usr/lib CC=\"$(which ${PKG_TARG}-gcc)\" SOURCE_LAYOUT=1 LINKFLAGS=\"-L$(PKG_DEST_ _apr)/usr/lib -L$(PKG_DEST_ apr-util)/usr/lib -L$(PKG_DEST_ expat)/usr/lib\""
+echo ${SCONS}
+eval ${SCONS}
+mkdir -p "$(PKG_DEST_ libserf)"
+scons install --install-sandbox="$(PKG_DEST_ libserf)"
+pkg: rm /usr/lib/libserf-1.a
diff --git a/data/libserf/serf-1.3.9.tar.bz2 b/data/libserf/serf-1.3.9.tar.bz2
new file mode 100644
index 000000000..734f2366a
--- /dev/null
+++ b/data/libserf/serf-1.3.9.tar.bz2
Binary files differ
diff --git a/data/libsigc++3.0/_metadata/description b/data/libsigc++3.0/_metadata/description
new file mode 100644
index 000000000..8422124b1
--- /dev/null
+++ b/data/libsigc++3.0/_metadata/description
@@ -0,0 +1 @@
+callback framework for C++
diff --git a/data/libsigc++3.0/_metadata/license b/data/libsigc++3.0/_metadata/license
new file mode 120000
index 000000000..577aa1598
--- /dev/null
+++ b/data/libsigc++3.0/_metadata/license
@@ -0,0 +1 @@
+../../../licenses/lgpl-2.1 \ No newline at end of file
diff --git a/data/libsigc++3.0/_metadata/maintainer b/data/libsigc++3.0/_metadata/maintainer
new file mode 120000
index 000000000..0fa66e077
--- /dev/null
+++ b/data/libsigc++3.0/_metadata/maintainer
@@ -0,0 +1 @@
+../../../people/saurik \ No newline at end of file
diff --git a/data/libsigc++3.0/_metadata/priority b/data/libsigc++3.0/_metadata/priority
new file mode 100644
index 000000000..134d9bc32
--- /dev/null
+++ b/data/libsigc++3.0/_metadata/priority
@@ -0,0 +1 @@
+optional
diff --git a/data/libsigc++3.0/_metadata/role b/data/libsigc++3.0/_metadata/role
new file mode 100644
index 000000000..8d0320866
--- /dev/null
+++ b/data/libsigc++3.0/_metadata/role
@@ -0,0 +1 @@
+developer
diff --git a/data/libsigc++3.0/_metadata/section b/data/libsigc++3.0/_metadata/section
new file mode 100644
index 000000000..e0eb96881
--- /dev/null
+++ b/data/libsigc++3.0/_metadata/section
@@ -0,0 +1 @@
+Development
diff --git a/data/libsigc++3.0/_metadata/tags b/data/libsigc++3.0/_metadata/tags
new file mode 100644
index 000000000..a8928cec8
--- /dev/null
+++ b/data/libsigc++3.0/_metadata/tags
@@ -0,0 +1 @@
+purpose::library
diff --git a/data/libsigc++3.0/_metadata/version b/data/libsigc++3.0/_metadata/version
new file mode 100644
index 000000000..e42e9b411
--- /dev/null
+++ b/data/libsigc++3.0/_metadata/version
@@ -0,0 +1 @@
+2.99.11
diff --git a/data/libsigc++3.0/libsigc++-2.99.11.tar.xz b/data/libsigc++3.0/libsigc++-2.99.11.tar.xz
new file mode 100644
index 000000000..73f7ba797
--- /dev/null
+++ b/data/libsigc++3.0/libsigc++-2.99.11.tar.xz
Binary files differ
diff --git a/data/libsigc++3.0/make.sh b/data/libsigc++3.0/make.sh
new file mode 100644
index 000000000..e2c5ac499
--- /dev/null
+++ b/data/libsigc++3.0/make.sh
@@ -0,0 +1,4 @@
+pkg:setup
+pkg:configure
+make V=1 -j8
+pkg:install
diff --git a/data/libxml2/_metadata/libxml2-lib.dep b/data/libxml2/_metadata/libxml2-lib.dep
deleted file mode 120000
index 4caf793d4..000000000
--- a/data/libxml2/_metadata/libxml2-lib.dep
+++ /dev/null
@@ -1 +0,0 @@
-../../libxml2-lib \ No newline at end of file
diff --git a/data/links/_metadata/version b/data/links/_metadata/version
index 0338f8d1a..f1ad6a77c 100644
--- a/data/links/_metadata/version
+++ b/data/links/_metadata/version
@@ -1 +1 @@
-0.99
+1.03
diff --git a/data/links/links-0.99.tar.gz b/data/links/links-0.99.tar.gz
deleted file mode 100644
index 2d25f73d9..000000000
--- a/data/links/links-0.99.tar.gz
+++ /dev/null
Binary files differ
diff --git a/data/links/links-1.03.tar.gz b/data/links/links-1.03.tar.gz
new file mode 100644
index 000000000..70a3cc256
--- /dev/null
+++ b/data/links/links-1.03.tar.gz
Binary files differ
diff --git a/data/links/make.sh b/data/links/make.sh
index 7dac292bc..d98847616 100644
--- a/data/links/make.sh
+++ b/data/links/make.sh
@@ -1,5 +1,5 @@
pkg:setup
autoconf
pkg:configure
-make
+make -j8
pkg:install
diff --git a/data/links/mdns.diff b/data/links/mdns.diff
deleted file mode 100644
index c48de5c2f..000000000
--- a/data/links/mdns.diff
+++ /dev/null
@@ -1,25 +0,0 @@
-diff -ru links-0.99/main.c links-0.99+iPhone/main.c
---- links-0.99/main.c 2002-06-29 18:44:25.000000000 +0000
-+++ links-0.99+iPhone/main.c 2008-03-04 20:43:00.000000000 +0000
-@@ -1,3 +1,5 @@
-+#include <mach-o/nlist.h>
-+
- #include "links.h"
-
- int retval = RET_OK;
-@@ -330,6 +332,15 @@
-
- int main(int argc, char *argv[])
- {
-+#if !defined(__ENVIRONMENT_ASPEN_VERSION_MIN_REQUIRED__) || __ENVIRONMENT_ASPEN_VERSION_MIN_REQUIRED__ < 10200
-+ struct nlist nl[2];
-+ memset(nl, 0, sizeof(nl));
-+ nl[0].n_un.n_name = (char *) "_useMDNSResponder";
-+ nlist("/usr/lib/libc.dylib", nl);
-+ if (nl[0].n_type != N_UNDF)
-+ *(int *) nl[0].n_value = 0;
-+#endif
-+
- path_to_exe = argv[0];
- ac = argc;
- av = (unsigned char **)argv;
diff --git a/data/llvm-clang/_metadata/conflicts b/data/llvm-clang/_metadata/conflicts
new file mode 100644
index 000000000..08f4c1128
--- /dev/null
+++ b/data/llvm-clang/_metadata/conflicts
@@ -0,0 +1 @@
+org.coolstar.llvm-clang64, org.coolstar.llvm-clang
diff --git a/data/llvm-clang/_metadata/description b/data/llvm-clang/_metadata/description
new file mode 100644
index 000000000..bc38f718d
--- /dev/null
+++ b/data/llvm-clang/_metadata/description
@@ -0,0 +1 @@
+A toolkit for the construction of highly optimized compilers, optimizers, and runtime environments and a compiler front-end for the C family of languages (C, C++, Objective-C, and Objective-C++) which is built as part of the LLVM compiler infrastructure project.
diff --git a/data/llvm-clang/_metadata/license b/data/llvm-clang/_metadata/license
new file mode 120000
index 000000000..eea9de8d1
--- /dev/null
+++ b/data/llvm-clang/_metadata/license
@@ -0,0 +1 @@
+../../../licenses/bsd \ No newline at end of file
diff --git a/data/llvm-clang/_metadata/maintainer b/data/llvm-clang/_metadata/maintainer
new file mode 120000
index 000000000..573d7ebef
--- /dev/null
+++ b/data/llvm-clang/_metadata/maintainer
@@ -0,0 +1 @@
+../../../people/sbingner \ No newline at end of file
diff --git a/data/llvm-clang/_metadata/name b/data/llvm-clang/_metadata/name
new file mode 100644
index 000000000..8e28c177c
--- /dev/null
+++ b/data/llvm-clang/_metadata/name
@@ -0,0 +1 @@
+LLVM Clang
diff --git a/data/llvm-clang/_metadata/priority b/data/llvm-clang/_metadata/priority
new file mode 100644
index 000000000..134d9bc32
--- /dev/null
+++ b/data/llvm-clang/_metadata/priority
@@ -0,0 +1 @@
+optional
diff --git a/data/llvm-clang/_metadata/provides b/data/llvm-clang/_metadata/provides
new file mode 100644
index 000000000..08f4c1128
--- /dev/null
+++ b/data/llvm-clang/_metadata/provides
@@ -0,0 +1 @@
+org.coolstar.llvm-clang64, org.coolstar.llvm-clang
diff --git a/data/llvm-clang/_metadata/replaces b/data/llvm-clang/_metadata/replaces
new file mode 100644
index 000000000..08f4c1128
--- /dev/null
+++ b/data/llvm-clang/_metadata/replaces
@@ -0,0 +1 @@
+org.coolstar.llvm-clang64, org.coolstar.llvm-clang
diff --git a/data/llvm-clang/_metadata/role b/data/llvm-clang/_metadata/role
new file mode 100644
index 000000000..8d0320866
--- /dev/null
+++ b/data/llvm-clang/_metadata/role
@@ -0,0 +1 @@
+developer
diff --git a/data/llvm-clang/_metadata/section b/data/llvm-clang/_metadata/section
new file mode 100644
index 000000000..e0eb96881
--- /dev/null
+++ b/data/llvm-clang/_metadata/section
@@ -0,0 +1 @@
+Development
diff --git a/data/llvm-clang/_metadata/tags b/data/llvm-clang/_metadata/tags
new file mode 100644
index 000000000..ad5d50831
--- /dev/null
+++ b/data/llvm-clang/_metadata/tags
@@ -0,0 +1 @@
+purpose::console
diff --git a/data/llvm-clang/_metadata/version b/data/llvm-clang/_metadata/version
new file mode 100644
index 000000000..a1ef0cae1
--- /dev/null
+++ b/data/llvm-clang/_metadata/version
@@ -0,0 +1 @@
+5.0.2
diff --git a/data/llvm-clang/iphonesdkpath.diff b/data/llvm-clang/iphonesdkpath.diff
new file mode 100644
index 000000000..ace9daa10
--- /dev/null
+++ b/data/llvm-clang/iphonesdkpath.diff
@@ -0,0 +1,46 @@
+diff -ur swift-llvm-swift-4.1.3-RELEASE/tools/clang/lib/Frontend/InitHeaderSearch.cpp swift-llvm-swift-4.1.3-RELEASE+iPhone/tools/clang/lib/Frontend/InitHeaderSearch.cpp
+--- swift-llvm-swift-4.1.3-RELEASE/tools/clang/lib/Frontend/InitHeaderSearch.cpp 2018-03-17 03:34:33.000000000 -1000
++++ swift-llvm-swift-4.1.3-RELEASE+iPhone/tools/clang/lib/Frontend/InitHeaderSearch.cpp 2018-09-17 12:26:55.000000000 -1000
+@@ -348,6 +348,9 @@
+ }
+ default:
+ AddPath("/usr/include", ExternCSystem, false);
++ if (!HasSysroot) {
++ AddPath("/usr/share/SDKs/iPhoneOS.sdk/usr/include", ExternCSystem, false);
++ }
+ break;
+ }
+ }
+@@ -385,11 +388,21 @@
+ "arm-apple-darwin10", "v7", "", triple);
+ AddGnuCPlusPlusIncludePaths("/usr/include/c++/4.2.1",
+ "arm-apple-darwin10", "v6", "", triple);
++ if (!HasSysroot) {
++ AddGnuCPlusPlusIncludePaths("/usr/share/SDKs/iPhoneOS.sdk/usr/include/c++/4.2.1",
++ "arm-apple-darwin10", "v7", "", triple);
++ AddGnuCPlusPlusIncludePaths("/usr/share/SDKs/iPhoneOS.sdk/usr/include/c++/4.2.1",
++ "arm-apple-darwin10", "v6", "", triple);
++ }
+ break;
+
+ case llvm::Triple::aarch64:
+ AddGnuCPlusPlusIncludePaths("/usr/include/c++/4.2.1",
+ "arm64-apple-darwin10", "", "", triple);
++ if (!HasSysroot) {
++ AddGnuCPlusPlusIncludePaths("/usr/share/SDKs/iPhoneOS.sdk/usr/include/c++/4.2.1",
++ "arm64-apple-darwin10", "", "", triple);
++ }
+ break;
+ }
+ return;
+@@ -483,6 +496,10 @@
+ // Add the default framework include paths on Darwin.
+ if (HSOpts.UseStandardSystemIncludes) {
+ if (triple.isOSDarwin()) {
++ if (!HasSysroot) {
++ AddPath("/usr/share/SDKs/iPhoneOS.sdk/System/Library/Frameworks", System, true);
++ AddPath("/usr/share/SDKs/iPhoneOS.sdk/Library/Frameworks", System, true);
++ }
+ AddPath("/System/Library/Frameworks", System, true);
+ AddPath("/Library/Frameworks", System, true);
+ }
diff --git a/data/llvm-clang/make.sh b/data/llvm-clang/make.sh
new file mode 100644
index 000000000..bb215aef8
--- /dev/null
+++ b/data/llvm-clang/make.sh
@@ -0,0 +1,40 @@
+pkg:extract
+cd swift-llvm-swift*
+mv ../swift-clang-swift* tools/clang
+pkg:patch
+mkdir native
+cd native
+MACOSX_DEPLOYMENT_TARGET="$(sw_vers -productVersion | sed -e 's/\.[0-9]*$//')" CC="$(xcrun -f clang)" CXX="$(xcrun -f clang++)" cmake -j16 -DCMAKE_INSTALL_NAME_DIR="/usr/local/lib" -DCMAKE_INSTALL_LIBDIR="local/lib" -DLLVM_BUILD_LLVM_DYLIB=ON -DCMAKE_BUILD_TYPE=RELEASE -DLLVM_INCLUDE_TESTS=OFF ..
+make -j16 llvm-tblgen clang-tblgen
+cd ..
+mkdir build
+cd build
+
+cat >iphoneos_toolchain.cmake <<EOF
+set(CMAKE_SYSTEM_NAME Darwin) # Tell CMake we're cross-compiling
+set(CMAKE_CROSSCOMPILING true)
+#include(CMakeForceCompiler)
+# Prefix detection only works with compiler id "GNU"
+# CMake will look for prefixed g++, cpp, ld, etc. automatically
+set(CMAKE_SYSTEM_PROCESSOR aarch64)
+set(triple ${PKG_TARG})
+set(CMAKE_FIND_ROOT_PATH $(echo ${PKG_PATH} | sed -e s/:/' '/g))
+set(CMAKE_LIBRARY_PATH $(echo ${LIBRARY_PATH} | sed -e s/:/' '/g))
+set(CMAKE_INCLUDE_PATH $(echo ${INCLUDE_PATH} | sed -e s/:/' '/g))
+set(CMAKE_C_COMPILER ${PKG_TARG}-gcc)
+set(CMAKE_CXX_COMPILER ${PKG_TARG}-g++)
+set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
+set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
+set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
+EOF
+
+unset MACOSX_DEPLOYMENT_TARGET
+cmake -j32 -DCMAKE_TOOLCHAIN_FILE=iphoneos_toolchain.cmake -DCMAKE_INSTALL_NAME_DIR="/usr/local/lib" -DCMAKE_INSTALL_LIBDIR="local/lib" -DCMAKE_INSTALL_RPATH="/usr/" -DCMAKE_OSX_SYSROOT="${PKG_ROOT}" -DCMAKE_INSTALL_PREFIX="/usr/" -DLLVM_INCLUDE_TESTS=OFF -DCMAKE_BUILD_TYPE=RELEASE -DCMAKE_SYSTEM_NAME=Darwin -DLLVM_TABLEGEN="$(pwd)/../native/bin/llvm-tblgen" -DCLANG_TABLEGEN="$(pwd)/../native/bin/clang-tblgen" -DLLVM_BUILD_LLVM_DYLIB=ON -DLLVM_LINK_LLVM_DYLIB=ON -DLLVM_DEFAULT_TARGET_TRIPLE="$(echo ${PKG_TARG} | sed -e s/aarch64/arm64/ -e 's/darwin.*/darwin/')" ..
+
+make -j32
+pkg:install
+pkg: mkdir -p /usr/local/lib
+mv ${PKG_DEST}/usr/lib/*.dylib ${PKG_DEST}/usr/local/lib
+pkg: find /usr/lib -name '*.a' -exec rm {} +
+pkg: mkdir -p /usr/share/SDKs
+cd ..
diff --git a/data/boost_/boost_1_34_1.tar.gz b/data/llvm-clang/swift-clang-4.1.3-RELEASE.tar.gz
index da01fdb6b..d4ea5a51f 100644
--- a/data/boost_/boost_1_34_1.tar.gz
+++ b/data/llvm-clang/swift-clang-4.1.3-RELEASE.tar.gz
Binary files differ
diff --git a/data/llvm-clang/swift-llvm-4.1.3-RELEASE.tar.gz b/data/llvm-clang/swift-llvm-4.1.3-RELEASE.tar.gz
new file mode 100644
index 000000000..795b66ce8
--- /dev/null
+++ b/data/llvm-clang/swift-llvm-4.1.3-RELEASE.tar.gz
Binary files differ
diff --git a/data/minicom/_metadata/version b/data/minicom/_metadata/version
index 8bbe6cf74..860487ca1 100644
--- a/data/minicom/_metadata/version
+++ b/data/minicom/_metadata/version
@@ -1 +1 @@
-2.2
+2.7.1
diff --git a/data/minicom/extern.diff b/data/minicom/extern.diff
new file mode 100644
index 000000000..216d56f4e
--- /dev/null
+++ b/data/minicom/extern.diff
@@ -0,0 +1,31 @@
+diff -ur minicom-2.7.1/src/minicom.h minicom-2.7.1+iPhone/src/minicom.h
+--- minicom-2.7.1/src/minicom.h 2013-12-08 00:26:03.000000000 -1000
++++ minicom-2.7.1+iPhone/src/minicom.h 2018-08-18 18:24:02.000000000 -1000
+@@ -109,13 +109,13 @@
+
+ EXTERN char *dial_name; /* System we're conneced to */
+ EXTERN char *dial_number; /* Number we've dialed. */
+-EXTERN char *dial_user; /* Our username there */
+-EXTERN char *dial_pass; /* Our password */
++extern char *dial_user; /* Our username there */
++extern char *dial_pass; /* Our password */
+
+ #ifdef USE_SOCKET
+-EXTERN int portfd_is_socket; /* File descriptor is a unix socket */
+-EXTERN int portfd_is_connected; /* 1 if the socket is connected */
+-EXTERN struct sockaddr_un portfd_sock_addr; /* the unix socket address */
++extern int portfd_is_socket; /* File descriptor is a unix socket */
++extern int portfd_is_connected; /* 1 if the socket is connected */
++extern struct sockaddr_un portfd_sock_addr; /* the unix socket address */
+ #define portfd_connected ((portfd_is_socket && !portfd_is_connected) \
+ ? -1 : portfd)
+ #else
+@@ -141,7 +141,7 @@
+ EXTERN int st_attr; /* Status Bar attributes. */
+
+ /* jl 04.09.97 conversion tables */
+-EXTERN unsigned char vt_outmap[256], vt_inmap[256];
++extern unsigned char vt_outmap[256], vt_inmap[256];
+
+ /* MARK updated 02/17/95 - history buffer */
+ EXTERN int num_hist_lines; /* History buffer size */
diff --git a/data/minicom/make.sh b/data/minicom/make.sh
index 452a4bfd5..fbc999151 100644
--- a/data/minicom/make.sh
+++ b/data/minicom/make.sh
@@ -1,4 +1,4 @@
pkg:setup
pkg:configure
-make
+make -j8
pkg:install
diff --git a/data/minicom/minicom-2.2.tar.gz b/data/minicom/minicom-2.2.tar.gz
deleted file mode 100644
index 1637a8993..000000000
--- a/data/minicom/minicom-2.2.tar.gz
+++ /dev/null
Binary files differ
diff --git a/data/minicom/minicom-2.7.1.tar.gz b/data/minicom/minicom-2.7.1.tar.gz
new file mode 100644
index 000000000..a4f7b8c2b
--- /dev/null
+++ b/data/minicom/minicom-2.7.1.tar.gz
Binary files differ
diff --git a/data/minicom/timestamp.diff b/data/minicom/timestamp.diff
index 6945ae8f7..15ad9b564 100644
--- a/data/minicom/timestamp.diff
+++ b/data/minicom/timestamp.diff
@@ -1,7 +1,7 @@
-diff -ru minicom-2.2/src/minicom.c minicom-2.2+iPhone/src/minicom.c
---- minicom-2.2/src/minicom.c 2005-10-31 12:13:51.000000000 +0000
-+++ minicom-2.2+iPhone/src/minicom.c 2008-06-18 01:41:33.000000000 +0000
-@@ -1028,9 +1028,6 @@
+diff -ur minicom-2.7.1/src/minicom.c minicom-2.7.1+iPhone/src/minicom.c
+--- minicom-2.7.1/src/minicom.c 2013-12-08 00:34:44.000000000 -1000
++++ minicom-2.7.1+iPhone/src/minicom.c 2018-08-18 11:44:56.000000000 -1000
+@@ -1159,9 +1159,6 @@
switch(c) {
case 'v':
printf(_("%s version %s"), PACKAGE, VERSION);
@@ -11,14 +11,15 @@ diff -ru minicom-2.2/src/minicom.c minicom-2.2+iPhone/src/minicom.c
printf("\n");
printf(_("Copyright (C) Miquel van Smoorenburg.\n\n"));
printf("This program is free software; you can redistribute it and/or\n"
-@@ -1340,9 +1337,7 @@
+@@ -1462,9 +1459,6 @@
- wprintf(us, "\n%s %s\r\n", _("Welcome to minicom"), VERSION);
- wprintf(us, "\n%s: %s\r\n", _("OPTIONS"), option_string);
+ mc_wprintf(us, "\n%s %s\r\n", _("Welcome to minicom"), VERSION);
+ mc_wprintf(us, "\n%s: %s\r\n", _("OPTIONS"), option_string);
-#if defined (__DATE__) && defined (__TIME__)
-- wprintf(us, "%s %s, %s.\r\n",_("Compiled on"), __DATE__,__TIME__);
+- mc_wprintf(us, "%s %s, %s.\r\n",_("Compiled on"), __DATE__,__TIME__);
-#endif
-+
- wprintf(us, "Port %s\n", P_PORT);
- wprintf(us, _("\nPress %sZ for help on special keys%c\n\n"),esc_key(),'\r');
-
+ {
+ struct stat st;
+ char port_date[20] = "";
+Only in minicom-2.7.1+iPhone/src: minicom.c.orig
+Only in minicom-2.7.1+iPhone/src: minicom.c.rej
diff --git a/data/minicom/types.diff b/data/minicom/types.diff
deleted file mode 100644
index 153cf813c..000000000
--- a/data/minicom/types.diff
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -ru minicom-2.2/src/minicom.h minicom-2.2+iPhone/src/minicom.h
---- minicom-2.2/src/minicom.h 2005-10-31 11:10:57.000000000 +0000
-+++ minicom-2.2+iPhone/src/minicom.h 2008-01-02 00:24:32.000000000 +0000
-@@ -34,6 +34,8 @@
- #include <sys/un.h>
- #endif
-
-+#include <sys/types.h>
-+
- /*
- * kubota@debian.or.jp 08/08/98
- * COLS must be equal to or less than MAXCOLS.
diff --git a/data/minicom/wprintf.diff b/data/minicom/wprintf.diff
deleted file mode 100644
index 01d7b8d06..000000000
--- a/data/minicom/wprintf.diff
+++ /dev/null
@@ -1,1157 +0,0 @@
-diff -ru minicom-2.2/src/config.c minicom-2.2+iPhone/src/config.c
---- minicom-2.2/src/config.c 2006-04-02 09:52:30.000000000 +0000
-+++ minicom-2.2+iPhone/src/config.c 2008-01-02 00:20:52.000000000 +0000
-@@ -253,9 +253,9 @@
- w = wopen(5, 4, 75, 8, BDOUBLE, stdattr, mfcolor, mbcolor, 0, 0, 1);
-
- wtitle(w, TMID, _("Logging options"));
-- wprintf(w, "%s %s\n", logfnstr, P_LOGFNAME);
-- wprintf(w, "%s %s\n", logconn, _(P_LOGCONN));
-- wprintf(w, "%s %s\n", logxfer, _(P_LOGXFER));
-+ wprintf_(w, "%s %s\n", logfnstr, P_LOGFNAME);
-+ wprintf_(w, "%s %s\n", logconn, _(P_LOGCONN));
-+ wprintf_(w, "%s %s\n", logxfer, _(P_LOGXFER));
- wlocate(w, 4, 4);
- wputs(w, question);
- wredraw(w, 1);
-@@ -274,13 +274,13 @@
- case 'B':
- strcpy(P_LOGCONN, yesno(P_LOGCONN[0] == 'N'));
- wlocate(w, mbslen(logconn) + 1, 1);
-- wprintf(w, "%s ", _(P_LOGCONN));
-+ wprintf_(w, "%s ", _(P_LOGCONN));
- markch(P_LOGCONN);
- break;
- case 'C':
- strcpy(P_LOGXFER, yesno(P_LOGXFER[0] == 'N'));
- wlocate(w, mbslen(logxfer) + 1, 2);
-- wprintf(w, "%s ", _(P_LOGXFER));
-+ wprintf_(w, "%s ", _(P_LOGXFER));
- markch(P_LOGXFER);
- break;
- default:
-@@ -305,13 +305,13 @@
- char *question = _("Change which setting?");
-
- w = wopen(5, 5, 75, 12, BDOUBLE, stdattr, mfcolor, mbcolor, 0, 0, 1);
-- wprintf(w, "%s %.44s\n", download_directory, P_DOWNDIR);
-- wprintf(w, "%s %.44s\n", upload_directory, P_UPDIR);
-- wprintf(w, "%s %.44s\n", script_directory, P_SCRIPTDIR);
-- wprintf(w, "%s %.44s\n", script_program, P_SCRIPTPROG);
-- wprintf(w, "%s %.44s\n", kermit_program, P_KERMIT);
-+ wprintf_(w, "%s %.44s\n", download_directory, P_DOWNDIR);
-+ wprintf_(w, "%s %.44s\n", upload_directory, P_UPDIR);
-+ wprintf_(w, "%s %.44s\n", script_directory, P_SCRIPTDIR);
-+ wprintf_(w, "%s %.44s\n", script_program, P_SCRIPTPROG);
-+ wprintf_(w, "%s %.44s\n", kermit_program, P_KERMIT);
- #ifdef LOGFILE
-- wprintf(w, "%s\n", log_settings);
-+ wprintf_(w, "%s\n", log_settings);
- #endif
- wlocate(w, 4, 8);
- wputs(w, question);
-@@ -381,7 +381,7 @@
- pgets(w, 15, n+1, P_PPROG(n), 31, 64);
- do {
- wlocate(w, 47, n + 1);
-- wprintf(w, "%c", P_PNN(n));
-+ wprintf_(w, "%c", P_PNN(n));
- c = rwxgetch();
- if (c == 'Y')
- P_PNN(n) = 'Y';
-@@ -390,7 +390,7 @@
- } while (c != '\r' && c != '\n');
- do {
- wlocate(w, 52, n + 1);
-- wprintf(w, "%c", P_PUD(n));
-+ wprintf_(w, "%c", P_PUD(n));
- c = rwxgetch();
- if (c == 'U')
- P_PUD(n) = 'U';
-@@ -399,7 +399,7 @@
- } while (c != '\r' && c != '\n');
- do {
- wlocate(w, 57, n + 1);
-- wprintf(w, "%c", P_PFULL(n));
-+ wprintf_(w, "%c", P_PFULL(n));
- c = rwxgetch();
- if (c == 'Y')
- P_PFULL(n) = 'Y';
-@@ -408,7 +408,7 @@
- } while (c != '\r' && c != '\n');
- do {
- wlocate(w, 65, n + 1);
-- wprintf(w, "%c", P_PIORED(n));
-+ wprintf_(w, "%c", P_PIORED(n));
- c = rwxgetch();
- if (c == 'Y')
- P_PIORED(n) = 'Y';
-@@ -417,7 +417,7 @@
- } while (c != '\r' && c != '\n');
- do {
- wlocate(w, 73, n + 1);
-- wprintf(w, "%c", P_MUL(n));
-+ wprintf_(w, "%c", P_MUL(n));
- c = rwxgetch();
- if (c == 'Y')
- P_MUL(n) = 'Y';
-@@ -449,21 +449,21 @@
- for (f = 0; f < 12; f++) {
- wlocate(w, 1, f + 1);
- if (P_PNAME(f)[0])
-- wprintf(w, "%c %-10.10s %-31.31s %c %c %c %c %c",
-+ wprintf_(w, "%c %-10.10s %-31.31s %c %c %c %c %c",
- 'A' + f,
- P_PNAME(f), P_PPROG(f),
- P_PNN(f), P_PUD(f),
- P_PFULL(f), P_PIORED(f),
- P_MUL(f));
- else
-- wprintf(w, "%c -", 'A' + f);
-+ wprintf_(w, "%c -", 'A' + f);
- }
- wlocate(w, 1, 13);
-- wprintf(w, "%s %c", zmodem_download, P_PAUTO[0]);
-+ wprintf_(w, "%s %c", zmodem_download, P_PAUTO[0]);
- wlocate(w, 1, 14);
-- wprintf(w, "%s %s", use_filename_selection, _(P_FSELW));
-+ wprintf_(w, "%s %s", use_filename_selection, _(P_FSELW));
- wlocate(w, 1, 15);
-- wprintf(w, "%s %s", prompt_downdir, _(P_ASKDNDIR));
-+ wprintf_(w, "%s %s", prompt_downdir, _(P_ASKDNDIR));
-
- wlocate(w, 3, 17);
- wputs(w, question);
-@@ -492,17 +492,17 @@
- }
- else if (c == 'M') {
- wlocate(w, mbslen (zmodem_download) + 2, 13);
-- wprintf(w, " \b");
-+ wprintf_(w, " \b");
- c = rwxgetch();
- if (c >= 'A' && c <= 'L') {
- P_PAUTO[0] = c;
- markch(P_PAUTO);
-- wprintf(w, "%c", c);
-+ wprintf_(w, "%c", c);
- } else if (c == '\n' || c == ' ') {
- P_PAUTO[0] = ' ';
- markch(P_PAUTO);
- } else {
-- wprintf(w, "%c", P_PAUTO[0]);
-+ wprintf_(w, "%c", P_PAUTO[0]);
- }
- c = 0;
- }
-@@ -511,11 +511,11 @@
- if (P_FSELW[0] == 'N') {
- strcpy(P_ASKDNDIR, "No ");
- wlocate(w, mbslen (prompt_downdir) + 2, 15);
-- wprintf(w, "%s ", _(P_ASKDNDIR));
-+ wprintf_(w, "%s ", _(P_ASKDNDIR));
- markch(P_ASKDNDIR);
- }
- wlocate(w, mbslen (use_filename_selection) + 2, 14);
-- wprintf(w, "%s ", _(P_FSELW));
-+ wprintf_(w, "%s ", _(P_FSELW));
- markch(P_FSELW);
- }
- else if (c == 'O') {
-@@ -523,11 +523,11 @@
- if (P_ASKDNDIR[0] == 'Y') {
- strcpy(P_FSELW, "Yes");
- wlocate(w, mbslen (use_filename_selection) + 2, 14);
-- wprintf(w, "%s ", _(P_FSELW));
-+ wprintf_(w, "%s ", _(P_FSELW));
- markch(P_FSELW);
- }
- wlocate(w, mbslen (prompt_downdir) + 2, 15);
-- wprintf(w, "%s ", _(P_ASKDNDIR));
-+ wprintf_(w, "%s ", _(P_ASKDNDIR));
- markch(P_ASKDNDIR);
- }
- } while (c != '\n');
-@@ -547,14 +547,14 @@
- char *question = _("Change which setting?");
-
- w = wopen(5, 4, 75, 12, BDOUBLE, stdattr, mfcolor, mbcolor, 0, 0, 1);
-- wprintf(w, "%s %.41s\n", serial_device, P_PORT);
-- wprintf(w, "%s %.41s\n", lockfile_location, P_LOCK);
-- wprintf(w, "%s %.41s\n", callin_program, P_CALLIN);
-- wprintf(w, "%s %.41s\n", callout_program, P_CALLOUT);
-- wprintf(w, "%s %s %s%s%s\n",
-+ wprintf_(w, "%s %.41s\n", serial_device, P_PORT);
-+ wprintf_(w, "%s %.41s\n", lockfile_location, P_LOCK);
-+ wprintf_(w, "%s %.41s\n", callin_program, P_CALLIN);
-+ wprintf_(w, "%s %.41s\n", callout_program, P_CALLOUT);
-+ wprintf_(w, "%s %s %s%s%s\n",
- bps_par_bits, P_BAUDRATE, P_BITS, P_PARITY, P_STOPB);
-- wprintf(w, "%s %s\n", hardware_flow_control, _(P_HASRTS));
-- wprintf(w, "%s %s\n", software_flow_control, _(P_HASXON));
-+ wprintf_(w, "%s %s\n", hardware_flow_control, _(P_HASRTS));
-+ wprintf_(w, "%s %s\n", software_flow_control, _(P_HASXON));
- wlocate(w, 4, 8);
- wputs(w, question);
- wredraw(w, 1);
-@@ -582,7 +582,7 @@
- if (portfd >= 0)
- port_init();
- wlocate(w, mbslen (bps_par_bits) + 1, 4);
-- wprintf(w, "%s %s%s%s \n",
-+ wprintf_(w, "%s %s%s%s \n",
- P_BAUDRATE, P_BITS, P_PARITY, P_STOPB);
- if (st)
- mode_status();
-@@ -594,7 +594,7 @@
- case 'F':
- strcpy(P_HASRTS, yesno(P_HASRTS[0] == 'N'));
- wlocate(w, mbslen (hardware_flow_control) + 1, 5);
-- wprintf(w, "%s ", _(P_HASRTS));
-+ wprintf_(w, "%s ", _(P_HASRTS));
- if (portfd >= 0)
- port_init();
- markch(P_HASRTS);
-@@ -602,7 +602,7 @@
- case 'G':
- strcpy(P_HASXON, yesno(P_HASXON[0] == 'N'));
- wlocate(w, mbslen (software_flow_control) + 1, 6);
-- wprintf(w, "%s ", _(P_HASXON));
-+ wprintf_(w, "%s ", _(P_HASXON));
- if (portfd >= 0)
- port_init();
- markch(P_HASXON);
-@@ -652,39 +652,39 @@
-
- dirflush = 0;
- wtitle(w, TMID, _("Modem and dialing parameter setup"));
-- wprintf(w, "\n");
-- wprintf(w, "%s %.48s\n", init_string, P_MINIT);
-- wprintf(w, "%s %.48s\n", reset_string, P_MRESET);
-- wprintf(w, "%s %.48s\n", dialing_prefix_1, P_MDIALPRE);
-- wprintf(w, "%s %.48s\n", dialing_suffix_1, P_MDIALSUF);
-- wprintf(w, "%s %.48s\n", dialing_prefix_2, P_MDIALPRE2);
-- wprintf(w, "%s %.48s\n", dialing_suffix_2, P_MDIALSUF2);
-- wprintf(w, "%s %.48s\n", dialing_prefix_3, P_MDIALPRE3);
-- wprintf(w, "%s %.48s\n", dialing_suffix_3, P_MDIALSUF3);
-- wprintf(w, "%s %.48s\n", connect_string, P_MCONNECT);
-- wprintf(w, "%s %-20.20s %.20s\n", no_connect_strings, P_MNOCON1, P_MNOCON2);
-+ wprintf_(w, "\n");
-+ wprintf_(w, "%s %.48s\n", init_string, P_MINIT);
-+ wprintf_(w, "%s %.48s\n", reset_string, P_MRESET);
-+ wprintf_(w, "%s %.48s\n", dialing_prefix_1, P_MDIALPRE);
-+ wprintf_(w, "%s %.48s\n", dialing_suffix_1, P_MDIALSUF);
-+ wprintf_(w, "%s %.48s\n", dialing_prefix_2, P_MDIALPRE2);
-+ wprintf_(w, "%s %.48s\n", dialing_suffix_2, P_MDIALSUF2);
-+ wprintf_(w, "%s %.48s\n", dialing_prefix_3, P_MDIALPRE3);
-+ wprintf_(w, "%s %.48s\n", dialing_suffix_3, P_MDIALSUF3);
-+ wprintf_(w, "%s %.48s\n", connect_string, P_MCONNECT);
-+ wprintf_(w, "%s %-20.20s %.20s\n", no_connect_strings, P_MNOCON1, P_MNOCON2);
- wlocate(w, mbslen (no_connect_strings) + 1, 11);
-- wprintf(w, "%-20.20s %.20s\n", P_MNOCON3, P_MNOCON4);
-- wprintf(w, "%s %.48s\n", hangup_string, P_MHANGUP);
-- wprintf(w, "%s %.48s\n", dial_cancel_string, P_MDIALCAN);
-- wprintf(w, "\n");
-- wprintf(w, "%s %.3s\n", dial_time, P_MDIALTIME);
-- wprintf(w, "%s %.3s\n", delay_before_redial, P_MRDELAY);
-- wprintf(w, "%s %.3s\n", number_of_tries, P_MRETRIES);
-- wprintf(w, "%s %.3s\n", dtr_drop_time, P_MDROPDTR);
-+ wprintf_(w, "%-20.20s %.20s\n", P_MNOCON3, P_MNOCON4);
-+ wprintf_(w, "%s %.48s\n", hangup_string, P_MHANGUP);
-+ wprintf_(w, "%s %.48s\n", dial_cancel_string, P_MDIALCAN);
-+ wprintf_(w, "\n");
-+ wprintf_(w, "%s %.3s\n", dial_time, P_MDIALTIME);
-+ wprintf_(w, "%s %.3s\n", delay_before_redial, P_MRDELAY);
-+ wprintf_(w, "%s %.3s\n", number_of_tries, P_MRETRIES);
-+ wprintf_(w, "%s %.3s\n", dtr_drop_time, P_MDROPDTR);
- wlocate(w, 34, 15);
-- wprintf(w, "%s %s\n", auto_bps_detect, _(P_MAUTOBAUD));
-+ wprintf_(w, "%s %s\n", auto_bps_detect, _(P_MAUTOBAUD));
- wlocate(w, 34, 16);
-- wprintf(w, "%s %s\n", modem_has_dcd_line, _(P_HASDCD));
-+ wprintf_(w, "%s %s\n", modem_has_dcd_line, _(P_HASDCD));
- wlocate(w, 34, 17);
-- wprintf(w, "%s %s\n", shown_speed, sspd(P_SHOWSPD));
-+ wprintf_(w, "%s %s\n", shown_speed, sspd(P_SHOWSPD));
- wlocate(w, 34, 18); /* Option for multi-node untag */
-- wprintf(w, "%s %s\n", multi_node, _(P_MULTILINE)); /* er 18-Apr-99 */
-+ wprintf_(w, "%s %s\n", multi_node, _(P_MULTILINE)); /* er 18-Apr-99 */
-
- wlocate(w, 1, 20);
-- wprintf(w, "%s ", question);
-+ wprintf_(w, "%s ", question);
- x = w->curx; y = w->cury;
-- wprintf(w, _(" (Return or Esc to exit)"));
-+ wprintf_(w, _(" (Return or Esc to exit)"));
- wredraw(w, 1);
-
- while (1) {
-@@ -826,36 +826,36 @@
-
- wtitle(w, TMID, _("Screen and keyboard"));
-
-- wprintf(w, "\n%s %s\n", command_key, P_ESCAPE);
-- wprintf(w, "%s %s\n", backspace_key, P_BACKSPACE);
-- wprintf(w, "%s %s\n", status_line, _(P_STATLINE));
-- wprintf(w, "%s %s\n", alarm_sound, _(P_SOUND));
-+ wprintf_(w, "\n%s %s\n", command_key, P_ESCAPE);
-+ wprintf_(w, "%s %s\n", backspace_key, P_BACKSPACE);
-+ wprintf_(w, "%s %s\n", status_line, _(P_STATLINE));
-+ wprintf_(w, "%s %s\n", alarm_sound, _(P_SOUND));
- /* fmg - colors support */
-- wprintf(w, "%s %s\n", foreground_color_menu, _(J_col[mfcolor]));
-- wprintf(w, "%s %s\n", background_color_menu, _(J_col[mbcolor]));
-- wprintf(w, "%s %s\n", foreground_color_term, _(J_col[tfcolor]));
-- wprintf(w, "%s %s\n", background_color_term, _(J_col[tbcolor]));
-- wprintf(w, "%s %s\n", foreground_color_stat, _(J_col[sfcolor]));
-- wprintf(w, "%s %s\n", background_color_stat, _(J_col[sbcolor]));
-+ wprintf_(w, "%s %s\n", foreground_color_menu, _(J_col[mfcolor]));
-+ wprintf_(w, "%s %s\n", background_color_menu, _(J_col[mbcolor]));
-+ wprintf_(w, "%s %s\n", foreground_color_term, _(J_col[tfcolor]));
-+ wprintf_(w, "%s %s\n", background_color_term, _(J_col[tbcolor]));
-+ wprintf_(w, "%s %s\n", foreground_color_stat, _(J_col[sfcolor]));
-+ wprintf_(w, "%s %s\n", background_color_stat, _(J_col[sbcolor]));
-
- /* MARK updated 02/17/95 - Configurable history buffer size */
-- wprintf(w, "%s %s\n", history_buffer_size, P_HISTSIZE);
-+ wprintf_(w, "%s %s\n", history_buffer_size, P_HISTSIZE);
-
- /* fmg - macros support */
-- wprintf(w, "%s %s\n", macros_file, P_MACROS);
-- wprintf(w, _(" M - Edit Macros\n"));
-- wprintf(w, "%s %s\n", macros_enabled, _(P_MACENAB));
-- wprintf(w, "%s %s\n", character_conversion, P_CONVF);
-+ wprintf_(w, "%s %s\n", macros_file, P_MACROS);
-+ wprintf_(w, _(" M - Edit Macros\n"));
-+ wprintf_(w, "%s %s\n", macros_enabled, _(P_MACENAB));
-+ wprintf_(w, "%s %s\n", character_conversion, P_CONVF);
-
-- wprintf(w, "%s %s\n", add_linefeed, P_ADDLINEFEED);
-- wprintf(w, "%s %s\n", local_echo, P_LOCALECHO);
-+ wprintf_(w, "%s %s\n", add_linefeed, P_ADDLINEFEED);
-+ wprintf_(w, "%s %s\n", local_echo, P_LOCALECHO);
-
- wredraw(w, 1);
-
- while (1) {
- if (clr) {
- wlocate(w, 2, maxy - miny);
-- wprintf(w, "%s ", question);
-+ wprintf_(w, "%s ", question);
- wclreol(w);
- clr = 0;
- } else
-@@ -961,7 +961,7 @@
- else
- psets(P_BACKSPACE, "DEL");
- wlocate(w, mbslen (backspace_key) + 1, 2);
-- wprintf(w, "%s ", P_BACKSPACE);
-+ wprintf_(w, "%s ", P_BACKSPACE);
- keyboard(KSETBS, P_BACKSPACE[0] == 'B' ? 8 : 127);
- break;
- case 'C':
-@@ -975,12 +975,12 @@
- tempst = 0;
- }
- wlocate(w, mbslen (status_line) + 1, 3);
-- wprintf(w, "%s ", _(P_STATLINE));
-+ wprintf_(w, "%s ", _(P_STATLINE));
- break;
- case 'D':
- psets(P_SOUND, yesno(P_SOUND[0] == 'N'));
- wlocate(w, mbslen (alarm_sound) + 1, 4);
-- wprintf(w, "%s", _(P_SOUND));
-+ wprintf_(w, "%s", _(P_SOUND));
- break;
- case 'E': /* fmg - letters cycle colors */
- if (mfcolor == WHITE)
-@@ -989,7 +989,7 @@
- mfcolor++;
- psets(P_MFG, J_col[mfcolor]);
- wlocate(w, mbslen (foreground_color_menu) + 1, 5);
-- wprintf(w, "%s ", _(J_col[mfcolor]));
-+ wprintf_(w, "%s ", _(J_col[mfcolor]));
- break;
- case 'F': /* fmg - letters cycle colors */
- if (mbcolor == WHITE)
-@@ -998,7 +998,7 @@
- mbcolor++;
- psets(P_MBG, J_col[mbcolor]);
- wlocate(w, mbslen (background_color_menu) + 1, 6);
-- wprintf(w, "%s ", _(J_col[mbcolor]));
-+ wprintf_(w, "%s ", _(J_col[mbcolor]));
- break;
- case 'G': /* fmg - letters cycle colors */
- if (tfcolor == WHITE)
-@@ -1007,7 +1007,7 @@
- tfcolor++;
- psets(P_TFG, J_col[tfcolor]);
- wlocate(w, mbslen (foreground_color_term) + 1, 7);
-- wprintf(w, "%s ", _(J_col[tfcolor]));
-+ wprintf_(w, "%s ", _(J_col[tfcolor]));
- if (us)
- vt_pinit(us, tfcolor, tbcolor);
- break;
-@@ -1018,7 +1018,7 @@
- tbcolor++;
- psets(P_TBG, J_col[tbcolor]);
- wlocate(w, mbslen (background_color_term) + 1, 8);
-- wprintf(w, "%s ", _(J_col[tbcolor]));
-+ wprintf_(w, "%s ", _(J_col[tbcolor]));
- if (us)
- vt_pinit(us, tfcolor, tbcolor);
- break;
-@@ -1039,7 +1039,7 @@
- }
- psets(P_SFG, J_col[sfcolor]);
- wlocate(w, mbslen (foreground_color_stat) + 1, 9);
-- wprintf(w, "%s ", _(J_col[sfcolor]));
-+ wprintf_(w, "%s ", _(J_col[sfcolor]));
- break;
- case 'J': /* fmg - letters cycle colors & redraw stat line */
- if (sbcolor == WHITE)
-@@ -1058,7 +1058,7 @@
- }
- psets(P_SBG, J_col[sbcolor]);
- wlocate(w, mbslen (background_color_stat) + 1, 10);
-- wprintf(w, "%s ", _(J_col[sbcolor]));
-+ wprintf_(w, "%s ", _(J_col[sbcolor]));
- break;
- case 'K': /* MARK updated 02/17/95 - Config history size */
- pgets(w, mbslen (history_buffer_size) + 1, 11,
-@@ -1074,7 +1074,7 @@
- strcpy(P_HISTSIZE,"5000");
-
- wlocate(w, mbslen (history_buffer_size) + 1, 11);
-- wprintf(w, "%s ", P_HISTSIZE);
-+ wprintf_(w, "%s ", P_HISTSIZE);
- break;
- case 'L': /* fmg - get local macros storage file */
- pgets(w, mbslen (macros_file) + 1, 12, P_MACROS, 64, 64);
-@@ -1106,22 +1106,22 @@
- case 'N':
- psets(P_MACENAB, yesno(P_MACENAB[0] == 'N'));
- wlocate(w, mbslen (macros_enabled) + 1, 14);
-- wprintf(w, "%s", _(P_MACENAB));
-+ wprintf_(w, "%s", _(P_MACENAB));
- break;
- case 'O': /* Character conversions - jl / 04.09.97 */
- doconv();
- wlocate(w, mbslen (character_conversion) + 1, 15);
-- wprintf(w, "%-16.16s", _(P_CONVF));
-+ wprintf_(w, "%-16.16s", _(P_CONVF));
- break;
- case 'P':
- psets(P_ADDLINEFEED, yesno(P_ADDLINEFEED[0] == 'N'));
- wlocate(w, strlen (add_linefeed) + 1, 15);
-- wprintf(w, "%s", _(P_ADDLINEFEED));
-+ wprintf_(w, "%s", _(P_ADDLINEFEED));
- break;
- case 'Q':
- psets(P_LOCALECHO, yesno(P_LOCALECHO[0] == 'N'));
- wlocate(w, strlen (local_echo) + 1, 16);
-- wprintf(w, "%s", _(P_LOCALECHO));
-+ wprintf_(w, "%s", _(P_LOCALECHO));
- break;
- }
- }
-@@ -1148,12 +1148,12 @@
-
- w = wopen(15, 7, 64, 15, BDOUBLE, stdattr, mfcolor, mbcolor, 0, 0, 1);
- wtitle(w, TMID, _("Terminal settings"));
-- wprintf(w, "\n");
-- wprintf(w, "%s %s\n", terminal_emulation, terminal == VT100 ? "VT102" : "ANSI");
-- wprintf(w, "%s %s\n", backspace_key_sends, P_BACKSPACE);
-- wprintf(w, "%s %s\n", status_line, _(P_STATLINE));
-- wprintf(w, "%s %d\n", msg_nl_delay, vt_nl_delay);
-- wprintf(w, "%s %s\n", msg_answerback, P_ANSWERBACK);
-+ wprintf_(w, "\n");
-+ wprintf_(w, "%s %s\n", terminal_emulation, terminal == VT100 ? "VT102" : "ANSI");
-+ wprintf_(w, "%s %s\n", backspace_key_sends, P_BACKSPACE);
-+ wprintf_(w, "%s %s\n", status_line, _(P_STATLINE));
-+ wprintf_(w, "%s %d\n", msg_nl_delay, vt_nl_delay);
-+ wprintf_(w, "%s %s\n", msg_answerback, P_ANSWERBACK);
- wlocate(w, 4, 7);
- wputs(w, question);
-
-@@ -1180,9 +1180,9 @@
- psets(P_BACKSPACE, "DEL");
- }
- wlocate(w, mbslen (terminal_emulation) + 1, 1);
-- wprintf(w, "%s ", new_term == VT100 ? "VT102" : "ANSI");
-+ wprintf_(w, "%s ", new_term == VT100 ? "VT102" : "ANSI");
- wlocate(w, mbslen (backspace_key_sends) + 1, 2);
-- wprintf(w, "%s ", P_BACKSPACE);
-+ wprintf_(w, "%s ", P_BACKSPACE);
- keyboard(KSETBS, P_BACKSPACE[0] == 'B' ? 8 : 127);
- break;
- case 'B':
-@@ -1191,7 +1191,7 @@
- else
- psets(P_BACKSPACE, "DEL");
- wlocate(w, mbslen (backspace_key_sends) + 1, 2);
-- wprintf(w, "%s ", P_BACKSPACE);
-+ wprintf_(w, "%s ", P_BACKSPACE);
- keyboard(KSETBS, P_BACKSPACE[0] == 'B' ? 8 : 127);
- break;
- case 'C':
-@@ -1205,7 +1205,7 @@
- tempst = 0;
- }
- wlocate(w, mbslen (status_line) + 1, 3);
-- wprintf(w, "%s ", _(P_STATLINE));
-+ wprintf_(w, "%s ", _(P_STATLINE));
- break;
- case 'D':
- sprintf(buf, "%d", vt_nl_delay);
-@@ -1213,7 +1213,7 @@
- wgets(w, buf, 4, 4);
- vt_nl_delay = atoi(buf);
- wlocate(w, mbslen(msg_nl_delay) +1, 4);
-- wprintf(w, "%-3d", vt_nl_delay);
-+ wprintf_(w, "%-3d", vt_nl_delay);
- break;
- case 'E':
- pgets(w, strlen(msg_answerback) + 1, 5, P_ANSWERBACK, 50, 50);
-@@ -1423,7 +1423,7 @@
-
- while (1) {
- wlocate(w, 1, 1);
-- wprintf(w, _("Current: %5s %s%s%s "), ba, bi, pa, stopb);
-+ wprintf_(w, _("Current: %5s %s%s%s "), ba, bi, pa, stopb);
- wlocate(w, x, y);
- wflush();
- c = wxgetch();
-@@ -1537,7 +1537,7 @@
- */
- static void out_mac(WIN *w, char *s, char n)
- {
-- wprintf(w, " %c : %.67s\n", n, s ? s : "[none]");
-+ wprintf_(w, " %c : %.67s\n", n, s ? s : "[none]");
- }
-
- /*
-@@ -1553,7 +1553,7 @@
- w = wopen(3, 6, 75, 24, BDOUBLE, stdattr, mfcolor, mbcolor, 0, 0, 1);
- wtitle(w, TMID, _("F1 to F10 Macros"));
-
-- wprintf(w, "\n");
-+ wprintf_(w, "\n");
- out_mac(w,mmacs[Jm++].value, Jch++);
- out_mac(w,mmacs[Jm++].value, Jch++);
- out_mac(w,mmacs[Jm++].value, Jch++);
-@@ -1579,7 +1579,7 @@
- wputs(w, _(" = 19200 8N1. (See the \"Comm Parameters\" menu for valid values of X.))"));
- if (clr) {
- wlocate(w, 1, 12);
-- wprintf(w, "%s ", question);
-+ wprintf_(w, "%s ", question);
- wclreol(w);
- clr = 0;
- } else
-@@ -1682,34 +1682,34 @@
- while (1) {
- if (redraw) {
- winclr(w);
-- wprintf(w,
-+ wprintf_(w,
- _(" char in out char in out char in out char in out\n"));
- for (i = offs, j = i+h, k = j+h, l = k+h;
- i < offs+h && i < 256;
- i++, j++, k++, l++) {
-- wprintf(w, "%3d (%c) %3d %3d ",
-+ wprintf_(w, "%3d (%c) %3d %3d ",
- i, prch(i), (int) vt_inmap[i], (int) vt_outmap[i]);
- if (j < 256)
-- wprintf(w, "%3d (%c) %3d %3d ",
-+ wprintf_(w, "%3d (%c) %3d %3d ",
- j, prch(j), (int) vt_inmap[j], (int) vt_outmap[j]);
- else
-- wprintf(w, " ");
-+ wprintf_(w, " ");
- if (k < 256)
-- wprintf(w, "%3d (%c) %3d %3d ",
-+ wprintf_(w, "%3d (%c) %3d %3d ",
- k, prch(k), (int) vt_inmap[k], (int) vt_outmap[k]);
- else
-- wprintf(w, " ");
-+ wprintf_(w, " ");
- if (l < 256)
-- wprintf(w, "%3d (%c) %3d %3d\n",
-+ wprintf_(w, "%3d (%c) %3d %3d\n",
- l, prch(l), (int) vt_inmap[l], (int) vt_outmap[l]);
- else
-- wprintf(w, " \n");
-+ wprintf_(w, " \n");
- }
-- wprintf(w, _("\n A - load table\tB - save table"));
-+ wprintf_(w, _("\n A - load table\tB - save table"));
- if (P_CONVF[0])
-- wprintf(w, _("\tfile:%s"),P_CONVF);
-- wprintf(w, _("\n C - edit char\tD - next screen\tE - prev screen\n"));
-- wprintf(w, _(" F - convert capture: %s\n"), _(P_CONVCAP));
-+ wprintf_(w, _("\tfile:%s"),P_CONVF);
-+ wprintf_(w, _("\n C - edit char\tD - next screen\tE - prev screen\n"));
-+ wprintf_(w, _(" F - convert capture: %s\n"), _(P_CONVCAP));
-
- wredraw(w, 1);
- redraw = 0;
-@@ -1725,7 +1725,7 @@
- case 'A':
- strcpy(buf,P_CONVF);
- prompt=_("Load file: %s");
-- wprintf(w, prompt, buf);
-+ wprintf_(w, prompt, buf);
- pgets(w, mbslen(prompt) - 1, ymax - 1, P_CONVF, 64, 64);
- if (loadconv(P_CONVF) == 0) {
- if (strcmp(P_CONVF,buf))
-@@ -1737,7 +1737,7 @@
- case 'B':
- strcpy(buf,P_CONVF);
- prompt=_("Save as file: %s");
-- wprintf(w, prompt, buf);
-+ wprintf_(w, prompt, buf);
- pgets(w, mbslen(prompt) - 1, ymax - 1, P_CONVF, 64, 64);
- if (saveconv(P_CONVF) == 0) {
- if (strcmp(P_CONVF,buf))
-@@ -1748,7 +1748,7 @@
- break;
- case 'C':
- prompt = _("Character to be edited: ");
-- wprintf(w, prompt);
-+ wprintf_(w, prompt);
- buf[0] = 0;
- i = -1;
- wlocate(w, mbslen(prompt), ymax - 1);
-@@ -1762,7 +1762,7 @@
- sprintf(buf, "%u",(unsigned int) vt_inmap[i]);
- wlocate(w, 30, ymax - 1);
- prompt=_("Change input to: %s");
-- wprintf(w, prompt,buf);
-+ wprintf_(w, prompt,buf);
- wlocate(w, mbslen(prompt) + 28, ymax - 1);
- wgets(w, buf, 4, 4);
- sscanf(buf, "%d", &j);
-@@ -1774,7 +1774,7 @@
- sprintf(buf, "%u",(unsigned int) vt_outmap[i]);
- wlocate(w, 54, ymax - 1);
- prompt = _("Change output to: %s");
-- wprintf(w, prompt, buf);
-+ wprintf_(w, prompt, buf);
- wlocate(w, mbslen(prompt) + 52, ymax - 1);
- wgets(w, buf, 4, 4);
- sscanf(buf, "%d", &j);
-diff -ru minicom-2.2/src/dial.c minicom-2.2+iPhone/src/dial.c
---- minicom-2.2/src/dial.c 2005-10-31 12:13:51.000000000 +0000
-+++ minicom-2.2+iPhone/src/dial.c 2008-01-02 00:20:52.000000000 +0000
-@@ -353,14 +353,14 @@
- int ret = 0;
-
- wlocate(dialwin, 1, 5);
-- wprintf(dialwin, _(" No connection: %s. \n"), s);
-+ wprintf_(dialwin, _(" No connection: %s. \n"), s);
- if (rtime < 0) {
-- wprintf(dialwin, _(" Press any key to continue.. "));
-+ wprintf_(dialwin, _(" Press any key to continue.. "));
- if (check_io(-1, 0, 10000, NULL, NULL) & 2)
- keyboard(KGETKEY, 0);
- return 0;
- }
-- wprintf(dialwin, _(" Retry in %2d seconds "), rtime);
-+ wprintf_(dialwin, _(" Retry in %2d seconds "), rtime);
-
- for (f = rtime - 1; f >= 0; f--) {
- x = check_io(-1, 0, 1000, NULL, NULL);
-@@ -372,7 +372,7 @@
- break;
- }
- wlocate(dialwin, 0, 6);
-- wprintf(dialwin, _(" Retry in %2d seconds "), f);
-+ wprintf_(dialwin, _(" Retry in %2d seconds "), f);
- }
- #ifdef HAVE_USLEEP
- /* MARK updated 02/17/94 - Min dial delay set to 0.35 sec instead of 1 sec */
-@@ -383,8 +383,8 @@
- sleep(1);
- #endif
- wlocate(dialwin, 1, 5);
-- wprintf(dialwin, " \n");
-- wprintf(dialwin, " ");
-+ wprintf_(dialwin, " \n");
-+ wprintf_(dialwin, " ");
- return ret;
- }
-
-@@ -417,12 +417,12 @@
- wcursor(dialwin, CNONE);
-
- wputs(dialwin, "\n");
-- wprintf(dialwin, " %s : %s\n", _("Dialing"), d->name);
-- wprintf(dialwin, _(" At : %s"), d->number);
-- wprintf(dialwin, "\n"); /* help translators */
-+ wprintf_(dialwin, " %s : %s\n", _("Dialing"), d->name);
-+ wprintf_(dialwin, _(" At : %s"), d->number);
-+ wprintf_(dialwin, "\n"); /* help translators */
- if (d->lastdate[0] && d->lasttime[0]) /* jl 26.01.98 */
-- wprintf(dialwin, _(" Last on : %s at %s"), d->lastdate, d->lasttime);
-- wprintf(dialwin, "\n");
-+ wprintf_(dialwin, _(" Last on : %s at %s"), d->lastdate, d->lasttime);
-+ wprintf_(dialwin, "\n");
- wredraw(dialwin, 1);
-
- /* Tell keyboard routines we need them. */
-@@ -447,14 +447,14 @@
- d = dialents;
- } while (!(d->flags & FL_TAG));
- wlocate(dialwin, 0, 1);
-- wprintf(dialwin, " %s : %s", _("Dialing"), d->name);
-+ wprintf_(dialwin, " %s : %s", _("Dialing"), d->name);
- wclreol(dialwin);
-- wprintf(dialwin, "\n"); /* helps translators */
-- wprintf(dialwin, _(" At : %s"), d->number);
-+ wprintf_(dialwin, "\n"); /* helps translators */
-+ wprintf_(dialwin, _(" At : %s"), d->number);
- wclreol(dialwin);
- if (d->lastdate[0] && d->lasttime[0]) {
-- wprintf(dialwin, "\n"); /* don't merge with next printf, helps translators */
-- wprintf(dialwin, _(" Last on : %s at %s"),
-+ wprintf_(dialwin, "\n"); /* don't merge with next printf, helps translators */
-+ wprintf_(dialwin, _(" Last on : %s at %s"),
- d->lastdate, d->lasttime);
- wclreol(dialwin);
- }
-@@ -469,9 +469,9 @@
-
- /* Show used time */
- wlocate(dialwin, 0, 4);
-- wprintf(dialwin, _(" Time : %-3d"), dialtime);
-+ wprintf_(dialwin, _(" Time : %-3d"), dialtime);
- if (maxretries > 1)
-- wprintf(dialwin, _(" Attempt #%d"), retries);
-+ wprintf_(dialwin, _(" Attempt #%d"), retries);
- wputs(dialwin, _("\n\n\n Escape to cancel, space to retry."));
-
- /* Start the dial */
-@@ -591,7 +591,7 @@
- keyboard(KSTOP, 0);
- wclose(dialwin, 1);
- /* Print out the connect strings. */
-- wprintf(us, "\r\n%s\r\n", modbuf);
-+ wprintf_(us, "\r\n%s\r\n", modbuf);
- dialwin = NULL;
-
- /* Un-tag this entry. */
-@@ -646,7 +646,7 @@
- if (dialtime < 0)
- dialtime = 0;
- wlocate(dialwin, 11, 4);
-- wprintf(dialwin, "%-3d ", dialtime);
-+ wprintf_(dialwin, "%-3d ", dialtime);
- if (dialtime <= 0) {
- mputs(P_MDIALCAN, 0);
- reason = _("Timeout");
-@@ -1073,23 +1073,23 @@
- *question = _("Change which setting?");
-
- w = wopen(5, 4, 75, 19, BDOUBLE, stdattr, mfcolor, mbcolor, 0, 0, 1);
-- wprintf(w, "%s %s\n", name, d->name);
-- wprintf(w, "%s %s\n", number, d->number);
-- wprintf(w, "%s %d\n", dial_string, d->dialtype + 1);
-- wprintf(w, "%s %s\n", local_echo, _(yesno(d->flags & FL_ECHO)));
-- wprintf(w, "%s %s\n", script, d->script);
-- wprintf(w, "%s %s\n", username, d->username);
-- wprintf(w, "%s %s\n", password, d->password);
-- wprintf(w, "%s %s\n", terminal_emulation, te[d->term - 1]);
-- wprintf(w, "%s %s\n", backspace_key_sends,
-+ wprintf_(w, "%s %s\n", name, d->name);
-+ wprintf_(w, "%s %s\n", number, d->number);
-+ wprintf_(w, "%s %d\n", dial_string, d->dialtype + 1);
-+ wprintf_(w, "%s %s\n", local_echo, _(yesno(d->flags & FL_ECHO)));
-+ wprintf_(w, "%s %s\n", script, d->script);
-+ wprintf_(w, "%s %s\n", username, d->username);
-+ wprintf_(w, "%s %s\n", password, d->password);
-+ wprintf_(w, "%s %s\n", terminal_emulation, te[d->term - 1]);
-+ wprintf_(w, "%s %s\n", backspace_key_sends,
- d->flags & FL_DEL ? _("Delete") : _("Backspace"));
-- wprintf(w, "%s %s\n", linewrap,
-+ wprintf_(w, "%s %s\n", linewrap,
- d->flags & FL_WRAP ? _("On") : _("Off"));
-- wprintf(w, "%s %s %s%s%s\n", line_settings,
-+ wprintf_(w, "%s %s %s%s%s\n", line_settings,
- d->baud, d->bits, d->parity, d->stopb);
-- wprintf(w, "%s %s\n", conversion_table, d->convfile);
-- wprintf(w, _(" Last dialed : %s %s\n"),d->lastdate,d->lasttime);
-- wprintf(w, _(" Times on : %d"),d->count);
-+ wprintf_(w, "%s %s\n", conversion_table, d->convfile);
-+ wprintf_(w, _(" Last dialed : %s %s\n"),d->lastdate,d->lasttime);
-+ wprintf_(w, _(" Times on : %d"),d->count);
- wlocate(w, 4, 15);
- wputs(w, question);
- wredraw(w, 1);
-@@ -1116,13 +1116,13 @@
- case 'C':
- d->dialtype = (d->dialtype + 1) % 3;
- wlocate(w, mbslen (dial_string) + 1, 2);
-- wprintf(w, "%d", d->dialtype + 1);
-+ wprintf_(w, "%d", d->dialtype + 1);
- wflush();
- break;
- case 'D':
- d->flags ^= FL_ECHO;
- wlocate(w, mbslen (local_echo) + 1, 3);
-- wprintf(w, "%s", _(yesno(d->flags & FL_ECHO)));
-+ wprintf_(w, "%s", _(yesno(d->flags & FL_ECHO)));
- wflush();
- break;
- case 'E':
-@@ -1171,7 +1171,7 @@
- case 'K':
- get_bbp(d->baud, d->bits, d->parity, d->stopb, 1);
- wlocate(w, mbslen (line_settings) + 1, 10);
-- wprintf(w, "%s %s%s%s ",
-+ wprintf_(w, "%s %s%s%s ",
- d->baud, d->bits, d->parity, d->stopb);
- break;
- case 'L': /* jl 21.09.97 */
-@@ -1207,9 +1207,9 @@
- {
- static const char spaces[] = " ";
-
-- wprintf(dsub, "%.*s", what_padding[k][0], spaces);
-- wprintf(dsub, "%.*s", what_lens[k], _(what[k]));
-- wprintf(dsub, "%.*s", what_padding[k][1], spaces);
-+ wprintf_(dsub, "%.*s", what_padding[k][0], spaces);
-+ wprintf_(dsub, "%.*s", what_lens[k], _(what[k]));
-+ wprintf_(dsub, "%.*s", what_padding[k][1], spaces);
- }
-
- /*
-@@ -1256,7 +1256,7 @@
- d = getno(f + top);
- if (d == (struct dialent *)0)
- break;
-- wprintf(dialw, fmt, f+1+top, (d->flags & FL_TAG) ? '>' : ' ',
-+ wprintf_(dialw, fmt, f+1+top, (d->flags & FL_TAG) ? '>' : ' ',
- d->name, d->number, d->lastdate, d->lasttime,
- d->count, d->script);
- }
-@@ -1508,7 +1508,7 @@
-
- prdir(w, top, top);
- wlocate(w, position_dialing_directory, w->ys - 1);
-- wprintf(w, "%*.*s", tagmvlen,tagmvlen, tag_exit);
-+ wprintf_(w, "%*.*s", tagmvlen,tagmvlen, tag_exit);
- dhili(position_dialing_directory, subm);
- dirflush = 1;
- wredraw(dsub, 1);
-@@ -1554,7 +1554,7 @@
- wlocate(w, 4, cur + 1 - top);
- d->flags ^= FL_TAG;
- wsetattr(w, XA_REVERSE | stdattr);
-- wprintf(w, "%c", d->flags & FL_TAG ? '>' : ' ');
-+ wprintf_(w, "%c", d->flags & FL_TAG ? '>' : ' ');
- wsetattr(w, XA_NORMAL | stdattr);
- cur += (cur < nrents - 1);
- break;
-@@ -1713,7 +1713,7 @@
- dedit(d);
- changed++;
- wlocate(w, 0, cur + 1 - top);
-- wprintf(w, fmt, cur+1, (d->flags & FL_TAG) ? 16 : ' ', d->name,
-+ wprintf_(w, fmt, cur+1, (d->flags & FL_TAG) ? 16 : ' ', d->name,
- d->number, d->lastdate, d->lasttime, d->count, d->script);
- }
-
-@@ -1751,13 +1751,13 @@
- /* Move the entry up/down in directory. */
- if (subm == 5) {
- wlocate(w, position_dialing_directory, w->ys - 1);
-- wprintf(w, "%*.*s", tagmvlen,tagmvlen, move_exit);
-+ wprintf_(w, "%*.*s", tagmvlen,tagmvlen, move_exit);
- cur = move_entry (w, d, cur, &top);
- if (cur != ocur)
- changed++;
- ocur = cur;
- wlocate(w, position_dialing_directory, w->ys - 1);
-- wprintf(w, "%*.*s", tagmvlen,tagmvlen, tag_exit);
-+ wprintf_(w, "%*.*s", tagmvlen,tagmvlen, tag_exit);
- }
-
- /* Dial a number manually. */
-diff -ru minicom-2.2/src/file.c minicom-2.2+iPhone/src/file.c
---- minicom-2.2/src/file.c 2005-08-14 20:39:30.000000000 +0000
-+++ minicom-2.2+iPhone/src/file.c 2008-01-02 00:20:52.000000000 +0000
-@@ -89,11 +89,11 @@
- {
- static const char spaces[] = " ";
-
-- wprintf(dsub, "%.*s", what_padding[k][0], spaces);
-+ wprintf_(dsub, "%.*s", what_padding[k][0], spaces);
- wsetattr(dsub, start_attr);
-- wprintf(dsub, "%.*s", what_lens[k], _(what[k]));
-+ wprintf_(dsub, "%.*s", what_lens[k], _(what[k]));
- wsetattr(dsub, end_attr);
-- wprintf(dsub, "%.*s", what_padding[k][1], spaces);
-+ wprintf_(dsub, "%.*s", what_padding[k][1], spaces);
- }
-
- /*
-@@ -163,9 +163,9 @@
- wsetattr(dirw, XA_REVERSE | stdattr);
- if (S_ISDIR(d->mode)) {
- snprintf(t_str, sizeof(t_str), "[%s]", d->fname);
-- wprintf(dirw, f_str, t_str);
-+ wprintf_(dirw, f_str, t_str);
- } else
-- wprintf(dirw, f_str, d->fname);
-+ wprintf_(dirw, f_str, d->fname);
- wsetattr(dirw, XA_NORMAL | stdattr);
- wputc(dirw, '\n');
- }
-@@ -191,9 +191,9 @@
- wsetattr(dirw, XA_REVERSE | stdattr);
- if (S_ISDIR(dirdat->mode)) {
- snprintf(t_str, sizeof(t_str), "[%s]", dirdat->fname);
-- wprintf(dirw, f_str, t_str);
-+ wprintf_(dirw, f_str, t_str);
- } else
-- wprintf(dirw, f_str, dirdat->fname);
-+ wprintf_(dirw, f_str, dirdat->fname);
- wsetattr(dirw, XA_NORMAL | stdattr);
- dirflush = 1;
- wflush();
-diff -ru minicom-2.2/src/help.c minicom-2.2+iPhone/src/help.c
---- minicom-2.2/src/help.c 2005-10-31 10:31:38.000000000 +0000
-+++ minicom-2.2+iPhone/src/help.c 2008-01-02 00:20:52.000000000 +0000
-@@ -38,7 +38,7 @@
- wputs(w, _("Minicom Command Summary"));
- wlocate(w, 10, 2);
-
-- wprintf(w, _("Commands can be called by %s<key>"), esc_key());
-+ wprintf_(w, _("Commands can be called by %s<key>"), esc_key());
-
- wlocate(w, 15, 4);
- wputs(w, _("Main Functions"));
-diff -ru minicom-2.2/src/main.c minicom-2.2+iPhone/src/main.c
---- minicom-2.2/src/main.c 2005-10-31 12:13:51.000000000 +0000
-+++ minicom-2.2+iPhone/src/main.c 2008-01-02 00:20:52.000000000 +0000
-@@ -452,12 +452,12 @@
- if (st) { /* if swich off status line - NOT print !!! (vlk@st.simbirsk.su) */
- wlocate(st, 20, 0);
- if (portfd_is_socket) {
-- wprintf(st, "unix-socket");
-+ wprintf_(st, "unix-socket");
- } else {
- if (P_SHOWSPD[0] == 'l')
-- wprintf(st, "%6ld %s%s%s", linespd, P_BITS, P_PARITY, P_STOPB);
-+ wprintf_(st, "%6ld %s%s%s", linespd, P_BITS, P_PARITY, P_STOPB);
- else
-- wprintf(st, "%6.6s %s%s%s", P_BAUDRATE, P_BITS, P_PARITY, P_STOPB);
-+ wprintf_(st, "%6.6s %s%s%s", P_BAUDRATE, P_BITS, P_PARITY, P_STOPB);
- }
- ret_csr();
- }
-@@ -474,9 +474,9 @@
- return;
- wlocate(st, 63, 0);
- if (online < 0)
-- wprintf(st, " %12.12s ", P_HASDCD[0] == 'Y' ? _("Offline") : _("OFFLINE"));
-+ wprintf_(st, " %12.12s ", P_HASDCD[0] == 'Y' ? _("Offline") : _("OFFLINE"));
- else
-- wprintf(st, " %s %02ld:%02ld", P_HASDCD[0] == 'Y' ? _("Online") : _("ONLINE"),
-+ wprintf_(st, " %s %02ld:%02ld", P_HASDCD[0] == 'Y' ? _("Online") : _("ONLINE"),
- online / 3600, (online / 60) % 60);
-
- ret_csr();
-@@ -488,7 +488,7 @@
- void curs_status(void)
- {
- wlocate(st, 33, 0);
-- wprintf(st, cursormode == NORMAL ? "NOR" : "APP");
-+ wprintf_(st, cursormode == NORMAL ? "NOR" : "APP");
- ret_csr();
- }
-
-@@ -570,7 +570,7 @@
- {
- st->direct = 0;
- wlocate(st, 0, 0);
-- wprintf(st,
-+ wprintf_(st,
- _(" %7.7sZ for help | | | Minicom %-6.6s | | "),
- esc_key(), VERSION);
- mode_status();
-@@ -598,9 +598,9 @@
- return;
- wlocate(st, 39, 0);
- if (*s == 0)
-- wprintf(st, "Minicom %-6.6s", VERSION);
-+ wprintf_(st, "Minicom %-6.6s", VERSION);
- else
-- wprintf(st, "script %-7.7s", s);
-+ wprintf_(st, "script %-7.7s", s);
- ret_csr();
- }
-
-diff -ru minicom-2.2/src/minicom.c minicom-2.2+iPhone/src/minicom.c
---- minicom-2.2/src/minicom.c 2005-10-31 12:13:51.000000000 +0000
-+++ minicom-2.2+iPhone/src/minicom.c 2008-01-02 00:20:52.000000000 +0000
-@@ -261,7 +261,7 @@
- w_new->wrap = 0;
-
- hline = _("SEARCH FOR (ESC=Exit)");
-- wprintf(w_new, "%s(%d):",hline,MAX_SEARCH);
-+ wprintf_(w_new, "%s(%d):",hline,MAX_SEARCH);
- wredraw(w_new, 1);
- wflush();
-
-@@ -461,7 +461,7 @@
- if (b_st->xs < 127)
- hline0[b_st->xs] = 0;
- hline = hline0;
-- wprintf(b_st, hline);
-+ wprintf_(b_st, hline);
- wredraw(b_st, 1);
- wflush();
-
-@@ -514,7 +514,7 @@
- searchhist(b_us, look_for);
- /* must redraw status line... */
- wlocate(b_st, 0, 0); /* move back to column 0! */
-- wprintf(b_st, hline); /* and show the above-defined hline */
-+ wprintf_(b_st, hline); /* and show the above-defined hline */
- wredraw(b_st, 1); /* again... */
- /* highlight any matches */
- if (wcslen(look_for) > 1) {
-@@ -723,7 +723,7 @@
- hline = hline0;
- }
- wlocate(b_st, 0, 0);
-- wprintf(b_st, hline);
-+ wprintf_(b_st, hline);
- wredraw(b_st, 1);
- if (citemode)
- wlocate(b_us, 0, cite_y);
-@@ -743,7 +743,7 @@
- break;
- }
- wlocate(b_st, 0, 0);
-- wprintf(b_st, hline);
-+ wprintf_(b_st, hline);
- wredraw(b_st, 1);
- wdrawelm_inverse(b_us, cite_y, getline(b_us, cite_ystart));
- wlocate(b_us, 0, cite_y);
-@@ -762,7 +762,7 @@
- }
- drawcite_whole(b_us, y, cite_ystart, cite_yend);
- wlocate(b_st, 0, 0);
-- wprintf(b_st, hline);
-+ wprintf_(b_st, hline);
- wredraw(b_st, 1);
- if (citemode)
- wlocate(b_us, 0, cite_y);
-@@ -1335,6 +1335,6 @@
- if (doinit)
- modeminit();
-
-- wprintf(us, "\n%s %s\r\n", _("Welcome to minicom"), VERSION);
-- wprintf(us, "\n%s: %s\r\n", _("OPTIONS"), option_string);
-+ wprintf_(us, "\n%s %s\r\n", _("Welcome to minicom"), VERSION);
-+ wprintf_(us, "\n%s: %s\r\n", _("OPTIONS"), option_string);
-
-@@ -1340,6 +1340,6 @@
-
-- wprintf(us, "Port %s\n", P_PORT);
-- wprintf(us, _("\nPress %sZ for help on special keys%c\n\n"),esc_key(),'\r');
-+ wprintf_(us, "Port %s\n", P_PORT);
-+ wprintf_(us, _("\nPress %sZ for help on special keys%c\n\n"),esc_key(),'\r');
-
- /* Now that all initialization is done, drop our priviliges. */
- drop_privs();
-diff -ru minicom-2.2/src/updown.c minicom-2.2+iPhone/src/updown.c
---- minicom-2.2/src/updown.c 2005-08-14 20:39:30.000000000 +0000
-+++ minicom-2.2+iPhone/src/updown.c 2008-01-02 00:20:52.000000000 +0000
-@@ -355,7 +355,7 @@
- if (win && (status & 0xFF00) == 0) {
- #if VC_MUSIC
- if (P_SOUND[0] == 'Y') {
-- wprintf(win, _("\n READY: press any key to continue..."));
-+ wprintf_(win, _("\n READY: press any key to continue..."));
- music();
- } else
- sleep(1);
-@@ -363,7 +363,7 @@
- /* MARK updated 02/17/94 - If there was no VC_MUSIC capability, */
- /* then at least make some beeps! */
- if (P_SOUND[0] == 'Y')
-- wprintf(win, "\007\007\007");
-+ wprintf_(win, "\007\007\007");
- sleep(1);
- #endif
- }
-@@ -526,9 +526,9 @@
- w = wopen(10, 5, 70, 10, BDOUBLE, stdattr, mfcolor, mbcolor, 0, 0, 1);
- wtitle(w, TMID, _("Run a script"));
- wputs(w, "\n");
-- wprintf(w, "%s %s\n", username, scr_user[0] ? msg : "");
-- wprintf(w, "%s %s\n", password, scr_passwd[0] ? msg : "");
-- wprintf(w, "%s %s\n", name_of_script, scr_name);
-+ wprintf_(w, "%s %s\n", username, scr_user[0] ? msg : "");
-+ wprintf_(w, "%s %s\n", password, scr_passwd[0] ? msg : "");
-+ wprintf_(w, "%s %s\n", name_of_script, scr_name);
- wlocate(w, 4, 5);
- wputs(w, question);
- wredraw(w, 1);
-diff -ru minicom-2.2/src/windiv.c minicom-2.2+iPhone/src/windiv.c
---- minicom-2.2/src/windiv.c 2006-10-11 20:46:21.000000000 +0000
-+++ minicom-2.2+iPhone/src/windiv.c 2008-01-02 00:20:52.000000000 +0000
-@@ -120,7 +120,7 @@
- while (1) {
- wlocate(w, 2 + offs + 10 * cur, 1);
- if (!useattr)
-- wprintf(w, ">%s", _(s[cur]) + 1);
-+ wprintf_(w, ">%s", _(s[cur]) + 1);
- else {
- wsetattr(w, XA_REVERSE | stdattr);
- wputs(w, _(s[cur]));
-@@ -169,7 +169,7 @@
- BDOUBLE, stdattr, mfcolor, mbcolor, 1, 0, 1);
- wputs(w, s);
- wlocate(w, 0, 1);
-- wprintf(w, "> %-38.38s", buf);
-+ wprintf_(w, "> %-38.38s", buf);
- wlocate(w, 2, 1);
- if (wgets(w, buf, 38, 128) < 0)
- buf = NULL;
-diff -ru minicom-2.2/src/window.c minicom-2.2+iPhone/src/window.c
---- minicom-2.2/src/window.c 2005-11-06 19:20:57.000000000 +0000
-+++ minicom-2.2+iPhone/src/window.c 2008-01-02 00:20:52.000000000 +0000
-@@ -1146,7 +1146,7 @@
- * Print a formatted string in a window.
- * Should return stringlength - but who cares.
- */
--int wprintf(WIN *win, const char *fmt, ...)
-+int wprintf_(WIN *win, const char *fmt, ...)
- {
- char buf[160];
- va_list va;
-@@ -1304,7 +1304,7 @@
- wtitle(w, TMID, title);
-
- for (c = 0; c < count; c++)
-- wprintf(w, " %s%s", _(choices[c]), c == count - 1 ? "" : "\n");
-+ wprintf_(w, " %s%s", _(choices[c]), c == count - 1 ? "" : "\n");
-
- wcurbar(w, cur, high_on);
- wredraw(w, 1);
-diff -ru minicom-2.2/src/window.h minicom-2.2+iPhone/src/window.h
---- minicom-2.2/src/window.h 2006-04-02 09:58:52.000000000 +0000
-+++ minicom-2.2+iPhone/src/window.h 2008-01-02 00:20:50.000000000 +0000
-@@ -151,7 +151,7 @@
- void wputc(WIN *win, wchar_t c);
- void wdrawelm(WIN *win, int y, ELM *e);
- void wputs(WIN *win, const char *s);
--int wprintf(WIN *, const char *, ...)
-+int wprintf_(WIN *, const char *, ...)
- __attribute__((format(printf, 2, 3)));
- void wbell(void);
- void wcursor(WIN *win, int type);
diff --git a/data/ncftp/_metadata/version b/data/ncftp/_metadata/version
index b347b11ea..34cde5690 100644
--- a/data/ncftp/_metadata/version
+++ b/data/ncftp/_metadata/version
@@ -1 +1 @@
-3.2.3
+3.2.6
diff --git a/data/ncftp/extern.diff b/data/ncftp/extern.diff
new file mode 100644
index 000000000..6aecc460d
--- /dev/null
+++ b/data/ncftp/extern.diff
@@ -0,0 +1,12 @@
+diff -ur ncftp-3.2.6/sh_util/gpshare.c ncftp-3.2.6+iPhone/sh_util/gpshare.c
+--- ncftp-3.2.6/sh_util/gpshare.c 2016-11-12 13:53:39.000000000 -1000
++++ ncftp-3.2.6+iPhone/sh_util/gpshare.c 2018-08-17 12:09:15.000000000 -1000
+@@ -28,7 +28,7 @@
+
+ static int gIsAtty1 = 1, gIsAtty2 = 1;
+ extern int gLoadedBm, gBookmarkMatchMode;
+-Bookmark gBm;
++extern Bookmark gBm;
+
+ double
+ FileSize(double size, const char **uStr0, double *uMult0)
diff --git a/data/ncftp/getdomainname.diff b/data/ncftp/getdomainname.diff
new file mode 100644
index 000000000..42542d638
--- /dev/null
+++ b/data/ncftp/getdomainname.diff
@@ -0,0 +1,12 @@
+diff -ur ncftp-3.2.6/sio/DNSUtil.c ncftp-3.2.6+iPhone/sio/DNSUtil.c
+--- ncftp-3.2.6/sio/DNSUtil.c 2016-11-12 17:03:45.000000000 -1000
++++ ncftp-3.2.6+iPhone/sio/DNSUtil.c 2018-08-17 12:05:05.000000000 -1000
+@@ -12,7 +12,7 @@
+ # define Strncpy(a,b,s) strncpy(a, b, s); a[s - 1] = '\0'
+ #endif
+
+-#if (((defined(MACOSX)) && (MACOSX < 10300)) || (defined(AIX) && (AIX < 430)) || (defined(DIGITAL_UNIX)) || (defined(SOLARIS)) || (defined(SCO)) || (defined(HPUX)))
++#if (((defined(MACOSX)) && (MACOSX < 10300) && (!defined(__arm__)) && (!defined(__arm64__))) || (defined(AIX) && (AIX < 430)) || (defined(DIGITAL_UNIX)) || (defined(SOLARIS)) || (defined(SCO)) || (defined(HPUX)))
+ extern int getdomainname(char *name, gethostname_size_t namelen);
+ #endif
+
diff --git a/data/ncftp/make.sh b/data/ncftp/make.sh
index de71b27aa..521bb3049 100644
--- a/data/ncftp/make.sh
+++ b/data/ncftp/make.sh
@@ -1,5 +1,5 @@
pkg:setup
-RANLIB=$(which "${PKG_TARG}-ranlib") CC=$(which "${PKG_TARG}-gcc") pkg:configure
-make
+CFLAGS="-O2 -fno-common" CXXFLAGS="-O2 -fno-common" RANLIB=$(which "${PKG_TARG}-ranlib") CC=$(which "${PKG_TARG}-gcc") ./configure --build="$(${PKG_BASE}/util/config.guess)" --host="${PKG_TARG}" --enable-static=no --enable-shared=yes --prefix="$(cat "${PKG_BASE}/arch/${PKG_ARCH}/prefix")" --localstatedir="/var/cache/${PKG_NAME}"
+make -j8
mkdir -p "${PKG_DEST}/usr/share"
pkg:install
diff --git a/data/ncftp/mdns.diff b/data/ncftp/mdns.diff
deleted file mode 100644
index 696ab5480..000000000
--- a/data/ncftp/mdns.diff
+++ /dev/null
@@ -1,25 +0,0 @@
-diff -ru ncftp-3.2.1/ncftp/main.c ncftp-3.2.1+iPhone/ncftp/main.c
---- ncftp-3.2.1/ncftp/main.c 2006-08-05 21:30:44.000000000 +0000
-+++ ncftp-3.2.1+iPhone/ncftp/main.c 2008-03-04 19:56:17.000000000 +0000
-@@ -1,3 +1,5 @@
-+#include <mach-o/nlist.h>
-+
- /* main.c
- *
- * Copyright (c) 1992-2005 by Mike Gleason.
-@@ -401,6 +403,15 @@
- main_void_return_t
- main(int argc, char **const argv)
- {
-+#if !defined(__ENVIRONMENT_ASPEN_VERSION_MIN_REQUIRED__) || __ENVIRONMENT_ASPEN_VERSION_MIN_REQUIRED__ < 10200
-+ struct nlist nl[2];
-+ memset(nl, 0, sizeof(nl));
-+ nl[0].n_un.n_name = (char *) "_useMDNSResponder";
-+ nlist("/usr/lib/libc.dylib", nl);
-+ if (nl[0].n_type != N_UNDF)
-+ *(int *) nl[0].n_value = 0;
-+#endif
-+
- int c;
- int n;
- GetoptInfo opt;
diff --git a/data/ncftp/ncftp-3.2.1-src.tar.gz b/data/ncftp/ncftp-3.2.1-src.tar.gz
deleted file mode 100644
index c92b29a92..000000000
--- a/data/ncftp/ncftp-3.2.1-src.tar.gz
+++ /dev/null
Binary files differ
diff --git a/data/ncftp/ncftp-3.2.3-src.tar.bz2 b/data/ncftp/ncftp-3.2.3-src.tar.bz2
deleted file mode 100644
index d5d84cc94..000000000
--- a/data/ncftp/ncftp-3.2.3-src.tar.bz2
+++ /dev/null
Binary files differ
diff --git a/data/ncftp/ncftp-3.2.6-src.tar.xz b/data/ncftp/ncftp-3.2.6-src.tar.xz
new file mode 100644
index 000000000..0c680f12a
--- /dev/null
+++ b/data/ncftp/ncftp-3.2.6-src.tar.xz
Binary files differ
diff --git a/data/ncurses/make.sh b/data/ncurses/make.sh
index 177e2c812..c96ec2565 100644
--- a/data/ncurses/make.sh
+++ b/data/ncurses/make.sh
@@ -4,7 +4,7 @@ cd ..
dir=$(echo *)
mkdir bld-ncurses{,w}
cd bld-ncurses
-flags='--with-shared --without-normal --without-debug --enable-sigwinch --disable-mixed-case --enable-termcap'
+flags="--with-shared --without-normal --without-debug --enable-sigwinch --disable-mixed-case --enable-termcap --enable-pc-files --with-pkg-config-libdir=${PKG_TAPF}/lib/pkgconfig"
PKG_CONF=../${dir}/configure PKG_MCPU=-marm pkg:configure ${flags}
make -j8
pkg:install
diff --git a/data/neon/make.sh b/data/neon/make.sh
index 1e712d5af..9bf19df48 100644
--- a/data/neon/make.sh
+++ b/data/neon/make.sh
@@ -2,5 +2,5 @@ pkg:setup
autoconf
pkg:configure --with-ssl
#--with-expat="${PKG_ROOT}/usr/lib/libexpat.la"
-make
+make -j8
pkg:install
diff --git a/data/neon/neon-0.26.4.tar.gz b/data/neon/neon-0.26.4.tar.gz
deleted file mode 100644
index ca34b96a1..000000000
--- a/data/neon/neon-0.26.4.tar.gz
+++ /dev/null
Binary files differ
diff --git a/data/neon/neon-0.30.2.tar.gz b/data/neon/neon-0.30.2.tar.gz
new file mode 100644
index 000000000..ea6307423
--- /dev/null
+++ b/data/neon/neon-0.30.2.tar.gz
Binary files differ
diff --git a/data/neon/nmedit.diff b/data/neon/nmedit.diff
deleted file mode 100644
index 599393ba5..000000000
--- a/data/neon/nmedit.diff
+++ /dev/null
@@ -1,51 +0,0 @@
-diff -ru neon-0.26.4/aclocal.m4 neon-0.26.4+iPhone/aclocal.m4
---- neon-0.26.4/aclocal.m4 2007-07-14 20:45:34.000000000 +0000
-+++ neon-0.26.4+iPhone/aclocal.m4 2007-12-28 12:48:28.000000000 +0000
-@@ -3087,11 +3087,11 @@
- _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
- # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds
- if test "X$lt_int_apple_cc_single_mod" = Xyes ; then
-- _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
-+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~${PKG_TARG}-nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
- else
-- _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
-+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring~${PKG_TARG}-nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
- fi
-- _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
-+ _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~${PKG_TARG}-nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
- else
- case $cc_basename in
- xlc*)
-@@ -3099,8 +3099,8 @@
- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring'
- _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
- # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds
-- _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
-- _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
-+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~${PKG_TARG}-nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
-+ _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~${PKG_TARG}-nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
- ;;
- *)
- _LT_AC_TAGVAR(ld_shlibs, $1)=no
-@@ -5855,8 +5855,8 @@
- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
- _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
- # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds
-- _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
-- _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
-+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~${PKG_TARG}-nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
-+ _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~${PKG_TARG}-nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
- else
- case $cc_basename in
- xlc*)
-@@ -5864,8 +5864,8 @@
- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring'
- _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
- # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds
-- _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
-- _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
-+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~${PKG_TARG}-nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
-+ _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~${PKG_TARG}-nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
- ;;
- *)
- _LT_AC_TAGVAR(ld_shlibs, $1)=no
diff --git a/data/netcat/make.sh b/data/netcat/make.sh
index 00bf96237..fe4770710 100644
--- a/data/netcat/make.sh
+++ b/data/netcat/make.sh
@@ -1,5 +1,6 @@
pkg:setup
+autoreconf -f -i
pkg:configure
-make
+make -j8
pkg:install
pkg:bin
diff --git a/data/netcat/mdns.diff b/data/netcat/mdns.diff
deleted file mode 100644
index 89cc0e2ed..000000000
--- a/data/netcat/mdns.diff
+++ /dev/null
@@ -1,25 +0,0 @@
-diff -ru netcat-0.7.1/src/netcat.c netcat-0.7.1+iPhone/src/netcat.c
---- netcat-0.7.1/src/netcat.c 2003-08-28 17:20:25.000000000 +0000
-+++ netcat-0.7.1+iPhone/src/netcat.c 2008-04-10 10:02:32.000000000 +0000
-@@ -1,3 +1,5 @@
-+#include <mach-o/nlist.h>
-+
- /*
- * netcat.c -- main project file
- * Part of the GNU netcat project
-@@ -137,6 +139,15 @@
-
- int main(int argc, char *argv[])
- {
-+#if !defined(__ENVIRONMENT_ASPEN_VERSION_MIN_REQUIRED__) || __ENVIRONMENT_ASPEN_VERSION_MIN_REQUIRED__ < 10200
-+ struct nlist nl[2];
-+ memset(nl, 0, sizeof(nl));
-+ nl[0].n_un.n_name = (char *) "_useMDNSResponder";
-+ nlist("/usr/lib/libc.dylib", nl);
-+ if (nl[0].n_type != N_UNDF)
-+ *(int *) nl[0].n_value = 0;
-+#endif
-+
- int c, glob_ret = EXIT_FAILURE;
- int total_ports, left_ports, accept_ret = -1, connect_ret = -1;
- struct sigaction sv;
diff --git a/data/network-cmds/_metadata/_network-cmds.dep b/data/network-cmds/_metadata/_network-cmds.dep
new file mode 120000
index 000000000..79d453e3b
--- /dev/null
+++ b/data/network-cmds/_metadata/_network-cmds.dep
@@ -0,0 +1 @@
+../../_network-cmds \ No newline at end of file
diff --git a/data/odcctools/_metadata/_ld64.dep b/data/odcctools/_metadata/_ld64.dep
new file mode 120000
index 000000000..030d8a67e
--- /dev/null
+++ b/data/odcctools/_metadata/_ld64.dep
@@ -0,0 +1 @@
+../../_ld64 \ No newline at end of file
diff --git a/data/odcctools/_metadata/version b/data/odcctools/_metadata/version
index c20f65747..208931296 100644
--- a/data/odcctools/_metadata/version
+++ b/data/odcctools/_metadata/version
@@ -1 +1 @@
-286
+895
diff --git a/data/odcctools/cctools-895.tar.gz b/data/odcctools/cctools-895.tar.gz
new file mode 100644
index 000000000..8f6e66a82
--- /dev/null
+++ b/data/odcctools/cctools-895.tar.gz
Binary files differ
diff --git a/data/odcctools/fixes.diff b/data/odcctools/fixes.diff
new file mode 100644
index 000000000..82a861957
--- /dev/null
+++ b/data/odcctools/fixes.diff
@@ -0,0 +1,24 @@
+diff -ur cctools-895/libmacho/Makefile cctools-895+iPhone/libmacho/Makefile
+--- cctools-895/libmacho/Makefile 2016-12-09 08:02:59.000000000 -1000
++++ cctools-895+iPhone/libmacho/Makefile 2018-09-05 10:18:21.000000000 -1000
+@@ -16,9 +16,7 @@
+ LIBSYSCALL=-lsystem_kernel
+ endif
+
+-DEPENDENT_LIBS = -nodefaultlibs -umbrella System -L/usr/lib/system \
+- -ldyld -lsystem_malloc -lsystem_c $(LIBSYSCALL) \
+- -lcompiler_rt
++DEPENDENT_LIBS = -nodefaultlibs -umbrella System -L"${SDKROOT}/usr/lib/system" -lSystem
+
+ ifneq "" "$(SDKROOT)"
+ SDK = -isysroot $(SDKROOT)
+@@ -324,7 +322,7 @@
+ install -c -m 555 dtmp_obj/libmacho.dylib \
+ $(DSTROOT)$(DYLIBDIR)/libmacho.dylib; \
+ $(STRIP) -S $(DSTROOT)$(DYLIBDIR)/libmacho.dylib; \
+- install -c -m 555 dtmp_obj/libmacho_profile.dylib \
++ install -c -m 555 ptmp_obj/libmacho_profile.dylib \
+ $(DSTROOT)$(DYLIBDIR)/libmacho_profile.dylib; \
+ $(STRIP) -S $(DSTROOT)$(DYLIBDIR)/libmacho_profile.dylib; \
+ install -c -m 555 dtmp_obj/libmacho_debug.dylib \
+Only in cctools-895+iPhone/libmacho: Makefile.orig
diff --git a/data/odcctools/make.sh b/data/odcctools/make.sh
index 9a1f484dc..18a41caab 100644
--- a/data/odcctools/make.sh
+++ b/data/odcctools/make.sh
@@ -1,9 +1,8 @@
pkg:setup
-rm -f include/libkern/OSByteOrder.h
-rm -f include/mach/{task,thread_act,thread_status}.h
-rm -f include/mach/machine/{boolean,exception,kern_return,processor_info,rpc,thread_state,thread_status,vm_param,vm_types}.h
-pkg:configure --enable-ld64 ac_cv_header_objc_objc_runtime_h=no
-make
-pkg:install
-pkg: mv /usr/bin/ld{,_classic}
-pkg: ln -s ld64 /usr/bin/ld
+pkg: export RC_ProjectSourceVersion="$(cat ${PKG_DATA}/_metadata/version)"
+pkg:make DSTROOT="${PKG_DEST}" SDKROOT="${PKG_ROOT}"
+pkg:install DSTROOT="${PKG_DEST}" SDKROOT="${PKG_ROOT}"
+pkg: rm -f /usr/lib/system/libmacho.dylib /usr/bin/{nm,otool,size}
+pkg: mv -f /usr/bin/nm{-classic,}
+pkg: mv -f /usr/bin/otool{-classic,}
+pkg: mv -f /usr/bin/size{-classic,}
diff --git a/data/odcctools/odcctools-286.tgz b/data/odcctools/odcctools-286.tgz
deleted file mode 100644
index e8096aa3d..000000000
--- a/data/odcctools/odcctools-286.tgz
+++ /dev/null
Binary files differ
diff --git a/data/odcctools/otool.diff b/data/odcctools/otool.diff
deleted file mode 100644
index 3d5f28543..000000000
--- a/data/odcctools/otool.diff
+++ /dev/null
@@ -1,76 +0,0 @@
-diff -ru odcctools-277/include/foreign/objc/objc-api.h odcctools-277+iPhone/include/foreign/objc/objc-api.h
---- odcctools-277/include/foreign/objc/objc-api.h 2008-08-29 23:05:06.000000000 +0000
-+++ odcctools-277+iPhone/include/foreign/objc/objc-api.h 2008-08-30 00:26:47.000000000 +0000
-@@ -45,7 +45,7 @@
- /* OBJC2_UNAVAILABLE: unavailable in objc 2.0, deprecated in Leopard */
- #if !defined(OBJC2_UNAVAILABLE)
- # if __OBJC2__
--# define OBJC2_UNAVAILABLE UNAVAILABLE_ATTRIBUTE
-+# define OBJC2_UNAVAILABLE //UNAVAILABLE_ATTRIBUTE
- # else
- # define OBJC2_UNAVAILABLE DEPRECATED_IN_MAC_OS_X_VERSION_10_5_AND_LATER
- # endif
-diff -ru odcctools-277/include/foreign/objc/runtime.h odcctools-277+iPhone/include/foreign/objc/runtime.h
---- odcctools-277/include/foreign/objc/runtime.h 2008-08-29 23:05:06.000000000 +0000
-+++ odcctools-277+iPhone/include/foreign/objc/runtime.h 2008-08-30 00:25:34.000000000 +0000
-@@ -43,7 +43,7 @@
- struct objc_class {
- Class isa;
-
--#if !__OBJC2__
-+#if 1//!__OBJC2__
- Class super_class OBJC2_UNAVAILABLE;
- const char *name OBJC2_UNAVAILABLE;
- long version OBJC2_UNAVAILABLE;
-@@ -303,7 +303,7 @@
-
- /* Obsolete types */
-
--#if !__OBJC2__
-+#if 1//!__OBJC2__
-
- #define CLS_GETINFO(cls,infomask) ((cls)->info & (infomask))
- #define CLS_SETINFO(cls,infomask) ((cls)->info |= (infomask))
-diff -ru odcctools-277/otool/Makefile.in odcctools-277+iPhone/otool/Makefile.in
---- odcctools-277/otool/Makefile.in 2008-08-29 22:38:32.000000000 +0000
-+++ odcctools-277+iPhone/otool/Makefile.in 2008-08-30 00:18:48.000000000 +0000
-@@ -24,8 +24,10 @@
- INCPRIVEXT = -include $(top_srcdir)/include/extern.h
- endif
-
-+FOREIGN = -I$(top_srcdir)/include/foreign
-+
- ifeq ($(HAVE_FOREIGN_HEADERS),YES)
--FORHDRS = -I$(top_srcdir)/include/foreign
-+FORHDRS = $(FOREIGN)
- endif
-
- INSTALL = @INSTALL@
-@@ -77,9 +79,9 @@
- $(CC) -DOTOOL $(MYCOMPILEFLAGS) -DARCH64 -c -o $@ $<
-
- $(MOBJS): %.o: %.c
-- $(CC) $(OBJC) $(MYCOMPILEFLAGS) -c -o $@ $<
-+ $(CC) $(OBJC) $(MYCOMPILEFLAGS) $(FOREIGN) -c -o $@ $<
- $(MOBJS64): %.64o: %.c
-- $(CC) $(OBJC) $(MYCOMPILEFLAGS) -DARCH64 -c -o $@ $<
-+ $(CC) $(OBJC) $(MYCOMPILEFLAGS) $(FOREIGN) -DARCH64 -c -o $@ $<
-
- install: otool otool64
- mkdir -p $(DESTDIR)$(bindir)
-diff -ru odcctools-277/otool/print_objc.c odcctools-277+iPhone/otool/print_objc.c
---- odcctools-277/otool/print_objc.c 2008-08-29 22:38:32.000000000 +0000
-+++ odcctools-277+iPhone/otool/print_objc.c 2008-08-30 00:18:48.000000000 +0000
-@@ -39,7 +39,11 @@
-
- struct objc_protocol
- {
-- @defs(Protocol)
-+ Class isa;
-+ char *protocol_name OBJC2_UNAVAILABLE;
-+ struct objc_protocol_list *protocol_list OBJC2_UNAVAILABLE;
-+ struct objc_method_description_list *instance_methods OBJC2_UNAVAILABLE;
-+ struct objc_method_description_list *class_methods OBJC2_UNAVAILABLE;
- };
-
- /*
diff --git a/data/odcctools/usrbin.diff b/data/odcctools/usrbin.diff
deleted file mode 100644
index e5629d873..000000000
--- a/data/odcctools/usrbin.diff
+++ /dev/null
@@ -1,32 +0,0 @@
-diff -ru odcctools-286/as/driver.c odcctools-286+iPhone/as/driver.c
---- odcctools-286/as/driver.c 2008-07-24 19:20:04.000000000 +0000
-+++ odcctools-286+iPhone/as/driver.c 2009-06-30 03:46:53.000000000 +0000
-@@ -31,16 +31,16 @@
- const char *LIB =
- #if defined(__OPENSTEP__) || defined(__HERA__) || \
- defined(__GONZO_BUNSEN_BEAKER__) || defined(__KODIAK__)
-- "../libexec/";
-+ "libexec/";
- #else
-- "../libexec/gcc/darwin/";
-+ "libexec/gcc/darwin/";
- #endif
- const char *LOCALLIB =
- #if defined(__OPENSTEP__) || defined(__HERA__) || \
- defined(__GONZO_BUNSEN_BEAKER__) || defined(__KODIAK__)
-- "../local/libexec/";
-+ "local/libexec/";
- #else
-- "../local/libexec/gcc/darwin/";
-+ "local/libexec/gcc/darwin/";
- #endif
- const char *AS = "/as";
-
-@@ -73,6 +73,7 @@
- p = rindex(prefix, '/');
- if(p != NULL)
- p[1] = '\0';
-+ prefix = "/usr/";
- /*
- * Process the assembler flags exactly like the assembler would (except
- * let the assembler complain about multiple flags, bad combinations of
diff --git a/data/odcctools/x86.diff b/data/odcctools/x86.diff
deleted file mode 100644
index 1f383f646..000000000
--- a/data/odcctools/x86.diff
+++ /dev/null
@@ -1,65 +0,0 @@
-diff -ru odcctools-253/libstuff/bytesex.c odcctools-253+iPhone/libstuff/bytesex.c
---- odcctools-253/libstuff/bytesex.c 2008-07-21 18:58:48.000000000 +0000
-+++ odcctools-253+iPhone/libstuff/bytesex.c 2008-07-21 19:15:06.000000000 +0000
-@@ -1408,7 +1408,7 @@
- #endif /* x86_THREAD_STATE64 */
-
- /* current i386 thread states */
--#if i386_THREAD_STATE == 1
-+#if i386_THREAD_STATE == 1 && 0
- __private_extern__
- void
- swap_i386_float_state(
-diff -ru odcctools-253/libstuff/swap_headers.c odcctools-253+iPhone/libstuff/swap_headers.c
---- odcctools-253/libstuff/swap_headers.c 2008-07-21 18:58:48.000000000 +0000
-+++ odcctools-253+iPhone/libstuff/swap_headers.c 2008-07-21 19:07:38.000000000 +0000
-@@ -635,13 +635,13 @@
- || cputype == CPU_TYPE_X86_64
- #endif /* x86_THREAD_STATE64 */
- ){
-- i386_thread_state_t *cpu;
-+ x86_thread_state_t *cpu;
- #ifdef x86_THREAD_STATE64
- x86_thread_state64_t *cpu64;
- #endif /* x86_THREAD_STATE64 */
- /* current i386 thread states */
- #if i386_THREAD_STATE == 1
-- struct i386_float_state *fpu;
-+ struct x86_float_state *fpu;
- i386_exception_state_t *exc;
- #endif /* i386_THREAD_STATE == 1 */
-
-@@ -679,8 +679,8 @@
- "LC_THREAD", i);
- return(FALSE);
- }
-- cpu = (i386_thread_state_t *)state;
-- state += sizeof(i386_thread_state_t);
-+ cpu = (x86_thread_state_t *)state;
-+ state += sizeof(x86_thread_state_t);
- break;
- /* current i386 thread states */
- #if i386_THREAD_STATE == 1
-@@ -695,8 +695,8 @@
- "LC_THREAD", i);
- return(FALSE);
- }
-- fpu = (struct i386_float_state *)state;
-- state += sizeof(struct i386_float_state);
-+ fpu = (struct x86_float_state *)state;
-+ state += sizeof(struct x86_float_state);
- break;
- case i386_EXCEPTION_STATE:
- if(count != I386_EXCEPTION_STATE_COUNT){
-@@ -1350,9 +1350,9 @@
- /* current i386 thread states */
- #if i386_THREAD_STATE == 1
- case i386_FLOAT_STATE:
-- fpu = (struct i386_float_state *)state;
-+ fpu = (struct x86_float_state *)state;
- swap_i386_float_state(fpu, target_byte_sex);
-- state += sizeof(struct i386_float_state);
-+ state += sizeof(struct x86_float_state);
- break;
- case i386_EXCEPTION_STATE:
- exc = (i386_exception_state_t *)state;
diff --git a/data/openssh/com.openssh.sshd.plist b/data/openssh/com.openssh.sshd.plist
index 5190d018d..eabe1b675 100644
--- a/data/openssh/com.openssh.sshd.plist
+++ b/data/openssh/com.openssh.sshd.plist
@@ -21,7 +21,7 @@
<key>Sockets</key>
<dict>
- <key>Listeners</key>
+ <key>SSHListener</key>
<dict>
<key>SockServiceName</key>
<string>ssh</string>
diff --git a/data/openssh/make.sh b/data/openssh/make.sh
index 8b4fe0272..4896d9037 100644
--- a/data/openssh/make.sh
+++ b/data/openssh/make.sh
@@ -1,6 +1,6 @@
pkg:setup
autoconf
-pkg:configure --disable-strip --sysconfdir=/etc/ssh --disable-libutil --disable-utmp --disable-wtmp ac_cv_path_AR=arm-apple-darwin9-ar --
+pkg:configure --disable-strip --sysconfdir=/etc/ssh --disable-libutil --disable-utmp --disable-wtmp
pkg:make
pkg:install INSTALL_SSH_RAND_HELPER=yes
pkg: cp -a %/sshd-keygen-wrapper /usr/libexec
diff --git a/data/openssl/iphoneos.diff b/data/openssl/iphoneos.diff
index f6eb68e53..62b171cf4 100644
--- a/data/openssl/iphoneos.diff
+++ b/data/openssl/iphoneos.diff
@@ -6,8 +6,8 @@ diff -ur openssl-1.0.2o/Configure openssl-1.0.2o+iPhone/Configure
"debug-darwin-ppc-cc","cc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DCRYPTO_MDEBUG -DB_ENDIAN -g -Wall -O::-D_REENTRANT:MACOSX::BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:${ppc32_asm}:osx32:dlfcn:darwin-shared:-fPIC:-dynamiclib:.\$(SHLIB_MAJOR).\$(SHLIB_MINOR).dylib",
# iPhoneOS/iOS
-"iphoneos-cross","llvm-gcc:-O3 -isysroot \$(CROSS_TOP)/SDKs/\$(CROSS_SDK) -fomit-frame-pointer -fno-common::-D_REENTRANT:iOS:-Wl,-search_paths_first%:BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:${no_asm}:dlfcn:darwin-shared:-fPIC -fno-common:-dynamiclib:.\$(SHLIB_MAJOR).\$(SHLIB_MINOR).dylib",
-+"iphoneos-armv6","arm-apple-darwin9-gcc:-O3 -fomit-frame-pointer -fno-common::-D_REENTRANT:iOS:-Wl,-search_paths_first%:BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:${no_asm}:dlfcn:darwin-shared:-fPIC -fno-common:-dynamiclib:.\$(SHLIB_MAJOR).\$(SHLIB_MINOR).dylib",
-+"iphoneos-arm64","aarch64-apple-darwin13-gcc:-O3 -fomit-frame-pointer -fno-common::-D_REENTRANT:iOS:-Wl,-search_paths_first%:BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:${no_asm}:dlfcn:darwin-shared:-fPIC -fno-common:-dynamiclib:.\$(SHLIB_MAJOR).\$(SHLIB_MINOR).dylib",
++"iphoneos-arm","arm-apple-darwin9-gcc:-O3 -fomit-frame-pointer -fno-common::-D_REENTRANT:iOS:-Wl,-search_paths_first%:BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:${no_asm}:dlfcn:darwin-shared:-fPIC -fno-common:-dynamiclib:.\$(SHLIB_MAJOR).\$(SHLIB_MINOR).dylib",
++"iphoneos-arm","aarch64-apple-darwin17-gcc:-O3 -fomit-frame-pointer -fno-common::-D_REENTRANT:iOS:-Wl,-search_paths_first%:BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:${no_asm}:dlfcn:darwin-shared:-fPIC -fno-common:-dynamiclib:.\$(SHLIB_MAJOR).\$(SHLIB_MINOR).dylib",
##### A/UX
"aux3-gcc","gcc:-O2 -DTERMIO::(unknown):AUX:-lbsd:RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:::",
@@ -24,7 +24,7 @@ diff -ur openssl-1.0.2o/config openssl-1.0.2o+iPhone/config
+ iphoneos-arm)
+ OUT="iphoneos-arm" ;;
+ iphoneos-arm64)
-+ OUT="iphoneos-arm64" ;;
++ OUT="iphoneos-arm" ;;
alpha-*-linux2)
ISA=`awk '/cpu model/{print$4;exit(0);}' /proc/cpuinfo`
case ${ISA:-generic} in
diff --git a/data/pkg-config/_metadata/version b/data/pkg-config/_metadata/version
index 39010d220..20f068700 100644
--- a/data/pkg-config/_metadata/version
+++ b/data/pkg-config/_metadata/version
@@ -1 +1 @@
-0.23
+0.29.2
diff --git a/data/pngcrush/make.sh b/data/pngcrush/make.sh
index b2d27234d..ed983010a 100644
--- a/data/pngcrush/make.sh
+++ b/data/pngcrush/make.sh
@@ -1,4 +1,4 @@
pkg:setup
-make CC=arm-apple-darwin9-gcc LD=arm-apple-darwin9-gcc
+make CC="${PKG_TARG}-gcc" LD="${PKG_TARG}-gcc" -j8
pkg: mkdir -p /usr/bin
pkg: cp -a pngcrush /usr/bin
diff --git a/data/pthread-stubs/make.sh b/data/pthread-stubs/make.sh
index 452a4bfd5..ce58b7c91 100644
--- a/data/pthread-stubs/make.sh
+++ b/data/pthread-stubs/make.sh
@@ -1,4 +1,5 @@
pkg:setup
+cp ${PKG_BASE}/config.sub .
pkg:configure
make
pkg:install
diff --git a/data/python/Python-2.5.1.tgz b/data/python/Python-2.7.15.tar.xz
index 2ce439a2e..cf32934b7 100644
--- a/data/python/Python-2.5.1.tgz
+++ b/data/python/Python-2.7.15.tar.xz
Binary files differ
diff --git a/data/python/_metadata/ncurses.dep b/data/python/_metadata/ncurses.dep
new file mode 120000
index 000000000..a395fad08
--- /dev/null
+++ b/data/python/_metadata/ncurses.dep
@@ -0,0 +1 @@
+../../ncurses \ No newline at end of file
diff --git a/data/python/_metadata/version b/data/python/_metadata/version
index 73462a5a1..f24054fd3 100644
--- a/data/python/_metadata/version
+++ b/data/python/_metadata/version
@@ -1 +1 @@
-2.5.1
+2.7.15
diff --git a/data/python/bundle.diff b/data/python/bundle.diff
deleted file mode 100644
index c7f38b986..000000000
--- a/data/python/bundle.diff
+++ /dev/null
@@ -1,32 +0,0 @@
-diff -r -u Python-2.5.1/configure.in Python-2.5.1+iPhone/configure.in
---- Python-2.5.1/configure.in 2007-03-12 10:50:51.000000000 +0000
-+++ Python-2.5.1+iPhone/configure.in 2008-01-09 11:45:20.000000000 +0000
-@@ -1484,7 +1484,12 @@
- if test "${enable_universalsdk}"; then
- LDFLAGS="-arch i386 -arch ppc -isysroot ${UNIVERSALSDK} ${LDFLAGS}"
- fi
-- LDSHARED='$(CC) $(LDFLAGS) -bundle -undefined dynamic_lookup'
-+ LDSHARED='$(CC) $(LDFLAGS) -undefined dynamic_lookup'
-+ if test "$enable_framework" ; then
-+ LDSHARED="$LDSHARED -bundle"
-+ else
-+ LDSHARED="$LDSHARED -dynamiclib"
-+ fi
- BLDSHARED="$LDSHARED"
- else
- LDSHARED='$(CC) $(LDFLAGS) -bundle'
-diff -r -u Python-2.5.1/Makefile.pre.in Python-2.5.1+iPhone/Makefile.pre.in
---- Python-2.5.1/Makefile.pre.in 2006-12-08 20:46:13.000000000 +0000
-+++ Python-2.5.1+iPhone/Makefile.pre.in 2008-01-09 12:00:36.000000000 +0000
-@@ -362,9 +362,9 @@
- $(AR) cr $@ $(MODOBJS)
- $(RANLIB) $@
-
--libpython$(VERSION).so: $(LIBRARY_OBJS)
-+libpython$(VERSION).dylib: $(LIBRARY_OBJS)
- if test $(INSTSONAME) != $(LDLIBRARY); then \
-- $(LDSHARED) -Wl,-h$(INSTSONAME) -o $(INSTSONAME) $(LIBRARY_OBJS) $(SHLIBS) $(LIBC) $(LIBM); \
-+ $(LDSHARED) -Wl,-dylib_install_name,$(INSTSONAME) -o $(INSTSONAME) $(LIBRARY_OBJS) $(SHLIBS) $(LIBC) $(LIBM); \
- $(LN) -f $(INSTSONAME) $@; \
- else\
- $(LDSHARED) -o $@ $(LIBRARY_OBJS) $(SHLIBS) $(LIBC) $(LIBM); \
diff --git a/data/python/clean.diff b/data/python/clean.diff
deleted file mode 100644
index 36d5ba186..000000000
--- a/data/python/clean.diff
+++ /dev/null
@@ -1,11 +0,0 @@
-diff -ru BuildPython-2.5.1/Makefile.pre.in Python-2.5.1/Makefile.pre.in
---- BuildPython-2.5.1/Makefile.pre.in 2006-12-08 20:46:13.000000000 +0000
-+++ Python-2.5.1/Makefile.pre.in 2008-01-09 07:58:21.000000000 +0000
-@@ -1015,7 +1015,6 @@
-
- clean: pycremoval
- find . -name '*.o' -exec rm -f {} ';'
-- find . -name '*.s[ol]' -exec rm -f {} ';'
- find $(srcdir)/build -name 'fficonfig.h' -exec rm -f {} ';' || true
- find $(srcdir)/build -name 'fficonfig.py' -exec rm -f {} ';' || true
-
diff --git a/data/python/common.diff b/data/python/common.diff
deleted file mode 100644
index 64f9eb4f2..000000000
--- a/data/python/common.diff
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -r -u Python-2.5.1/configure.in Python-2.5.1+iPhone/configure.in
---- Python-2.5.1/configure.in 2007-03-12 10:50:51.000000000 +0000
-+++ Python-2.5.1+iPhone/configure.in 2008-01-09 12:10:16.000000000 +0000
-@@ -814,7 +816,7 @@
- ;;
- # is there any other compiler on Darwin besides gcc?
- Darwin*)
-- BASECFLAGS="$BASECFLAGS -Wno-long-double -no-cpp-precomp -mno-fused-madd"
-+ BASECFLAGS="$BASECFLAGS -no-cpp-precomp -fno-common"
- if test "${enable_universalsdk}"; then
- BASECFLAGS="-arch ppc -arch i386 -isysroot ${UNIVERSALSDK} ${BASECFLAGS}"
- fi
diff --git a/data/python/cross.diff b/data/python/cross.diff
deleted file mode 100644
index 68c84d061..000000000
--- a/data/python/cross.diff
+++ /dev/null
@@ -1,443 +0,0 @@
-diff -ru Python-2.5.1/configure.in Python-2.5.1+iPhone/configure.in
---- Python-2.5.1/configure.in 2007-03-12 10:50:51.000000000 +0000
-+++ Python-2.5.1+iPhone/configure.in 2008-04-29 10:53:21.000000000 +0000
-@@ -165,7 +165,7 @@
- AC_MSG_CHECKING(MACHDEP)
- if test -z "$MACHDEP"
- then
-- ac_sys_system=`uname -s`
-+ ac_sys_system=Darwin
- if test "$ac_sys_system" = "AIX" -o "$ac_sys_system" = "Monterey64" \
- -o "$ac_sys_system" = "UnixWare" -o "$ac_sys_system" = "OpenUNIX"; then
- ac_sys_release=`uname -v`
-@@ -247,6 +247,8 @@
-
- esac
-
-+define_xopen_source=no
-+
- if test $define_xopen_source = yes
- then
- # On Solaris w/ g++ it appears that _XOPEN_SOURCE has to be
-@@ -1420,7 +1422,6 @@
- echo '+ Continuing in 10 seconds to let you to ponder. +'
- echo '+ +'
- echo '====================================================================='
-- sleep 10
- fi
- AC_MSG_RESULT($SO)
- AC_DEFINE_UNQUOTED(SHLIB_EXT, "$SO", [Define this to be extension of shared libraries (including the dot!).])
-@@ -1473,12 +1474,11 @@
- Darwin/*)
- # Use -undefined dynamic_lookup whenever possible (10.3 and later).
- # This allows an extension to be used in any Python
-- cur_target=`sw_vers -productVersion | sed 's/\(10\.[[0-9]]*\).*/\1/'`
-+ cur_target=10.5
- if test ${cur_target} '>' 10.2; then
- cur_target=10.3
- fi
- CONFIGURE_MACOSX_DEPLOYMENT_TARGET=${MACOSX_DEPLOYMENT_TARGET-${cur_target}}
-- EXPORT_MACOSX_DEPLOYMENT_TARGET=''
- if test ${MACOSX_DEPLOYMENT_TARGET-${cur_target}} '>' 10.2
- then
- if test "${enable_universalsdk}"; then
-@@ -3367,41 +3368,6 @@
- AC_MSG_RESULT(no)
- fi
-
--AC_MSG_CHECKING(for %zd printf() format support)
--AC_TRY_RUN([#include <stdio.h>
--#include <stddef.h>
--#include <string.h>
--
--int main()
--{
-- char buffer[256];
--
--#ifdef HAVE_SSIZE_T
--typedef ssize_t Py_ssize_t;
--#elif SIZEOF_VOID_P == SIZEOF_LONG
--typedef long Py_ssize_t;
--#else
--typedef int Py_ssize_t;
--#endif
--
-- if(sprintf(buffer, "%zd", (size_t)123) < 0)
-- return 1;
--
-- if (strcmp(buffer, "123"))
-- return 1;
--
-- if (sprintf(buffer, "%zd", (Py_ssize_t)-123) < 0)
-- return 1;
--
-- if (strcmp(buffer, "-123"))
-- return 1;
--
-- return 0;
--}],
--[AC_MSG_RESULT(yes)
-- AC_DEFINE(PY_FORMAT_SIZE_T, "z", [Define to printf format modifier for Py_ssize_t])],
-- AC_MSG_RESULT(no))
--
- AC_CHECK_TYPE(socklen_t,,
- AC_DEFINE(socklen_t,int,
- Define to `int' if <sys/socket.h> does not define.),[
-diff -ru Python-2.5.1/Include/pyport.h Python-2.5.1+iPhone/Include/pyport.h
---- Python-2.5.1/Include/pyport.h 2006-10-02 15:24:01.000000000 +0000
-+++ Python-2.5.1+iPhone/Include/pyport.h 2008-04-29 10:53:21.000000000 +0000
-@@ -731,7 +731,7 @@
- * rather than waiting for integer multiplication to trigger bogus
- * overflows.
- */
--#error "LONG_BIT definition appears wrong for platform (bad gcc/glibc config?)."
-+//#error "LONG_BIT definition appears wrong for platform (bad gcc/glibc config?)."
- #endif
-
- #ifdef __cplusplus
-diff -ru Python-2.5.1/Modules/_ctypes/cfield.c Python-2.5.1+iPhone/Modules/_ctypes/cfield.c
---- Python-2.5.1/Modules/_ctypes/cfield.c 2007-03-22 19:43:37.000000000 +0000
-+++ Python-2.5.1+iPhone/Modules/_ctypes/cfield.c 2008-04-29 10:53:21.000000000 +0000
-@@ -1642,7 +1642,7 @@
- struct _ffi_type **elements;
- } ffi_type;
- */
--
-+#if 0
- /* align and size are bogus for void, but they must not be zero */
- ffi_type ffi_type_void = { 1, 1, FFI_TYPE_VOID };
-
-@@ -1664,5 +1664,5 @@
- /* ffi_type ffi_type_longdouble */
-
- ffi_type ffi_type_pointer = { sizeof(void *), VOID_P_ALIGN, FFI_TYPE_POINTER };
--
-+#endif
- /*---------------- EOF ----------------*/
-diff -ru Python-2.5.1/Modules/getaddrinfo.c Python-2.5.1+iPhone/Modules/getaddrinfo.c
---- Python-2.5.1/Modules/getaddrinfo.c 2003-08-17 21:28:39.000000000 +0000
-+++ Python-2.5.1+iPhone/Modules/getaddrinfo.c 2008-04-29 10:53:21.000000000 +0000
-@@ -38,7 +38,7 @@
- * - PF_UNSPEC case would be handled in getipnodebyname() with the AI_ALL flag.
- */
-
--#if 0
-+#if 1
- #include <sys/types.h>
- #include <sys/param.h>
- #include <sys/sysctl.h>
-diff -ru Python-2.5.1/Modules/mmapmodule.c Python-2.5.1+iPhone/Modules/mmapmodule.c
---- Python-2.5.1/Modules/mmapmodule.c 2006-08-22 13:57:07.000000000 +0000
-+++ Python-2.5.1+iPhone/Modules/mmapmodule.c 2008-04-29 10:53:21.000000000 +0000
-@@ -36,6 +36,7 @@
- #ifdef UNIX
- #include <sys/mman.h>
- #include <sys/stat.h>
-+#include <sys/fcntl.h>
-
- #if defined(HAVE_SYSCONF) && defined(_SC_PAGESIZE)
- static int
-diff -ru Python-2.5.1/setup.py Python-2.5.1+iPhone/setup.py
---- Python-2.5.1/setup.py 2007-02-14 12:53:41.000000000 +0000
-+++ Python-2.5.1+iPhone/setup.py 2008-04-29 11:05:35.000000000 +0000
-@@ -206,46 +206,16 @@
- ext_filename = os.path.join(
- self.build_lib,
- self.get_ext_filename(self.get_ext_fullname(ext.name)))
-- try:
-- imp.load_dynamic(ext.name, ext_filename)
-- except ImportError, why:
-- self.announce('*** WARNING: renaming "%s" since importing it'
-- ' failed: %s' % (ext.name, why), level=3)
-- assert not self.inplace
-- basename, tail = os.path.splitext(ext_filename)
-- newname = basename + "_failed" + tail
-- if os.path.exists(newname):
-- os.remove(newname)
-- os.rename(ext_filename, newname)
--
-- # XXX -- This relies on a Vile HACK in
-- # distutils.command.build_ext.build_extension(). The
-- # _built_objects attribute is stored there strictly for
-- # use here.
-- # If there is a failure, _built_objects may not be there,
-- # so catch the AttributeError and move on.
-- try:
-- for filename in self._built_objects:
-- os.remove(filename)
-- except AttributeError:
-- self.announce('unable to remove files (ignored)')
-- except:
-- exc_type, why, tb = sys.exc_info()
-- self.announce('*** WARNING: importing extension "%s" '
-- 'failed with %s: %s' % (ext.name, exc_type, why),
-- level=3)
-
- def get_platform(self):
-- # Get value of sys.platform
-- for platform in ['cygwin', 'beos', 'darwin', 'atheos', 'osf1']:
-- if sys.platform.startswith(platform):
-- return platform
-- return sys.platform
-+ return 'darwin'
-
- def detect_modules(self):
-+ sysroot = os.getenv('PKG_ROOT')
-+
- # Ensure that /usr/local is always used
-- add_dir_to_list(self.compiler.library_dirs, '/usr/local/lib')
-- add_dir_to_list(self.compiler.include_dirs, '/usr/local/include')
-+ add_dir_to_list(self.compiler.library_dirs, sysroot + '/usr/local/lib')
-+ add_dir_to_list(self.compiler.include_dirs, sysroot + '/usr/local/include')
-
- # Add paths specified in the environment variables LDFLAGS and
- # CPPFLAGS for header and library files.
-@@ -294,10 +264,10 @@
- # if a file is found in one of those directories, it can
- # be assumed that no additional -I,-L directives are needed.
- lib_dirs = self.compiler.library_dirs + [
-- '/lib64', '/usr/lib64',
-- '/lib', '/usr/lib',
-+ sysroot + '/lib64', sysroot + '/usr/lib64',
-+ sysroot + '/lib', sysroot + '/usr/lib',
- ]
-- inc_dirs = self.compiler.include_dirs + ['/usr/include']
-+ inc_dirs = self.compiler.include_dirs + [sysroot + '/usr/include']
- exts = []
-
- config_h = sysconfig.get_config_h_filename()
-@@ -309,9 +279,11 @@
- # Check for AtheOS which has libraries in non-standard locations
- if platform == 'atheos':
- lib_dirs += ['/system/libs', '/atheos/autolnk/lib']
-- lib_dirs += os.getenv('LIBRARY_PATH', '').split(os.pathsep)
- inc_dirs += ['/system/include', '/atheos/autolnk/include']
-- inc_dirs += os.getenv('C_INCLUDE_PATH', '').split(os.pathsep)
-+
-+ lib_dirs += os.getenv('LIBRARY_PATH', '').split(os.pathsep)
-+ inc_dirs += os.getenv('C_INCLUDE_PATH', '').split(os.pathsep)
-+ inc_dirs += os.getenv('CPATH', '').split(os.pathsep)
-
- # OSF/1 and Unixware have some stuff in /usr/ccs/lib (like -ldb)
- if platform in ['osf1', 'unixware7', 'openunix8']:
-@@ -476,7 +447,7 @@
- if find_file('readline/rlconf.h', inc_dirs, []) is None:
- do_readline = False
- if do_readline:
-- if sys.platform == 'darwin':
-+ if self.get_platform() == 'darwin':
- # In every directory on the search path search for a dynamic
- # library and then a static library, instead of first looking
- # for dynamic libraries on the entiry path.
-@@ -496,11 +467,11 @@
- elif self.compiler.find_library_file(lib_dirs, 'curses'):
- readline_libs.append('curses')
- elif self.compiler.find_library_file(lib_dirs +
-- ['/usr/lib/termcap'],
-+ [sysroot + '/usr/lib/termcap'],
- 'termcap'):
- readline_libs.append('termcap')
- exts.append( Extension('readline', ['readline.c'],
-- library_dirs=['/usr/lib/termcap'],
-+ library_dirs=[sysroot + '/usr/lib/termcap'],
- extra_link_args=readline_extra_link_args,
- libraries=readline_libs) )
- if platform not in ['mac']:
-@@ -520,20 +491,20 @@
- depends = ['socketmodule.h']) )
- # Detect SSL support for the socket module (via _ssl)
- search_for_ssl_incs_in = [
-- '/usr/local/ssl/include',
-- '/usr/contrib/ssl/include/'
-+ sysroot + '/usr/local/ssl/include',
-+ sysroot + '/usr/contrib/ssl/include/'
- ]
- ssl_incs = find_file('openssl/ssl.h', inc_dirs,
- search_for_ssl_incs_in
- )
- if ssl_incs is not None:
- krb5_h = find_file('krb5.h', inc_dirs,
-- ['/usr/kerberos/include'])
-+ [sysroot + '/usr/kerberos/include'])
- if krb5_h:
- ssl_incs += krb5_h
- ssl_libs = find_library_file(self.compiler, 'ssl',lib_dirs,
-- ['/usr/local/ssl/lib',
-- '/usr/contrib/ssl/lib/'
-+ [sysroot + '/usr/local/ssl/lib',
-+ sysroot + '/usr/contrib/ssl/lib/'
- ] )
-
- if (ssl_incs is not None and
-@@ -612,31 +583,25 @@
-
- # construct a list of paths to look for the header file in on
- # top of the normal inc_dirs.
-- db_inc_paths = [
-- '/usr/include/db4',
-- '/usr/local/include/db4',
-- '/opt/sfw/include/db4',
-- '/sw/include/db4',
-- '/usr/include/db3',
-- '/usr/local/include/db3',
-- '/opt/sfw/include/db3',
-- '/sw/include/db3',
-- ]
-+ db_inc_paths = []
-+ # major number specific paths
-+ for x in (3,4):
-+ db_inc_paths += map(lambda i: i + '/db%d' % x, inc_dirs)
- # 4.x minor number specific paths
- for x in (0,1,2,3,4,5):
-- db_inc_paths.append('/usr/include/db4%d' % x)
-- db_inc_paths.append('/usr/include/db4.%d' % x)
-- db_inc_paths.append('/usr/local/BerkeleyDB.4.%d/include' % x)
-- db_inc_paths.append('/usr/local/include/db4%d' % x)
-- db_inc_paths.append('/pkg/db-4.%d/include' % x)
-- db_inc_paths.append('/opt/db-4.%d/include' % x)
-+ db_inc_paths += map(lambda i: i + '/db%d' % x, inc_dirs)
-+ db_inc_paths += map(lambda i: i + '/db.%d' % x, inc_dirs)
-+ db_inc_paths.append(sysroot + '/usr/local/BerkeleyDB.4.%d/include' % x)
-+ db_inc_paths.append(sysroot + '/usr/local/include/db4%d' % x)
-+ db_inc_paths.append(sysroot + '/pkg/db-4.%d/include' % x)
-+ db_inc_paths.append(sysroot + '/opt/db-4.%d/include' % x)
- # 3.x minor number specific paths
- for x in (3,):
-- db_inc_paths.append('/usr/include/db3%d' % x)
-- db_inc_paths.append('/usr/local/BerkeleyDB.3.%d/include' % x)
-- db_inc_paths.append('/usr/local/include/db3%d' % x)
-- db_inc_paths.append('/pkg/db-3.%d/include' % x)
-- db_inc_paths.append('/opt/db-3.%d/include' % x)
-+ db_inc_paths += map(lambda i: i + '/db3%d' % x, inc_dirs)
-+ db_inc_paths.append(sysroot + '/usr/local/BerkeleyDB.3.%d/include' % x)
-+ db_inc_paths.append(sysroot + '/usr/local/include/db3%d' % x)
-+ db_inc_paths.append(sysroot + '/pkg/db-3.%d/include' % x)
-+ db_inc_paths.append(sysroot + '/opt/db-3.%d/include' % x)
-
- # Add some common subdirectories for Sleepycat DB to the list,
- # based on the standard include directories. This way DB3/4 gets
-@@ -746,13 +711,9 @@
- # We hunt for #define SQLITE_VERSION "n.n.n"
- # We need to find >= sqlite version 3.0.8
- sqlite_incdir = sqlite_libdir = None
-- sqlite_inc_paths = [ '/usr/include',
-- '/usr/include/sqlite',
-- '/usr/include/sqlite3',
-- '/usr/local/include',
-- '/usr/local/include/sqlite',
-- '/usr/local/include/sqlite3',
-- ]
-+ sqlite_inc_paths = inc_dirs
-+ sqlite_inc_paths += map(lambda i: i + '/sqlite', inc_dirs)
-+ sqlite_inc_paths += map(lambda i: i + '/sqlite3', inc_dirs)
- MIN_SQLITE_VERSION_NUMBER = (3, 0, 8)
- MIN_SQLITE_VERSION = ".".join([str(x)
- for x in MIN_SQLITE_VERSION_NUMBER])
-@@ -806,13 +767,13 @@
- '_sqlite/util.c', ]
-
- sqlite_defines = []
-- if sys.platform != "win32":
-+ if self.get_platform() != "win32":
- sqlite_defines.append(('MODULE_NAME', '"sqlite3"'))
- else:
- sqlite_defines.append(('MODULE_NAME', '\\"sqlite3\\"'))
-
-
-- if sys.platform == 'darwin':
-+ if self.get_platform() == 'darwin':
- # In every directory on the search path search for a dynamic
- # library and then a static library, instead of first looking
- # for dynamic libraries on the entiry path.
-@@ -837,7 +798,7 @@
- # accidentally building this module with a later version of the
- # underlying db library. May BSD-ish Unixes incorporate db 1.85
- # symbols into libc and place the include file in /usr/include.
-- f = "/usr/include/db.h"
-+ f = sysroot + "/usr/include/db.h"
- if os.path.exists(f):
- data = open(f).read()
- m = re.search(r"#s*define\s+HASHVERSION\s+2\s*", data)
-@@ -962,7 +923,7 @@
- break
- if version >= version_req:
- if (self.compiler.find_library_file(lib_dirs, 'z')):
-- if sys.platform == "darwin":
-+ if self.get_platform() == "darwin":
- zlib_extra_link_args = ('-Wl,-search_paths_first',)
- else:
- zlib_extra_link_args = ()
-@@ -972,7 +933,7 @@
-
- # Gustavo Niemeyer's bz2 module.
- if (self.compiler.find_library_file(lib_dirs, 'bz2')):
-- if sys.platform == "darwin":
-+ if self.get_platform() == "darwin":
- bz2_extra_link_args = ('-Wl,-search_paths_first',)
- else:
- bz2_extra_link_args = ()
-@@ -1175,7 +1136,7 @@
- # For 8.4a2, the X11 headers are not included. Rather than include a
- # complicated search, this is a hard-coded path. It could bail out
- # if X11 libs are not found...
-- include_dirs.append('/usr/X11R6/include')
-+ include_dirs.append(sysroot + '/usr/X11R6/include')
- frameworks = ['-framework', 'Tcl', '-framework', 'Tk']
-
- ext = Extension('_tkinter', ['_tkinter.c', 'tkappinit.c'],
-@@ -1217,7 +1178,7 @@
- # Check for the include files on Debian and {Free,Open}BSD, where
- # they're put in /usr/include/{tcl,tk}X.Y
- dotversion = version
-- if '.' not in dotversion and "bsd" in sys.platform.lower():
-+ if '.' not in dotversion and "bsd" in self.get_platform().lower():
- # OpenBSD and FreeBSD use Tcl/Tk library names like libtcl83.a,
- # but the include subdirs are named like .../include/tcl8.3.
- dotversion = dotversion[:-1] + '.' + dotversion[-1]
-@@ -1244,19 +1205,19 @@
-
- # Check for various platform-specific directories
- if platform == 'sunos5':
-- include_dirs.append('/usr/openwin/include')
-- added_lib_dirs.append('/usr/openwin/lib')
-- elif os.path.exists('/usr/X11R6/include'):
-- include_dirs.append('/usr/X11R6/include')
-- added_lib_dirs.append('/usr/X11R6/lib64')
-- added_lib_dirs.append('/usr/X11R6/lib')
-- elif os.path.exists('/usr/X11R5/include'):
-- include_dirs.append('/usr/X11R5/include')
-- added_lib_dirs.append('/usr/X11R5/lib')
-+ include_dirs.append(sysroot + '/usr/openwin/include')
-+ added_lib_dirs.append(sysroot + '/usr/openwin/lib')
-+ elif os.path.exists(sysroot + '/usr/X11R6/include'):
-+ include_dirs.append(sysroot + '/usr/X11R6/include')
-+ added_lib_dirs.append(sysroot + '/usr/X11R6/lib64')
-+ added_lib_dirs.append(sysroot + '/usr/X11R6/lib')
-+ elif os.path.exists(sysroot + '/usr/X11R5/include'):
-+ include_dirs.append(sysroot + '/usr/X11R5/include')
-+ added_lib_dirs.append(sysroot + '/usr/X11R5/lib')
- else:
- # Assume default location for X11
-- include_dirs.append('/usr/X11/include')
-- added_lib_dirs.append('/usr/X11/lib')
-+ include_dirs.append(sysroot + '/usr/X11/include')
-+ added_lib_dirs.append(sysroot + '/usr/X11/lib')
-
- # If Cygwin, then verify that X is installed before proceeding
- if platform == 'cygwin':
-@@ -1363,13 +1324,13 @@
- '_ctypes/malloc_closure.c']
- depends = ['_ctypes/ctypes.h']
-
-- if sys.platform == 'darwin':
-+ if self.get_platform() == 'darwin':
- sources.append('_ctypes/darwin/dlfcn_simple.c')
- include_dirs.append('_ctypes/darwin')
- # XXX Is this still needed?
- ## extra_link_args.extend(['-read_only_relocs', 'warning'])
-
-- elif sys.platform == 'sunos5':
-+ elif self.get_platform() == 'sunos5':
- # XXX This shouldn't be necessary; it appears that some
- # of the assembler code is non-PIC (i.e. it has relocations
- # when it shouldn't. The proper fix would be to rewrite
diff --git a/data/python/distutils.diff b/data/python/distutils.diff
deleted file mode 100644
index dacfdee33..000000000
--- a/data/python/distutils.diff
+++ /dev/null
@@ -1,115 +0,0 @@
-diff -ru BuildPython-2.5.1/Lib/distutils/util.py Python-2.5.1/Lib/distutils/util.py
---- BuildPython-2.5.1/Lib/distutils/util.py 2006-05-23 21:54:23.000000000 +0000
-+++ Python-2.5.1/Lib/distutils/util.py 2008-01-09 07:47:28.000000000 +0000
-@@ -13,110 +13,7 @@
- from distutils import log
-
- def get_platform ():
-- """Return a string that identifies the current platform. This is used
-- mainly to distinguish platform-specific build directories and
-- platform-specific built distributions. Typically includes the OS name
-- and version and the architecture (as supplied by 'os.uname()'),
-- although the exact information included depends on the OS; eg. for IRIX
-- the architecture isn't particularly important (IRIX only runs on SGI
-- hardware), but for Linux the kernel version isn't particularly
-- important.
--
-- Examples of returned values:
-- linux-i586
-- linux-alpha (?)
-- solaris-2.6-sun4u
-- irix-5.3
-- irix64-6.2
--
-- For non-POSIX platforms, currently just returns 'sys.platform'.
-- """
-- if os.name != "posix" or not hasattr(os, 'uname'):
-- # XXX what about the architecture? NT is Intel or Alpha,
-- # Mac OS is M68k or PPC, etc.
-- return sys.platform
--
-- # Try to distinguish various flavours of Unix
--
-- (osname, host, release, version, machine) = os.uname()
--
-- # Convert the OS name to lowercase, remove '/' characters
-- # (to accommodate BSD/OS), and translate spaces (for "Power Macintosh")
-- osname = string.lower(osname)
-- osname = string.replace(osname, '/', '')
-- machine = string.replace(machine, ' ', '_')
-- machine = string.replace(machine, '/', '-')
--
-- if osname[:5] == "linux":
-- # At least on Linux/Intel, 'machine' is the processor --
-- # i386, etc.
-- # XXX what about Alpha, SPARC, etc?
-- return "%s-%s" % (osname, machine)
-- elif osname[:5] == "sunos":
-- if release[0] >= "5": # SunOS 5 == Solaris 2
-- osname = "solaris"
-- release = "%d.%s" % (int(release[0]) - 3, release[2:])
-- # fall through to standard osname-release-machine representation
-- elif osname[:4] == "irix": # could be "irix64"!
-- return "%s-%s" % (osname, release)
-- elif osname[:3] == "aix":
-- return "%s-%s.%s" % (osname, version, release)
-- elif osname[:6] == "cygwin":
-- osname = "cygwin"
-- rel_re = re.compile (r'[\d.]+')
-- m = rel_re.match(release)
-- if m:
-- release = m.group()
-- elif osname[:6] == "darwin":
-- #
-- # For our purposes, we'll assume that the system version from
-- # distutils' perspective is what MACOSX_DEPLOYMENT_TARGET is set
-- # to. This makes the compatibility story a bit more sane because the
-- # machine is going to compile and link as if it were
-- # MACOSX_DEPLOYMENT_TARGET.
-- from distutils.sysconfig import get_config_vars
-- cfgvars = get_config_vars()
--
-- macver = os.environ.get('MACOSX_DEPLOYMENT_TARGET')
-- if not macver:
-- macver = cfgvars.get('MACOSX_DEPLOYMENT_TARGET')
--
-- if not macver:
-- # Get the system version. Reading this plist is a documented
-- # way to get the system version (see the documentation for
-- # the Gestalt Manager)
-- try:
-- f = open('/System/Library/CoreServices/SystemVersion.plist')
-- except IOError:
-- # We're on a plain darwin box, fall back to the default
-- # behaviour.
-- pass
-- else:
-- m = re.search(
-- r'<key>ProductUserVisibleVersion</key>\s*' +
-- r'<string>(.*?)</string>', f.read())
-- f.close()
-- if m is not None:
-- macver = '.'.join(m.group(1).split('.')[:2])
-- # else: fall back to the default behaviour
--
-- if macver:
-- from distutils.sysconfig import get_config_vars
-- release = macver
-- osname = "macosx"
--
--
-- if (release + '.') < '10.4.' and \
-- get_config_vars().get('UNIVERSALSDK', '').strip():
-- # The universal build will build fat binaries, but not on
-- # systems before 10.4
-- machine = 'fat'
--
-- elif machine in ('PowerPC', 'Power_Macintosh'):
-- # Pick a sane name for the PPC architecture.
-- machine = 'ppc'
--
-- return "%s-%s-%s" % (osname, release, machine)
-+ return 'darwin-10.5-arm'
-
- # get_platform ()
-
diff --git a/data/python/dylib.diff b/data/python/dylib.diff
deleted file mode 100644
index 979925d4a..000000000
--- a/data/python/dylib.diff
+++ /dev/null
@@ -1,33 +0,0 @@
-diff -ru Python-2.5.1/Python/dynload_shlib.c Python-2.5.1+iPhone/Python/dynload_shlib.c
---- Python-2.5.1/Python/dynload_shlib.c 2006-01-04 01:30:17.000000000 +0000
-+++ Python-2.5.1+iPhone/Python/dynload_shlib.c 2008-01-09 10:04:49.000000000 +0000
-@@ -40,11 +40,14 @@
- {".pyd", "rb", C_EXTENSION},
- {".dll", "rb", C_EXTENSION},
- #else
--#ifdef __VMS
-+#if defined(__VMS)
- {".exe", "rb", C_EXTENSION},
- {".EXE", "rb", C_EXTENSION},
- {"module.exe", "rb", C_EXTENSION},
- {"MODULE.EXE", "rb", C_EXTENSION},
-+#elif defined(__APPLE__)
-+ {".dylib", "rb", C_EXTENSION},
-+ {"module.dylib", "rb", C_EXTENSION},
- #else
- {".so", "rb", C_EXTENSION},
- {"module.so", "rb", C_EXTENSION},
-diff -ru Python-2.5.1/configure.in Python-2.5.1+iPhone/configure.in
---- Python-2.5.1/configure.in 2007-03-12 10:50:51.000000000 +0000
-+++ Python-2.5.1+iPhone/configure.in 2008-01-09 10:27:52.000000000 +0000
-@@ -636,8 +638,8 @@
- RUNSHARED=LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}
- INSTSONAME="$LDLIBRARY".$SOVERSION
- ;;
-- Linux*|GNU*|NetBSD*|FreeBSD*|DragonFly*)
-- LDLIBRARY='libpython$(VERSION).so'
-+ Linux*|GNU*|NetBSD*|FreeBSD*|DragonFly*|Darwin*)
-+ LDLIBRARY='libpython$(VERSION)'"${SO-so}"
- BLDLIBRARY='-L. -lpython$(VERSION)'
- RUNSHARED=LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}
- case $ac_sys_system in
diff --git a/data/python/environ.diff b/data/python/environ.diff
deleted file mode 100644
index 9e011b5dc..000000000
--- a/data/python/environ.diff
+++ /dev/null
@@ -1,35 +0,0 @@
-diff -ru Python-2.5.1/Misc/setuid-prog.c Python-2.5.1+iPhone/Misc/setuid-prog.c
---- Python-2.5.1/Misc/setuid-prog.c 1998-09-10 20:18:09.000000000 +0000
-+++ Python-2.5.1+iPhone/Misc/setuid-prog.c 2008-04-13 02:50:37.000000000 +0000
-@@ -102,9 +102,8 @@
- clean_environ(void)
- {
- char **p;
-- extern char **environ;
-
-- for (p = environ; *p; p++) {
-+ for (p = _NSGetEnviron(); *p; p++) {
- if (strncmp(*p, "LD_", 3) == 0)
- **p = 'X';
- else if (strncmp(*p, "_RLD", 4) == 0)
-diff -ru Python-2.5.1/Modules/posixmodule.c Python-2.5.1+iPhone/Modules/posixmodule.c
---- Python-2.5.1/Modules/posixmodule.c 2007-04-04 18:30:56.000000000 +0000
-+++ Python-2.5.1+iPhone/Modules/posixmodule.c 2008-04-29 10:50:27.000000000 +0000
-@@ -339,7 +339,7 @@
- #endif
-
- /* Return a dictionary corresponding to the POSIX environment table */
--#ifdef WITH_NEXT_FRAMEWORK
-+#if 1
- /* On Darwin/MacOSX a shared library or framework has no access to
- ** environ directly, we must obtain it with _NSGetEnviron().
- */
-@@ -357,7 +357,7 @@
- d = PyDict_New();
- if (d == NULL)
- return NULL;
--#ifdef WITH_NEXT_FRAMEWORK
-+#if 1
- if (environ == NULL)
- environ = *_NSGetEnviron();
- #endif
diff --git a/data/python/framework.diff b/data/python/framework.diff
deleted file mode 100644
index 2593a590c..000000000
--- a/data/python/framework.diff
+++ /dev/null
@@ -1,28 +0,0 @@
-diff -r -u Python-2.5.1/Mac/Makefile.in Python-2.5.1+iPhone/Mac/Makefile.in
---- Python-2.5.1/Mac/Makefile.in 2006-06-11 20:23:29.000000000 +0000
-+++ Python-2.5.1+iPhone/Mac/Makefile.in 2008-01-09 11:32:54.000000000 +0000
-@@ -223,7 +223,6 @@
- done
-
-
-- $(RUNSHARED) $(BUILDPYTHON) $(CACHERSRC) -v $(DESTDIR)$(MACLIBDEST) $(DESTDIR)$(MACTOOLSDEST)
- $(RUNSHARED) $(BUILDPYTHON) -Wi -tt $(compileall) -d $(MACTOOLSDEST) -x badsyntax $(DESTDIR)$(MACTOOLSDEST)
- $(RUNSHARED) $(BUILDPYTHON) -O -Wi -tt $(compileall) -d $(MACTOOLSDEST) -x badsyntax $(DESTDIR)$(MACTOOLSDEST)
-
-diff -r -u Python-2.5.1/Makefile.pre.in Python-2.5.1+iPhone/Makefile.pre.in
---- Python-2.5.1/Makefile.pre.in 2006-12-08 20:46:13.000000000 +0000
-+++ Python-2.5.1+iPhone/Makefile.pre.in 2008-01-09 11:34:00.000000000 +0000
-@@ -391,8 +391,11 @@
- -compatibility_version $(VERSION) \
- -current_version $(VERSION); \
- else \
-- libtool -o $(LDLIBRARY) -dynamic $(OTHER_LIBTOOL_OPT) $(LIBRARY) \
-- @LIBTOOL_CRUFT@ ;\
-+ $(CC) -o $(LDLIBRARY) -arch_only arm -dynamiclib \
-+ -all_load $(LIBRARY) -Wl,-single_module \
-+ -install_name $(PYTHONFRAMEWORKINSTALLDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK) \
-+ -compatibility_version $(VERSION) \
-+ -current_version $(VERSION); \
- fi
- $(INSTALL) -d -m $(DIRMODE) \
- $(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/Resources/English.lproj
diff --git a/data/python/gestalt.diff b/data/python/gestalt.diff
deleted file mode 100644
index febf9c32b..000000000
--- a/data/python/gestalt.diff
+++ /dev/null
@@ -1,25 +0,0 @@
-diff -ru Python-2.5.1/Lib/ctypes/__init__.py Python-2.5.1+iPhone/Lib/ctypes/__init__.py
---- Python-2.5.1/Lib/ctypes/__init__.py 2007-03-09 20:21:16.000000000 +0000
-+++ Python-2.5.1+iPhone/Lib/ctypes/__init__.py 2008-03-08 20:35:54.000000000 +0000
-@@ -24,19 +24,13 @@
-
- DEFAULT_MODE = RTLD_LOCAL
- if _os.name == "posix" and _sys.platform == "darwin":
-- import gestalt
-+ import platform
-
-- # gestalt.gestalt("sysv") returns the version number of the
-- # currently active system file as BCD.
-- # On OS X 10.4.6 -> 0x1046
-- # On OS X 10.2.8 -> 0x1028
-- # See also http://www.rgaros.nl/gestalt/
-- #
- # On OS X 10.3, we use RTLD_GLOBAL as default mode
- # because RTLD_LOCAL does not work at least on some
- # libraries.
-
-- if gestalt.gestalt("sysv") < 0x1040:
-+ if int(platform.release().split('.')[0]) < 8:
- DEFAULT_MODE = RTLD_GLOBAL
-
- from _ctypes import FUNCFLAG_CDECL as _FUNCFLAG_CDECL, \
diff --git a/data/python/longlong.diff b/data/python/longlong.diff
deleted file mode 100644
index 82e339059..000000000
--- a/data/python/longlong.diff
+++ /dev/null
@@ -1,28 +0,0 @@
-diff -ru Python-2.5.1/Modules/_ctypes/cfield.c Python-2.5.1+iPhone/Modules/_ctypes/cfield.c
---- Python-2.5.1/Modules/_ctypes/cfield.c 2007-03-22 19:43:37.000000000 +0000
-+++ Python-2.5.1+iPhone/Modules/_ctypes/cfield.c 2008-03-08 21:04:51.000000000 +0000
-@@ -1538,20 +1538,13 @@
- { 'H', H_set, H_get, &ffi_type_ushort, H_set_sw, H_get_sw},
- { 'i', i_set, i_get, &ffi_type_sint, i_set_sw, i_get_sw},
- { 'I', I_set, I_get, &ffi_type_uint, I_set_sw, I_get_sw},
--/* XXX Hm, sizeof(int) == sizeof(long) doesn't hold on every platform */
--/* As soon as we can get rid of the type codes, this is no longer a problem */
--#if SIZEOF_LONG == 4
-- { 'l', l_set, l_get, &ffi_type_sint, l_set_sw, l_get_sw},
-- { 'L', L_set, L_get, &ffi_type_uint, L_set_sw, L_get_sw},
--#elif SIZEOF_LONG == 8
- { 'l', l_set, l_get, &ffi_type_slong, l_set_sw, l_get_sw},
- { 'L', L_set, L_get, &ffi_type_ulong, L_set_sw, L_get_sw},
--#else
--# error
--#endif
-+/* XXX Hm, sizeof(long) == sizeof(int64_t) doesn't hold on every platform */
-+/* As soon as we can get rid of the type codes, this is no longer a problem */
- #ifdef HAVE_LONG_LONG
-- { 'q', q_set, q_get, &ffi_type_slong, q_set_sw, q_get_sw},
-- { 'Q', Q_set, Q_get, &ffi_type_ulong, Q_set_sw, Q_get_sw},
-+ { 'q', q_set, q_get, &ffi_type_sint64, q_set_sw, q_get_sw},
-+ { 'Q', Q_set, Q_get, &ffi_type_uint64, Q_set_sw, Q_get_sw},
- #endif
- { 'P', P_set, P_get, &ffi_type_pointer},
- { 'z', z_set, z_get, &ffi_type_pointer},
diff --git a/data/python/make.sh b/data/python/make.sh
index 059937971..e4ba3d1d9 100644
--- a/data/python/make.sh
+++ b/data/python/make.sh
@@ -1,23 +1,8 @@
pkg:extract
cd *
-./configure --prefix=/usr
-make
-cp -a Parser/pgen{,_}
-cp -a python{,_}
-sleep 10
+./configure
+make -j8
pkg:patch
-autoconf
-SO=.dylib CXX=${PKG_TARG}-g++ pkg:configure --enable-shared --with-system-ffi --with-signal-module --disable-toolbox-glue
-make clean
-rm libpython2.5.a
-#make Include/graminit.h Python/graminit.c CC=gcc BASECFLAGS=
-#cp -a Parser/pgen pgen-host
-#make clean
-make python AR=${PKG_TARG}-ar
-sleep 2
-touch python_
-make BUILDPYTHON=python_
-pkg:install BUILDPYTHON=python_
-pkg: rm -f /usr/bin/python{,2.5}
-pkg: cp -fa python /usr/bin/python2.5
-pkg: ln -s python2.5 /usr/bin/python
+CFLAGS='-Wno-format' pkg:configure --disable-ipv6 ac_cv_file__dev_ptmx=yes ac_cv_file__dev_ptc=no ac_cv_have_long_long_format=yes --disable-toolbox-glue
+make -j8
+pkg:install
diff --git a/data/python/modules.diff b/data/python/modules.diff
deleted file mode 100644
index f5b9985b6..000000000
--- a/data/python/modules.diff
+++ /dev/null
@@ -1,32 +0,0 @@
-diff -ru Python-2.5.1/setup.py Python-2.5.1+iPhone/setup.py
---- Python-2.5.1/setup.py 2007-02-14 12:53:41.000000000 +0000
-+++ Python-2.5.1+iPhone/setup.py 2008-01-09 12:43:58.000000000 +0000
-@@ -460,8 +430,7 @@
- # 64-bit platforms.
- exts.append( Extension('audioop', ['audioop.c']) )
-
-- # Disabled on 64-bit platforms
-- if sys.maxint != 9223372036854775807L:
-+ if True:
- # Operations on images
- exts.append( Extension('imageop', ['imageop.c']) )
- # Read SGI RGB image files (but coded portably)
-@@ -606,7 +577,7 @@
- # a release. Most open source OSes come with one or more
- # versions of BerkeleyDB already installed.
-
-- max_db_ver = (4, 5)
-+ max_db_ver = (4, 6)
- min_db_ver = (3, 3)
- db_setup_debug = False # verbose debug prints from this script?
-
-@@ -1025,8 +996,7 @@
- exts.append(Extension('_codecs_' + loc,
- ['cjkcodecs/_codecs_%s.c' % loc]))
-
-- # Dynamic loading module
-- if sys.maxint == 0x7fffffff:
-+ if True:
- # This requires sizeof(int) == sizeof(long) == sizeof(char*)
- dl_inc = find_file('dlfcn.h', [], inc_dirs)
- if (dl_inc is not None) and (platform not in ['atheos']):
diff --git a/data/python/starpython.diff b/data/python/starpython.diff
new file mode 100644
index 000000000..8750b00e7
--- /dev/null
+++ b/data/python/starpython.diff
@@ -0,0 +1,152 @@
+Only in Python-2.7.15+iPhone/Lib: _scproxy.py
+diff -ur Python-2.7.15/Makefile.pre.in Python-2.7.15+iPhone/Makefile.pre.in
+--- Python-2.7.15/Makefile.pre.in 2018-04-29 12:47:33.000000000 -1000
++++ Python-2.7.15+iPhone/Makefile.pre.in 2018-09-04 18:39:57.000000000 -1000
+@@ -1131,28 +1131,30 @@
+ $(INSTALL_DATA) $(srcdir)/Modules/xxmodule.c \
+ $(DESTDIR)$(LIBDEST)/distutils/tests ; \
+ fi
+- PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \
+- $(PYTHON_FOR_BUILD) -Wi -tt $(DESTDIR)$(LIBDEST)/compileall.py \
+- -d $(LIBDEST) -f \
+- -x 'bad_coding|badsyntax|site-packages|lib2to3/tests/data' \
+- $(DESTDIR)$(LIBDEST)
+- PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \
+- $(PYTHON_FOR_BUILD) -Wi -tt -O $(DESTDIR)$(LIBDEST)/compileall.py \
+- -d $(LIBDEST) -f \
+- -x 'bad_coding|badsyntax|site-packages|lib2to3/tests/data' \
+- $(DESTDIR)$(LIBDEST)
+- -PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \
+- $(PYTHON_FOR_BUILD) -Wi -t $(DESTDIR)$(LIBDEST)/compileall.py \
+- -d $(LIBDEST)/site-packages -f \
+- -x badsyntax $(DESTDIR)$(LIBDEST)/site-packages
+- -PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \
+- $(PYTHON_FOR_BUILD) -Wi -t -O $(DESTDIR)$(LIBDEST)/compileall.py \
+- -d $(LIBDEST)/site-packages -f \
+- -x badsyntax $(DESTDIR)$(LIBDEST)/site-packages
+- -PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \
+- $(PYTHON_FOR_BUILD) -m lib2to3.pgen2.driver $(DESTDIR)$(LIBDEST)/lib2to3/Grammar.txt
+- -PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \
+- $(PYTHON_FOR_BUILD) -m lib2to3.pgen2.driver $(DESTDIR)$(LIBDEST)/lib2to3/PatternGrammar.txt
++# compile use host python, which may not be 2.7.9, which lead to fail.
++# So, we not compile, by srplab
++# PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \
++# $(PYTHON_FOR_BUILD) -Wi -tt $(DESTDIR)$(LIBDEST)/compileall.py \
++# -d $(LIBDEST) -f \
++# -x 'bad_coding|badsyntax|site-packages|lib2to3/tests/data' \
++# $(DESTDIR)$(LIBDEST)
++# PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \
++# $(PYTHON_FOR_BUILD) -Wi -tt -O $(DESTDIR)$(LIBDEST)/compileall.py \
++# -d $(LIBDEST) -f \
++# -x 'bad_coding|badsyntax|site-packages|lib2to3/tests/data' \
++# $(DESTDIR)$(LIBDEST)
++# -PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \
++# $(PYTHON_FOR_BUILD) -Wi -t $(DESTDIR)$(LIBDEST)/compileall.py \
++# -d $(LIBDEST)/site-packages -f \
++# -x badsyntax $(DESTDIR)$(LIBDEST)/site-packages
++# -PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \
++# $(PYTHON_FOR_BUILD) -Wi -t -O $(DESTDIR)$(LIBDEST)/compileall.py \
++# -d $(LIBDEST)/site-packages -f \
++# -x badsyntax $(DESTDIR)$(LIBDEST)/site-packages
++# -PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \
++# $(PYTHON_FOR_BUILD) -m lib2to3.pgen2.driver $(DESTDIR)$(LIBDEST)/lib2to3/Grammar.txt
++# -PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \
++# $(PYTHON_FOR_BUILD) -m lib2to3.pgen2.driver $(DESTDIR)$(LIBDEST)/lib2to3/PatternGrammar.txt
+
+ # Create the PLATDIR source directory, if one wasn't distributed..
+ $(srcdir)/Lib/$(PLATDIR):
+Only in Python-2.7.15+iPhone: Makefile.pre.in.orig
+diff -ur Python-2.7.15/Python/dynload_shlib.c Python-2.7.15+iPhone/Python/dynload_shlib.c
+--- Python-2.7.15/Python/dynload_shlib.c 2018-04-29 12:47:33.000000000 -1000
++++ Python-2.7.15+iPhone/Python/dynload_shlib.c 2018-09-04 18:39:57.000000000 -1000
+@@ -84,6 +84,14 @@
+ PyOS_snprintf(funcname, sizeof(funcname),
+ LEAD_UNDERSCORE "init%.200s", shortname);
+
++ /* On IOS, dlopen crash as soon as we try to open one of our library.
++ * Instead, we have done a redirection of linking to convert our .so into a
++ * .a. Then the main executable is linked with theses symbol. So, instead
++ * of trying to dlopen, directly do the dlsym.
++ * -- Mathieu
++ */
++ return (dl_funcptr) dlsym(RTLD_DEFAULT, funcname);
++#if 0
+ if (fp != NULL) {
+ int i;
+ struct stat statb;
+@@ -140,4 +148,5 @@
+ handles[nhandles++].handle = handle;
+ p = (dl_funcptr) dlsym(handle, funcname);
+ return p;
++#endif
+ }
+diff -ur Python-2.7.15/Python/pythonrun.c Python-2.7.15+iPhone/Python/pythonrun.c
+--- Python-2.7.15/Python/pythonrun.c 2018-04-29 12:47:33.000000000 -1000
++++ Python-2.7.15+iPhone/Python/pythonrun.c 2018-09-04 18:39:57.000000000 -1000
+@@ -287,8 +287,10 @@
+ _PyGILState_Init(interp, tstate);
+ #endif /* WITH_THREAD */
+
++#if 0
+ if (!Py_NoSiteFlag)
+ initsite(); /* Module site */
++#endif
+
+ if ((p = Py_GETENV("PYTHONIOENCODING")) && *p != '\0') {
+ p = icodeset = codeset = strdup(p);
+Only in Python-2.7.15+iPhone/Python: pythonrun.c.orig
+Only in Python-2.7.15+iPhone: config.site
+diff -ur Python-2.7.15/configure Python-2.7.15+iPhone/configure
+--- Python-2.7.15/configure 2018-04-29 12:47:33.000000000 -1000
++++ Python-2.7.15+iPhone/configure 2018-09-04 18:39:57.000000000 -1000
+@@ -3287,6 +3287,9 @@
+ *-*-cygwin*)
+ ac_sys_system=Cygwin
+ ;;
++ *-*-darwin*)
++ ac_sys_system=Darwin
++ ;;
+ *)
+ # for now, limit cross builds to known configurations
+ MACHDEP="unknown"
+@@ -3333,6 +3336,15 @@
+ *-*-cygwin*)
+ _host_cpu=
+ ;;
++ *-*-darwin*)
++ case "$host_cpu" in
++ arm*)
++ _host_cpu=arm
++ ;;
++ *)
++ _host_cpu=$host_cpu
++ esac
++ ;;
+ *)
+ # for now, limit cross builds to known configurations
+ MACHDEP="unknown"
+Only in Python-2.7.15+iPhone: configure.orig
+diff -ur Python-2.7.15/setup.py Python-2.7.15+iPhone/setup.py
+--- Python-2.7.15/setup.py 2018-04-29 12:47:33.000000000 -1000
++++ Python-2.7.15+iPhone/setup.py 2018-09-04 18:40:07.000000000 -1000
+@@ -188,7 +188,7 @@
+ ext_map = dict((ext.name, i) for i, ext in enumerate(extensions))
+ if "_ctypes" in ext_map:
+ ctypes = extensions.pop(ext_map["_ctypes"])
+- extensions.append(ctypes)
++ # extensions.append(ctypes) # not build ctypes, by srplab
+ self.extensions = extensions
+
+ # Fix up the autodetected modules, prefixing all the source files
+@@ -1433,8 +1433,8 @@
+ missing.append('zlib')
+ else:
+ missing.append('zlib')
+- else:
+- missing.append('zlib')
++ #else:
++ # missing.append('zlib')
+
+ # Helper module for various ascii-encoders. Uses zlib for an optimized
+ # crc32 if we have it. Otherwise binascii uses its own.
+Only in Python-2.7.15+iPhone: setup.py.orig
diff --git a/data/python/test.diff b/data/python/test.diff
deleted file mode 100644
index e2258207b..000000000
--- a/data/python/test.diff
+++ /dev/null
@@ -1,17 +0,0 @@
-diff -ru Python-2.5.1/Makefile.pre.in Python-2.5.1+iPhone/Makefile.pre.in
---- Python-2.5.1/Makefile.pre.in 2006-12-08 20:46:13.000000000 +0000
-+++ Python-2.5.1+iPhone/Makefile.pre.in 2008-01-09 08:21:39.000000000 +0000
-@@ -775,11 +775,11 @@
- PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \
- ./$(BUILDPYTHON) -Wi -tt $(DESTDIR)$(LIBDEST)/compileall.py \
- -d $(LIBDEST) -f \
-- -x 'bad_coding|badsyntax|site-packages' $(DESTDIR)$(LIBDEST)
-+ -x 'bad_coding|badsyntax|site-packages|test' $(DESTDIR)$(LIBDEST)
- PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \
- ./$(BUILDPYTHON) -Wi -tt -O $(DESTDIR)$(LIBDEST)/compileall.py \
- -d $(LIBDEST) -f \
-- -x 'bad_coding|badsyntax|site-packages' $(DESTDIR)$(LIBDEST)
-+ -x 'bad_coding|badsyntax|site-packages|test' $(DESTDIR)$(LIBDEST)
- -PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \
- ./$(BUILDPYTHON) -Wi -t $(DESTDIR)$(LIBDEST)/compileall.py \
- -d $(LIBDEST)/site-packages -f \
diff --git a/data/python/timestamp.diff b/data/python/timestamp.diff
index 76642259f..cebeb8131 100644
--- a/data/python/timestamp.diff
+++ b/data/python/timestamp.diff
@@ -1,6 +1,6 @@
-diff -ru Python-2.5.1/Modules/getbuildinfo.c Python-2.5.1+iPhone/Modules/getbuildinfo.c
---- Python-2.5.1/Modules/getbuildinfo.c 2006-01-18 09:13:51.000000000 +0000
-+++ Python-2.5.1+iPhone/Modules/getbuildinfo.c 2008-06-19 08:00:45.000000000 +0000
+diff -ur Python-2.7.15/Modules/getbuildinfo.c Python-2.7.15+iPhone/Modules/getbuildinfo.c
+--- Python-2.7.15/Modules/getbuildinfo.c 2018-04-29 12:47:33.000000000 -1000
++++ Python-2.7.15+iPhone/Modules/getbuildinfo.c 2018-09-04 16:04:45.000000000 -1000
@@ -5,20 +5,12 @@
#endif
@@ -20,5 +20,5 @@ diff -ru Python-2.5.1/Modules/getbuildinfo.c Python-2.5.1+iPhone/Modules/getbuil
#endif
-#endif
- #ifdef SUBWCREV
- #define SVNVERSION "$WCRANGE$$WCMODS?M:$"
+ /* XXX Only unix build process has been tested */
+ #ifndef GITVERSION
diff --git a/data/python/zz-setup.diff b/data/python/zz-setup.diff
new file mode 100644
index 000000000..6116ff998
--- /dev/null
+++ b/data/python/zz-setup.diff
@@ -0,0 +1,175 @@
+diff -ur Python-2.7.15/setup.py Python-2.7.15+iPhone/setup.py
+--- Python-2.7.15/setup.py 2018-04-29 12:47:33.000000000 -1000
++++ Python-2.7.15+iPhone/setup.py 2018-09-04 21:49:58.000000000 -1000
+@@ -18,6 +18,7 @@
+ from distutils.spawn import find_executable
+
+ cross_compiling = "_PYTHON_HOST_PLATFORM" in os.environ
++sysroot = os.environ['PKG_ROOT']
+
+ def get_platform():
+ # cross build
+@@ -49,9 +50,7 @@
+ """
+ cflags = sysconfig.get_config_var('CFLAGS')
+ m = re.search(r'-isysroot\s+(\S+)', cflags)
+- if m is None:
+- sysroot = '/'
+- else:
++ if m is not None:
+ sysroot = m.group(1)
+ return sysroot
+
+@@ -80,6 +79,8 @@
+ # system, but with only header files and libraries.
+ sysroot = macosx_sdk_root()
+
++ sysroot = os.environ['PKG_ROOT']
++
+ # Check the standard locations
+ for dir in std_dirs:
+ f = os.path.join(dir, filename)
+@@ -110,6 +111,8 @@
+ if host_platform == 'darwin':
+ sysroot = macosx_sdk_root()
+
++ sysroot = os.environ['PKG_ROOT']
++
+ # Check whether the found file is in one of the standard directories
+ dirname = os.path.dirname(result)
+ for p in std_dirs:
+@@ -461,6 +464,7 @@
+ if cross_compiling:
+ self.add_gcc_paths()
+ self.add_multiarch_paths()
++ sysroot = os.environ['PKG_ROOT']
+
+ # Add paths specified in the environment variables LDFLAGS and
+ # CPPFLAGS for header and library files.
+@@ -497,7 +501,8 @@
+ add_dir_to_list(dir_list, directory)
+
+ if os.path.normpath(sys.prefix) != '/usr' \
+- and not sysconfig.get_config_var('PYTHONFRAMEWORK'):
++ and not sysconfig.get_config_var('PYTHONFRAMEWORK') \
++ and not cross_compiling:
+ # OSX note: Don't add LIBDIR and INCLUDEDIR to building a framework
+ # (PYTHONFRAMEWORK is set) to avoid # linking problems when
+ # building a framework with different architectures than
+@@ -519,12 +524,12 @@
+ lib_dirs = self.compiler.library_dirs[:]
+ if not cross_compiling:
+ for d in (
+- '/usr/include',
++ sysroot + '/usr/include',
+ ):
+ add_dir_to_list(inc_dirs, d)
+ for d in (
+- '/lib64', '/usr/lib64',
+- '/lib', '/usr/lib',
++ sysroot + '/lib64', sysroot + '/usr/lib64',
++ sysroot + '/lib', sysroot + '/usr/lib',
+ ):
+ add_dir_to_list(lib_dirs, d)
+ exts = []
+@@ -808,21 +813,22 @@
+ depends=['socketmodule.h'],
+ libraries=math_libs) )
+ # Detect SSL support for the socket module (via _ssl)
++ sysroot = os.environ['PKG_ROOT']
+ search_for_ssl_incs_in = [
+- '/usr/local/ssl/include',
+- '/usr/contrib/ssl/include/'
++ sysroot + '/usr/local/ssl/include',
++ sysroot + '/usr/contrib/ssl/include/'
+ ]
+ ssl_incs = find_file('openssl/ssl.h', inc_dirs,
+ search_for_ssl_incs_in
+ )
+ if ssl_incs is not None:
+ krb5_h = find_file('krb5.h', inc_dirs,
+- ['/usr/kerberos/include'])
++ [sysroot + '/usr/kerberos/include'])
+ if krb5_h:
+ ssl_incs += krb5_h
+ ssl_libs = find_library_file(self.compiler, 'ssl',lib_dirs,
+- ['/usr/local/ssl/lib',
+- '/usr/contrib/ssl/lib/'
++ [sysroot + '/usr/local/ssl/lib',
++ sysroot + '/usr/contrib/ssl/lib/'
+ ] )
+
+ if (ssl_incs is not None and
+@@ -944,16 +950,17 @@
+
+ # construct a list of paths to look for the header file in on
+ # top of the normal inc_dirs.
++ sysroot = os.environ['PKG_ROOT']
+ db_inc_paths = [
+- '/usr/include/db4',
+- '/usr/local/include/db4',
+- '/opt/sfw/include/db4',
+- '/usr/include/db3',
+- '/usr/local/include/db3',
+- '/opt/sfw/include/db3',
++ sysroot + '/usr/include/db4',
++ sysroot + '/usr/local/include/db4',
++ sysroot + '/opt/sfw/include/db4',
++ sysroot + '/usr/include/db3',
++ sysroot + '/usr/local/include/db3',
++ sysroot + '/opt/sfw/include/db3',
+ # Fink defaults (http://fink.sourceforge.net/)
+- '/sw/include/db4',
+- '/sw/include/db3',
++ sysroot + '/sw/include/db4',
++ sysroot + '/sw/include/db3',
+ ]
+ # 4.x minor number specific paths
+ for x in gen_db_minor_ver_nums(4):
+@@ -1133,8 +1140,7 @@
+ # Scan the default include directories before the SQLite specific
+ # ones. This allows one to override the copy of sqlite on OSX,
+ # where /usr/include contains an old version of sqlite.
+- if host_platform == 'darwin':
+- sysroot = macosx_sdk_root()
++ sysroot = os.environ['PKG_ROOT']
+
+ for d_ in inc_dirs + sqlite_inc_paths:
+ d = d_
+@@ -1231,7 +1237,6 @@
+
+ if host_platform == 'darwin':
+ if is_macosx_sdk_path(f):
+- sysroot = macosx_sdk_root()
+ f = os.path.join(sysroot, f[1:])
+
+ if os.path.exists(f) and not db_incs:
+@@ -1797,7 +1802,6 @@
+ join(os.getenv('HOME'), '/Library/Frameworks')
+ ]
+
+- sysroot = macosx_sdk_root()
+
+ # Find the directory that contains the Tcl.framework and Tk.framework
+ # bundles.
+@@ -1843,6 +1847,7 @@
+ cflags = sysconfig.get_config_vars('CFLAGS')[0]
+ archs = re.findall('-arch\s+(\w+)', cflags)
+
++ sysroot = os.environ['PKG_ROOT']
+ if is_macosx_sdk_path(F):
+ fp = os.popen("file %s/Tk.framework/Tk | grep 'for architecture'"%(os.path.join(sysroot, F[1:]),))
+ else:
+@@ -2117,10 +2122,11 @@
+ if not '--with-system-ffi' in sysconfig.get_config_var("CONFIG_ARGS"):
+ return
+
++ sysroot = os.environ['PKG_ROOT']
+ if host_platform == 'darwin':
+ # OS X 10.5 comes with libffi.dylib; the include files are
+ # in /usr/include/ffi
+- inc_dirs.append('/usr/include/ffi')
++ inc_dirs.append(sysroot + '/usr/include/ffi')
+
+ ffi_inc = [sysconfig.get_config_var("LIBFFI_INCLUDEDIR")]
+ if not ffi_inc or ffi_inc[0] == '':
diff --git a/data/rdesktop/make.sh b/data/rdesktop/make.sh
index 4bb8c7f34..1fae0d2f8 100644
--- a/data/rdesktop/make.sh
+++ b/data/rdesktop/make.sh
@@ -1,4 +1,5 @@
pkg:setup
+cp ${PKG_BASE}/config.sub .
pkg:configure --with-openssl="$(PKG_DEST_ openssl)/usr" --with-sound=no
-make
+make -j8
pkg:install
diff --git a/data/readline/make.sh b/data/readline/make.sh
index de036d83d..81827e1ae 100644
--- a/data/readline/make.sh
+++ b/data/readline/make.sh
@@ -8,9 +8,11 @@ done
pkg:patch
autoconf
pkg:configure ac_cv_func_strcoll_works=yes bash_cv_func_sigsetjmp=present bash_cv_func_ctype_nonascii=no bash_cv_must_reinstall_sighandlers=no bash_cv_func_strcoll_broken=yes
-make CFLAGS='-O2 -mthumb'
+make CFLAGS='-O2'
pkg:install
pkg: ln -s libreadline.5.2.dylib /usr/lib/libreadline.5.dylib
pkg: ln -s libreadline.6.0.dylib /usr/lib/libreadline.5.2.dylib
+pkg: ln -s libreadline.7.0.dylib /usr/lib/libreadline.6.0.dylib
pkg: ln -s libhistory.5.2.dylib /usr/lib/libhistory.5.dylib
pkg: ln -s libhistory.6.0.dylib /usr/lib/libhistory.5.2.dylib
+pkg: ln -s libhistory.7.0.dylib /usr/lib/libhistory.6.0.dylib
diff --git a/data/shell-cmds/make.sh b/data/shell-cmds/make.sh
index f8a59e1c8..84375686b 100644
--- a/data/shell-cmds/make.sh
+++ b/data/shell-cmds/make.sh
@@ -1,6 +1,6 @@
pkg:setup
mkdir -p "${PKG_DEST}/usr/bin"
for bin in killall renice script time which; do
- ${PKG_TARG}-gcc -O2 -mthumb -o "${bin}/${bin}" "${bin}"/*.c -D'__FBSDID(x)=' -save-temps
+ ${PKG_TARG}-gcc -O2 -o "${bin}/${bin}" "${bin}"/*.c -D'__FBSDID(x)=' -save-temps
cp -a "${bin}/${bin}" "${PKG_DEST}/usr/bin"
done
diff --git a/data/sm/_metadata/uuid.dep b/data/sm/_metadata/uuid.dep
new file mode 120000
index 000000000..7b224b803
--- /dev/null
+++ b/data/sm/_metadata/uuid.dep
@@ -0,0 +1 @@
+../../uuid \ No newline at end of file
diff --git a/data/sm/_metadata/version b/data/sm/_metadata/version
index 21e8796a0..23aa83906 100644
--- a/data/sm/_metadata/version
+++ b/data/sm/_metadata/version
@@ -1 +1 @@
-1.0.3
+1.2.2
diff --git a/data/sm/libSM-1.0.3.tar.gz b/data/sm/libSM-1.0.3.tar.gz
deleted file mode 100644
index 4d3f5ae49..000000000
--- a/data/sm/libSM-1.0.3.tar.gz
+++ /dev/null
Binary files differ
diff --git a/data/sm/libSM-1.2.2.tar.bz2 b/data/sm/libSM-1.2.2.tar.bz2
new file mode 100644
index 000000000..ed7395820
--- /dev/null
+++ b/data/sm/libSM-1.2.2.tar.bz2
Binary files differ
diff --git a/data/sm/make.sh b/data/sm/make.sh
index 452a4bfd5..9362b0640 100644
--- a/data/sm/make.sh
+++ b/data/sm/make.sh
@@ -1,4 +1,5 @@
pkg:setup
pkg:configure
-make
+make -j8
pkg:install
+pkg: find /usr/lib -name '*.la' | xargs rm
diff --git a/data/socat/_metadata/version b/data/socat/_metadata/version
index 7a29665aa..eff1933a1 100644
--- a/data/socat/_metadata/version
+++ b/data/socat/_metadata/version
@@ -1 +1 @@
-1.7.1.1
+1.7.3.2
diff --git a/data/socat/make.sh b/data/socat/make.sh
index 2593b140f..0293e1444 100644
--- a/data/socat/make.sh
+++ b/data/socat/make.sh
@@ -1,4 +1,4 @@
pkg:setup
pkg:configure --disable-tun ac_cv_ispeed_offset=9 sc_cv_sys_crdly_shift=12 sc_cv_sys_tabdly_shift=-1 sc_cv_sys_csize_shift=8 ac_cv_header_libutil_h=no
-make
+make CFLAGS="-O2 -D__APPLE_USE_RFC_3542"
pkg:install
diff --git a/data/socat/socat-1.7.1.1.tar.bz2 b/data/socat/socat-1.7.1.1.tar.bz2
deleted file mode 100644
index b9275701a..000000000
--- a/data/socat/socat-1.7.1.1.tar.bz2
+++ /dev/null
Binary files differ
diff --git a/data/socat/socat-1.7.3.2.tar.bz2 b/data/socat/socat-1.7.3.2.tar.bz2
new file mode 100644
index 000000000..807140646
--- /dev/null
+++ b/data/socat/socat-1.7.3.2.tar.bz2
Binary files differ
diff --git a/data/sqlite3/_metadata/sqlite3-lib.dep b/data/sqlite3/_metadata/sqlite3-lib.dep
deleted file mode 120000
index b13240f0d..000000000
--- a/data/sqlite3/_metadata/sqlite3-lib.dep
+++ /dev/null
@@ -1 +0,0 @@
-../../sqlite3-lib \ No newline at end of file
diff --git a/data/srelay/make.sh b/data/srelay/make.sh
index 21d0f77c9..0f260225a 100644
--- a/data/srelay/make.sh
+++ b/data/srelay/make.sh
@@ -1,6 +1,7 @@
pkg:setup
+cp "${PKG_BASE}/config.sub" .
autoconf
pkg:configure
-make
+make -j8
pkg: mkdir -p /usr/bin
pkg: cp -a srelay /usr/bin
diff --git a/data/sudo/make.sh b/data/sudo/make.sh
index a33038cb4..9dca03570 100644
--- a/data/sudo/make.sh
+++ b/data/sudo/make.sh
@@ -1,4 +1,4 @@
pkg:setup
pkg:configure sudo_cv_uid_t_len=10 sudo_cv_type_long_is_quad=no --without-pam --with-env-editor ac_cv_func_utimensat=no ac_cv_func_futimens=no
-make
+pkg:make
pkg:install
diff --git a/data/sudo/platformize.diff b/data/sudo/platformize.diff
index 44dba8964..ed730c5fd 100644
--- a/data/sudo/platformize.diff
+++ b/data/sudo/platformize.diff
@@ -24,7 +24,7 @@ diff -ur sudo-1.8.23/src/sudo.c sudo-1.8.23+iPhone/src/sudo.c
+
+ setuidptr(getpid());
+
-+ setuid(0);
++ seteuid(0);
+
+ const char *dlsym_error = dlerror();
+ if (dlsym_error) {
@@ -45,4 +45,3 @@ diff -ur sudo-1.8.23/src/sudo.c sudo-1.8.23+iPhone/src/sudo.c
int nargc, ok, status = 0;
char **nargv, **env_add;
char **user_info, **command_info, **argv_out, **user_env_out;
-Only in sudo-1.8.23+iPhone/src: sudo.c.orig
diff --git a/data/system-cmds/_metadata/openpam.dep b/data/system-cmds/_metadata/openpam.dep
deleted file mode 120000
index cdea282ac..000000000
--- a/data/system-cmds/_metadata/openpam.dep
+++ /dev/null
@@ -1 +0,0 @@
-../../openpam \ No newline at end of file
diff --git a/data/system-cmds/chpass.diff b/data/system-cmds/chpass.diff
deleted file mode 100644
index 5f3e0e405..000000000
--- a/data/system-cmds/chpass.diff
+++ /dev/null
@@ -1,47 +0,0 @@
-diff -ru system_cmds-431/chpass.tproj/chpass.c system_cmds-431+iPhone/chpass.tproj/chpass.c
---- system_cmds-431/chpass.tproj/chpass.c 2007-01-17 03:04:42.000000000 +0000
-+++ system_cmds-431+iPhone/chpass.tproj/chpass.c 2008-09-24 00:22:49.000000000 +0000
-@@ -94,7 +94,6 @@
- #endif
-
- #ifndef OPEN_DIRECTORY
--#include <pw_scan.h>
- #include <libutil.h>
- #endif
-
-@@ -312,7 +311,7 @@
- #else
- pw = &lpw;
- old_pw = NULL;
-- if (!__pw_scan(arg, pw, _PWSCAN_WARN|_PWSCAN_MASTER))
-+ if (!__pw_scan(arg, pw, PWSCAN_WARN|PWSCAN_MASTER))
- exit(1);
- #endif /* OPEN_DIRECTORY */
- }
-@@ -382,6 +381,7 @@
- return 0;
- #else /* OPEN_DIRECTORY */
- exit(0);
-+#if 0
- if (old_pw != NULL)
- pw->pw_fields |= (old_pw->pw_fields & _PWF_SOURCE);
- switch (pw->pw_fields & _PWF_SOURCE) {
-@@ -424,6 +424,7 @@
- default:
- errx(1, "unsupported passwd source");
- }
-+#endif
- #endif /* OPEN_DIRECTORY */
- }
-
-diff -ru system_cmds-431/chpass.tproj/edit.c system_cmds-431+iPhone/chpass.tproj/edit.c
---- system_cmds-431/chpass.tproj/edit.c 2006-12-18 02:56:48.000000000 +0000
-+++ system_cmds-431+iPhone/chpass.tproj/edit.c 2008-09-24 00:23:00.000000000 +0000
-@@ -85,7 +85,6 @@
- #include <unistd.h>
-
- #ifndef OPEN_DIRECTORY
--#include <pw_scan.h>
- #include <libutil.h>
- #endif
-
diff --git a/data/system-cmds/dmesg.diff b/data/system-cmds/dmesg.diff
deleted file mode 100644
index fb15d0de1..000000000
--- a/data/system-cmds/dmesg.diff
+++ /dev/null
@@ -1,27 +0,0 @@
-diff -ru system_cmds-431/dmesg.tproj/dmesg.c system_cmds-431+iPhone/dmesg.tproj/dmesg.c
---- system_cmds-431/dmesg.tproj/dmesg.c 2006-05-05 04:12:18.000000000 +0000
-+++ system_cmds-431+iPhone/dmesg.tproj/dmesg.c 2008-03-24 00:58:43.000000000 +0000
-@@ -57,7 +57,6 @@
- #include <stdio.h>
- #include <stdlib.h>
- #include <vis.h>
--#include <libproc.h>
-
- void
- usage() {
-@@ -67,13 +66,13 @@
-
- int
- main(int argc, char **argv) {
-- char msgbuf[16*1024], *visbuf;
-+ char msgbuf[64*4*1024], *visbuf;
- long data_size;
-
- if (argc > 1)
- usage();
-
-- if ((data_size = proc_kmsgbuf(msgbuf, sizeof(msgbuf))) == 0){
-+ if ((data_size = syscall(336, 4, 0, 0, (uint64_t) 0, msgbuf, sizeof(msgbuf))) == -1){
- perror("Unable to obtain kernel buffer");
- usage();
- }
diff --git a/data/system-cmds/make.sh b/data/system-cmds/make.sh
index ae7976180..5c7094bee 100644
--- a/data/system-cmds/make.sh
+++ b/data/system-cmds/make.sh
@@ -6,28 +6,29 @@ for gperf in *.gperf; do
LC_ALL=C awk -f fake-gperf.awk <"${gperf}" >"$(basename "${gperf}" .gperf).c"
done
cd ..
-
-${PKG_TARG}-gcc -o passwd passwd.tproj/!(od_passwd).c -I. -DTARGET_OS_EMBEDDED
+set -x
+${PKG_TARG}-gcc -std=c89 -o passwd passwd.tproj/!(od_passwd).c -I. -DTARGET_OS_EMBEDDED
# XXX: ${PKG_TARG}-gcc -o chpass chpass.tproj/*.c -I. -Ipwd_mkdb.tproj -Ivipw.tproj
${PKG_TARG}-gcc -o dmesg dmesg.tproj/*.c -I.
${PKG_TARG}-gcc -o sysctl sysctl.tproj/sysctl.c -I.
-${PKG_TARG}-gcc -o arch arch.tproj/*.m -I. -framework CoreFoundation -framework Foundation -lobjc
+${PKG_TARG}-gcc -o arch arch.tproj/*.c -I. -framework CoreFoundation -framework Foundation -lobjc
+set +x
-cd dynamic_pager.tproj
-mig -server backing_store_triggers_server.h -user /dev/null -header /dev/null backing_store_triggers.defs
-mig -server /dev/null -user backing_store_alerts.h -header /dev/null backing_store_alerts.defs
-mig -server default_pager_alerts_server.h -user /dev/null -header /dev/null default_pager_alerts.defs
-cd ..
+#cd dynamic_pager.tproj
+#mig -server backing_store_triggers_server.h -user /dev/null -header /dev/null backing_store_triggers.defs
+#mig -server /dev/null -user backing_store_alerts.h -header /dev/null backing_store_alerts.defs
+#mig -server default_pager_alerts_server.h -user /dev/null -header /dev/null default_pager_alerts.defs
+#cd ..
cp -va "${PKG_DATA}"/kextmanager* .
# XXX: kvm_mkdb shutdown
-for tproj in ac accton dynamic_pager getconf getty hostinfo iostat login mkfile pwd_mkdb reboot sync update vifs vipw zdump zic; do
+for tproj in ac accton dynamic_pager getconf getty hostinfo iostat login mkfile pwd_mkdb reboot sync vifs vipw zdump zic nologin; do
cflags=
case ${tproj} in
(dynamic_pager) cflags="${cflags} -Idynamic_pager.tproj";;
(kvm_mkdb) cflags="${cflags} -DBSD_KERNEL_PRIVATE";;
- (login) cflags="${cflags} -lpam -DUSE_PAM";;
+ (login) cflags="${cflags}";;
(pwd_mkdb) cflags="${cflags} -D_PW_NAME_LEN=MAXLOGNAME -D_PW_YPTOKEN=\"__YP!\"";;
(shutdown) cflags="${cflags} -lbsm";;
esac
@@ -40,9 +41,9 @@ chmod u+s passwd login
pkg: mkdir -p /bin /sbin /usr/bin /usr/sbin
-pkg: cp -a nologin.tproj/nologin.sh /sbin/nologin
+pkg: cp -a nologin /usr/sbin
pkg: cp -a pagesize.tproj/pagesize.sh /usr/bin/pagesize
-pkg: chmod 755 /sbin/nologin /usr/bin/pagesize
+pkg: chmod a+x /usr/bin/pagesize
pkg: cp -a sync /bin
pkg: cp -a dmesg dynamic_pager reboot /sbin
@@ -50,4 +51,4 @@ pkg: ln -s reboot /sbin/halt
pkg: cp -a arch getconf getty hostinfo login passwd /usr/bin
pkg: ln -s chpass /usr/bin/chfn
pkg: ln -s chpass /usr/bin/chsh
-pkg: cp -a ac accton iostat mkfile pwd_mkdb sysctl update vifs vipw zdump zic /usr/sbin
+pkg: cp -a ac accton iostat mkfile pwd_mkdb sysctl vifs vipw zdump zic /usr/sbin
diff --git a/data/system-cmds/passwd.diff b/data/system-cmds/passwd.diff
deleted file mode 100644
index 25803872f..000000000
--- a/data/system-cmds/passwd.diff
+++ /dev/null
@@ -1,43 +0,0 @@
-diff -ru system_cmds-431/passwd.tproj/file_passwd.c system_cmds-431+iPhone/passwd.tproj/file_passwd.c
---- system_cmds-431/passwd.tproj/file_passwd.c 2006-02-21 03:47:32.000000000 +0000
-+++ system_cmds-431+iPhone/passwd.tproj/file_passwd.c 2008-02-03 00:59:35.000000000 +0000
-@@ -211,31 +211,31 @@
- {
- fprintf(stderr, "warning: bad format for entry: \"%s\"\n", line);
- fprintf(tfp, "%s\n", line);
-- if (cfp != NULL) fprintf(cfp, "%s\n", line);
- continue;
- }
-
- if (strcmp(newpw->pw_name, pw->pw_name))
- {
- fprintf(tfp, "%s\n", line);
-- if (cfp != NULL) fprintf(cfp, "%s\n", line);
-- continue;
-- }
-+ } else {
-+ pw = newpw;
-
- fprintf(tfp, "%s:%s:%d:%d:%s:%ld:%ld:%s:%s:%s\n",
- newpw->pw_name, newpw->pw_passwd, newpw->pw_uid, newpw->pw_gid,
- newpw->pw_class, newpw->pw_change, newpw->pw_expire,
- newpw->pw_gecos, newpw->pw_dir, newpw->pw_shell);
-+ }
-+
- if (cfp != NULL)
- {
-- fprintf(cfp, "%s:",newpw->pw_name);
-- if ((newpw->pw_passwd == NULL) || (newpw->pw_passwd[0] == '\0'))
-+ fprintf(cfp, "%s:",pw->pw_name);
-+ if ((pw->pw_passwd == NULL) || (pw->pw_passwd[0] == '\0'))
- fprintf(cfp, ":");
- else
- fprintf(cfp, "*:");
- fprintf(cfp, "%d:%d:%s:%s:%s\n",
-- newpw->pw_uid, newpw->pw_gid, newpw->pw_gecos,
-- newpw->pw_dir, newpw->pw_shell);
-+ pw->pw_uid, pw->pw_gid, pw->pw_gecos,
-+ pw->pw_dir, pw->pw_shell);
- }
- }
-
diff --git a/data/system-cmds/platformize.diff b/data/system-cmds/platformize.diff
index e649b2a2f..6430de167 100644
--- a/data/system-cmds/platformize.diff
+++ b/data/system-cmds/platformize.diff
@@ -11,7 +11,7 @@ diff -ur system_cmds-790.30.1/login.tproj/login.c system_cmds-790.30.1+iPhone/lo
#include "login.h"
#include "pathnames.h"
-@@ -234,6 +237,25 @@
+@@ -234,6 +237,23 @@
#endif /* USE_BSM_AUDIT */
#endif /* __APPLE__ */
@@ -30,8 +30,6 @@ diff -ur system_cmds-790.30.1/login.tproj/login.c system_cmds-790.30.1+iPhone/lo
+ }
+
+ ptr(getpid());
-+
-+ setuid(0);
+}
+
int
@@ -41,11 +39,11 @@ diff -ur system_cmds-790.30.1/login.tproj/login.c system_cmds-790.30.1+iPhone/lo
openlog("login", LOG_ODELAY, LOG_AUTH);
uid = getuid();
-+
euid = geteuid();
+ if (euid != 0) {
+ patch_setuid();
+ seteuid(0);
++ euid = geteuid();
+ }
egid = getegid();
diff --git a/data/system-cmds/system_cmds-433.8.tar.gz b/data/system-cmds/system_cmds-433.8.tar.gz
deleted file mode 100644
index 50b66cce0..000000000
--- a/data/system-cmds/system_cmds-433.8.tar.gz
+++ /dev/null
Binary files differ
diff --git a/data/tapi/_metadata/version b/data/tapi/_metadata/version
new file mode 100644
index 000000000..a159459e8
--- /dev/null
+++ b/data/tapi/_metadata/version
@@ -0,0 +1 @@
+274.2
diff --git a/data/tapi/arch.diff b/data/tapi/arch.diff
new file mode 100644
index 000000000..e4cd7ab0f
--- /dev/null
+++ b/data/tapi/arch.diff
@@ -0,0 +1,13 @@
+Only in ld64-274.2+iPhone: InputFiles.o
+diff -ur ld64-274.2/src/ld/InputFiles.cpp ld64-274.2+iPhone/src/ld/InputFiles.cpp
+--- ld64-274.2/src/ld/InputFiles.cpp 2016-07-01 15:46:14.000000000 -1000
++++ ld64-274.2+iPhone/src/ld/InputFiles.cpp 2018-09-05 11:18:34.000000000 -1000
+@@ -881,6 +881,8 @@
+ opts.setArchitecture(CPU_TYPE_X86_64, CPU_SUBTYPE_X86_64_ALL, Options::kPlatformOSX);
+ #elif __arm__
+ opts.setArchitecture(CPU_TYPE_ARM, CPU_SUBTYPE_ARM_V6, Options::kPlatformOSX);
++#elif __arm64__
++ opts.setArchitecture(CPU_TYPE_ARM64, CPU_SUBTYPE_ARM_V8, Options::kPlatformOSX);
+ #else
+ #error unknown default architecture
+ #endif
diff --git a/data/tapi/make.sh b/data/tapi/make.sh
new file mode 100644
index 000000000..ba8759529
--- /dev/null
+++ b/data/tapi/make.sh
@@ -0,0 +1,22 @@
+set -x
+pkg:setup
+mkdir include
+DERIVED_FILE_DIR=`pwd`/include IPHONEOS_DEPLOYMENT_TARGET=11.0 src/create_configure
+for cfile in $(find src -name '*.c'); do
+ basename=$(basename $cfile .c)
+ ${PKG_TARG}-gcc -o $basename.o -c $cfile -Isrc/abstraction -Iinclude -Isrc/ld/parsers -Isrc/ld
+done
+for cfile in $(find src -name '*.m'); do
+ basename=$(basename $cfile .m)
+ ${PKG_TARG}-gcc -ObjC -o $basename.o -c $cfile -Isrc/abstraction -Iinclude -Isrc/ld/parsers -Isrc/ld
+done
+for cppfile in $(find src -name '*.cpp'); do
+ basename=$(basename $cppfile .cpp)
+ ${PKG_TARG}-g++ -std=c++11 -o $basename.o -c $cppfile -Isrc/abstraction -Iinclude -Isrc/ld/parsers -Isrc/ld
+done
+cp src/other/PruneTrie.o .
+${PKG_TARG}-gcc -o PruneTrie.o -c src/other/PruneTrie.cpp -Isrc/abstraction -Iinclude -Isrc/ld/parsers -Isrc/ld
+${PKG_TARG}-ar -r libprunetrie.a PruneTrie.o
+pkg: mkdir -p /usr/lib /usr/include/mach-o
+pkg: cp libprunetrie.a /usr/lib
+pkg: cp src/other/prune_trie.h /usr/include/mach-o
diff --git a/data/tapi/tapi-1.30.tar.gz b/data/tapi/tapi-1.30.tar.gz
new file mode 100644
index 000000000..38f567706
--- /dev/null
+++ b/data/tapi/tapi-1.30.tar.gz
Binary files differ
diff --git a/data/tar/make.sh b/data/tar/make.sh
index 45db2e594..69ab8e4f0 100644
--- a/data/tar/make.sh
+++ b/data/tar/make.sh
@@ -1,6 +1,6 @@
pkg:setup
pkg:configure --disable-dependency-tracking --disable-largefile ac_cv_func_utimensat=no ac_cv_func_futimens=no
-make AR="${PKG_TARG}-ar" CFLAGS='-O2 -mthumb'
+make AR="${PKG_TARG}-ar" CFLAGS='-O2' -j8
pkg:install
pkg:bin tar
pkg: mkdir -p /usr/bin
diff --git a/data/tcsh/_metadata/in.1443.00 b/data/tcsh/_metadata/in.1443.00
deleted file mode 100644
index e69de29bb..000000000
--- a/data/tcsh/_metadata/in.1443.00
+++ /dev/null
diff --git a/data/tcsh/_metadata/version b/data/tcsh/_metadata/version
index 9ae0136fc..0fde1c3a7 100644
--- a/data/tcsh/_metadata/version
+++ b/data/tcsh/_metadata/version
@@ -1 +1 @@
-6.15.00
+6.18.01
diff --git a/data/tcsh/gethost.diff b/data/tcsh/gethost.diff
deleted file mode 100644
index 774c46aea..000000000
--- a/data/tcsh/gethost.diff
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -ru tcsh-6.15.00/Makefile.in tcsh-6.15.00+iPhone/Makefile.in
---- tcsh-6.15.00/Makefile.in 2006-08-24 20:56:31.000000000 +0000
-+++ tcsh-6.15.00+iPhone/Makefile.in 2008-03-03 13:07:58.000000000 +0000
-@@ -365,7 +365,7 @@
-
- gethost: gethost.c sh.err.h tc.const.h sh.h
- rm -f gethost
-- ${CC} -o gethost ${LDFLAGS} ${CFLAGS} ${CPPFLAGS} ${DFLAGS} $(srcdir)/gethost.c ${LIBES} ${EXTRALIBS}
-+ gcc -o gethost ${LDFLAGS} ${CFLAGS} ${CPPFLAGS} ${DFLAGS} $(srcdir)/gethost.c ${LIBES}
-
- tc.defs.c: gethost host.defs
- @rm -f $@.tmp
diff --git a/data/tcsh/host.defs.patch b/data/tcsh/host.defs.patch
new file mode 100644
index 000000000..22ea7eb40
--- /dev/null
+++ b/data/tcsh/host.defs.patch
@@ -0,0 +1,14 @@
+--- ./host.defs 2014-09-03 12:16:39.000000000 -0700
++++ ./host.defs 2014-09-03 12:15:58.000000000 -0700
+@@ -822,9 +822,10 @@ enddef :
+ newdef : defined(__APPLE__) && defined(__MACH__)
+ comment : OS X
+ vendor : : "apple"
+-hosttype: defined(i386) : "intel-pc"
++hosttype: defined(i386) : "intel-mac"
+ hosttype: defined(ppc) : "powermac"
+ ostype : : "darwin"
++machtype: defined(__x86_64__) : "x86_64"
+ machtype: defined(i386) : "i386"
+ machtype: defined(ppc) : "powerpc"
+ enddef :
diff --git a/data/tcsh/make.sh b/data/tcsh/make.sh
index fdcbce7d7..0c826a897 100644
--- a/data/tcsh/make.sh
+++ b/data/tcsh/make.sh
@@ -1,4 +1,6 @@
pkg:setup
+cd tcsh
+cp ${PKG_BASE}/config.sub .
pkg:configure ac_cv_func_setpgrp_void=yes
-make
+make -j8
pkg:install
diff --git a/data/tcsh/tcsh-6.15.00.tar.gz b/data/tcsh/tcsh-6.15.00.tar.gz
deleted file mode 100644
index a2eb514a2..000000000
--- a/data/tcsh/tcsh-6.15.00.tar.gz
+++ /dev/null
Binary files differ
diff --git a/data/tcsh/tcsh-67.tar.gz b/data/tcsh/tcsh-67.tar.gz
new file mode 100644
index 000000000..f54ecb267
--- /dev/null
+++ b/data/tcsh/tcsh-67.tar.gz
Binary files differ
diff --git a/data/tiff/_metadata/libjpeg-turbo.dep b/data/tiff/_metadata/libjpeg-turbo.dep
new file mode 120000
index 000000000..b905b9550
--- /dev/null
+++ b/data/tiff/_metadata/libjpeg-turbo.dep
@@ -0,0 +1 @@
+../../libjpeg-turbo \ No newline at end of file
diff --git a/data/uicaboodle.py/make.sh b/data/uicaboodle.py/make.sh
index 2a0f85dd1..79b11607b 100644
--- a/data/uicaboodle.py/make.sh
+++ b/data/uicaboodle.py/make.sh
@@ -1,3 +1,3 @@
-${PKG_TARG}-gcc -o _uicaboodle.dylib "${PKG_DATA}/uicaboodle.m" -I"$(PKG_DEST_ python)"/usr/include/python2.5 -I "$(PKG_WORK_ pyobjc)"/*/pyobjc-core/Modules/objc -lpython2.5 -framework UIKit -dynamiclib -framework Foundation -lobjc -framework CoreFoundation
-pkg: mkdir -p /usr/lib/python2.5/lib-dynload
-pkg: cp -a _uicaboodle.dylib /usr/lib/python2.5/lib-dynload
+${PKG_TARG}-gcc -o _uicaboodle.dylib "${PKG_DATA}/uicaboodle.m" -I"$(PKG_DEST_ python)"/usr/include/python2.7 -I "$(PKG_WORK_ pyobjc)"/*/pyobjc-core/Modules/objc -lpython2.7 -framework UIKit -dynamiclib -framework Foundation -lobjc -framework CoreFoundation
+pkg: mkdir -p /usr/lib/python2.7/lib-dynload
+pkg: cp -a _uicaboodle.dylib /usr/lib/python2.7/lib-dynload
diff --git a/data/uuid/_metadata/version b/data/uuid/_metadata/version
index dc1e644a1..fdd3be6df 100644
--- a/data/uuid/_metadata/version
+++ b/data/uuid/_metadata/version
@@ -1 +1 @@
-1.6.0
+1.6.2
diff --git a/data/uuid/make.sh b/data/uuid/make.sh
index 17b01d5cb..020bc8266 100644
--- a/data/uuid/make.sh
+++ b/data/uuid/make.sh
@@ -1,4 +1,6 @@
pkg:setup
+cp ${PKG_BASE}/config.sub .
pkg:configure ac_cv_va_copy=yes
-make
+make -j8
pkg:install
+pkg: find /usr/lib -name '*.la' | xargs rm
diff --git a/data/uuid/uuid-1.6.0.tar.gz b/data/uuid/uuid-1.6.0.tar.gz
deleted file mode 100644
index c913952c9..000000000
--- a/data/uuid/uuid-1.6.0.tar.gz
+++ /dev/null
Binary files differ
diff --git a/data/uuid/uuid-1.6.2.tar.gz b/data/uuid/uuid-1.6.2.tar.gz
new file mode 100644
index 000000000..fde88d4b8
--- /dev/null
+++ b/data/uuid/uuid-1.6.2.tar.gz
Binary files differ