Do not silently ignore additional arguments: $ vmctl create usage: vmctl [-v] create [-b base | -i disk] [-s size] disk $ vmctl create -s 1G 1.img 2.img vmctl: raw imagefile created $ ls *.img 1.img
$ ./obj/vmctl create -s 1G 1.qcow2 2.qcow2 usage: vmctl [-v] create [-b base | -i disk] [-s size] disk $ ./obj/vmctl create -s 1G 1.qcow2 vmctl: qcow2 imagefile created $ ls *.qcow2 1.qcow2 All other commands seem to properly check argc. OK? Index: main.c =================================================================== RCS file: /cvs/src/usr.sbin/vmctl/main.c,v retrieving revision 1.71 diff -u -p -r1.71 main.c --- main.c 13 May 2022 00:17:20 -0000 1.71 +++ main.c 30 Jul 2022 06:32:05 -0000 @@ -587,7 +587,7 @@ ctl_create(struct parse_result *res, int argc -= optind; argv += optind; - if (argc < 1) + if (argc != 1) ctl_usage(res->ctl); type = parse_disktype(argv[0], &disk);