#!/bin/sh
#
# Copyright (C) 2000-2022 Kern Sibbald
# License: BSD 2-Clause; see file LICENSE-FOSS
#
# Run a simple backup of the Bacula build directory
#   then restore it.
#
TestName="weird-files-test"
JobName=wierd-files
. scripts/functions

if test ! -d weird-files ; then
   echo " "
   echo "Weird files not configured. Test not run."
   exit 0
fi

cwd=`pwd`
scripts/cleanup
scripts/copy-test-confs
change_jobname NightlySave $JobName
#
# Note, we save the weird-files directory twice on purpose
#  because this causes problems with hard linked files 
#  that are only saved once.  In 1.33, Bacula now deals
#  with this situation.
#
echo "${cwd}/weird-files" >${cwd}/tmp/file-list
echo "${cwd}/weird-files" >>${cwd}/tmp/file-list

# Create a Unix domain socket (sock-file)
cd weird-files
perl socket.pl
cd ..

# some system like MacOS & FreeBSD have a lchmod() system call
# and the chmod command has a "-h" option to not follow the symlink
# lets try to use the "-h" option and ignore the error
if ! chmod -h 751 "${cwd}/weird-files"/soft-file2 2> /dev/null ; then
   true # ignore the error
fi

start_test

cat <<END_OF_DATA >tmp/bconcmds
@output /dev/null
messages
@$out tmp/log1.out
label storage=File
TestVolume001
run job=$JobName    
yes
wait
messages
@# 
@# now do a restore
@#
@$out tmp/log2.out
setdebug level=10 client
restore where=${cwd}/tmp/bacula-restores select storage=File
unmark *
mark *
done
yes
wait
messages
quit
END_OF_DATA

run_bacula
check_for_zombie_jobs storage=File 
stop_bacula

# Note, the Unix domain socket (sock-file) is not restored
#  by Bacula so we delete it for the diffs. diff.pl already discards them
# rm -f weird-files/sock-file

# to have the same mtime after the rm, we need to touch directories
# touch weird-files tmp/bacula-restores${cwd}/weird-files


$rscripts/diff.pl -s weird-files -d tmp/bacula-restores${cwd}/weird-files > tmp/diff.out
dstat=$?

check_two_logs
if test "$debug" -eq 1; then
  cat tmp/diff.out
fi
end_test
