summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTavian Barnes <tavianator@tavianator.com>2024-05-07 13:34:19 -0400
committerTavian Barnes <tavianator@tavianator.com>2024-05-07 15:13:28 -0400
commit3908e7ef7ecaffd7b54228d09baeb1db83b0e45d (patch)
treead41f84cbac0011a717d875f0df1c62bf3fc83ad
parentc7320b94af8db53b0a4b0a96e37d6e81a0d4a68c (diff)
downloadbfs-3908e7ef7ecaffd7b54228d09baeb1db83b0e45d.tar.xz
build: Check for 1- and 2-argument getmntent() variants
-rw-r--r--build/has/getmntent-1.c9
-rw-r--r--build/has/getmntent-2.c10
-rw-r--r--build/header.mk2
-rw-r--r--src/mtab.c4
4 files changed, 23 insertions, 2 deletions
diff --git a/build/has/getmntent-1.c b/build/has/getmntent-1.c
new file mode 100644
index 0000000..9854dcd
--- /dev/null
+++ b/build/has/getmntent-1.c
@@ -0,0 +1,9 @@
+// Copyright © Tavian Barnes <tavianator@tavianator.com>
+// SPDX-License-Identifier: 0BSD
+
+#include <mntent.h>
+#include <stdio.h>
+
+int main(void) {
+ return !getmntent(stdin);
+}
diff --git a/build/has/getmntent-2.c b/build/has/getmntent-2.c
new file mode 100644
index 0000000..71f0220
--- /dev/null
+++ b/build/has/getmntent-2.c
@@ -0,0 +1,10 @@
+// Copyright © Tavian Barnes <tavianator@tavianator.com>
+// SPDX-License-Identifier: 0BSD
+
+#include <stdio.h>
+#include <sys/mnttab.h>
+
+int main(void) {
+ struct mnttab mnt;
+ return getmntent(stdin, &mnt);
+}
diff --git a/build/header.mk b/build/header.mk
index 52dcb6a..da6de68 100644
--- a/build/header.mk
+++ b/build/header.mk
@@ -24,6 +24,8 @@ HEADERS := \
gen/has/getdents.h \
gen/has/getdents64.h \
gen/has/getdents64-syscall.h \
+ gen/has/getmntent-1.h \
+ gen/has/getmntent-2.h \
gen/has/getmntinfo.h \
gen/has/getprogname.h \
gen/has/getprogname-gnu.h \
diff --git a/src/mtab.c b/src/mtab.c
index 9befde3..0377fea 100644
--- a/src/mtab.c
+++ b/src/mtab.c
@@ -13,11 +13,11 @@
#include <string.h>
#include <sys/types.h>
-#if !defined(BFS_USE_MNTENT) && BFS_USE_MNTENT_H
+#if !defined(BFS_USE_MNTENT) && BFS_HAS_GETMNTENT_1
# define BFS_USE_MNTENT true
#elif !defined(BFS_USE_MNTINFO) && BFS_HAS_GETMNTINFO
# define BFS_USE_MNTINFO true
-#elif !defined(BFS_USE_MNTTAB) && __SVR4
+#elif !defined(BFS_USE_MNTTAB) && BFS_HAS_GETMNTENT_2
# define BFS_USE_MNTTAB true
#endif