]> git.sur5r.net Git - bacula/bacula/commitdiff
Apply Carsten's patch that fixes bug #2192 builds on kfreebsd
authorCarsten Leonhardt <leo@debian.org>
Tue, 12 Jan 2016 16:37:26 +0000 (17:37 +0100)
committerKern Sibbald <kern@sibbald.com>
Tue, 12 Jan 2016 16:37:26 +0000 (17:37 +0100)
bacula/autoconf/acconfig.h
bacula/autoconf/bacula-macros/os.m4
bacula/autoconf/config.h.in
bacula/src/findlib/fstype.c

index 3a694a0fce1933791d0e74dbc751b26e612e0cc4..310c77f72c847e654098323311886463fdd092f1 100644 (file)
 /* OSes */
 #undef HAVE_LINUX_OS
 #undef HAVE_FREEBSD_OS
+#undef HAVE_KFREEBSD_OS
 #undef HAVE_NETBSD_OS
 #undef HAVE_OPENBSD_OS
 #undef HAVE_BSDI_OS
index eb249a6e4f8b227b21bc6db80808568d0d7cde6e..b82deed5324101b5db045b976b9cb78c15240ab8 100644 (file)
@@ -160,6 +160,14 @@ then
 else
     AM_CONDITIONAL(HAVE_DARWIN_OS, $FALSEPRG)
 fi
+
+if test $HAVE_UNAME=yes -a x`uname -s` = xGNU/kFreeBSD
+then
+    AM_CONDITIONAL(HAVE_KFREEBSD_OS, $TRUEPRG)
+    AC_DEFINE(HAVE_KFREEBSD_OS)
+else
+    AM_CONDITIONAL(HAVE_KFREEBSD_OS, $FALSEPRG)
+fi
 ])
 
 AC_DEFUN([BA_CHECK_OPSYS_DISTNAME],
index 5cc08b80ad36b1e6443261d6ec95cbded34fb467..f9f1bd9fd74adab46fc41d5f10f5b228a8563d66 100644 (file)
 /* OSes */
 #undef HAVE_LINUX_OS
 #undef HAVE_FREEBSD_OS
+#undef HAVE_KFREEBSD_OS
 #undef HAVE_NETBSD_OS
 #undef HAVE_OPENBSD_OS
 #undef HAVE_BSDI_OS
index dc4f65d0ff2523b09ecabfed3b52c65114917ea8..ab3b20616e0a0b8d095c50b886bff1b370c38cd7 100644 (file)
@@ -337,7 +337,41 @@ bool fstype(FF_PKT *ff_pkt, char *fs, int fslen)
 /* Read mtab entries  */
 bool read_mtab(mtab_handler_t *mtab_handler, void *user_ctx)
 { 
-#ifdef HAVE_GETMNTENT
+/* Debian stretch GNU/KFreeBSD has both getmntinfo and getmntent, but
+   only the first seems to work, so ordering is important here */
+#ifdef HAVE_GETMNTINFO
+   struct stat st;
+#if defined(ST_NOWAIT)
+   int flags = ST_NOWAIT;
+#elif defined(MNT_NOWAIT)
+   int flags = MNT_NOWAIT;
+#else
+   int flags = 0;
+#endif
+#if defined(HAVE_NETBSD_OS)
+   struct statvfs *mntinfo;
+#else
+   struct statfs *mntinfo;
+#endif
+   int nument;
+
+   P(mutex);
+   if ((nument = getmntinfo(&mntinfo, flags)) > 0) {
+      while (nument-- > 0) {
+         if (is_rootfs(mntinfo->f_fstypename)) {
+            continue;
+         }
+         if (stat(mntinfo->f_mntonname, &st) < 0) {
+            continue;
+         }
+         mtab_handler(user_ctx, &st, mntinfo->f_mntfromname,
+            mntinfo->f_mntonname, mntinfo->f_fstypename, NULL);
+         mntinfo++;
+      }
+   }
+   V(mutex);
+/* HAVE_GETMNTINFO */
+#elif defined(HAVE_GETMNTENT)
    FILE *mntfp;
    struct stat st;
  
@@ -389,39 +423,6 @@ bool read_mtab(mtab_handler_t *mtab_handler, void *user_ctx)
 #endif
 
 #endif /* HAVE_GETMNTENT */
-
-#ifdef HAVE_GETMNTINFO
-   struct stat st;
-#if defined(ST_NOWAIT)
-   int flags = ST_NOWAIT;
-#elif defined(MNT_NOWAIT)
-   int flags = MNT_NOWAIT;
-#else
-   int flags = 0;
-#endif
-#if defined(HAVE_NETBSD_OS)
-   struct statvfs *mntinfo;
-#else
-   struct statfs *mntinfo;
-#endif
-   int nument;
-
-   P(mutex);
-   if ((nument = getmntinfo(&mntinfo, flags)) > 0) {
-      while (nument-- > 0) {
-         if (is_rootfs(mntinfo->f_fstypename)) {
-            continue;
-         }
-         if (stat(mntinfo->f_mntonname, &st) < 0) {
-            continue;
-         }
-         mtab_handler(user_ctx, &st, mntinfo->f_mntfromname,
-            mntinfo->f_mntonname, mntinfo->f_fstypename, NULL);
-         mntinfo++;
-      }
-   } 
-   V(mutex);
-#endif /* HAVE_GETMNTINFO */
    return true;
 }