bsdtar(1) emits a warning but does not return an error status when one of the input files cannot be found. This is a regression vs. the bsdtar in 8.x.
tar cf /tmp/file.tar nonexistent-file-name && echo Return value broken
Returning an error is important for unattended scripts that depend on the return value to get failure conditions -- This was discovered after a file was missing from an automated build where the build process completed with a warning only.
The libarchive based cpio(1) does the return an error code in this case.
The difference seems to be that cpio returns and error status for the internal errors ARCHIVE_FAILED and ARCHIVE_FATAL, while tar only returns errors for ARCHIVE_FATAL.
This has been fixed upstream.
Would be nice to get the fix imported into FreeBSD ...
Fix from upstream imported to stable/10 in r302075
The fix for this seemed to create an odd behavior. I made a new bug for it: https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=213092