mschorm / rpms / util-linux

Forked from rpms/util-linux 2 years ago
Clone
Blob Blame History Raw
--- util-linux-2.13-pre6/mount/mount.c.uhelper	2006-09-15 13:23:23.000000000 +0200
+++ util-linux-2.13-pre6/mount/mount.c	2006-09-15 13:23:23.000000000 +0200
@@ -183,7 +183,7 @@
 };
 
 static const char *opt_loopdev, *opt_vfstype, *opt_offset, *opt_encryption,
-	*opt_speed, *opt_comment;
+	*opt_speed, *opt_comment, *opt_uhelper;
 
 static struct string_opt_map {
   char *tag;
@@ -196,6 +196,7 @@
   { "encryption=", 0, &opt_encryption },
   { "speed=", 0, &opt_speed },
   { "comment=", 1, &opt_comment },
+  { "uhelper=", 0, &opt_uhelper },
   { NULL, 0, NULL }
 };
 
--- util-linux-2.13-pre6/mount/umount.8.uhelper	2004-11-10 20:49:37.000000000 +0100
+++ util-linux-2.13-pre6/mount/umount.8	2006-09-15 14:02:25.000000000 +0200
@@ -122,6 +122,19 @@
 Any pending loop devices can be freed using `losetup -d', see
 .BR losetup (8).
 
+.SH NOTES
+The syntax of external umount helpers is:
+
+.br
+.BI "/sbin/umount.<suffix> [\-nlfvr] " "dir " | " device "
+.br
+
+where the <suffix> is filesystem type or a value from "uhelper=" mtab option. 
+
+The uhelper (unprivileged umount request helper) is possible used when non-root
+user wants to umount a mountpoint which is not defined in the /etc/fstab file 
+(e.g devices mounted by HAL).
+
 .SH FILES
 .I /etc/mtab
 table of mounted file systems
--- util-linux-2.13-pre6/mount/umount.c.uhelper	2006-09-15 13:23:23.000000000 +0200
+++ util-linux-2.13-pre6/mount/umount.c	2006-09-15 13:23:23.000000000 +0200
@@ -565,11 +565,24 @@
 
 	if (suid) {
 		char *mtab_user = NULL;
+		char *uhelper = NULL;
 
 		if (!mc)
 			die(2,
 			    _("umount: %s is not mounted (according to mtab)"),
 			    file);
+		/*
+		 * uhelper - unprivileged umount helper
+		 * -- external umount (for example HAL mounts)
+		 */
+		if (mc->m.mnt_opts) 
+			uhelper = get_value(mc->m.mnt_opts, "uhelper=");
+		if (uhelper) {
+			int status = 0; 
+			if (check_special_umountprog(arg, arg, uhelper, &status))
+				return status;
+		}
+
 		/* The 2.4 kernel will generally refuse to mount the same
 		   filesystem on the same mount point, but will accept NFS.
 		   So, unmounting must be possible. */