From: Michael Tremer Date: Wed, 9 Oct 2024 13:09:18 +0000 (+0000) Subject: libpakfire: Set __attribute__((format(...))) wherever needed X-Git-Tag: 0.9.30~1118 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=d5b92ec9b7b37d8969247ea1fe5669e7864dbdd5;p=pakfire.git libpakfire: Set __attribute__((format(...))) wherever needed Signed-off-by: Michael Tremer --- diff --git a/src/cli/lib/build.c b/src/cli/lib/build.c index c5e070303..f01a76be3 100644 --- a/src/cli/lib/build.c +++ b/src/cli/lib/build.c @@ -104,6 +104,10 @@ static error_t parse(int key, char* arg, struct argp_state* state, void* data) { return 0; } +static void log_callback(void* data, int priority, const char* file, int line, + const char* function, const char* format, va_list args) + __attribute__((format(printf, 6, 0))); + static void log_callback(void* data, int priority, const char* file, int line, const char* function, const char* format, va_list args) { char* buffer = NULL; diff --git a/src/cli/lib/progressbar.c b/src/cli/lib/progressbar.c index 76b5cc722..bf2f083ef 100644 --- a/src/cli/lib/progressbar.c +++ b/src/cli/lib/progressbar.c @@ -298,6 +298,9 @@ static const char* cli_progressbar_string(struct cli_progressbar* p, return (const char*)data; } +static int cli_progressbar_add_string(struct cli_progressbar* p, const char* format, ...) + __attribute__((format(printf, 2, 3))); + static int cli_progressbar_add_string(struct cli_progressbar* p, const char* format, ...) { char* s = NULL; va_list args; diff --git a/src/libpakfire/cgroup.c b/src/libpakfire/cgroup.c index 27b97c793..a7e628b8b 100644 --- a/src/libpakfire/cgroup.c +++ b/src/libpakfire/cgroup.c @@ -389,6 +389,9 @@ ERROR: return bytes_read; } +static int pakfire_cgroup_write(struct pakfire_cgroup* cgroup, + const char* path, const char* format, ...) __attribute__((format(printf, 3, 4))); + static int pakfire_cgroup_write(struct pakfire_cgroup* cgroup, const char* path, const char* format, ...) { va_list args; diff --git a/src/libpakfire/dist.c b/src/libpakfire/dist.c index 59b21d241..b92bb8288 100644 --- a/src/libpakfire/dist.c +++ b/src/libpakfire/dist.c @@ -290,7 +290,7 @@ static int pakfire_dist_download_source(struct pakfire_httpclient* httpclient, return 0; // Create a new transfer - r = pakfire_httpclient_create_xfer(&xfer, httpclient, filename); + r = pakfire_httpclient_create_xfer(&xfer, httpclient, "%s", filename); if (r) goto ERROR; diff --git a/src/libpakfire/httpclient.c b/src/libpakfire/httpclient.c index 5c5862c43..b7de1d145 100644 --- a/src/libpakfire/httpclient.c +++ b/src/libpakfire/httpclient.c @@ -577,7 +577,7 @@ int pakfire_httpclient_run(struct pakfire_httpclient* client, const char* title) int r = 0; // Set the title - r = pakfire_progress_set_title(client->progress, title); + r = pakfire_progress_set_title(client->progress, "%s", title); if (r) return r; diff --git a/src/libpakfire/include/pakfire/config.h b/src/libpakfire/include/pakfire/config.h index aeea5e7ef..fd35545ba 100644 --- a/src/libpakfire/include/pakfire/config.h +++ b/src/libpakfire/include/pakfire/config.h @@ -34,7 +34,8 @@ struct pakfire_config* pakfire_config_unref(struct pakfire_config* config); int pakfire_config_set(struct pakfire_config* config, const char* section, const char* key, const char* value); int pakfire_config_set_format(struct pakfire_config* config, - const char* section, const char* key, const char* format, ...); + const char* section, const char* key, const char* format, ...) + __attribute__((format(printf, 4, 5))); const char* pakfire_config_get(struct pakfire_config* config, const char* section, const char* key, const char* _default); diff --git a/src/libpakfire/include/pakfire/httpclient.h b/src/libpakfire/include/pakfire/httpclient.h index 9d2b3a0b8..1d8f36b42 100644 --- a/src/libpakfire/include/pakfire/httpclient.h +++ b/src/libpakfire/include/pakfire/httpclient.h @@ -45,7 +45,8 @@ const char* pakfire_httpclient_get_baseurl(struct pakfire_httpclient* client); int pakfire_httpclient_set_baseurl(struct pakfire_httpclient* client, const char* baseurl); int pakfire_httpclient_create_xfer(struct pakfire_xfer** xfer, - struct pakfire_httpclient* downloader, const char* url, ...); + struct pakfire_httpclient* downloader, const char* url, ...) + __attribute__((format(printf, 3, 4))); int pakfire_httpclient_enqueue_xfer( struct pakfire_httpclient* downloader, struct pakfire_xfer* xfer); diff --git a/src/libpakfire/include/pakfire/log_stream.h b/src/libpakfire/include/pakfire/log_stream.h index b98ea08c7..ca98ba95c 100644 --- a/src/libpakfire/include/pakfire/log_stream.h +++ b/src/libpakfire/include/pakfire/log_stream.h @@ -42,7 +42,8 @@ struct pakfire_log_stream* pakfire_log_stream_unref(struct pakfire_log_stream* s int pakfire_log_stream_in_parent(struct pakfire_log_stream* stream, sd_event* loop); int pakfire_log_stream_in_child(struct pakfire_log_stream* stream); -int pakfire_log_stream_write(struct pakfire_log_stream* stream, const char* format, va_list args); +int pakfire_log_stream_write(struct pakfire_log_stream* stream, + const char* format, va_list args) __attribute__((format(printf, 2, 0))); #endif /* PAKFIRE_PRIVATE */ #endif /* PAKFIRE_LOG_STREAM_H */ diff --git a/src/libpakfire/include/pakfire/logging.h b/src/libpakfire/include/pakfire/logging.h index b85b00213..40ad6e518 100644 --- a/src/libpakfire/include/pakfire/logging.h +++ b/src/libpakfire/include/pakfire/logging.h @@ -27,9 +27,11 @@ typedef void (*pakfire_log_callback)(void* data, int priority, const char* file, int line, const char* fn, const char* format, va_list args); void pakfire_log_stderr(void* data, int priority, const char* file, - int line, const char* fn, const char* format, va_list args); + int line, const char* fn, const char* format, va_list args) + __attribute__((format(printf, 6, 0))); void pakfire_log_syslog(void* data, int priority, const char* file, - int line, const char* fn, const char* format, va_list args); + int line, const char* fn, const char* format, va_list args) + __attribute__((format(printf, 6, 0))); #ifdef PAKFIRE_PRIVATE @@ -68,7 +70,7 @@ static inline void __attribute__((always_inline, format(printf, 2, 3))) // This function does absolutely nothing static inline void __attribute__((always_inline, format(printf, 2, 3))) - pakfire_log_null(struct pakfire_ctx* ctx, const char *format, ...) {} + pakfire_log_null(struct pakfire* pakfire, const char *format, ...) {} #ifdef ENABLE_DEBUG # define PAKFIRE_DEBUG(pakfire, arg...) pakfire_log_condition(pakfire, LOG_DEBUG, ## arg) diff --git a/src/libpakfire/include/pakfire/progress.h b/src/libpakfire/include/pakfire/progress.h index 60d1ce96a..76bf73cfd 100644 --- a/src/libpakfire/include/pakfire/progress.h +++ b/src/libpakfire/include/pakfire/progress.h @@ -87,7 +87,8 @@ int pakfire_progress_update(struct pakfire_progress* p, unsigned long int value) int pakfire_progress_increment(struct pakfire_progress* p, unsigned long int value); int pakfire_progress_reset(struct pakfire_progress* p); -int pakfire_progress_set_title(struct pakfire_progress* p, const char* format, ...); +int pakfire_progress_set_title(struct pakfire_progress* p, const char* format, ...) + __attribute__((format(printf, 2, 3))); void pakfire_progress_set_max_value(struct pakfire_progress* p, unsigned long int value); #endif diff --git a/src/libpakfire/include/pakfire/util.h b/src/libpakfire/include/pakfire/util.h index e8c61557c..779ec4fc6 100644 --- a/src/libpakfire/include/pakfire/util.h +++ b/src/libpakfire/include/pakfire/util.h @@ -64,7 +64,8 @@ int __pakfire_path_realpath(char* dest, const size_t length, const char* path); // File stuff int pakfire_file_write(struct pakfire* pakfire, const char* path, - uid_t owner, gid_t group, mode_t mode, const char* format, ...); + uid_t owner, gid_t group, mode_t mode, const char* format, ...) + __attribute__((format(printf, 6, 7))); int pakfire_touch(const char* path, mode_t mode); int pakfire_mkparentdir(const char* path, mode_t mode); diff --git a/src/libpakfire/include/pakfire/xfer.h b/src/libpakfire/include/pakfire/xfer.h index 3ed5a2dc2..80effd06f 100644 --- a/src/libpakfire/include/pakfire/xfer.h +++ b/src/libpakfire/include/pakfire/xfer.h @@ -82,9 +82,11 @@ typedef enum pakfire_transfer_method { } pakfire_xfer_method_t; int pakfire_xfer_create(struct pakfire_xfer** transfer, struct pakfire_ctx* ctx, - struct pakfire_httpclient* httpclient, const char* url, ...); + struct pakfire_httpclient* httpclient, const char* url, ...) + __attribute__((format(printf, 4, 5))); int __pakfire_xfer_create(struct pakfire_xfer** xfer, struct pakfire_ctx* ctx, - struct pakfire_httpclient* client, const char* url, va_list args); + struct pakfire_httpclient* client, const char* url, va_list args) + __attribute__((format(printf, 4, 0))); struct pakfire_xfer* pakfire_xfer_ref(struct pakfire_xfer* xfer); struct pakfire_xfer* pakfire_xfer_unref(struct pakfire_xfer* xfer); diff --git a/src/libpakfire/jail.c b/src/libpakfire/jail.c index b1ecc90e2..735fddb02 100644 --- a/src/libpakfire/jail.c +++ b/src/libpakfire/jail.c @@ -469,6 +469,10 @@ PAKFIRE_EXPORT void pakfire_jail_set_stdout_callback(struct pakfire_jail* jail, All log messages will be sent to the parent process through their respective pipes. */ + +static void pakfire_jail_log_redirect(void* data, int priority, const char* file, + int line, const char* fn, const char* format, va_list args) __attribute__((format(printf, 6, 0))); + static void pakfire_jail_log_redirect(void* data, int priority, const char* file, int line, const char* fn, const char* format, va_list args) { struct pakfire_jail_exec* ctx = data; diff --git a/src/libpakfire/job.c b/src/libpakfire/job.c index daa259ea6..1ae7d69e8 100644 --- a/src/libpakfire/job.c +++ b/src/libpakfire/job.c @@ -389,6 +389,10 @@ static int pakfire_job_parent(struct pakfire_job* job) { return 0; } +static void pakfire_job_log(void* data, int priority, const char* file, + int line, const char* fn, const char* format, va_list args) + __attribute__((format(printf, 6, 0))); + static void pakfire_job_log(void* data, int priority, const char* file, int line, const char* fn, const char* format, va_list args) { struct pakfire_job* job = data; diff --git a/src/libpakfire/repo.c b/src/libpakfire/repo.c index 36cd9dd58..108a07b86 100644 --- a/src/libpakfire/repo.c +++ b/src/libpakfire/repo.c @@ -200,6 +200,10 @@ char* pakfire_repo_url_replace(struct pakfire_repo* repo, const char* url) { #define pakfire_repo_path(repo, path, format, ...) \ __pakfire_repo_path(repo, path, sizeof(path), format, __VA_ARGS__) +static int __pakfire_repo_path(struct pakfire_repo* repo, + char* path, const size_t length, const char* format, ...) + __attribute__((format(printf, 4, 5))); + static int __pakfire_repo_path(struct pakfire_repo* repo, char* path, const size_t length, const char* format, ...) { char buffer[PATH_MAX]; @@ -236,7 +240,7 @@ static int pakfire_repo_create_xfer(struct pakfire_xfer** xfer, int r; // Create a new transfer - r = pakfire_httpclient_create_xfer(&x, httpclient, url); + r = pakfire_httpclient_create_xfer(&x, httpclient, "%s", url); if (r) goto ERROR; @@ -1154,7 +1158,7 @@ PAKFIRE_EXPORT int pakfire_repo_write_config(struct pakfire_repo* repo, FILE* f) goto ERROR; } - r = pakfire_config_set_format(config, section, "key", "%.*s", length, buffer); + r = pakfire_config_set_format(config, section, "key", "%.*s", (int)length, buffer); if (r) { ERROR(repo->pakfire, "Could not set key: %m\n"); goto ERROR; @@ -1301,7 +1305,7 @@ static int pakfire_repo_download(struct pakfire_repo* repo, const char* url, goto ERROR; // Create a new transfer - r = pakfire_httpclient_create_xfer(&xfer, httpclient, url); + r = pakfire_httpclient_create_xfer(&xfer, httpclient, "%s", url); if (r) goto ERROR; diff --git a/src/libpakfire/transaction.c b/src/libpakfire/transaction.c index 18b9ccbd8..e2bc303a1 100644 --- a/src/libpakfire/transaction.c +++ b/src/libpakfire/transaction.c @@ -382,6 +382,9 @@ static int pakfire_transaction_get_progress(struct pakfire_transaction* transact return transaction->progress * 100 / transaction->num; } +static void pakfire_transaction_status(struct pakfire_transaction* transaction, + const char* message, ...) __attribute__((format(printf, 2, 3))); + static void pakfire_transaction_status(struct pakfire_transaction* transaction, const char* message, ...) { char* buffer = NULL; @@ -880,6 +883,9 @@ static ssize_t pakfire_transaction_downloadsize(struct pakfire_transaction* tran return size; } +static int pakfire_transaction_append_line(char** s, const char* format, ...) + __attribute__((format(printf, 2, 3))); + static int pakfire_transaction_append_line(char** s, const char* format, ...) { va_list args; int r; diff --git a/src/libpakfire/xfer.c b/src/libpakfire/xfer.c index 67385fbd3..c9de59b94 100644 --- a/src/libpakfire/xfer.c +++ b/src/libpakfire/xfer.c @@ -1338,7 +1338,7 @@ static int pakfire_xfer_prepare_progress(struct pakfire_xfer* xfer, // Set the title title = pakfire_xfer_get_title(xfer); if (title) { - r = pakfire_progress_set_title(xfer->progress, title); + r = pakfire_progress_set_title(xfer->progress, "%s", title); if (r) return r; }