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.
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);
}
/*