diff --git a/usr.bin/tar/bsdtar.c b/usr.bin/tar/bsdtar.c index 7d7613b02cb0..98fe6dcd7ed8 100644 --- a/usr.bin/tar/bsdtar.c +++ b/usr.bin/tar/bsdtar.c @@ -641,6 +641,9 @@ main(int argc, char **argv) } cleanup_exclusions(bsdtar); + if (bsdtar->return_value != 0) + bsdtar_warnc(bsdtar, 0, + "Error exit delayed from previous errors."); return (bsdtar->return_value); } @@ -886,6 +889,10 @@ bsdtar_getopt(struct bsdtar *bsdtar, const char *optstring, "(matches both %s and %s)", p, (*poption)->name, option->name); + if ((*poption)->has_arg == required_argument + && optarg == NULL) + bsdtar_errc(bsdtar, 1, 0, + "Option \"%s\" requires argument", p); } else { opt = '?'; /* TODO: Set up a fake 'struct option' for