Commit d4dd8761 authored by Rémi Denis-Courmont's avatar Rémi Denis-Courmont

libvlc: helper to log to a FILE

parent f7260e64
......@@ -56,11 +56,13 @@
# define LIBVLC_DEPRECATED
#endif
#include <stdio.h>
#include <stdarg.h>
# ifdef __cplusplus
extern "C" {
# endif
#include <stdarg.h>
#include <vlc/libvlc_structures.h>
/** \defgroup libvlc_core LibVLC core
......@@ -370,6 +372,15 @@ typedef struct libvlc_log_subscriber
LIBVLC_API void libvlc_log_subscribe( libvlc_log_subscriber_t *sub,
libvlc_log_cb cb, void *data );
/**
* Registers a logging callback to a file.
* @param stream FILE pointer opened for writing
* (the FILE pointer must remain valid until libvlc_log_unsubscribe())
*/
LIBVLC_API void libvlc_log_subscribe_file( libvlc_log_subscriber_t *sub,
FILE *stream );
/**
* Deregisters a logging callback from LibVLC.
* This function is thread-safe.
......
......@@ -113,6 +113,25 @@ void libvlc_log_unsubscribe( libvlc_log_subscriber_t *sub )
vlc_rwlock_unlock (&log_lock);
}
/*** Helpers for logging to files ***/
static void libvlc_log_file (void *data, int level, const char *fmt,
va_list ap)
{
FILE *stream = data;
flockfile (stream);
vfprintf (stream, fmt, ap);
fputc ('\n', stream);
funlockfile (stream);
(void) level;
}
void libvlc_log_subscribe_file (libvlc_log_subscriber_t *sub, FILE *stream)
{
libvlc_log_subscribe (sub, libvlc_log_file, stream);
}
/*** Stubs for the old interface ***/
unsigned libvlc_get_log_verbosity( const libvlc_instance_t *p_instance )
{
(void) p_instance;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment