+dit(bf(pre-xfer exec), bf(post-xfer exec)) You may specify a command to be run
+before and/or after the transfer. If the bf(pre-xfer exec) command fails, the
+transfer is aborted before it begins.
+
+The following environment variables will be set, though some are
+specific to the pre-xfer or the post-xfer environment:
+
+quote(itemize(
+ it() bf(RSYNC_MODULE_NAME): The name of the module being accessed.
+ it() bf(RSYNC_MODULE_PATH): The path configured for the module.
+ it() bf(RSYNC_HOST_ADDR): The accessing host's IP address.
+ it() bf(RSYNC_HOST_NAME): The accessing host's name.
+ it() bf(RSYNC_USER_NAME): The accessing user's name (empty if no user).
+ it() bf(RSYNC_REQUEST): (pre-xfer only) The module/path info specified
+ by the user (note that the user can specify multiple source files,
+ so the request can be something like "mod/path1 mod/path2", etc.).
+ it() bf(RSYNC_ARG#): (pre-xfer only) The pre-request arguments are set
+ in these numbered values. RSYNC_ARG0 is always "rsyncd", and the last
+ value contains a single period.
+ it() bf(RSYNC_EXIT_STATUS): (post-xfer only) rsync's exit value. This will be 0 for a
+ successful run, a positive value for an error that rsync returned
+ (e.g. 23=partial xfer), or a -1 if rsync failed to exit properly.
+ it() bf(RSYNC_RAW_STATUS): (post-xfer only) the raw exit value from waitpid().
+))
+
+Even though the commands can be associated with a particular module, they
+are run using the permissions of the user that started the daemon (not the
+module's uid/gid setting) without any chroot restrictions.
+