Apologies for introducing the `cp_status` oversight that slipped into this patch revision. I mistakenly based my assumption on GNU coreutils 9.6’s cp, which violates POSIX by treating files skipped after a non-affirmative response as errors instead of successes (exit code 0).
Regarding <stdarg.h> in "util.h", this was omitted in accordance to ISO/IEC 9899:1999 (C99) §7.19.6.8. A conforming C library must provide the v-printf family (e.g: `vfprintf`, `vprintf`, `vsprintf`, `vsnprintf` in <stdio.h>, so on most platforms <stdio.h> ends up including <stdarg.h> (or otherwise `va_list`).