On 05/06/11 04:17, Alexander Hall wrote: > In the current spirit of making stuff DUID capable i found that > umount(8) was still not so. > > Diff makes use of "unrawname()" from fsck/fsutils.[ch]. Not sure if > this is what and how we want it, so no man page changes included so far.
I've been notified that this diff breaks the sgi biuld process, probably because of invalid assumptions on my part that opendev() would only open actual devices. :-/ I will fix up a new diff to handle this. /Alexander > > Thoughts? OK's? Manpage diffs? ;-) > > /Alexander > > > Index: Makefile > =================================================================== > RCS file: /cvs/src/sbin/umount/Makefile,v > retrieving revision 1.3 > diff -u -p -r1.3 Makefile > --- Makefile 21 Sep 1997 11:38:25 -0000 1.3 > +++ Makefile 6 May 2011 02:07:01 -0000 > @@ -1,6 +1,11 @@ > # $OpenBSD: Makefile,v 1.3 1997/09/21 11:38:25 deraadt Exp $ > > PROG= umount > +SRCS= umount.c fsutil.c > +.PATH: ${.CURDIR}/../fsck > +CFLAGS+= -I${.CURDIR}/../fsck > +DPADD= ${LIBUTIL} > +LDADD= -lutil > MAN= umount.8 > > .include <bsd.prog.mk> > Index: umount.c > =================================================================== > RCS file: /cvs/src/sbin/umount/umount.c,v > retrieving revision 1.21 > diff -u -p -r1.21 umount.c > --- umount.c 27 Oct 2009 23:59:34 -0000 1.21 > +++ umount.c 6 May 2011 02:07:01 -0000 > @@ -44,10 +44,14 @@ > #include <nfs/rpcv2.h> > > #include <err.h> > +#include <fcntl.h> > #include <stdio.h> > #include <stdlib.h> > #include <string.h> > #include <unistd.h> > +#include <util.h> > + > +#include "fsutil.h" > > typedef enum { MNTON, MNTFROM } mntwhat; > > @@ -149,7 +153,7 @@ umountfs(char *oname) > struct stat sb; > struct timeval pertry, try; > CLIENT *clp; > - int so; > + int so, devfd; > char *delimp, *hostp, *mntpt; > char *name, *newname, rname[MAXPATHLEN], type[MFSNAMELEN]; > > @@ -170,6 +174,12 @@ umountfs(char *oname) > warnx("%s: not a directory or special device", name); > return (1); > } > + } > + > + /* Special treatment for DUIDs (and short form device names) */ > + if ((devfd = opendev(oname, O_RDONLY, 0, &name)) >= 0) { > + close(devfd); > + unrawname(name); > } > > /*