From 6ac254c00fc6026fd462b7b93aaa9dc4aa676f69 Mon Sep 17 00:00:00 2001 From: Nikolaus Rath Date: Thu, 25 May 2017 13:12:06 -0700 Subject: Document RENAME_EXCHANGE and RENAME_NOREPLACE flags. --- include/fuse.h | 12 ++++++++++-- include/fuse_lowlevel.h | 7 +++++++ 2 files changed, 17 insertions(+), 2 deletions(-) (limited to 'include') diff --git a/include/fuse.h b/include/fuse.h index 754303f..0c5741f 100644 --- a/include/fuse.h +++ b/include/fuse.h @@ -339,8 +339,16 @@ struct fuse_operations { /** Create a symbolic link */ int (*symlink) (const char *, const char *); - /** Rename a file */ - int (*rename) (const char *, const char *, unsigned int); + /** Rename a file + * + * *flags* may be `RENAME_EXCHANGE` or `RENAME_NOREPLACE`. If + * RENAME_NOREPLACE is specified, the filesystem must not + * overwrite *newname* if it exists and return an error + * instead. If `RENAME_EXCHANGE` is specified, the filesystem + * must atomically exchange the two files, i.e. both must + * exist and neither may be deleted. + */ + int (*rename) (const char *, const char *, unsigned int flags); /** Create a hard link to a file */ int (*link) (const char *, const char *); diff --git a/include/fuse_lowlevel.h b/include/fuse_lowlevel.h index 987b24d..fd8bc1a 100644 --- a/include/fuse_lowlevel.h +++ b/include/fuse_lowlevel.h @@ -408,6 +408,13 @@ struct fuse_lowlevel_ops { * future bmap requests will fail with EINVAL without being * send to the filesystem process. * + * *flags* may be `RENAME_EXCHANGE` or `RENAME_NOREPLACE`. If + * RENAME_NOREPLACE is specified, the filesystem must not + * overwrite *newname* if it exists and return an error + * instead. If `RENAME_EXCHANGE` is specified, the filesystem + * must atomically exchange the two files, i.e. both must + * exist and neither may be deleted. + * * Valid replies: * fuse_reply_err * -- cgit v1.2.3