]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib-fs: randomfail - Use container_of() instead of casts
authorJosef 'Jeff' Sipek <jeff.sipek@open-xchange.com>
Tue, 21 Jul 2020 17:13:20 +0000 (13:13 -0400)
committerjeff.sipek <jeff.sipek@open-xchange.com>
Tue, 4 Aug 2020 22:11:58 +0000 (22:11 +0000)
Being more explicit not only makes the code more explict, it makes it safer.

src/lib-fs/fs-randomfail.c

index b43af32ec4e6f063f8a622e0c775e90b8bdf8eae..594ce56359acb9e90fc2401aab983ee947e72f27 100644 (file)
@@ -38,6 +38,10 @@ struct randomfail_fs_iter {
        unsigned int fail_pos;
 };
 
+#define RANDOMFAIL_FS(ptr)     container_of((ptr), struct randomfail_fs, fs)
+#define RANDOMFAIL_FILE(ptr)   container_of((ptr), struct randomfail_fs_file, file)
+#define RANDOMFAIL_ITER(ptr)   container_of((ptr), struct randomfail_fs_iter, iter)
+
 static struct fs *fs_randomfail_alloc(void)
 {
        struct randomfail_fs *fs;
@@ -161,7 +165,7 @@ static int
 fs_randomfail_init(struct fs *_fs, const char *args,
                   const struct fs_settings *set, const char **error_r)
 {
-       struct randomfail_fs *fs = (struct randomfail_fs *)_fs;
+       struct randomfail_fs *fs = RANDOMFAIL_FS(_fs);
        const char *p, *parent_name, *parent_args, *error;
 
        p = strchr(args, ':');
@@ -196,7 +200,7 @@ fs_randomfail_init(struct fs *_fs, const char *args,
 
 static void fs_randomfail_free(struct fs *_fs)
 {
-       struct randomfail_fs *fs = (struct randomfail_fs *)_fs;
+       struct randomfail_fs *fs = RANDOMFAIL_FS(_fs);
 
        fs_deinit(&_fs->parent);
        i_free(fs);
@@ -217,7 +221,7 @@ static void
 fs_randomfail_file_init(struct fs_file *_file, const char *path,
                        enum fs_open_mode mode, enum fs_open_flags flags)
 {
-       struct randomfail_fs_file *file = (struct randomfail_fs_file *)_file;
+       struct randomfail_fs_file *file = RANDOMFAIL_FILE(_file);
 
        file->file.path = i_strdup(path);
        file->file.parent = fs_file_init_parent(_file, path, mode | flags);
@@ -225,7 +229,7 @@ fs_randomfail_file_init(struct fs_file *_file, const char *path,
 
 static void fs_randomfail_file_deinit(struct fs_file *_file)
 {
-       struct randomfail_fs_file *file = (struct randomfail_fs_file *)_file;
+       struct randomfail_fs_file *file = RANDOMFAIL_FILE(_file);
 
        fs_file_free(_file);
        i_free(file->file.path);
@@ -235,7 +239,7 @@ static void fs_randomfail_file_deinit(struct fs_file *_file)
 static bool fs_random_fail(struct fs *_fs, struct event *event,
                           int divider, enum fs_op op)
 {
-       struct randomfail_fs *fs = (struct randomfail_fs *)_fs;
+       struct randomfail_fs *fs = RANDOMFAIL_FS(_fs);
 
        if (fs->op_probability[op] == 0)
                return FALSE;
@@ -273,7 +277,7 @@ static bool
 fs_random_fail_range(struct fs *_fs, struct event *event,
                     enum fs_op op, uoff_t *offset_r)
 {
-       struct randomfail_fs *fs = (struct randomfail_fs *)_fs;
+       struct randomfail_fs *fs = RANDOMFAIL_FS(_fs);
 
        if (!fs_random_fail(_fs, event, 1, op))
                return FALSE;
@@ -286,7 +290,7 @@ fs_randomfail_get_metadata(struct fs_file *_file,
                           enum fs_get_metadata_flags flags,
                           const ARRAY_TYPE(fs_metadata) **metadata_r)
 {
-       struct randomfail_fs_file *file = (struct randomfail_fs_file *)_file;
+       struct randomfail_fs_file *file = RANDOMFAIL_FILE(_file);
        int ret;
 
        if (fs_file_random_fail_begin(file, FS_OP_METADATA))
@@ -304,7 +308,7 @@ static bool fs_randomfail_prefetch(struct fs_file *_file, uoff_t length)
 
 static ssize_t fs_randomfail_read(struct fs_file *_file, void *buf, size_t size)
 {
-       struct randomfail_fs_file *file = (struct randomfail_fs_file *)_file;
+       struct randomfail_fs_file *file = RANDOMFAIL_FILE(_file);
        int ret;
 
        if (fs_file_random_fail_begin(file, FS_OP_READ))
@@ -331,7 +335,7 @@ fs_randomfail_read_stream(struct fs_file *_file, size_t max_buffer_size)
 
 static int fs_randomfail_write(struct fs_file *_file, const void *data, size_t size)
 {
-       struct randomfail_fs_file *file = (struct randomfail_fs_file *)_file;
+       struct randomfail_fs_file *file = RANDOMFAIL_FILE(_file);
        int ret;
 
        if (fs_file_random_fail_begin(file, FS_OP_WRITE))
@@ -342,7 +346,7 @@ static int fs_randomfail_write(struct fs_file *_file, const void *data, size_t s
 
 static void fs_randomfail_write_stream(struct fs_file *_file)
 {
-       struct randomfail_fs_file *file = (struct randomfail_fs_file *)_file;
+       struct randomfail_fs_file *file = RANDOMFAIL_FILE(_file);
        uoff_t offset;
 
        i_assert(_file->output == NULL);
@@ -358,7 +362,7 @@ static void fs_randomfail_write_stream(struct fs_file *_file)
 
 static int fs_randomfail_write_stream_finish(struct fs_file *_file, bool success)
 {
-       struct randomfail_fs_file *file = (struct randomfail_fs_file *)_file;
+       struct randomfail_fs_file *file = RANDOMFAIL_FILE(_file);
 
        if (_file->output != NULL) {
                if (_file->output == file->super_output)
@@ -392,7 +396,7 @@ static void fs_randomfail_unlock(struct fs_lock *_lock ATTR_UNUSED)
 
 static int fs_randomfail_exists(struct fs_file *_file)
 {
-       struct randomfail_fs_file *file = (struct randomfail_fs_file *)_file;
+       struct randomfail_fs_file *file = RANDOMFAIL_FILE(_file);
        int ret;
 
        if (fs_file_random_fail_begin(file, FS_OP_EXISTS))
@@ -403,7 +407,7 @@ static int fs_randomfail_exists(struct fs_file *_file)
 
 static int fs_randomfail_stat(struct fs_file *_file, struct stat *st_r)
 {
-       struct randomfail_fs_file *file = (struct randomfail_fs_file *)_file;
+       struct randomfail_fs_file *file = RANDOMFAIL_FILE(_file);
        int ret;
 
        if (fs_file_random_fail_begin(file, FS_OP_STAT))
@@ -414,7 +418,7 @@ static int fs_randomfail_stat(struct fs_file *_file, struct stat *st_r)
 
 static int fs_randomfail_get_nlinks(struct fs_file *_file, nlink_t *nlinks_r)
 {
-       struct randomfail_fs_file *file = (struct randomfail_fs_file *)_file;
+       struct randomfail_fs_file *file = RANDOMFAIL_FILE(_file);
        int ret;
 
        if (fs_file_random_fail_begin(file, FS_OP_STAT))
@@ -425,7 +429,7 @@ static int fs_randomfail_get_nlinks(struct fs_file *_file, nlink_t *nlinks_r)
 
 static int fs_randomfail_copy(struct fs_file *_src, struct fs_file *_dest)
 {
-       struct randomfail_fs_file *dest = (struct randomfail_fs_file *)_dest;
+       struct randomfail_fs_file *dest = RANDOMFAIL_FILE(_dest);
        int ret;
 
        if (fs_file_random_fail_begin(dest, FS_OP_COPY))
@@ -440,7 +444,7 @@ static int fs_randomfail_copy(struct fs_file *_src, struct fs_file *_dest)
 
 static int fs_randomfail_rename(struct fs_file *_src, struct fs_file *_dest)
 {
-       struct randomfail_fs_file *dest = (struct randomfail_fs_file *)_dest;
+       struct randomfail_fs_file *dest = RANDOMFAIL_FILE(_dest);
        int ret;
 
        if (fs_file_random_fail_begin(dest, FS_OP_RENAME))
@@ -451,7 +455,7 @@ static int fs_randomfail_rename(struct fs_file *_src, struct fs_file *_dest)
 
 static int fs_randomfail_delete(struct fs_file *_file)
 {
-       struct randomfail_fs_file *file = (struct randomfail_fs_file *)_file;
+       struct randomfail_fs_file *file = RANDOMFAIL_FILE(_file);
        int ret;
 
        if (fs_file_random_fail_begin(file, FS_OP_DELETE))
@@ -470,7 +474,7 @@ static void
 fs_randomfail_iter_init(struct fs_iter *_iter, const char *path,
                        enum fs_iter_flags flags)
 {
-       struct randomfail_fs_iter *iter = (struct randomfail_fs_iter *)_iter;
+       struct randomfail_fs_iter *iter = RANDOMFAIL_ITER(_iter);
        uoff_t pos;
 
        iter->super = fs_iter_init_parent(_iter, path, flags);
@@ -480,7 +484,7 @@ fs_randomfail_iter_init(struct fs_iter *_iter, const char *path,
 
 static const char *fs_randomfail_iter_next(struct fs_iter *_iter)
 {
-       struct randomfail_fs_iter *iter = (struct randomfail_fs_iter *)_iter;
+       struct randomfail_fs_iter *iter = RANDOMFAIL_ITER(_iter);
        const char *fname;
 
        if (iter->fail_pos > 0) {
@@ -499,7 +503,7 @@ static const char *fs_randomfail_iter_next(struct fs_iter *_iter)
 
 static int fs_randomfail_iter_deinit(struct fs_iter *_iter)
 {
-       struct randomfail_fs_iter *iter = (struct randomfail_fs_iter *)_iter;
+       struct randomfail_fs_iter *iter = RANDOMFAIL_ITER(_iter);
        const char *error;
        int ret;