summaryrefslogtreecommitdiff
path: root/dialects/freebsd/dnode1.c
diff options
context:
space:
mode:
Diffstat (limited to 'dialects/freebsd/dnode1.c')
-rw-r--r--dialects/freebsd/dnode1.c32
1 files changed, 31 insertions, 1 deletions
diff --git a/dialects/freebsd/dnode1.c b/dialects/freebsd/dnode1.c
index a5fa225..f78b9f8 100644
--- a/dialects/freebsd/dnode1.c
+++ b/dialects/freebsd/dnode1.c
@@ -35,7 +35,7 @@
#ifndef lint
static char copyright[] =
"@(#) Copyright 1994 Purdue Research Foundation.\nAll rights reserved.\n";
-static char *rcsid = "$Id: dnode1.c,v 1.10 2008/10/21 16:16:06 abe Exp abe $";
+static char *rcsid = "$Id: dnode1.c,v 1.11 2018/02/14 14:26:03 abe Exp $";
#endif
@@ -142,3 +142,33 @@ read_iso_node(v, d, dd, ino, nl, sz)
return(0);
}
#endif /* defined(HAS9660FS) */
+
+
+#if defined(HASFUSEFS)
+#include <fs/fuse/fuse_node.h>
+/*
+ * read_fuse_node() -- read FUSE file system fuse_node
+ */
+
+int
+read_fuse_node(v, d, dd, ino, nl, sz)
+ struct vnode *v; /* containing vnode */
+ dev_t *d; /* returned device number */
+ int *dd; /* returned device-defined flag */
+ INODETYPE *ino; /* returned inode number */
+ long *nl; /* returned number of links */
+ SZOFFTYPE *sz; /* returned size */
+{
+ struct fuse_vnode_data fn; /* FUSE node */
+
+ if (!v->v_data
+ || kread((KA_T)v->v_data, (char *)&fn, sizeof(fn)))
+ return(1);
+ *d = fn.cached_attrs.va_fsid;
+ *dd = 1;
+ *ino = (INODETYPE)fn.cached_attrs.va_fileid;
+ *nl = (long)fn.cached_attrs.va_nlink;
+ *sz = (SZOFFTYPE)fn.cached_attrs.va_size;
+ return(0);
+}
+#endif /* defined(HASFUSEFS) */