Mercurial > gnulib
comparison m4/mountlist.m4 @ 40153:878ddb87671b
mountlist: Merge two .m4 files.
* m4/mountlist.m4 (gl_MOUNTLIST): Inline gl_LIST_MOUNTED_FILE_SYSTEMS.
(AC_FUNC_GETMNTENT): Move to here, from m4/ls-mntd-fs.m4.
* m4/ls-mntd-fs.m4: Remove file.
* modules/mountlist (Files): Remove m4/ls-mntd-fs.m4.
author | Bruno Haible <bruno@clisp.org> |
---|---|
date | Sun, 27 Jan 2019 11:45:28 +0100 |
parents | b06060465f09 |
children |
comparison
equal
deleted
inserted
replaced
40152:7972ff22b3cf | 40153:878ddb87671b |
---|---|
1 # serial 12 | 1 # serial 13 |
2 dnl Copyright (C) 2002-2006, 2009-2019 Free Software Foundation, Inc. | 2 dnl Copyright (C) 2002-2006, 2009-2019 Free Software Foundation, Inc. |
3 dnl This file is free software; the Free Software Foundation | 3 dnl This file is free software; the Free Software Foundation |
4 dnl gives unlimited permission to copy and/or distribute it, | 4 dnl gives unlimited permission to copy and/or distribute it, |
5 dnl with or without modifications, as long as this notice is preserved. | 5 dnl with or without modifications, as long as this notice is preserved. |
6 | 6 |
7 dnl From Jim Meyering. | |
8 | |
9 AC_PREREQ([2.60]) | |
10 | |
7 AC_DEFUN([gl_MOUNTLIST], | 11 AC_DEFUN([gl_MOUNTLIST], |
8 [ | 12 [ |
9 gl_LIST_MOUNTED_FILE_SYSTEMS([gl_cv_list_mounted_fs=yes], | 13 AC_REQUIRE([AC_CANONICAL_HOST]) |
10 [gl_cv_list_mounted_fs=no]) | 14 AC_CHECK_FUNCS([listmntent]) |
15 AC_CHECK_HEADERS_ONCE([sys/param.h sys/statvfs.h]) | |
16 | |
17 # We must include grp.h before ucred.h on OSF V4.0, since ucred.h uses | |
18 # NGROUPS (as the array dimension for a struct member) without a definition. | |
19 AC_CHECK_HEADERS([sys/ucred.h], [], [], [#include <grp.h>]) | |
20 | |
21 AC_CHECK_HEADERS([sys/mount.h], [], [], | |
22 [AC_INCLUDES_DEFAULT | |
23 [#if HAVE_SYS_PARAM_H | |
24 #include <sys/param.h> | |
25 #endif | |
26 ]]) | |
27 | |
28 AC_CHECK_HEADERS([mntent.h sys/fs_types.h]) | |
29 getfsstat_includes="\ | |
30 $ac_includes_default | |
31 #if HAVE_SYS_PARAM_H | |
32 # include <sys/param.h> /* needed by powerpc-apple-darwin1.3.7 */ | |
33 #endif | |
34 #if HAVE_SYS_UCRED_H | |
35 # include <grp.h> /* needed for definition of NGROUPS */ | |
36 # include <sys/ucred.h> /* needed by powerpc-apple-darwin1.3.7 */ | |
37 #endif | |
38 #if HAVE_SYS_MOUNT_H | |
39 # include <sys/mount.h> | |
40 #endif | |
41 #if HAVE_SYS_FS_TYPES_H | |
42 # include <sys/fs_types.h> /* needed by powerpc-apple-darwin1.3.7 */ | |
43 #endif | |
44 " | |
45 AC_CHECK_MEMBERS([struct fsstat.f_fstypename],,,[$getfsstat_includes]) | |
46 | |
47 # Determine how to get the list of mounted file systems. | |
48 ac_list_mounted_fs= | |
49 | |
50 # If the getmntent function is available but not in the standard library, | |
51 # make sure LIBS contains the appropriate -l option. | |
52 AC_FUNC_GETMNTENT | |
53 | |
54 if test -z "$ac_list_mounted_fs"; then | |
55 # AIX. | |
56 AC_CACHE_CHECK([for mntctl function and struct vmount], | |
57 [fu_cv_sys_mounted_vmount], | |
58 [AC_PREPROC_IFELSE([AC_LANG_SOURCE([[#include <fshelp.h>]])], | |
59 [fu_cv_sys_mounted_vmount=yes], | |
60 [fu_cv_sys_mounted_vmount=no])]) | |
61 if test $fu_cv_sys_mounted_vmount = yes; then | |
62 ac_list_mounted_fs=found | |
63 AC_DEFINE([MOUNTED_VMOUNT], [1], | |
64 [Define if there is a function named mntctl that can be used to read | |
65 the list of mounted file systems, and there is a system header file | |
66 that declares 'struct vmount'. (AIX)]) | |
67 fi | |
68 fi | |
69 | |
70 if test $ac_cv_func_getmntent = yes; then | |
71 | |
72 # This system has the getmntent function. | |
73 # Determine whether it's the one-argument variant or the two-argument one. | |
74 | |
75 if test -z "$ac_list_mounted_fs"; then | |
76 # glibc, HP-UX, IRIX, Cygwin, Android, also (obsolete) 4.3BSD, SunOS. | |
77 AC_CACHE_CHECK([for one-argument getmntent function], | |
78 [fu_cv_sys_mounted_getmntent1], | |
79 [AC_COMPILE_IFELSE( | |
80 [AC_LANG_PROGRAM([[ | |
81 /* SunOS 4.1.x /usr/include/mntent.h needs this for FILE */ | |
82 #include <stdio.h> | |
83 | |
84 #include <mntent.h> | |
85 #if defined __ANDROID__ /* Android */ | |
86 # undef MOUNTED | |
87 # define MOUNTED "/proc/mounts" | |
88 #elif !defined MOUNTED | |
89 # if defined _PATH_MOUNTED /* GNU libc */ | |
90 # define MOUNTED _PATH_MOUNTED | |
91 # endif | |
92 # if defined MNT_MNTTAB /* HP-UX. */ | |
93 # define MOUNTED MNT_MNTTAB | |
94 # endif | |
95 #endif | |
96 ]], | |
97 [[struct mntent *mnt = 0; char *table = MOUNTED; | |
98 if (sizeof mnt && sizeof table) return 0; | |
99 ]])], | |
100 [fu_cv_sys_mounted_getmntent1=yes], | |
101 [fu_cv_sys_mounted_getmntent1=no]) | |
102 ]) | |
103 if test $fu_cv_sys_mounted_getmntent1 = yes; then | |
104 ac_list_mounted_fs=found | |
105 AC_DEFINE([MOUNTED_GETMNTENT1], [1], | |
106 [Define if there is a function named getmntent for reading the list | |
107 of mounted file systems, and that function takes a single argument. | |
108 (4.3BSD, SunOS, HP-UX, Irix)]) | |
109 AC_CHECK_FUNCS([setmntent endmntent hasmntopt]) | |
110 fi | |
111 fi | |
112 | |
113 if test -z "$ac_list_mounted_fs"; then | |
114 # Solaris >= 8. | |
115 AC_CACHE_CHECK([for getextmntent function], | |
116 [fu_cv_sys_mounted_getextmntent], | |
117 [AC_EGREP_HEADER([getextmntent], [sys/mnttab.h], | |
118 [fu_cv_sys_mounted_getextmntent=yes], | |
119 [fu_cv_sys_mounted_getextmntent=no])]) | |
120 if test $fu_cv_sys_mounted_getextmntent = yes; then | |
121 ac_list_mounted_fs=found | |
122 AC_DEFINE([MOUNTED_GETEXTMNTENT], [1], | |
123 [Define if there is a function named getextmntent for reading the list | |
124 of mounted file systems. (Solaris)]) | |
125 fi | |
126 fi | |
127 | |
128 if test -z "$ac_list_mounted_fs"; then | |
129 # Solaris < 8, also (obsolete) SVR4. | |
130 # Solaris >= 8 has the two-argument getmntent but is already handled above. | |
131 AC_CACHE_CHECK([for two-argument getmntent function], | |
132 [fu_cv_sys_mounted_getmntent2], | |
133 [AC_EGREP_HEADER([getmntent], [sys/mnttab.h], | |
134 [fu_cv_sys_mounted_getmntent2=yes], | |
135 [fu_cv_sys_mounted_getmntent2=no]) | |
136 ]) | |
137 if test $fu_cv_sys_mounted_getmntent2 = yes; then | |
138 ac_list_mounted_fs=found | |
139 AC_DEFINE([MOUNTED_GETMNTENT2], [1], | |
140 [Define if there is a function named getmntent for reading the list of | |
141 mounted file systems, and that function takes two arguments. (SVR4)]) | |
142 AC_CHECK_FUNCS([hasmntopt]) | |
143 fi | |
144 fi | |
145 | |
146 fi | |
147 | |
148 if test -z "$ac_list_mounted_fs"; then | |
149 # OSF/1, also (obsolete) Apple Darwin 1.3. | |
150 # powerpc-apple-darwin1.3.7 needs sys/param.h sys/ucred.h sys/fs_types.h | |
151 | |
152 AC_CACHE_CHECK([for getfsstat function], | |
153 [fu_cv_sys_mounted_getfsstat], | |
154 [AC_LINK_IFELSE( | |
155 [AC_LANG_PROGRAM([[ | |
156 #include <sys/types.h> | |
157 #if HAVE_STRUCT_FSSTAT_F_FSTYPENAME | |
158 # define FS_TYPE(Ent) ((Ent).f_fstypename) | |
159 #else | |
160 # define FS_TYPE(Ent) mnt_names[(Ent).f_type] | |
161 #endif | |
162 $getfsstat_includes | |
163 ]], | |
164 [[struct statfs *stats; | |
165 int numsys = getfsstat ((struct statfs *)0, 0L, MNT_WAIT); | |
166 char *t = FS_TYPE (*stats); | |
167 ]])], | |
168 [fu_cv_sys_mounted_getfsstat=yes], | |
169 [fu_cv_sys_mounted_getfsstat=no]) | |
170 ]) | |
171 if test $fu_cv_sys_mounted_getfsstat = yes; then | |
172 ac_list_mounted_fs=found | |
173 AC_DEFINE([MOUNTED_GETFSSTAT], [1], | |
174 [Define if there is a function named getfsstat for reading the | |
175 list of mounted file systems. (DEC Alpha running OSF/1)]) | |
176 fi | |
177 fi | |
178 | |
179 if test -z "$ac_list_mounted_fs"; then | |
180 # (obsolete) SVR3 | |
181 AC_CACHE_CHECK([for FIXME existence of three headers], | |
182 [fu_cv_sys_mounted_fread_fstyp], | |
183 [AC_PREPROC_IFELSE([AC_LANG_SOURCE([[ | |
184 #include <sys/statfs.h> | |
185 #include <sys/fstyp.h> | |
186 #include <mnttab.h> | |
187 ]])], | |
188 [fu_cv_sys_mounted_fread_fstyp=yes], | |
189 [fu_cv_sys_mounted_fread_fstyp=no]) | |
190 ]) | |
191 if test $fu_cv_sys_mounted_fread_fstyp = yes; then | |
192 ac_list_mounted_fs=found | |
193 AC_DEFINE([MOUNTED_FREAD_FSTYP], [1], | |
194 [Define if (like SVR2) there is no specific function for reading the | |
195 list of mounted file systems, and your system has these header files: | |
196 <sys/fstyp.h> and <sys/statfs.h>. (SVR3)]) | |
197 fi | |
198 fi | |
199 | |
200 if test -z "$ac_list_mounted_fs"; then | |
201 # Mac OS X, FreeBSD, NetBSD, OpenBSD, Minix, also (obsolete) 4.4BSD. | |
202 # OSF/1 also has getmntinfo but is already handled above. | |
203 # We cannot use AC_CHECK_FUNCS([getmntinfo]) here, because at the linker | |
204 # level the function is sometimes called getmntinfo64 or getmntinfo$INODE64 | |
205 # on Mac OS X, __getmntinfo13 on NetBSD and Minix, _F64_getmntinfo on OSF/1. | |
206 AC_CACHE_CHECK([for getmntinfo function], | |
207 [fu_cv_sys_mounted_getmntinfo], | |
208 [AC_LINK_IFELSE( | |
209 [AC_LANG_PROGRAM([[ | |
210 #if HAVE_SYS_PARAM_H | |
211 # include <sys/param.h> | |
212 #endif | |
213 #include <sys/types.h> | |
214 #if HAVE_SYS_MOUNT_H | |
215 # include <sys/mount.h> | |
216 #endif | |
217 #if HAVE_SYS_STATVFS_H | |
218 # include <sys/statvfs.h> | |
219 #endif | |
220 #include <stdlib.h> | |
221 ]], | |
222 [[int count = getmntinfo (NULL, MNT_WAIT); | |
223 ]])], | |
224 [fu_cv_sys_mounted_getmntinfo=yes], | |
225 [fu_cv_sys_mounted_getmntinfo=no]) | |
226 ]) | |
227 if test $fu_cv_sys_mounted_getmntinfo = yes; then | |
228 AC_CACHE_CHECK([whether getmntinfo returns statvfs structures], | |
229 [fu_cv_sys_mounted_getmntinfo2], | |
230 [AC_COMPILE_IFELSE( | |
231 [AC_LANG_PROGRAM([[ | |
232 #if HAVE_SYS_PARAM_H | |
233 # include <sys/param.h> | |
234 #endif | |
235 #include <sys/types.h> | |
236 #if HAVE_SYS_MOUNT_H | |
237 # include <sys/mount.h> | |
238 #endif | |
239 #if HAVE_SYS_STATVFS_H | |
240 # include <sys/statvfs.h> | |
241 #endif | |
242 extern | |
243 #ifdef __cplusplus | |
244 "C" | |
245 #endif | |
246 int getmntinfo (struct statfs **, int); | |
247 ]], [])], | |
248 [fu_cv_sys_mounted_getmntinfo2=no], | |
249 [fu_cv_sys_mounted_getmntinfo2=yes]) | |
250 ]) | |
251 if test $fu_cv_sys_mounted_getmntinfo2 = no; then | |
252 # Mac OS X, FreeBSD, OpenBSD, also (obsolete) 4.4BSD. | |
253 ac_list_mounted_fs=found | |
254 AC_DEFINE([MOUNTED_GETMNTINFO], [1], | |
255 [Define if there is a function named getmntinfo for reading the | |
256 list of mounted file systems and it returns an array of | |
257 'struct statfs'. (4.4BSD, Darwin)]) | |
258 else | |
259 # NetBSD, Minix. | |
260 ac_list_mounted_fs=found | |
261 AC_DEFINE([MOUNTED_GETMNTINFO2], [1], | |
262 [Define if there is a function named getmntinfo for reading the | |
263 list of mounted file systems and it returns an array of | |
264 'struct statvfs'. (NetBSD 3.0)]) | |
265 fi | |
266 fi | |
267 fi | |
268 | |
269 if test -z "$ac_list_mounted_fs"; then | |
270 # Haiku, also (obsolete) BeOS. | |
271 AC_CHECK_FUNCS([next_dev fs_stat_dev]) | |
272 AC_CHECK_HEADERS([fs_info.h]) | |
273 AC_CACHE_CHECK([for BEOS mounted file system support functions], | |
274 [fu_cv_sys_mounted_fs_stat_dev], | |
275 [if test $ac_cv_header_fs_info_h = yes \ | |
276 && test $ac_cv_func_next_dev = yes \ | |
277 && test $ac_cv_func_fs_stat_dev = yes; then | |
278 fu_cv_sys_mounted_fs_stat_dev=yes | |
279 else | |
280 fu_cv_sys_mounted_fs_stat_dev=no | |
281 fi | |
282 ]) | |
283 if test $fu_cv_sys_mounted_fs_stat_dev = yes; then | |
284 ac_list_mounted_fs=found | |
285 AC_DEFINE([MOUNTED_FS_STAT_DEV], [1], | |
286 [Define if there are functions named next_dev and fs_stat_dev for | |
287 reading the list of mounted file systems. (BeOS)]) | |
288 fi | |
289 fi | |
290 | |
291 if test -z "$ac_list_mounted_fs"; then | |
292 # Interix / BSD alike statvfs | |
293 # the code is really interix specific, so make sure, we're on it. | |
294 case "$host" in | |
295 *-interix*) | |
296 AC_CHECK_FUNCS([statvfs]) | |
297 if test $ac_cv_func_statvfs = yes; then | |
298 ac_list_mounted_fs=found | |
299 AC_DEFINE([MOUNTED_INTERIX_STATVFS], [1], | |
300 [Define if we are on interix, and ought to use statvfs plus | |
301 some special knowledge on where mounted file systems can be | |
302 found. (Interix)]) | |
303 fi | |
304 ;; | |
305 esac | |
306 fi | |
307 | |
308 if test -z "$ac_list_mounted_fs"; then | |
309 AC_MSG_ERROR([could not determine how to read list of mounted file systems]) | |
310 # FIXME -- no need to abort building the whole package | |
311 # Can't build mountlist.c or anything that needs its functions | |
312 fi | |
313 | |
314 if test $ac_list_mounted_fs = found; then | |
315 gl_cv_list_mounted_fs=yes | |
316 else | |
317 gl_cv_list_mounted_fs=no | |
318 fi | |
11 ]) | 319 ]) |
12 | 320 |
13 # Prerequisites of lib/mountlist.c not done by gl_LIST_MOUNTED_FILE_SYSTEMS. | 321 # Prerequisites of lib/mountlist.c not done by gl_MOUNTLIST. |
14 AC_DEFUN([gl_PREREQ_MOUNTLIST_EXTRA], | 322 AC_DEFUN([gl_PREREQ_MOUNTLIST_EXTRA], |
15 [ | 323 [ |
16 dnl Note gl_LIST_MOUNTED_FILE_SYSTEMS checks for mntent.h, not sys/mntent.h. | 324 dnl Note gl_MOUNTLIST checks for mntent.h, not sys/mntent.h. |
17 AC_CHECK_HEADERS([sys/mntent.h]) | 325 AC_CHECK_HEADERS([sys/mntent.h]) |
18 AC_HEADER_MAJOR()dnl for use of makedev () | 326 AC_HEADER_MAJOR()dnl for use of makedev () |
19 gl_FSTYPENAME | 327 gl_FSTYPENAME |
20 ]) | 328 ]) |
329 | |
330 # Replace Autoconf's AC_FUNC_GETMNTENT to omit checks that are unnecessary | |
331 # nowadays. | |
332 AC_DEFUN([AC_FUNC_GETMNTENT], | |
333 [ | |
334 # getmntent is in the standard C library on UNICOS, in -lsun on Irix 4, | |
335 # -lgen on Unixware. | |
336 AC_SEARCH_LIBS([getmntent], [sun gen]) | |
337 AC_CHECK_FUNCS([getmntent]) | |
338 ]) |