+
+# In fact, we need a more general feature of capturing all stderr/log files,
+# and dumping them if something goes wrong.
+
+checkforlogs() {
+ # skip it if we're under debian-test
+ if test -n "${Debian}" ; then return 0 ; fi
+
+ if [ -f $1 -a -s $1 ] ; then
+ echo "Failures have occurred. $1 follows:" >&2
+ cat $1 >&2
+ exit 1
+ fi
+}
+
+
+build_rsyncd_conf() {
+ # Build an appropriate configuration file
+ conf="$scratchdir/test-rsyncd.conf"
+ echo "building configuration $conf"
+
+ port=2612
+ pidfile="$scratchdir/rsyncd.pid"
+ logfile="$scratchdir/rsyncd.log"
+
+ cat >$conf <<EOF
+# rsyncd configuration file autogenerated by $0
+
+pid file = $pidfile
+use chroot = no
+hosts allow = localhost, 127.0.0.1
+log file = $logfile
+
+# We don't know if this machine has "nobody" or "nogroup", so use the quasi-canonical
+# values of (uint16_t) -2.
+
+uid = 65534
+gid = 65534
+
+[test-from]
+ path = $FROM
+ read only = yes
+
+[test-to]
+ path = $TO
+ read only = no
+EOF
+}
+
+
+build_symlinks() {
+ fromdir="$scratchdir/from"
+ todir="$scratchdir/to"
+ mkdir "$fromdir"
+ date >"$fromdir/referent"
+ ln -s referent "$fromdir/relative"
+ ln -s "$fromdir/referent" "$fromdir/absolute"
+ ln -s nonexistent "$fromdir/dangling"
+ ln -s "$srcdir/rsync.c" "$fromdir/unsafe"
+}
+
+test_fail() {
+ echo "$@" >&2
+ exit 1
+}
+
+test_skipped() {
+ echo "$@" >&2
+ echo "$@" > "$TMP/whyskipped"
+ exit 77
+}
+
+# It failed, but we expected that. don't dump out error logs,
+# because most users won't want to see them. But do leave
+# the working directory around.
+test_xfail() {
+ echo "$@" >&2
+ exit 78
+}
+
+# Test whether something is a link, allowing for shell peculiarities
+is_a_link() {
+ test -L "$1" || test -h "$1" || /usr/bin/test -L "$1" || /usr/bin/test -h "$1"
+}
+
+
+# We need to set the umask to be reproducible. Note also that when we
+# do some daemon tests as root, we will setuid() and therefore the
+# directory has to be writable by the nobody user in some cases. The
+# best thing is probably to explicitly chmod those directories after
+# creation.
+
+umask 022
\ No newline at end of file