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);

Reply via email to