bin/111978: make syspath list for mount(8) configurable at runtime

Eugene Grosbein eugen at grosbein.pp.ru
Sat Apr 21 06:00:11 UTC 2007


>Number:         111978
>Category:       bin
>Synopsis:       make syspath list for mount(8) configurable at runtime
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    freebsd-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          change-request
>Submitter-Id:   current-users
>Arrival-Date:   Sat Apr 21 06:00:10 GMT 2007
>Closed-Date:
>Last-Modified:
>Originator:     Eugene Grosbein
>Release:        FreeBSD 6.2-STABLE i386
>Organization:
Svyaz Service JSC
>Environment:
System: FreeBSD grosbein.pp.ru 6.2-STABLE FreeBSD 6.2-STABLE #16: Tue Apr 17 23:08:38 KRAST 2007 eu at grosbein.pp.ru:/mnt/home/obj/usr/local/src/sys/DADV i386

>Description:
	There are sysutils/fusefs-* ports that extend FreeBSD support
	for several filesystem types. These ports install utilities
	into /usr/local hierarchy but mount(8) only looks to compiled-in
	_PATH_SYSPATH (/sbin:/usr/sbin) path when it searches
	for mount_XXX commands. Let's allow system administrator
	to redefine this list using environment variable SYSPATH
	(the exact name is discussible), so that f.e. mount_ntfs-3g
	may be found by "mount -t ntfs_3g ..." command.

>How-To-Repeat:
	N/A
>Fix:

	The patch is for src/sbin/mount:

--- mount.c.orig	Sat Apr 21 12:53:32 2007
+++ mount.c	Sat Apr 21 12:58:36 2007
@@ -438,7 +438,7 @@
 	struct statfs sf;
 	pid_t pid;
 	int argc, i, status;
-	char *optbuf, execname[PATH_MAX], mntpath[PATH_MAX];
+	char *optbuf, *syspath, execname[PATH_MAX], mntpath[PATH_MAX];
 
 #if __GNUC__
 	(void)&optbuf;
@@ -511,10 +511,12 @@
 			exit(mount_ufs(argc, (char * const *) argv));
 
 		/* Go find an executable. */
-		execvP(execname, _PATH_SYSPATH, (char * const *)argv);
+		if ((syspath = getenv("SYSPATH")) == NULL)
+			syspath = _PATH_SYSPATH;
+		execvP(execname, syspath, (char * const *)argv);
 		if (errno == ENOENT) {
 			warn("exec mount_%s not found in %s", vfstype,
-			    _PATH_SYSPATH);
+			    syspath);
 		}
 		exit(1);
 		/* NOTREACHED */
--- mount.8.orig	Sat Apr 21 13:19:58 2007
+++ mount.8	Sat Apr 21 13:28:33 2007
@@ -342,7 +342,7 @@
 .Nm
 to execute the equivalent of:
 .Bd -literal -offset indent
-/sbin/mount_unionfs -b /sys $HOME/sys
+mount_unionfs -b /sys $HOME/sys
 .Ed
 .Pp
 Additional options specific to file system types
@@ -351,7 +351,7 @@
 .Fl t
 option below)
 may be described in the manual pages for the associated
-.Pa /sbin/mount_ Ns Sy XXX
+.Pa mount_ Ns Sy XXX
 utilities.
 .It Fl p
 Print mount information in
@@ -401,12 +401,12 @@
 If the type is not one of the internally known types,
 .Nm
 will attempt to execute a program in
-.Pa /sbin/mount_ Ns Sy XXX
+.Pa mount_ Ns Sy XXX
 where
 .Sy XXX
 is replaced by the type name.
 For example, nfs file systems are mounted by the program
-.Pa /sbin/mount_nfs .
+.Pa mount_nfs .
 .Pp
 Most file systems will be dynamically loaded by the kernel
 if not already present, and if the kernel module is available.
@@ -451,6 +451,15 @@
 (See
 .Xr issetugid 2
 for more information.)
+.It Ev SYSPATH
+If the environment variable
+.Ev SYSPATH
+is set, it is used as colon-separated list of paths to search for
+.Pa mount_ Ns Sy XXX
+utilities (see
+.Fl t
+option description). If it is not set, default value /sbin:/usr/sbin
+is assumed.
 .El
 .Sh FILES
 .Bl -tag -width /etc/fstab -compact



Eugene Grosbein
>Release-Note:
>Audit-Trail:
>Unformatted:


More information about the freebsd-bugs mailing list