From: Josef 'Jeff' Sipek Date: Tue, 21 Jul 2020 17:16:34 +0000 (-0400) Subject: lib-fs: sis-queue - Use container_of() instead of casts X-Git-Tag: 2.3.13~427 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=e11855558a421da39ddadb83866a95f00a54d3a8;p=thirdparty%2Fdovecot%2Fcore.git lib-fs: sis-queue - Use container_of() instead of casts Being more explicit not only makes the code more explict, it makes it safer. --- diff --git a/src/lib-fs/fs-sis-queue.c b/src/lib-fs/fs-sis-queue.c index 1c7ea20de9..d49221e86c 100644 --- a/src/lib-fs/fs-sis-queue.c +++ b/src/lib-fs/fs-sis-queue.c @@ -18,6 +18,9 @@ struct sis_queue_fs_file { struct sis_queue_fs *fs; }; +#define SISQUEUE_FS(ptr) container_of((ptr), struct sis_queue_fs, fs) +#define SISQUEUE_FILE(ptr) container_of((ptr), struct sis_queue_fs_file, file) + static struct fs *fs_sis_queue_alloc(void) { struct sis_queue_fs *fs; @@ -31,7 +34,7 @@ static int fs_sis_queue_init(struct fs *_fs, const char *args, const struct fs_settings *set, const char **error_r) { - struct sis_queue_fs *fs = (struct sis_queue_fs *)_fs; + struct sis_queue_fs *fs = SISQUEUE_FS(_fs); const char *p, *parent_name, *parent_args; /* :[:] */ @@ -57,7 +60,7 @@ fs_sis_queue_init(struct fs *_fs, const char *args, static void fs_sis_queue_free(struct fs *_fs) { - struct sis_queue_fs *fs = (struct sis_queue_fs *)_fs; + struct sis_queue_fs *fs = SISQUEUE_FS(_fs); fs_deinit(&_fs->parent); i_free(fs->queue_dir); @@ -74,8 +77,8 @@ static void fs_sis_queue_file_init(struct fs_file *_file, const char *path, enum fs_open_mode mode, enum fs_open_flags flags) { - struct sis_queue_fs_file *file = (struct sis_queue_fs_file *)_file; - struct sis_queue_fs *fs = (struct sis_queue_fs *)_file->fs; + struct sis_queue_fs_file *file = SISQUEUE_FILE(_file); + struct sis_queue_fs *fs = SISQUEUE_FS(_file->fs); file->file.path = i_strdup(path); file->fs = fs; @@ -88,7 +91,7 @@ fs_sis_queue_file_init(struct fs_file *_file, const char *path, static void fs_sis_queue_file_deinit(struct fs_file *_file) { - struct sis_queue_fs_file *file = (struct sis_queue_fs_file *)_file; + struct sis_queue_fs_file *file = SISQUEUE_FILE(_file); fs_file_free(_file); i_free(file->file.path); @@ -97,7 +100,7 @@ static void fs_sis_queue_file_deinit(struct fs_file *_file) static void fs_sis_queue_add(struct sis_queue_fs_file *file) { - struct sis_queue_fs *fs = (struct sis_queue_fs *)file->file.fs; + struct sis_queue_fs *fs = SISQUEUE_FS(file->file.fs); struct fs_file *queue_file; const char *fname, *path, *queue_path; @@ -117,7 +120,7 @@ static void fs_sis_queue_add(struct sis_queue_fs_file *file) static int fs_sis_queue_write(struct fs_file *_file, const void *data, size_t size) { - struct sis_queue_fs_file *file = (struct sis_queue_fs_file *)_file; + struct sis_queue_fs_file *file = SISQUEUE_FILE(_file); if (_file->parent == NULL) return -1; @@ -144,7 +147,7 @@ static void fs_sis_queue_write_stream(struct fs_file *_file) static int fs_sis_queue_write_stream_finish(struct fs_file *_file, bool success) { - struct sis_queue_fs_file *file = (struct sis_queue_fs_file *)_file; + struct sis_queue_fs_file *file = SISQUEUE_FILE(_file); if (!success) { if (_file->parent != NULL)