Portability fix
diff --git a/lib/fuse.c b/lib/fuse.c
index b809374..42ab52a 100644
--- a/lib/fuse.c
+++ b/lib/fuse.c
@@ -17,6 +17,7 @@
 #include <sys/param.h>
 
 #define FUSE_MAX_PATH 4096
+#define PARAM(inarg) (((char *)(inarg)) + sizeof(*inarg))
 
 static inline void inc_avail(struct fuse *f)
 {
@@ -572,7 +573,7 @@
     struct stat buf;
 
     res = -ENOENT;
-    path = get_path_name(f, in->ino, inarg->name);
+    path = get_path_name(f, in->ino, PARAM(inarg));
     if(path != NULL) {
         res = -ENOSYS;
         if(f->op.mknod && f->op.getattr) {
@@ -584,7 +585,7 @@
     }
     if(res == 0) {
         convert_stat(&buf, &outarg.attr);
-        outarg.ino = find_node(f, in->ino, inarg->name, &outarg.attr,
+        outarg.ino = find_node(f, in->ino, PARAM(inarg), &outarg.attr,
                                in->unique);
     }
 
@@ -598,7 +599,7 @@
     char *path;
 
     res = -ENOENT;
-    path = get_path_name(f, in->ino, inarg->name);
+    path = get_path_name(f, in->ino, PARAM(inarg));
     if(path != NULL) {
         res = -ENOSYS;
         if(f->op.mkdir)
@@ -655,8 +656,8 @@
     int res;
     fino_t olddir = in->ino;
     fino_t newdir = inarg->newdir;
-    char *oldname = inarg->names;
-    char *newname = inarg->names + strlen(oldname) + 1;
+    char *oldname = PARAM(inarg);
+    char *newname = oldname + strlen(oldname) + 1;
     char *oldpath;
     char *newpath;
 
@@ -687,7 +688,7 @@
     res = -ENOENT;
     oldpath = get_path(f, in->ino);
     if(oldpath != NULL) {
-        newpath =  get_path_name(f, arg->newdir, arg->name);
+        newpath =  get_path_name(f, arg->newdir, PARAM(arg));
         if(newpath != NULL) {
             res = -ENOSYS;
             if(f->op.link)
@@ -774,7 +775,7 @@
 
         res = -ENOSYS;
         if(f->op.write)
-            res = f->op.write(path, arg->buf, arg->size, arg->offset);
+            res = f->op.write(path, PARAM(arg), arg->size, arg->offset);
         free(path);
     }