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);
}