In d52ebfd8e572596739b84b5138ef7c090a3dc442 (https://marc.info/?t=166199571100001), vnconfig was changed to not print an auto-allocated device on errors, however it now prints it unconditionally, including when passed as an argument. One might consider this superfluous, but it is surely contrary to the manual.
# dd if=/dev/zero of=/tmp/test.img bs=1m count=0 seek=1 0+0 records in 0+0 records out 0 bytes transferred in 0.000 secs (0 bytes/sec) # vnconfig /tmp/test.img vnd0 # vnconfig -u vnd0 # vnconfig vnd0 /tmp/test.img vnd0 Two patches are below, one to change the printing to auto-allocation only, and the other to update the manual to reflect the current behavior. I suggest either or neither, but not both. Thanks. Brian Conway Lead Software Engineer, Owner RCE Software, LLC Index: vnconfig.8 =================================================================== RCS file: /cvs/src/sbin/vnconfig/vnconfig.8,v retrieving revision 1.7 diff -u -p -u -p -r1.7 vnconfig.8 --- vnconfig.8 16 Aug 2022 13:59:51 -0000 1.7 +++ vnconfig.8 3 Oct 2022 15:52:31 -0000 @@ -83,7 +83,7 @@ with the regular file allowing the latter to be accessed as though it were a disk. If .Ar vnd_dev -is not specified, an unused one will be allocated and the name printed +is not specified, an unused one will be allocated. The name is printed to .Va stdout . .Pp @@ -147,6 +147,7 @@ Configure a CD-ROM or DVD image file as and mount the ISO 9660 file system contained in it: .Bd -literal -offset indent # vnconfig vnd0 /tmp/diskimage +vnd0 # mount -t cd9660 /dev/vnd0c /mnt .Ed .Pp @@ -160,6 +161,7 @@ a salt file with 20000 rounds: # vnconfig -K 20000 vnd0 /tmp/cryptimg Encryption key: Salt file: /tmp/cryptsalt +vnd0 # mount /dev/vnd0a /mnt .Ed .Sh SEE ALSO Index: vnconfig.c =================================================================== RCS file: /cvs/src/sbin/vnconfig/vnconfig.c,v retrieving revision 1.11 diff -u -p -u -p -r1.11 vnconfig.c --- vnconfig.c 1 Sep 2022 01:52:08 -0000 1.11 +++ vnconfig.c 3 Oct 2022 15:52:31 -0000 @@ -284,11 +284,12 @@ config(char *file, char *dev, struct dis struct vnd_ioctl vndio; char *rdev; int fd, rv = -1; - int unit; + int unit, print_dev = 0; if (dev == NULL) { if (getinfo(NULL, &unit) == -1) err(1, "no devices available"); + print_dev = 1; asprintf(&dev, "vnd%d", unit); } @@ -312,7 +313,8 @@ config(char *file, char *dev, struct dis if (rv) warn("VNDIOCSET"); else { - printf("%s\n", dev); + if (print_dev) + printf("%s\n", dev); if (verbose) fprintf(stderr, "%s: %llu bytes on %s\n", dev, vndio.vnd_size, file);