Noticed by mistake (wanted `-l'):

        # vnconfig l
        vnd0
        vnconfig: VNDIOCSET: No such file or directory

Same happens if you try to load a bogus file:

        # vnconfig ./empty      
        vnd0
        vnconfig: VNDIOCSET: Input/output error

In both cases, the info on stdout is useless as vnd0 is not used.
Defer printing the device until after the file is set up:

        # vnconfig l
        vnconfig: VNDIOCSET: No such file or directory
        # ./obj/vnconfig ./empty      
        vnconfig: VNDIOCSET: Input/output error

OK?


Index: vnconfig.c
===================================================================
RCS file: /cvs/src/sbin/vnconfig/vnconfig.c,v
retrieving revision 1.10
diff -u -p -r1.10 vnconfig.c
--- vnconfig.c  20 Aug 2022 06:39:24 -0000      1.10
+++ vnconfig.c  1 Sep 2022 01:29:56 -0000
@@ -289,7 +289,6 @@ config(char *file, char *dev, struct dis
        if (dev == NULL) {
                if (getinfo(NULL, &unit) == -1)
                        err(1, "no devices available");
-               printf("vnd%d\n", unit);
                asprintf(&dev, "vnd%d", unit);
        }
 
@@ -312,9 +311,12 @@ config(char *file, char *dev, struct dis
        rv = ioctl(fd, VNDIOCSET, &vndio);
        if (rv)
                warn("VNDIOCSET");
-       else if (verbose)
-               fprintf(stderr, "%s: %llu bytes on %s\n", dev, vndio.vnd_size,
-                   file);
+       else {
+               printf("%s\n", dev);
+               if (verbose)
+                       fprintf(stderr, "%s: %llu bytes on %s\n", dev,
+                           vndio.vnd_size, file);
+       }
 
        close(fd);
        fflush(stdout);

Reply via email to