]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib-fs: Add fs_file_set_flags()
authorTimo Sirainen <timo.sirainen@open-xchange.com>
Wed, 4 Mar 2020 13:11:12 +0000 (15:11 +0200)
committerTimo Sirainen <timo.sirainen@open-xchange.com>
Wed, 4 Mar 2020 13:11:12 +0000 (15:11 +0200)
src/lib-fs/fs-api.c
src/lib-fs/fs-api.h

index 8788089dffeadad6f369bc04e4cacd51cc018905..c8bd36d446b2de18fc0b1401f2b5a5668cbb8a73 100644 (file)
@@ -325,6 +325,17 @@ void fs_file_free(struct fs_file *file)
        i_free(file->last_error);
 }
 
+void fs_file_set_flags(struct fs_file *file,
+                      enum fs_open_flags add_flags,
+                      enum fs_open_flags remove_flags)
+{
+       file->flags |= add_flags;
+       file->flags &= ~remove_flags;
+
+       if (file->parent != NULL)
+               fs_file_set_flags(file->parent, add_flags, remove_flags);
+}
+
 void fs_file_close(struct fs_file *file)
 {
        if (file == NULL)
index 6645675fb64411ed0bbbe6312bfdf192a9f238ac..e5067d895de952bed6e296a5a3421f7c3c033365 100644 (file)
@@ -230,6 +230,10 @@ struct fs_file *fs_file_init_with_event(struct fs *fs, struct event *event,
                                        const char *path, int mode_flags);
 void fs_file_deinit(struct fs_file **file);
 
+/* Change flags for a file (and its parents). */
+void fs_file_set_flags(struct fs_file *file,
+                      enum fs_open_flags add_flags,
+                      enum fs_open_flags remove_flags);
 /* If the file has an input streams open, close them. */
 void fs_file_close(struct fs_file *file);