#include <sys/param.h>
#define FUSE_MAX_PATH 4096
+#define PARAM(inarg) (((char *)(inarg)) + sizeof(*inarg))
static inline void inc_avail(struct fuse *f)
{
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) {
}
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);
}
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)
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;
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)
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);
}