On Wed, May 04, 2011 at 11:59:52PM -0400, Kenneth R Westerback wrote:
> 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.

millert already provided a diff for that, the the getpartition dance is
necessary if you want to be able to provide partition names from fstab
(say tunefs -N /home). This diff breaks that ability.

The diff is appended here for completeness (from millert, not me)

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

I have no idea, but a porter should probably check the distfiles.

-0-

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    4 May 2011 18:30:33 -0000
@@ -71,7 +71,7 @@ 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 int     openpartition(char *, int, char **);
 static void    usage(void);
 
 int
@@ -79,8 +79,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];
+       char            *special;
+       const char      *chg[2];
        int             maxbpg, minfree, optim;
        int             avgfilesize, avgfpdir;
 
@@ -151,10 +151,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 = openpartition(special, openflags, &special);
        if (fi == -1)
                err(1, "%s", special);
        getsb(&sblock, special);
@@ -319,11 +317,11 @@ bread(daddr64_t blk, char *buffer, int c
 }
 
 static int
-openpartition(const char *name, int flags, char *device, size_t devicelen)
+openpartition(char *name, int flags, char **devicep)
 {
        char            rawspec[MAXPATHLEN], *p;
        struct fstab    *fs;
-       int             fd, oerrno;
+       int             fd;
 
        fs = getfsfile(name);
        if (fs) {
@@ -334,11 +332,8 @@ openpartition(const char *name, int flag
                } 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;
-       }
+       fd = opendev(name, flags, 0, devicep);
+       if (fd == -1 && errno == ENOENT)
+               devicep = &name;
        return (fd);
 }

-- 
I fell asleep reading a dull book, and I dreamt that I was reading on,
so I woke up from sheer boredom.

Reply via email to