Set umask so that symlinks will have the right permissions on BSD.
[rsync/rsync.git] / testsuite / rsync.fns
index 996f921..811c9ba 100644 (file)
@@ -20,10 +20,26 @@ printmsg() {
     echo "$1"
 }
 
+
+####################
+# Build test directories TO and FROM, with FROM full of files.
+
 hands_setup() {
     [ -d $FROM ] || mkdir $FROM
     [ -d $TO ] || mkdir $TO
 
+    # On some BSD systems, the umask affects the mode of created
+    # symlinks, even though the mode apparently has no effect on how
+    # the links behave in the future, and it cannot be changed using
+    # chmod!  rsync always sets its umask to 000 so that it can
+    # accurately recreate permissions, but this script is probably run
+    # with a different umask. 
+
+    # This causes a little problem that "ls -l" of the two will not be
+    # the same.  So, we need to set our umask before doing any creations.
+
+    umask 0
+
     # set up test data
     touch ${FROM}/empty
     mkdir ${FROM}/emptydir
@@ -42,9 +58,12 @@ hands_setup() {
     ls -ltr /etc > ${FROM}/dir/subdir/subsubdir/etc-ltr-list
     mkdir ${FROM}/dir/subdir/subsubdir2
     ls -lt /bin > ${FROM}/dir/subdir/subsubdir2/bin-lt-list
+
+    umask 077
 }
 
 
+
 ###########################
 # Run a test (in '$1') then compare directories $2 and $3 to see if
 # there are any difference.  If there are, explain them.
@@ -100,3 +119,30 @@ checkforlogs() {
   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
+
+[test-from] = $scratchdir/daemon-from/
+       read only = yes
+
+[test-to] = $scratchdir/daemon-to/
+       read only = no
+EOF
+}
+
+