diff options
author | Yuri Per <yuri@acronis.com> | 2019-11-03 11:44:31 +0200 |
---|---|---|
committer | Nikolaus Rath <Nikolaus@rath.org> | 2019-11-03 09:44:31 +0000 |
commit | d735af94fa54a5555ce725f1d4e6b97b812b6603 (patch) | |
tree | cb21ee1eceb66e1c85a5c78ae7aa4a5f9438274a /lib/modules/iconv.c | |
parent | b9c584370aa489ac00b1e8a0454c61f30c0531af (diff) | |
download | libfuse-d735af94fa54a5555ce725f1d4e6b97b812b6603.tar.gz |
Implement lseek operation (#457)
Diffstat (limited to 'lib/modules/iconv.c')
-rw-r--r-- | lib/modules/iconv.c | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/lib/modules/iconv.c b/lib/modules/iconv.c index 431d02c..eb5edd8 100644 --- a/lib/modules/iconv.c +++ b/lib/modules/iconv.c @@ -554,6 +554,19 @@ static int iconv_bmap(const char *path, size_t blocksize, uint64_t *idx) return err; } +static off_t iconv_lseek(const char *path, off_t off, int whence, + struct fuse_file_info *fi) +{ + struct iconv *ic = iconv_get(); + char *newpath; + int res = iconv_convpath(ic, path, &newpath, 0); + if (!res) { + res = fuse_fs_lseek(ic->next, newpath, off, whence, fi); + free(newpath); + } + return res; +} + static void *iconv_init(struct fuse_conn_info *conn, struct fuse_config *cfg) { @@ -612,6 +625,7 @@ static const struct fuse_operations iconv_oper = { .lock = iconv_lock, .flock = iconv_flock, .bmap = iconv_bmap, + .lseek = iconv_lseek, }; static const struct fuse_opt iconv_opts[] = { |