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

Eugene Grosbein eugen at grosbein.pp.ru
Sun Oct 14 07:50:02 PDT 2007


The following reply was made to PR bin/111978; it has been noted by GNATS.

From: Eugene Grosbein <eugen at grosbein.pp.ru>
To: bug-followup at freebsd.org
Cc:  
Subject: Re: bin/111978: [patch] make syspath list for mount(8) configurable at runtime
Date: Sun, 14 Oct 2007 22:42:05 +0800

 Hi!
 
 Here is the same patch for 7.0-PRERELEASE:
 
 --- sbin/mount/mount.8.orig	2007-06-25 13:06:54.000000000 +0800
 +++ sbin/mount/mount.8	2007-10-14 18:00:42.000000000 +0800
 @@ -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
 @@ -426,12 +426,12 @@
  will not call
  .Xr nmount 2
  directly and will instead attempt to execute a program in
 -.Pa /sbin/mount_ Ns Sy XXX
 +.Pa mount_ Ns Sy XXX
  where
  .Sy XXX
  is replaced by the file system 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.
 @@ -476,6 +476,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
 --- sbin/mount/mount.c.orig	2007-06-25 13:06:54.000000000 +0800
 +++ sbin/mount/mount.c	2007-10-14 18:09:27.000000000 +0800
 @@ -152,6 +152,7 @@
  {
  	pid_t pid;
  	int status;
 +	char *syspath;
  
  	switch (pid = fork()) {
  	case -1:				/* Error. */
 @@ -159,10 +160,12 @@
  		exit (1);
  	case 0:					/* Child. */
  		/* Go find an executable. */
 -		execvP(execname, _PATH_SYSPATH, argv);
 + 		if ((syspath = getenv("SYSPATH")) == NULL)
 + 			syspath = _PATH_SYSPATH;
 + 		execvP(execname, syspath, argv);
  		if (errno == ENOENT) {
  			warn("exec %s not found in %s", execname,
 -			    _PATH_SYSPATH);
 + 			    syspath);
  		}
  		exit(1);
  	default:				/* Parent. */
 


More information about the freebsd-bugs mailing list