boot0cfg: use getdevpath() instead of custom function
authorAlexander Kuleshov <kuleshovmail@gmail.com>
Wed, 23 Dec 2015 14:22:06 +0000 (20:22 +0600)
committerSascha Wildner <saw@online.de>
Thu, 24 Dec 2015 17:14:00 +0000 (18:14 +0100)
We are using mkrdev function in the boot0cfg.c to prduce a device
path from the given command line argument. The <fstab.h> provides
the getdevpath() function that does the same but in more general
way. Let's use function from the libc instead of custom.

usr.sbin/boot0cfg/boot0cfg.c

index 4694f17..a9f47ae 100644 (file)
@@ -38,6 +38,7 @@
 #include <stdlib.h>
 #include <string.h>
 #include <unistd.h>
+#include <fstab.h>
 
 #define MBRSIZE         512     /* master boot record size */
 
@@ -77,7 +78,6 @@ static void display_mbr(u_int8_t *);
 static int boot0version(const u_int8_t *);
 static int boot0bs(const u_int8_t *);
 static void stropt(const char *, int *, int *);
-static char *mkrdev(const char *);
 static int argtoi(const char *, int, int, int);
 static void usage(void);
 
@@ -139,7 +139,11 @@ main(int argc, char *argv[])
     argv += optind;
     if (argc != 1)
         usage();
-    disk = mkrdev(*argv);
+
+    disk = getdevpath(*argv, 0);
+    if (!disk)
+       err(1, "cannot open disk %s", disk);
+
     up = B_flag || d_arg != -1 || m_arg != -1 || o_flag || s_arg != -1
        || t_arg != -1;
 
@@ -391,26 +395,6 @@ stropt(const char *arg, int *xa, int *xo)
     free(s);
 }
 
-/*
- * Produce a device path for a "canonical" name, where appropriate.
- */
-static char *
-mkrdev(const char *fname)
-{
-    char buf[MAXPATHLEN];
-    char *s;
-
-    if (!strchr(fname, '/')) {
-       snprintf(buf, sizeof(buf), "%s%s", _PATH_DEV, fname);
-        s = strdup(buf);
-    } else
-        s = strdup(fname);
-
-    if (s == NULL)
-        errx(1, "No more memory");
-    return s;
-}
-
 /*
  * Convert and check an option argument.
  */