[pacman-dev,1/4] Fix check for FSSTATSTYPE

Message ID 20210416194209.191245-2-mark.weiman@markzz.com
State Superseded, archived
Headers show
Series Various fixes for FreeBSD (and perhaps others) | expand

Commit Message

Mark Weiman April 16, 2021, 7:42 p.m. UTC
On FreeBSD, both `struct statvfs` and `struct statfs` satisfy the
conditions where the `f_flag` and `f_flags` fields are present in both
respectively.

This patch accomplishes a couple of things:

  1. Adds a check for `f_mntonname` in both structs and makes a decision
     to choose statfs if the field is not present in statvfs, but is in
     statfs.
  2. Corrects a small error where the values of those checks are just
     checked for their presence and not whether its true or false.

Signed-off-by: Mark Weiman <mark.weiman@markzz.com>
---
 meson.build | 11 +++++++++--
 1 file changed, 9 insertions(+), 2 deletions(-)

Patch

diff --git a/meson.build b/meson.build
index 579ff2ed..483c4fbd 100644
--- a/meson.build
+++ b/meson.build
@@ -154,6 +154,9 @@  foreach member : [
     ['struct statvfs', 'f_flag', '''#include <sys/statvfs.h>'''],
     ['struct statfs', 'f_flags', '''#include <sys/param.h>
                                     #include <sys/mount.h>'''],
+    ['struct statvfs', 'f_mntonname', '''#include <sys/statvfs.h>'''],
+    ['struct statfs', 'f_mntonname', '''#include <sys/param.h>
+                                        #include <sys/mount.h>'''],
   ]
   have = cc.has_member(member[0], member[1], prefix : member[2])
   conf.set('HAVE_' + '_'.join([member[0], member[1]]).underscorify().to_upper(), have)
@@ -174,9 +177,13 @@  foreach type : [
   endif
 endforeach
 
-if conf.has('HAVE_STRUCT_STATVFS_F_FLAG')
+if conf.get('HAVE_STRUCT_STATVFS_F_FLAG', false)
   conf.set('FSSTATSTYPE', 'struct statvfs')
-elif conf.has('HAVE_STRUCT_STATFS_F_FLAGS')
+elif conf.get('HAVE_STRUCT_STATFS_F_FLAGS', false)
+  conf.set('FSSTATSTYPE', 'struct statfs')
+endif
+
+if not conf.get('HAVE_STRUCT_STATVFS_F_MNTONNAME', false) and conf.get('HAVE_STRUCT_STATFS_F_MNTONNAME', false)
   conf.set('FSSTATSTYPE', 'struct statfs')
 endif