aboutsummaryrefslogtreecommitdiff
path: root/lib/modules
diff options
context:
space:
mode:
authorGravatar Nikolaus Rath <Nikolaus@rath.org>2016-10-15 18:46:27 -0700
committerGravatar Nikolaus Rath <Nikolaus@rath.org>2016-10-15 18:46:27 -0700
commit73b6ff4b75cf1228ea61262c293fcb2fda5dfeea (patch)
tree059d5dbe8d2549f5bf363c6174c5887d44f1ee42 /lib/modules
parentd49f2e77b4741706ec125cc62ea913ed5d39bd39 (diff)
Pass fuse_file_info to getattr, chown, chmod, truncate, utimens handlers
This obsoletes the ftruncate & fgetattr handlers. Fixes #58.
Diffstat (limited to 'lib/modules')
-rw-r--r--lib/modules/iconv.c51
-rw-r--r--lib/modules/subdir.c53
2 files changed, 29 insertions, 75 deletions
diff --git a/lib/modules/iconv.c b/lib/modules/iconv.c
index 174e2b9..41a072c 100644
--- a/lib/modules/iconv.c
+++ b/lib/modules/iconv.c
@@ -101,26 +101,14 @@ err:
return err;
}
-static int iconv_getattr(const char *path, struct stat *stbuf)
+static int iconv_getattr(const char *path, struct stat *stbuf,
+ 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_getattr(ic->next, newpath, stbuf);
- free(newpath);
- }
- return err;
-}
-
-static int iconv_fgetattr(const char *path, struct stat *stbuf,
- 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_fgetattr(ic->next, newpath, stbuf, fi);
+ err = fuse_fs_getattr(ic->next, newpath, stbuf, fi);
free(newpath);
}
return err;
@@ -315,62 +303,53 @@ static int iconv_link(const char *from, const char *to)
return err;
}
-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;
-}
-
-static int iconv_chown(const char *path, uid_t uid, gid_t gid)
+static int iconv_chmod(const char *path, mode_t mode,
+ 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_chown(ic->next, newpath, uid, gid);
+ err = fuse_fs_chmod(ic->next, newpath, mode, fi);
free(newpath);
}
return err;
}
-static int iconv_truncate(const char *path, off_t size)
+static int iconv_chown(const char *path, uid_t uid, gid_t gid,
+ 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_truncate(ic->next, newpath, size);
+ err = fuse_fs_chown(ic->next, newpath, uid, gid, fi);
free(newpath);
}
return err;
}
-static int iconv_ftruncate(const char *path, off_t size,
+static int iconv_truncate(const char *path, off_t size,
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_ftruncate(ic->next, newpath, size, fi);
+ err = fuse_fs_truncate(ic->next, newpath, size, fi);
free(newpath);
}
return err;
}
-static int iconv_utimens(const char *path, const struct timespec ts[2])
+static int iconv_utimens(const char *path, const struct timespec ts[2],
+ 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_utimens(ic->next, newpath, ts);
+ err = fuse_fs_utimens(ic->next, newpath, ts, fi);
free(newpath);
}
return err;
@@ -600,7 +579,6 @@ static const struct fuse_operations iconv_oper = {
.destroy = iconv_destroy,
.init = iconv_init,
.getattr = iconv_getattr,
- .fgetattr = iconv_fgetattr,
.access = iconv_access,
.readlink = iconv_readlink,
.opendir = iconv_opendir,
@@ -616,7 +594,6 @@ static const struct fuse_operations iconv_oper = {
.chmod = iconv_chmod,
.chown = iconv_chown,
.truncate = iconv_truncate,
- .ftruncate = iconv_ftruncate,
.utimens = iconv_utimens,
.create = iconv_create,
.open = iconv_open_file,
diff --git a/lib/modules/subdir.c b/lib/modules/subdir.c
index a039b3c..c264fb4 100644
--- a/lib/modules/subdir.c
+++ b/lib/modules/subdir.c
@@ -52,26 +52,14 @@ static int subdir_addpath(struct subdir *d, const char *path, char **newpathp)
return 0;
}
-static int subdir_getattr(const char *path, struct stat *stbuf)
+static int subdir_getattr(const char *path, struct stat *stbuf,
+ struct fuse_file_info *fi)
{
struct subdir *d = subdir_get();
char *newpath;
int err = subdir_addpath(d, path, &newpath);
if (!err) {
- err = fuse_fs_getattr(d->next, newpath, stbuf);
- free(newpath);
- }
- return err;
-}
-
-static int subdir_fgetattr(const char *path, struct stat *stbuf,
- struct fuse_file_info *fi)
-{
- struct subdir *d = subdir_get();
- char *newpath;
- int err = subdir_addpath(d, path, &newpath);
- if (!err) {
- err = fuse_fs_fgetattr(d->next, newpath, stbuf, fi);
+ err = fuse_fs_getattr(d->next, newpath, stbuf, fi);
free(newpath);
}
return err;
@@ -301,62 +289,53 @@ static int subdir_link(const char *from, const char *to)
return err;
}
-static int subdir_chmod(const char *path, mode_t mode)
-{
- struct subdir *d = subdir_get();
- char *newpath;
- int err = subdir_addpath(d, path, &newpath);
- if (!err) {
- err = fuse_fs_chmod(d->next, newpath, mode);
- free(newpath);
- }
- return err;
-}
-
-static int subdir_chown(const char *path, uid_t uid, gid_t gid)
+static int subdir_chmod(const char *path, mode_t mode,
+ struct fuse_file_info *fi)
{
struct subdir *d = subdir_get();
char *newpath;
int err = subdir_addpath(d, path, &newpath);
if (!err) {
- err = fuse_fs_chown(d->next, newpath, uid, gid);
+ err = fuse_fs_chmod(d->next, newpath, mode, fi);
free(newpath);
}
return err;
}
-static int subdir_truncate(const char *path, off_t size)
+static int subdir_chown(const char *path, uid_t uid, gid_t gid,
+ struct fuse_file_info *fi)
{
struct subdir *d = subdir_get();
char *newpath;
int err = subdir_addpath(d, path, &newpath);
if (!err) {
- err = fuse_fs_truncate(d->next, newpath, size);
+ err = fuse_fs_chown(d->next, newpath, uid, gid, fi);
free(newpath);
}
return err;
}
-static int subdir_ftruncate(const char *path, off_t size,
- struct fuse_file_info *fi)
+static int subdir_truncate(const char *path, off_t size,
+ struct fuse_file_info *fi)
{
struct subdir *d = subdir_get();
char *newpath;
int err = subdir_addpath(d, path, &newpath);
if (!err) {
- err = fuse_fs_ftruncate(d->next, newpath, size, fi);
+ err = fuse_fs_truncate(d->next, newpath, size, fi);
free(newpath);
}
return err;
}
-static int subdir_utimens(const char *path, const struct timespec ts[2])
+static int subdir_utimens(const char *path, const struct timespec ts[2],
+ struct fuse_file_info *fi)
{
struct subdir *d = subdir_get();
char *newpath;
int err = subdir_addpath(d, path, &newpath);
if (!err) {
- err = fuse_fs_utimens(d->next, newpath, ts);
+ err = fuse_fs_utimens(d->next, newpath, ts, fi);
free(newpath);
}
return err;
@@ -582,7 +561,6 @@ static const struct fuse_operations subdir_oper = {
.destroy = subdir_destroy,
.init = subdir_init,
.getattr = subdir_getattr,
- .fgetattr = subdir_fgetattr,
.access = subdir_access,
.readlink = subdir_readlink,
.opendir = subdir_opendir,
@@ -598,7 +576,6 @@ static const struct fuse_operations subdir_oper = {
.chmod = subdir_chmod,
.chown = subdir_chown,
.truncate = subdir_truncate,
- .ftruncate = subdir_ftruncate,
.utimens = subdir_utimens,
.create = subdir_create,
.open = subdir_open,