about summary refs log tree commit diff
path: root/lr.c
diff options
context:
space:
mode:
authorChristian Neukirchen <chneukirchen@gmail.com>2015-10-26 22:22:09 +0100
committerChristian Neukirchen <chneukirchen@gmail.com>2015-10-26 22:22:09 +0100
commit0ab154f2cd2879ea8a3cc65f66bbfc8ca3991088 (patch)
tree99afba3577088418e6fc79f070e9c57e9b0c44d3 /lr.c
parentc83a66e2a8a459d2aadef8b4dad05a1d2c45bef2 (diff)
downloadlr-0ab154f2cd2879ea8a3cc65f66bbfc8ca3991088.tar.gz
lr-0ab154f2cd2879ea8a3cc65f66bbfc8ca3991088.tar.xz
lr-0ab154f2cd2879ea8a3cc65f66bbfc8ca3991088.zip
fstype for NetBSD
Diffstat (limited to 'lr.c')
-rw-r--r--lr.c23
1 files changed, 23 insertions, 0 deletions
diff --git a/lr.c b/lr.c
index b323fb6..6bbefd3 100644
--- a/lr.c
+++ b/lr.c
@@ -697,6 +697,29 @@ scan_filesystems()
 
 	scanned_filesystems = 1;
 }
+#elif defined(__NetBSD__)
+#include <sys/types.h>
+#include <sys/statvfs.h>
+void
+scan_filesystems()
+{
+	struct statvfs *mnt;
+	struct stat st;
+	int i = getmntinfo(&mnt, MNT_NOWAIT);
+
+	while (i-- > 0) {
+		if (stat(mnt->f_mntonname, &st) < 0)
+			continue;
+
+		struct idmap *newkey = malloc(sizeof (struct idmap));
+		newkey->id = st.st_dev;
+		newkey->name = strdup(mnt->f_fstypename);
+		tsearch(newkey, &filesystems, idorder);
+		mnt++;
+	};
+
+	scanned_filesystems = 1;
+}
 #else
 void
 scan_filesystems()