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;
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;
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;
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;
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;
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);
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);
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 */
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
// 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)
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
// 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);
} 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);
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;
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;
#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];
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;
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;
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;
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;
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;
// 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;
}