From: Timo Sirainen Date: Wed, 4 Mar 2020 13:11:12 +0000 (+0200) Subject: lib-fs: Add fs_file_set_flags() X-Git-Tag: 2.3.11.2~575 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=3f4a0faa3fded2ed5d6b5155174b3922cab01a27;p=thirdparty%2Fdovecot%2Fcore.git lib-fs: Add fs_file_set_flags() --- diff --git a/src/lib-fs/fs-api.c b/src/lib-fs/fs-api.c index 8788089dff..c8bd36d446 100644 --- a/src/lib-fs/fs-api.c +++ b/src/lib-fs/fs-api.c @@ -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) diff --git a/src/lib-fs/fs-api.h b/src/lib-fs/fs-api.h index 6645675fb6..e5067d895d 100644 --- a/src/lib-fs/fs-api.h +++ b/src/lib-fs/fs-api.h @@ -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);