And by using opendev(3) tunefs can accept disk UID's.

Any actual tunefs(8) guru's out there who can explain what this
might break?

Inspired by oga@'s work on atactl.

This is the last use of opendisk(3) in the tree. Any reason to
keep it if this goes in? ports?

.... Ken

Index: tunefs.c
===================================================================
RCS file: /cvs/src/sbin/tunefs/tunefs.c,v
retrieving revision 1.30
diff -u -p -r1.30 tunefs.c
--- tunefs.c    27 Oct 2009 23:59:34 -0000      1.30
+++ tunefs.c    5 May 2011 03:52:44 -0000
@@ -71,7 +71,6 @@ static        void    bwrite(daddr64_t, char *, in
 static void    bread(daddr64_t, char *, int, const char *);
 static int     getnum(const char *, const char *, int, int);
 static void    getsb(struct fs *, const char *);
-static int     openpartition(const char *, int, char *, size_t);
 static void    usage(void);
 
 int
@@ -79,8 +78,8 @@ main(int argc, char *argv[])
 {
 #define        OPTSTRING       "AFNe:g:h:m:o:"
        int             i, ch, Aflag, Fflag, Nflag, openflags;
-       const char      *special, *chg[2];
-       char            device[MAXPATHLEN];
+       const char      *chg[2];
+       char            *special;
        int             maxbpg, minfree, optim;
        int             avgfilesize, avgfpdir;
 
@@ -151,10 +150,8 @@ main(int argc, char *argv[])
        openflags = Nflag ? O_RDONLY : O_RDWR;
        if (Fflag)
                fi = open(special, openflags);
-       else {
-               fi = openpartition(special, openflags, device, sizeof(device));
-               special = device;
-       }
+       else
+               fi = opendev(special, openflags, OPENDEV_PART, &special);
        if (fi == -1)
                err(1, "%s", special);
        getsb(&sblock, special);
@@ -270,7 +267,8 @@ getsb(struct fs *fs, const char *file)
 
        for (i = 0; ; i++) {
                if (sblock_try[i] == -1)
-                       errx(5, "cannot find filesystem superblock");
+                       errx(5, "cannot find filesystem superblock on '%s'",
+                           file);
                bread(sblock_try[i] / dev_bsize, (char *)fs, SBLOCKSIZE, file);
                switch(fs->fs_magic) {
                case FS_UFS2_MAGIC:
@@ -316,29 +314,4 @@ bread(daddr64_t blk, char *buffer, int c
                err(4, "%s: seeking to %lld", file, (long long)offset);
        if ((i = read(fi, buffer, cnt)) != cnt)
                errx(5, "%s: short read", file);
-}
-
-static int
-openpartition(const char *name, int flags, char *device, size_t devicelen)
-{
-       char            rawspec[MAXPATHLEN], *p;
-       struct fstab    *fs;
-       int             fd, oerrno;
-
-       fs = getfsfile(name);
-       if (fs) {
-               if ((p = strrchr(fs->fs_spec, '/')) != NULL) {
-                       snprintf(rawspec, sizeof(rawspec), "%.*s/r%s",
-                           (int)(p - fs->fs_spec), fs->fs_spec, p + 1);
-                       name = rawspec;
-               } else
-                       name = fs->fs_spec;
-       }
-       fd = opendisk(name, flags, device, devicelen, 0);
-       if (fd == -1 && errno == ENOENT) {
-               oerrno = errno;
-               strlcpy(device, name, devicelen);
-               errno = oerrno;
-       }
-       return (fd);
 }

Reply via email to