diff --git a/src/backend.h b/src/backend.h index 3e9ba77..e42182d 100644 --- a/src/backend.h +++ b/src/backend.h @@ -58,6 +58,7 @@ #define BOOKMARKFS_FRONTEND_MKFS ( 1u << 18 ) #define BOOKMARKFS_BOOKMARK_CREATE_DIR ( 1u << 0 ) +#define BOOKMARKFS_BOOKMARK_DELETE_DIR ( 1u << 0 ) #define BOOKMARKFS_BOOKMARK_LIST_WITHSTAT ( 1u << 0 ) #define BOOKMARKFS_BOOKMARK_RENAME_NOREPLACE ( 1u << 0 ) #define BOOKMARKFS_BOOKMARK_SET_ATIME ( 1u << 0 ) diff --git a/src/backend_firefox.c b/src/backend_firefox.c index fc35061..4b735c3 100644 --- a/src/backend_firefox.c +++ b/src/backend_firefox.c @@ -3422,8 +3422,8 @@ bookmark_delete ( return status; } - size_t name_len = strlen(name); - bool is_dir = flags & BOOKMARK_FLAG(CREATE_DIR); + size_t name_len = strlen(name); + bool is_dir = flags & BOOKMARK_FLAG(DELETE_DIR); switch (flags & BOOKMARKFS_BOOKMARK_TYPE_MASK) { case BOOKMARKFS_BOOKMARK_TYPE(TAG): if (!is_dir) { diff --git a/src/fs_ops.c b/src/fs_ops.c index 201483b..b88eb13 100644 --- a/src/fs_ops.c +++ b/src/fs_ops.c @@ -235,7 +235,7 @@ static int bm_setattr (uint64_t, int, bool, struct fuse_file_info const *, static int bm_setxattr (uint64_t, char const *, void const *, size_t, int); static int bm_write (fuse_req_t, int, char const *, size_t, off_t, struct fs_file_handle *); -static void do_delete (fuse_req_t, fuse_ino_t, char const *); +static void do_delete (fuse_req_t, fuse_ino_t, char const *, uint32_t); static void do_readdir (fuse_req_t, fuse_ino_t, size_t, off_t, uint32_t, struct fuse_file_info const *); static unsigned long @@ -1206,11 +1206,11 @@ static void do_delete ( fuse_req_t req, fuse_ino_t parent, - char const *name + char const *name, + uint32_t flags ) { int status = -EIO; - uint32_t flags = 0; switch (INODE_SUBSYS_TYPE(parent)) { case SUBSYS_TYPE_INTERNAL: status = intfs_delete(INODE_SUBSYS_ID(parent), name, flags); @@ -2306,7 +2306,7 @@ fs_op_rmdir ( fuse_ino_t parent, char const *name ) { - do_delete(req, parent, name); + do_delete(req, parent, name, BOOKMARK_FLAG(DELETE_DIR)); } void @@ -2367,7 +2367,7 @@ fs_op_unlink ( fuse_ino_t parent, char const *name ) { - do_delete(req, parent, name); + do_delete(req, parent, name, 0); } void