1
0
mirror of https://git.FreeBSD.org/src.git synced 2026-06-02 11:24:32 +00:00

Move mntopts(3) suppport into libutil

Many programs use this functionality so it should be available centrally
rather than compiled into each program independently.  This has the
modest downside of adding libutil dependencies to some mount_<foo>
programs, but many (plus mount(8)) already have those depndencies so
this shouldn't be a major imposition.

In commit 906c312bbf, Kirk said this could be done once the change was
merged to FreeBSD 13.  That happened in commit 668dfa0166 in 2023.

While here perform related tidying including removing SRCS where the
only entry is ${PROG}.c rendering it unnecessary.

Reviewed by:	olce, dim, emaste
Differential Revision:	https://reviews.freebsd.org/D49951
This commit is contained in:
Brooks Davis
2025-04-22 22:50:19 +01:00
parent 5842658903
commit cda23fc36d
22 changed files with 51 additions and 118 deletions
+12 -2
View File
@@ -16,9 +16,10 @@ SRCS= _secure_path.c auth.c cpuset.c expand_number.c flopen.c fparseln.c \
kinfo_getvmobject.c kld.c \ kinfo_getvmobject.c kld.c \
login_auth.c login_cap.c \ login_auth.c login_cap.c \
login_class.c login_crypt.c login_ok.c login_times.c login_tty.c \ login_class.c login_crypt.c login_ok.c login_times.c login_tty.c \
mntopts.c \
pidfile.c property.c pty.c pw_scan.c pw_util.c quotafile.c \ pidfile.c property.c pty.c pw_scan.c pw_util.c quotafile.c \
realhostname.c stub.c trimdomain.c uucplock.c realhostname.c stub.c trimdomain.c uucplock.c
INCS= libutil.h login_cap.h INCS= libutil.h login_cap.h mntopts.h
CFLAGS+= -DNO__SCCSID CFLAGS+= -DNO__SCCSID
@@ -32,7 +33,8 @@ MAN+= cpuset.3 expand_number.3 flopen.3 fparseln.3 ftime.3 getlocalbase.3 \
hexdump.3 humanize_number.3 kinfo_getallproc.3 kinfo_getfile.3 \ hexdump.3 humanize_number.3 kinfo_getallproc.3 kinfo_getfile.3 \
kinfo_getproc.3 kinfo_getvmmap.3 kinfo_getvmobject.3 kld.3 \ kinfo_getproc.3 kinfo_getvmmap.3 kinfo_getvmobject.3 kld.3 \
login_auth.3 login_cap.3 \ login_auth.3 login_cap.3 \
login_class.3 login_ok.3 login_times.3 login_tty.3 pidfile.3 \ login_class.3 login_ok.3 login_times.3 login_tty.3 mntopts.3 \
pidfile.3 \
property.3 pty.3 quotafile.3 realhostname.3 realhostname_sa.3 \ property.3 pty.3 quotafile.3 realhostname.3 realhostname_sa.3 \
_secure_path.3 trimdomain.3 uucplock.3 pw_util.3 _secure_path.3 trimdomain.3 uucplock.3 pw_util.3
MAN+= login.conf.5 MAN+= login.conf.5
@@ -54,6 +56,14 @@ MLINKS+=login_times.3 in_lt.3 login_times.3 in_ltm.3 \
login_times.3 in_ltms.3 \ login_times.3 in_ltms.3 \
login_times.3 in_lts.3 \ login_times.3 in_lts.3 \
login_times.3 parse_lt.3 login_times.3 parse_lt.3
MLINKS+=mntopts.3 getmntopts.3 \
mntopts.3 getmntpoint.3 \
mntopts.3 chkdoreload.3 \
mntopts.3 build_iovec.3 \
mntopts.3 build_iovec_argf.3 \
mntopts.3 free_iovec.3 \
mntopts.3 checkpath.3 \
mntopts.3 rmslashes.3
MLINKS+=pidfile.3 pidfile_close.3 \ MLINKS+=pidfile.3 pidfile_close.3 \
pidfile.3 pidfile_fileno.3 \ pidfile.3 pidfile_fileno.3 \
pidfile.3 pidfile_open.3 \ pidfile.3 pidfile_open.3 \
+12 -14
View File
@@ -22,7 +22,7 @@
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE. .\" SUCH DAMAGE.
.\" .\"
.Dd January 19, 2023 .Dd April 21, 2025
.Dt MNTOPTS 3 .Dt MNTOPTS 3
.Os .Os
.Sh NAME .Sh NAME
@@ -35,6 +35,8 @@
.Nm checkpath , .Nm checkpath ,
.Nm rmslashes .Nm rmslashes
.Nd "mount point operations" .Nd "mount point operations"
.Sh LIBRARY
.Lb libutil
.Sh SYNOPSIS .Sh SYNOPSIS
.In mntopts.h .In mntopts.h
.Ft void .Ft void
@@ -69,18 +71,6 @@
The The
.Nm mntopts .Nm mntopts
functions support operations associated with a mount point. functions support operations associated with a mount point.
For historic reasons are in a file in the sources for the
.Xr mount 8
program.
Thus, to access them the following lines need to be added to the
.Nm Makefile
of the program wanting to use them:
.Bd -literal
SRCS+= getmntopts.c
MOUNT= ${SRCTOP}/sbin/mount
CFLAGS+= -I${MOUNT}
\&.PATH: ${MOUNT}
.Ed
.Pp .Pp
The The
.Fn getmntopts .Fn getmntopts
@@ -326,7 +316,7 @@ flag, would also have an
entry. entry.
This can be declared and used as follows: This can be declared and used as follows:
.Bd -literal .Bd -literal
#include "mntopts.h" #include <mntopts.h>
struct mntopt mopts[] = { struct mntopt mopts[] = {
MOPT_STDOPTS, MOPT_STDOPTS,
@@ -377,3 +367,11 @@ and
.Fn chkdoreload .Fn chkdoreload
functions were added in functions were added in
.Fx 13.2 . .Fx 13.2 .
.Pp
Historically, these functions were found in getmntopts.c in the sources for the
.Xr mount 8
program.
As of
.Fx 15.0
they are part of
.Nm libutil .
@@ -29,6 +29,9 @@
* SUCH DAMAGE. * SUCH DAMAGE.
*/ */
#ifndef _MNTOPTS_H_
#define _MNTOPTS_H_
struct mntopt { struct mntopt {
const char *m_option; /* option name */ const char *m_option; /* option name */
int m_inverse; /* if a negative option, e.g. "atime" */ int m_inverse; /* if a negative option, e.g. "atime" */
@@ -107,3 +110,5 @@ extern int getmnt_silent;
void build_iovec(struct iovec **iov, int *iovlen, const char *name, void *val, size_t len); void build_iovec(struct iovec **iov, int *iovlen, const char *name, void *val, size_t len);
void build_iovec_argf(struct iovec **iov, int *iovlen, const char *name, const char *fmt, ...); void build_iovec_argf(struct iovec **iov, int *iovlen, const char *name, const char *fmt, ...);
void free_iovec(struct iovec **iovec, int *iovlen); void free_iovec(struct iovec **iovec, int *iovlen);
#endif /* !_MNTOPTS_H_ */
+1 -4
View File
@@ -3,10 +3,7 @@
PACKAGE=runtime PACKAGE=runtime
PROG= fsck PROG= fsck
SRCS= fsck.c fsutil.c preen.c SRCS= fsck.c fsutil.c preen.c
SRCS+= getmntopts.c
MAN= fsck.8 MAN= fsck.8
MOUNT= ${SRCTOP}/sbin/mount LIBADD= util
CFLAGS+= -I${MOUNT}
.PATH: ${MOUNT}
.include <bsd.prog.mk> .include <bsd.prog.mk>
+4 -4
View File
@@ -5,12 +5,12 @@ LINKS+= ${BINDIR}/fsck_ffs ${BINDIR}/fsck_4.2bsd
MAN= fsck_ffs.8 MAN= fsck_ffs.8
MLINKS= fsck_ffs.8 fsck_ufs.8 fsck_ffs.8 fsck_4.2bsd.8 MLINKS= fsck_ffs.8 fsck_ufs.8 fsck_ffs.8 fsck_4.2bsd.8
SRCS= dir.c ea.c fsutil.c inode.c main.c pass1.c pass1b.c pass2.c pass3.c \ SRCS= dir.c ea.c fsutil.c inode.c main.c pass1.c pass1b.c pass2.c pass3.c \
pass4.c pass5.c setup.c suj.c utilities.c gjournal.c getmntopts.c \ pass4.c pass5.c setup.c suj.c utilities.c gjournal.c \
globs.c globs.c
LIBADD= ufs LIBADD= ufs util
WARNS?= 2 WARNS?= 2
CFLAGS+= -I${.CURDIR} -I${.CURDIR:H}/mount CFLAGS+= -I${.CURDIR}
.PATH: ${SRCTOP}/sys/ufs/ffs ${.CURDIR:H}/mount .PATH: ${SRCTOP}/sys/ufs/ffs
.include <bsd.prog.mk> .include <bsd.prog.mk>
+1 -4
View File
@@ -3,13 +3,10 @@
.include <src.opts.mk> .include <src.opts.mk>
.PATH: ${.CURDIR:H}/mount
PACKAGE=ufs PACKAGE=ufs
PROG= growfs PROG= growfs
SRCS= growfs.c getmntopts.c SRCS= growfs.c
MAN= growfs.8 MAN= growfs.8
CFLAGS+=-I${.CURDIR:H}/mount
.if defined(GFSDBG) .if defined(GFSDBG)
SRCS+= debug.c SRCS+= debug.c
-6
View File
@@ -1,7 +1,6 @@
CONFGROUPS= CONFTTYS CONFGROUPS= CONFTTYS
PACKAGE=runtime PACKAGE=runtime
PROG= init PROG= init
SRCS= init.c getmntopts.c
MAN= init.8 MAN= init.8
PRECIOUSPROG= PRECIOUSPROG=
INSTALLFLAGS=-b -B.bak INSTALLFLAGS=-b -B.bak
@@ -11,11 +10,6 @@ LIBADD= util crypt
CONFTTYSNAME= ttys CONFTTYSNAME= ttys
CONFTTYS+= ttys CONFTTYS+= ttys
# Needed for getmntopts.c
MOUNT= ${SRCTOP}/sbin/mount
CFLAGS+=-I${MOUNT}
.PATH: ${MOUNT}
NO_SHARED?= YES NO_SHARED?= YES
.include <bsd.prog.mk> .include <bsd.prog.mk>
+1 -2
View File
@@ -2,11 +2,10 @@
PACKAGE=ufs PACKAGE=ufs
PROG= mksnap_ffs PROG= mksnap_ffs
SRCS= mksnap_ffs.c getmntopts.c LIBADD= util
MAN= mksnap_ffs.8 MAN= mksnap_ffs.8
WARNS?= 2 WARNS?= 2
CFLAGS+=-I${.CURDIR:H}/mount
.if defined(NOSUID) .if defined(NOSUID)
BINMODE=554 BINMODE=554
+2 -10
View File
@@ -1,15 +1,7 @@
PACKAGE=runtime PACKAGE=runtime
PROG= mount PROG= mount
SRCS= mount.c mount_fs.c getmntopts.c vfslist.c SRCS= mount.c mount_fs.c vfslist.c
MAN= mntopts.3 mount.8 MAN= mount.8
MLINKS+= mntopts.3 getmntopts.3
MLINKS+= mntopts.3 getmntpoint.3
MLINKS+= mntopts.3 chkdoreload.3
MLINKS+= mntopts.3 build_iovec.3
MLINKS+= mntopts.3 build_iovec_argf.3
MLINKS+= mntopts.3 free_iovec.3
MLINKS+= mntopts.3 checkpath.3
MLINKS+= mntopts.3 rmslashes.3
LIBADD= util xo LIBADD= util xo
+1 -7
View File
@@ -1,16 +1,10 @@
PACKAGE=runtime PACKAGE=runtime
PROG= mount_cd9660 PROG= mount_cd9660
SRCS= mount_cd9660.c getmntopts.c
MAN= mount_cd9660.8 MAN= mount_cd9660.8
LIBADD= kiconv LIBADD= kiconv util
MOUNT= ${.CURDIR:H}/mount
CFLAGS+= -I${MOUNT}
# Needs to be dynamically linked for optional dlopen() access to # Needs to be dynamically linked for optional dlopen() access to
# userland libiconv # userland libiconv
NO_SHARED?= NO NO_SHARED?= NO
.PATH: ${MOUNT}
.include <bsd.prog.mk> .include <bsd.prog.mk>
+1 -6
View File
@@ -20,12 +20,7 @@ DEBUG_FLAGS+= -DFUSE4BSD_VERSION="\"${F4BVERS}\""
PACKAGE=runtime PACKAGE=runtime
PROG= mount_fusefs PROG= mount_fusefs
SRCS= mount_fusefs.c getmntopts.c
MAN8= mount_fusefs.8 MAN8= mount_fusefs.8
LIBADD= util
MOUNT= ${.CURDIR:H}/mount
CFLAGS+= -I${MOUNT}
.PATH: ${MOUNT}
.include <bsd.prog.mk> .include <bsd.prog.mk>
+1 -10
View File
@@ -1,19 +1,10 @@
#
#
PACKAGE=runtime PACKAGE=runtime
PROG= mount_msdosfs PROG= mount_msdosfs
SRCS= mount_msdosfs.c getmntopts.c
MAN= mount_msdosfs.8 MAN= mount_msdosfs.8
LIBADD= kiconv LIBADD= kiconv util
MOUNT= ${.CURDIR:H}/mount
CFLAGS+= -I${MOUNT}
# Needs to be dynamically linked for optional dlopen() access to # Needs to be dynamically linked for optional dlopen() access to
# userland libiconv # userland libiconv
NO_SHARED?= NO NO_SHARED?= NO
.PATH: ${MOUNT}
.include <bsd.prog.mk> .include <bsd.prog.mk>
+4 -4
View File
@@ -1,12 +1,12 @@
PACKAGE=nfs PACKAGE=nfs
PROG= mount_nfs PROG= mount_nfs
SRCS= mount_nfs.c getmntopts.c mounttab.c SRCS= mount_nfs.c mounttab.c
MAN= mount_nfs.8 MAN= mount_nfs.8
LIBADD= util
MOUNT= ${.CURDIR:H}/mount
UMNTALL= ${SRCTOP}/usr.sbin/rpc.umntall UMNTALL= ${SRCTOP}/usr.sbin/rpc.umntall
CFLAGS+= -DNFS -I${MOUNT} -I${UMNTALL} CFLAGS+= -DNFS -I${UMNTALL}
.PATH: ${MOUNT} ${UMNTALL} .PATH: ${UMNTALL}
.include <bsd.prog.mk> .include <bsd.prog.mk>
+1 -6
View File
@@ -1,11 +1,6 @@
PACKAGE=runtime PACKAGE=runtime
PROG= mount_nullfs PROG= mount_nullfs
SRCS= mount_nullfs.c getmntopts.c
MAN= mount_nullfs.8 MAN= mount_nullfs.8
LIBADD= util
MOUNT= ${.CURDIR:H}/mount
CFLAGS+=-I${MOUNT}
.PATH: ${MOUNT}
.include <bsd.prog.mk> .include <bsd.prog.mk>
+1 -6
View File
@@ -1,12 +1,7 @@
PACKAGE=runtime PACKAGE=runtime
PROG= mount_udf PROG= mount_udf
SRCS= mount_udf.c getmntopts.c
MAN= mount_udf.8 MAN= mount_udf.8
LIBADD= kiconv LIBADD= kiconv util
MOUNT= ${.CURDIR:H}/mount
CFLAGS+= -I${MOUNT} -I${SRCTOP}/sys
.PATH: ${MOUNT}
# Needs to be dynamically linked for optional dlopen() access to # Needs to be dynamically linked for optional dlopen() access to
# userland libiconv # userland libiconv
+1 -6
View File
@@ -1,11 +1,6 @@
PACKAGE=runtime PACKAGE=runtime
PROG= mount_unionfs PROG= mount_unionfs
SRCS= mount_unionfs.c getmntopts.c
MAN= mount_unionfs.8 MAN= mount_unionfs.8
LIBADD= util
MOUNT= ${.CURDIR:H}/mount
CFLAGS+=-I${MOUNT}
.PATH: ${MOUNT}
.include <bsd.prog.mk> .include <bsd.prog.mk>
+1 -6
View File
@@ -1,13 +1,8 @@
PACKAGE=ufs PACKAGE=ufs
PROG= tunefs PROG= tunefs
SRCS= tunefs.c getmntopts.c LIBADD= ufs util
LIBADD= ufs
MAN= tunefs.8 MAN= tunefs.8
MOUNT= ${SRCTOP}/sbin/mount
CFLAGS+= -I${MOUNT}
.PATH: ${MOUNT}
WARNS?= 3 WARNS?= 3
.include <bsd.prog.mk> .include <bsd.prog.mk>
-4
View File
@@ -55,7 +55,6 @@ GTESTS+= xattr
.for p in ${GTESTS} .for p in ${GTESTS}
SRCS.$p+= ${p}.cc SRCS.$p+= ${p}.cc
SRCS.$p+= getmntopts.c
SRCS.$p+= mockfs.cc SRCS.$p+= mockfs.cc
SRCS.$p+= utils.cc SRCS.$p+= utils.cc
.endfor .endfor
@@ -68,7 +67,6 @@ TEST_METADATA.nfs+= required_user="root"
TEST_METADATA+= timeout=10 TEST_METADATA+= timeout=10
FUSEFS= ${SRCTOP}/sys/fs/fuse FUSEFS= ${SRCTOP}/sys/fs/fuse
MOUNT= ${SRCTOP}/sbin/mount
# Suppress warnings that GCC generates for the libc++ and gtest headers. # Suppress warnings that GCC generates for the libc++ and gtest headers.
CXXWARNFLAGS.gcc+= -Wno-placement-new -Wno-attributes CXXWARNFLAGS.gcc+= -Wno-placement-new -Wno-attributes
# Suppress Wcast-align for readdir.cc, because it is unavoidable when using # Suppress Wcast-align for readdir.cc, because it is unavoidable when using
@@ -87,8 +85,6 @@ CXXWARNFLAGS+= -Wno-vla-cxx-extension
.endif .endif
CXXFLAGS+= -I${SRCTOP}/tests CXXFLAGS+= -I${SRCTOP}/tests
CXXFLAGS+= -I${FUSEFS} CXXFLAGS+= -I${FUSEFS}
CXXFLAGS+= -I${MOUNT}
.PATH: ${MOUNT}
LIBADD+= pthread LIBADD+= pthread
LIBADD+= gmock gtest LIBADD+= gmock gtest
-7
View File
@@ -6,7 +6,6 @@ SRCS+= automountd.c
SRCS+= autounmountd.c SRCS+= autounmountd.c
SRCS+= common.c SRCS+= common.c
SRCS+= defined.c SRCS+= defined.c
SRCS+= getmntopts.c
SRCS+= log.c SRCS+= log.c
SRCS+= popen.c SRCS+= popen.c
SRCS+= token.l SRCS+= token.l
@@ -18,15 +17,9 @@ MAN= automount.8 automountd.8 autounmountd.8 auto_master.5
LIBADD= util LIBADD= util
# Needed for getmntopts.c
MOUNT= ${SRCTOP}/sbin/mount
CFLAGS+=-I${MOUNT}
LINKS= ${BINDIR}/automountd ${BINDIR}/automount LINKS= ${BINDIR}/automountd ${BINDIR}/automount
LINKS+= ${BINDIR}/automountd ${BINDIR}/autounmountd LINKS+= ${BINDIR}/automountd ${BINDIR}/autounmountd
.PATH: ${MOUNT}
SUBDIR= autofs SUBDIR= autofs
.include <bsd.prog.mk> .include <bsd.prog.mk>
+2 -5
View File
@@ -1,15 +1,12 @@
PROG= mount_smbfs PROG= mount_smbfs
PACKAGE= smbutils PACKAGE= smbutils
SRCS= mount_smbfs.c getmntopts.c
MAN= mount_smbfs.8 MAN= mount_smbfs.8
MOUNTDIR= ${SRCTOP}/sbin/mount
CONTRIBDIR= ${SRCTOP}/contrib/smbfs CONTRIBDIR= ${SRCTOP}/contrib/smbfs
CFLAGS+= -DSMBFS -I${MOUNTDIR} -I${CONTRIBDIR}/include CFLAGS+= -DSMBFS -I${CONTRIBDIR}/include
LIBADD= smb LIBADD= smb util
.PATH: ${CONTRIBDIR}/mount_smbfs .PATH: ${CONTRIBDIR}/mount_smbfs
.PATH: ${MOUNTDIR}
.include <bsd.prog.mk> .include <bsd.prog.mk>
-5
View File
@@ -1,13 +1,8 @@
PROG= mountd PROG= mountd
SRCS= mountd.c getmntopts.c
MAN= exports.5 netgroup.5 mountd.8 MAN= exports.5 netgroup.5 mountd.8
MOUNT= ${SRCTOP}/sbin/mount
CFLAGS+= -I${MOUNT}
WARNS?= 2 WARNS?= 2
.PATH: ${MOUNT}
LIBADD= util LIBADD= util
.include <bsd.prog.mk> .include <bsd.prog.mk>