$OpenBSD$

Index: src/fs.cc
--- src/fs.cc.orig
+++ src/fs.cc
@@ -42,7 +42,7 @@
 #include <sys/statfs.h>
 #endif
 
-#if defined(__sun)
+#if defined(__sun) || defined(__OpenBSD__)
 #include <sys/statvfs.h>
 #include <sys/types.h>
 #endif
@@ -126,14 +126,18 @@ struct fs_stat *prepare_fs_stat(const char *s) {
 #endif /* defined(__APPLE__) */
 
 static void update_fs_stat(struct fs_stat *fs) {
-#if defined(__sun)
+#if defined(__sun) || defined(__OpenBSD__)
   struct statvfs s;
 
   if (statvfs(fs->path, &s) == 0) {
     fs->size = (long long)s.f_blocks * s.f_frsize;
     fs->avail = (long long)s.f_bavail * s.f_frsize;
     fs->free = (long long)s.f_bfree * s.f_frsize;
+#ifdef __OpenBSD__
+    strncpy(fs->type, "unknown", DEFAULT_TEXT_BUFFER_SIZE);
+#else
     (void)strncpy(fs->type, s.f_basetype, sizeof(fs->type));
+#endif
 #else
   struct statfs_struct s {};
 
@@ -154,6 +158,7 @@ static void update_fs_stat(struct fs_stat *fs) {
 }
 
 void get_fs_type(const char *path, char *result) {
+#ifndef __OpenBSD__
 #if defined(HAVE_STRUCT_STATFS_F_FSTYPENAME) || defined(__FreeBSD__) ||     \
     defined(__OpenBSD__) || defined(__DragonFly__) || defined(__HAIKU__) || \
     (defined(__APPLE__) && defined(__MACH__))
@@ -211,6 +216,7 @@ void get_fs_type(const char *path, char *result) {
     return;
   }
 #endif /* HAVE_STRUCT_STATFS_F_FSTYPENAME */
+#endif
 
   strncpy(result, "unknown", DEFAULT_TEXT_BUFFER_SIZE);
 }
