From: Aki Tuomi Date: Tue, 29 Aug 2023 12:04:04 +0000 (+0300) Subject: lib-sql: driver-mysql - Use container_of instead of blind cast X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=fadd576640a7f9525e903c6a49a59f0111622f2a;p=thirdparty%2Fdovecot%2Fcore.git lib-sql: driver-mysql - Use container_of instead of blind cast --- diff --git a/src/lib-sql/driver-mysql.c b/src/lib-sql/driver-mysql.c index 216aa3cb0c..05fdecb780 100644 --- a/src/lib-sql/driver-mysql.c +++ b/src/lib-sql/driver-mysql.c @@ -80,7 +80,7 @@ static struct event_category event_category_mysql = { static int driver_mysql_connect(struct sql_db *_db) { - struct mysql_db *db = (struct mysql_db *)_db; + struct mysql_db *db = container_of(_db, struct mysql_db, api); const char *unix_socket, *host; unsigned long client_flags = db->client_flags; unsigned int secs_used; @@ -174,7 +174,7 @@ static int driver_mysql_connect(struct sql_db *_db) static void driver_mysql_disconnect(struct sql_db *_db) { - struct mysql_db *db = (struct mysql_db *)_db; + struct mysql_db *db = container_of(_db, struct mysql_db, api); if (db->mysql != NULL) mysql_close(db->mysql); db->mysql = NULL; @@ -310,7 +310,7 @@ static int driver_mysql_init_full_v(const struct sql_settings *set, static void driver_mysql_deinit_v(struct sql_db *_db) { - struct mysql_db *db = (struct mysql_db *)_db; + struct mysql_db *db = container_of(_db, struct mysql_db, api); _db->no_reconnect = TRUE; sql_db_set_state(&db->api, SQL_DB_STATE_DISCONNECTED); @@ -361,7 +361,7 @@ static int driver_mysql_do_query(struct mysql_db *db, const char *query, static const char * driver_mysql_escape_string(struct sql_db *_db, const char *string) { - struct mysql_db *db = (struct mysql_db *)_db; + struct mysql_db *db = container_of(_db, struct mysql_db, api); size_t len = strlen(string); char *to; @@ -391,7 +391,7 @@ driver_mysql_escape_string(struct sql_db *_db, const char *string) static void driver_mysql_exec(struct sql_db *_db, const char *query) { - struct mysql_db *db = (struct mysql_db *)_db; + struct mysql_db *db = container_of(_db, struct mysql_db, api); struct event *event = event_create(_db->event); (void)driver_mysql_do_query(db, query, event); @@ -414,7 +414,7 @@ static void driver_mysql_query(struct sql_db *db, const char *query, static struct sql_result * driver_mysql_query_s(struct sql_db *_db, const char *query) { - struct mysql_db *db = (struct mysql_db *)_db; + struct mysql_db *db = container_of(_db, struct mysql_db, api); struct mysql_result *result; struct event *event; int ret; @@ -457,7 +457,8 @@ driver_mysql_query_s(struct sql_db *_db, const char *query) static void driver_mysql_result_free(struct sql_result *_result) { - struct mysql_result *result = (struct mysql_result *)_result; + struct mysql_result *result = + container_of(_result, struct mysql_result, api); i_assert(_result != &sql_not_connected_result); if (_result->callback) @@ -471,8 +472,9 @@ static void driver_mysql_result_free(struct sql_result *_result) static int driver_mysql_result_next_row(struct sql_result *_result) { - struct mysql_result *result = (struct mysql_result *)_result; - struct mysql_db *db = (struct mysql_db *)_result->db; + struct mysql_result *result = + container_of(_result, struct mysql_result, api); + struct mysql_db *db = container_of(_result->db, struct mysql_db, api); int ret; if (result->result == NULL) { @@ -504,7 +506,8 @@ static void driver_mysql_result_fetch_fields(struct mysql_result *result) static unsigned int driver_mysql_result_get_fields_count(struct sql_result *_result) { - struct mysql_result *result = (struct mysql_result *)_result; + struct mysql_result *result = + container_of(_result, struct mysql_result, api); driver_mysql_result_fetch_fields(result); return result->fields_count; @@ -513,7 +516,8 @@ driver_mysql_result_get_fields_count(struct sql_result *_result) static const char * driver_mysql_result_get_field_name(struct sql_result *_result, unsigned int idx) { - struct mysql_result *result = (struct mysql_result *)_result; + struct mysql_result *result = + container_of(_result, struct mysql_result, api); driver_mysql_result_fetch_fields(result); i_assert(idx < result->fields_count); @@ -523,7 +527,8 @@ driver_mysql_result_get_field_name(struct sql_result *_result, unsigned int idx) static int driver_mysql_result_find_field(struct sql_result *_result, const char *field_name) { - struct mysql_result *result = (struct mysql_result *)_result; + struct mysql_result *result = + container_of(_result, struct mysql_result, api); unsigned int i; driver_mysql_result_fetch_fields(result); @@ -538,7 +543,8 @@ static const char * driver_mysql_result_get_field_value(struct sql_result *_result, unsigned int idx) { - struct mysql_result *result = (struct mysql_result *)_result; + struct mysql_result *result = + container_of(_result, struct mysql_result, api); return (const char *)result->row[idx]; } @@ -547,7 +553,8 @@ static const unsigned char * driver_mysql_result_get_field_value_binary(struct sql_result *_result, unsigned int idx, size_t *size_r) { - struct mysql_result *result = (struct mysql_result *)_result; + struct mysql_result *result = + container_of(_result, struct mysql_result, api); unsigned long *lengths; lengths = mysql_fetch_lengths(result->result); @@ -571,14 +578,15 @@ driver_mysql_result_find_field_value(struct sql_result *result, static const char *const * driver_mysql_result_get_values(struct sql_result *_result) { - struct mysql_result *result = (struct mysql_result *)_result; + struct mysql_result *result = + container_of(_result, struct mysql_result, api); return (const char *const *)result->row; } static const char *driver_mysql_result_get_error(struct sql_result *_result) { - struct mysql_db *db = (struct mysql_db *)_result->db; + struct mysql_db *db = container_of(_result->db, struct mysql_db, api); const char *errstr; unsigned int idle_time; int err; @@ -635,7 +643,8 @@ transaction_send_query(struct mysql_transaction_context *ctx, const char *query, ctx->failed = TRUE; ret = -1; } else if (affected_rows_r != NULL) { - struct mysql_result *result = (struct mysql_result *)_result; + struct mysql_result *result = + container_of(_result, struct mysql_result, api); i_assert(result->affected_rows != (my_ulonglong)-1); *affected_rows_r = result->affected_rows; @@ -675,8 +684,8 @@ driver_mysql_transaction_commit_s(struct sql_transaction_context *_ctx, const char **error_r) { struct mysql_transaction_context *ctx = - (struct mysql_transaction_context *)_ctx; - struct mysql_db *db = (struct mysql_db *)_ctx->db; + container_of(_ctx, struct mysql_transaction_context, ctx); + struct mysql_db *db = container_of(_ctx->db, struct mysql_db, api); int ret = 1; *error_r = NULL; @@ -705,7 +714,7 @@ static void driver_mysql_transaction_rollback(struct sql_transaction_context *_ctx) { struct mysql_transaction_context *ctx = - (struct mysql_transaction_context *)_ctx; + container_of(_ctx, struct mysql_transaction_context, ctx); if (ctx->failed) { bool rolledback = FALSE; @@ -744,7 +753,7 @@ driver_mysql_update(struct sql_transaction_context *_ctx, const char *query, unsigned int *affected_rows) { struct mysql_transaction_context *ctx = - (struct mysql_transaction_context *)_ctx; + container_of(_ctx, struct mysql_transaction_context, ctx); sql_transaction_add_query(&ctx->ctx, ctx->query_pool, query, affected_rows);