BUGS:

(Fixed 30 May 2026): rrsync: add missing 'dirs' long option.

(Fixed 17 May 2026): rrsync: exploitable vulnerability in glob
expansion order, removed hostname resolution for logging, removed
'dns' pledge.

(Fixed 8 Apr 2026): error in one rsync-client.pl check for OS as openbsd causes
pledge/unveil not to occur on server side.

(Fixed 25 Sep 2025): rsync-server.pl should abort if log file can't be opened.

rsync-client/rsync-server:
There is currently no way to distinguish on the server (receiving)
side between different source dirs that share the same destination
dir, which means that the destination-cleanup for the 2nd and later
items in a list will never get executed, only the first one will
match. Best workaround is probably to execute all the
destination-cleanup commands for all invocations (presuming they don't
have negative effects when they aren't the matching entry). Otherwise,
some argument needs to be passed in the command line to specify the
source information to be used.

If file path to send includes *, /bin/sh needs to be unveiled.
This is now done in dirpath checking; also unveiling now done
for the containing dir of dirpath doesn't end with a /.  The
dirlist function could stand to do some validation.

FEATURES TO ADD:

(Done 29 April 2026) Reject glob when source-sudo is 'yes'.

(Done 19 April 2026) Add permissions and ownership validation for
config file and ensure log is created with 0600 permissions
(rsync-client/rsync-server)

(Done 8 April 2026) Do own glob expansion to completely avoid shell on
system calls to rsync.

(Done 10 Jan 2026) Avoid use of shell on system calls for
setup/cleanup and everything else unless needed.

README file could use some expansion.
