示例#1
0
文件: iconv.c 项目: Abrikatin/fuse
static int iconv_setcrtime(const char *path, const struct timespec *crtime)
{
	struct iconv *ic = iconv_get();
	char *newpath;
	int err = iconv_convpath(ic, path, &newpath, 0);
	if (!err) {
		err = fuse_fs_setcrtime(ic->next, newpath, crtime);
		free(newpath);
	}
	return err;
}
示例#2
0
文件: iconv.c 项目: Abrikatin/fuse
static int iconv_chflags(const char *path, uint32_t flags)
{
	struct iconv *ic = iconv_get();
	char *newpath;
	int err = iconv_convpath(ic, path, &newpath, 0);
	if (!err) {
		err = fuse_fs_chflags(ic->next, newpath, flags);
		free(newpath);
	}
	return err;
}
示例#3
0
文件: iconv.c 项目: 1x23/unifi-gpl
static int iconv_readlink(const char *path, char *buf, size_t size)
{
	struct iconv *ic = iconv_get();
	char *newpath;
	int err = iconv_convpath(ic, path, &newpath, 0);
	if (!err) {
		err = fuse_fs_readlink(ic->next, newpath, buf, size);
		if (!err) {
			char *newlink;
			err = iconv_convpath(ic, buf, &newlink, 1);
			if (!err) {
				strncpy(buf, newlink, size - 1);
				buf[size - 1] = '\0';
				free(newlink);
			}
		}
		free(newpath);
	}
	return err;
}
示例#4
0
文件: iconv.c 项目: Abrikatin/fuse
static int iconv_setvolname(const char *volname)
{
	struct iconv *ic = iconv_get();
	char *newvolname;
	int err = iconv_convpath(ic, volname, &newvolname, 0);
	if (!err) {
		err = fuse_fs_setvolname(ic->next, newvolname);
		free(newvolname);
	}
	return err;
}
示例#5
0
文件: iconv.c 项目: 1x23/unifi-gpl
static int iconv_utimens(const char *path, const struct timespec ts[2])
{
	struct iconv *ic = iconv_get();
	char *newpath;
	int err = iconv_convpath(ic, path, &newpath, 0);
	if (!err) {
		err = fuse_fs_utimens(ic->next, newpath, ts);
		free(newpath);
	}
	return err;
}
示例#6
0
文件: iconv.c 项目: 1x23/unifi-gpl
static int iconv_open_file(const char *path, struct fuse_file_info *fi)
{
	struct iconv *ic = iconv_get();
	char *newpath;
	int err = iconv_convpath(ic, path, &newpath, 0);
	if (!err) {
		err = fuse_fs_open(ic->next, newpath, fi);
		free(newpath);
	}
	return err;
}
示例#7
0
文件: iconv.c 项目: 1x23/unifi-gpl
static int iconv_chown(const char *path, uid_t uid, gid_t gid)
{
	struct iconv *ic = iconv_get();
	char *newpath;
	int err = iconv_convpath(ic, path, &newpath, 0);
	if (!err) {
		err = fuse_fs_chown(ic->next, newpath, uid, gid);
		free(newpath);
	}
	return err;
}
示例#8
0
文件: iconv.c 项目: 1x23/unifi-gpl
static int iconv_truncate(const char *path, off_t size)
{
	struct iconv *ic = iconv_get();
	char *newpath;
	int err = iconv_convpath(ic, path, &newpath, 0);
	if (!err) {
		err = fuse_fs_truncate(ic->next, newpath, size);
		free(newpath);
	}
	return err;
}
示例#9
0
文件: iconv.c 项目: Abrikatin/fuse
static int iconv_setattr_x(const char *path, struct setattr_x *attr)
{
	struct iconv *ic = iconv_get();
	char *newpath;
	int err = iconv_convpath(ic, path, &newpath, 0);
	if (!err) {
		err = fuse_fs_setattr_x(ic->next, newpath, attr);
		free(newpath);
	}
	return err;
}
示例#10
0
文件: iconv.c 项目: 1x23/unifi-gpl
static int iconv_chmod(const char *path, mode_t mode)
{
	struct iconv *ic = iconv_get();
	char *newpath;
	int err = iconv_convpath(ic, path, &newpath, 0);
	if (!err) {
		err = fuse_fs_chmod(ic->next, newpath, mode);
		free(newpath);
	}
	return err;
}
示例#11
0
文件: iconv.c 项目: cephpp/fuse
static int iconv_bmap(const char *path, size_t blocksize, uint64_t *idx)
{
	struct iconv *ic = iconv_get();
	char *newpath;
	int err = iconv_convpath(ic, path, &newpath, 0);
	if (!err) {
		err = fuse_fs_bmap(ic->next, newpath, blocksize, idx);
		free(newpath);
	}
	return err;
}
示例#12
0
文件: iconv.c 项目: 1x23/unifi-gpl
static int iconv_access(const char *path, int mask)
{
	struct iconv *ic = iconv_get();
	char *newpath;
	int err = iconv_convpath(ic, path, &newpath, 0);
	if (!err) {
		err = fuse_fs_access(ic->next, newpath, mask);
		free(newpath);
	}
	return err;
}
示例#13
0
文件: iconv.c 项目: cephpp/fuse
static int iconv_removexattr(const char *path, const char *name)
{
	struct iconv *ic = iconv_get();
	char *newpath;
	int err = iconv_convpath(ic, path, &newpath, 0);
	if (!err) {
		err = fuse_fs_removexattr(ic->next, newpath, name);
		free(newpath);
	}
	return err;
}
示例#14
0
文件: iconv.c 项目: cephpp/fuse
static int iconv_listxattr(const char *path, char *list, size_t size)
{
	struct iconv *ic = iconv_get();
	char *newpath;
	int err = iconv_convpath(ic, path, &newpath, 0);
	if (!err) {
		err = fuse_fs_listxattr(ic->next, newpath, list, size);
		free(newpath);
	}
	return err;
}
示例#15
0
文件: iconv.c 项目: cephpp/fuse
static int iconv_statfs(const char *path, struct statvfs *stbuf)
{
	struct iconv *ic = iconv_get();
	char *newpath;
	int err = iconv_convpath(ic, path, &newpath, 0);
	if (!err) {
		err = fuse_fs_statfs(ic->next, newpath, stbuf);
		free(newpath);
	}
	return err;
}
示例#16
0
文件: iconv.c 项目: 1x23/unifi-gpl
static int iconv_write(const char *path, const char *buf, size_t size,
		       off_t offset, struct fuse_file_info *fi)
{
	struct iconv *ic = iconv_get();
	char *newpath;
	int err = iconv_convpath(ic, path, &newpath, 0);
	if (!err) {
		err = fuse_fs_write(ic->next, newpath, buf, size, offset, fi);
		free(newpath);
	}
	return err;
}
示例#17
0
static int iconv_setxattr(const char *path, const char *name,
                          const char *value, size_t size, int flags)
{
    struct iconv *ic = iconv_get();
    char *newpath;
    int err = iconv_convpath(ic, path, &newpath, 0);
    if (!err) {
        err = fuse_fs_setxattr(ic->next, newpath, name, value, size, flags);
        free(newpath);
    }
    return err;
}
示例#18
0
文件: iconv.c 项目: 1x23/unifi-gpl
static int iconv_dir_fill(void *buf, const char *name,
			  const struct stat *stbuf, off_t off)
{
	struct iconv_dh *dh = buf;
	char *newname;
	int res = 0;
	if (iconv_convpath(dh->ic, name, &newname, 1) == 0) {
		res = dh->prev_filler(dh->prev_buf, newname, stbuf, off);
		free(newname);
	}
	return res;
}
示例#19
0
文件: iconv.c 项目: 1x23/unifi-gpl
static int iconv_fsyncdir(const char *path, int isdatasync,
			  struct fuse_file_info *fi)
{
	struct iconv *ic = iconv_get();
	char *newpath;
	int err = iconv_convpath(ic, path, &newpath, 0);
	if (!err) {
		err = fuse_fs_fsyncdir(ic->next, newpath, isdatasync, fi);
		free(newpath);
	}
	return err;
}
示例#20
0
文件: iconv.c 项目: 1x23/unifi-gpl
static int iconv_lock(const char *path, struct fuse_file_info *fi, int cmd,
		      struct flock *lock)
{
	struct iconv *ic = iconv_get();
	char *newpath;
	int err = iconv_convpath(ic, path, &newpath, 0);
	if (!err) {
		err = fuse_fs_lock(ic->next, newpath, fi, cmd, lock);
		free(newpath);
	}
	return err;
}
示例#21
0
文件: iconv.c 项目: 1x23/unifi-gpl
static int iconv_readdir(const char *path, void *buf, fuse_fill_dir_t filler,
			 off_t offset, struct fuse_file_info *fi)
{
	struct iconv *ic = iconv_get();
	char *newpath;
	int err = iconv_convpath(ic, path, &newpath, 0);
	if (!err) {
		struct iconv_dh dh;
		dh.ic = ic;
		dh.prev_buf = buf;
		dh.prev_filler = filler;
		err = fuse_fs_readdir(ic->next, newpath, &dh, iconv_dir_fill,
				      offset, fi);
		free(newpath);
	}
	return err;
}
示例#22
0
文件: iconv.c 项目: Abrikatin/fuse
static int iconv_getxattr(const char *path, const char *name, char *value,
			  size_t size)
#endif /* __APPLE__ */
{
	struct iconv *ic = iconv_get();
	char *newpath;
	int err = iconv_convpath(ic, path, &newpath, 0);
	if (!err) {
#ifdef __APPLE__
		err = fuse_fs_getxattr(ic->next, newpath, name, value, size, position);
#else
		err = fuse_fs_getxattr(ic->next, newpath, name, value, size);
#endif /* __APPLE__ */
		free(newpath);
	}
	return err;
}