Instead of passing a pointer to a va_list, pass the va_list itself.
Additionally, use const char for the format string and use names in
the prototype that describe the arguments' meaning.
* \param msg_cb pointer to callback function
* \param data additional data, will be passed to callback
*/
-void ass_set_message_cb(ass_library_t *priv,
- void (*msg_cb)(int, char *, va_list *, void *),
+void ass_set_message_cb(ass_library_t *priv, void (*msg_cb)
+ (int level, const char *fmt, va_list args, void *data),
void *data);
/**
#include "ass_library.h"
#include "ass_utils.h"
-static void ass_msg_handler(int level, char *fmt, va_list *va, void *data)
+static void ass_msg_handler(int level, const char *fmt, va_list va, void *data)
{
if (level > MSGL_INFO)
return;
fprintf(stderr, "[ass] ");
- vfprintf(stderr, fmt, *va);
+ vfprintf(stderr, fmt, va);
fprintf(stderr, "\n");
}
* \param data additional data that will be passed to the callback
*/
void ass_set_message_cb(ass_library_t *priv,
- void (*msg_cb)(int, char *, va_list *, void *),
+ void (*msg_cb)(int, const char *, va_list, void *),
void *data)
{
if (msg_cb) {
priv->msg_callback_data = data;
}
}
-
ass_fontdata_t *fontdata;
int num_fontdata;
- void (*msg_callback)(int, char *, va_list *, void *);
+ void (*msg_callback)(int, const char *, va_list, void *);
void *msg_callback_data;
};
{
va_list va;
va_start(va, fmt);
- priv->msg_callback(lvl, fmt, &va, priv->msg_callback_data);
+ priv->msg_callback(lvl, fmt, va, priv->msg_callback_data);
va_end(va);
}
ass_library_t *ass_library;
ass_renderer_t *ass_renderer;
-void msg_callback(int level, char *fmt, va_list * va, void *data)
+void msg_callback(int level, const char *fmt, va_list va, void *data)
{
if (level > 6)
return;
printf("libass: ");
- vprintf(fmt, *va);
+ vprintf(fmt, va);
printf("\n");
}