X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=modules%2Fmisc%2Flogger.c;h=4229fa22d8281b9863a2ba36e4f8d3b944369a93;hb=d6abd400bfadd7c0bfe4bfe2cf1547d72e153508;hp=1a09034bb3e03bfb710db5f5a4b655e35590dd67;hpb=449fd28aaf007c6411251dae9d0dbfdc65b135d1;p=vlc diff --git a/modules/misc/logger.c b/modules/misc/logger.c index 1a09034bb3..4229fa22d8 100644 --- a/modules/misc/logger.c +++ b/modules/misc/logger.c @@ -29,7 +29,8 @@ # include "config.h" #endif -#include +#include +#include #include #include #include @@ -85,6 +86,7 @@ struct intf_sys_t int i_mode; FILE *p_rrd; mtime_t last_update; + time_t now; /* timestamp for rrd-log */ FILE * p_file; /* The log file */ msg_subscription_t *p_sub; @@ -109,12 +111,12 @@ static void DoRRD( intf_thread_t *p_intf ); /***************************************************************************** * Module descriptor *****************************************************************************/ -static const char *mode_list[] = { "text", "html" +static const char *const mode_list[] = { "text", "html" #ifdef HAVE_SYSLOG_H ,"syslog" #endif }; -static const char *mode_list_text[] = { N_("Text"), "HTML" +static const char *const mode_list_text[] = { N_("Text"), "HTML" #ifdef HAVE_SYSLOG_H , "syslog" #endif @@ -131,8 +133,8 @@ static const char *mode_list_text[] = { N_("Text"), "HTML" #endif vlc_module_begin(); - set_shortname( _( "Logging" ) ); - set_description( _("File logging") ); + set_shortname( N_( "Logging" ) ); + set_description( N_("File logging") ); set_category( CAT_ADVANCED ); set_subcategory( SUBCAT_ADVANCED_MISC ); @@ -165,10 +167,7 @@ static int Open( vlc_object_t *p_this ) /* Allocate instance and initialize some members */ p_intf->p_sys = (intf_sys_t *)malloc( sizeof( intf_sys_t ) ); if( p_intf->p_sys == NULL ) - { - msg_Err( p_intf, "out of memory" ); return -1; - } psz_mode = var_CreateGetString( p_intf, "logmode" ); if( psz_mode ) @@ -207,30 +206,10 @@ static int Open( vlc_object_t *p_this ) if( !psz_file ) { #ifdef __APPLE__ - char *psz_homedir = p_this->p_libvlc->psz_homedir; - - if( !psz_homedir ) /* XXX: This should never happen */ - { - msg_Err( p_this, "unable to find home directory" ); - return -1; - } - psz_file = (char *)malloc( sizeof("/" LOG_DIR "/" LOG_FILE_HTML) + - strlen(psz_homedir) ); - if( psz_file ) - { - switch( p_intf->p_sys->i_mode ) - { - case MODE_HTML: - sprintf( psz_file, "%s/" LOG_DIR "/" LOG_FILE_HTML, - psz_homedir ); - break; - case MODE_TEXT: - default: - sprintf( psz_file, "%s/" LOG_DIR "/" LOG_FILE_TEXT, - psz_homedir ); - break; - } - } + if( asprintf( &psz_file, "%s/"LOG_DIR"/%s", config_GetHomeDir(), + (p_intf->p_sys->i_mode == MODE_HTML) ? LOG_FILE_HTML + : LOG_FILE_TEXT ) == -1 ) + psz_file = NULL; #else switch( p_intf->p_sys->i_mode ) { @@ -289,8 +268,9 @@ static int Open( vlc_object_t *p_this ) { p_intf->p_sys->p_rrd = utf8_fopen( psz_rrd_file, "w" ); } + free( psz_rrd_file ); - p_intf->p_sys->p_sub = msg_Subscribe( p_intf , MSG_QUEUE_NORMAL ); + p_intf->p_sys->p_sub = msg_Subscribe( p_intf ); p_intf->pf_run = Run; return 0; @@ -305,7 +285,8 @@ static void Close( vlc_object_t *p_this ) /* Flush the queue and unsubscribe from the message queue */ FlushQueue( p_intf->p_sys->p_sub, p_intf->p_sys->p_file, - p_intf->p_sys->i_mode, p_intf->p_libvlc->i_verbose ); + p_intf->p_sys->i_mode, + var_CreateGetInteger( p_intf, "verbose" ) ); msg_Unsubscribe( p_intf, p_intf->p_sys->p_sub ); switch( p_intf->p_sys->i_mode ) @@ -340,11 +321,11 @@ static void Close( vlc_object_t *p_this ) *****************************************************************************/ static void Run( intf_thread_t *p_intf ) { - while( !p_intf->b_die ) + while( vlc_object_alive (p_intf) ) { FlushQueue( p_intf->p_sys->p_sub, p_intf->p_sys->p_file, - p_intf->p_sys->i_mode, p_intf->p_libvlc->i_verbose ); - + p_intf->p_sys->i_mode, + var_CreateGetInteger( p_intf, "verbose" ) ); if( p_intf->p_sys->p_rrd ) DoRRD( p_intf ); @@ -460,6 +441,7 @@ static void DoRRD( intf_thread_t *p_intf ) if( p_intf->p_libvlc->p_stats ) { + time(&p_intf->p_sys->now); lldiv_t din = lldiv( p_intf->p_libvlc->p_stats->f_input_bitrate * 1000000, 1000 ); lldiv_t ddm = lldiv( p_intf->p_libvlc->p_stats->f_demux_bitrate * 1000000, @@ -467,8 +449,8 @@ static void DoRRD( intf_thread_t *p_intf ) lldiv_t dout = lldiv( p_intf->p_libvlc->p_stats->f_output_bitrate * 1000000, 1000 ); fprintf( p_intf->p_sys->p_rrd, - I64Fi":%lld.%03u:%lld.%03u:%lld.%03u\n", - p_intf->p_sys->last_update/1000000, + "%"PRIi64":%lld.%03u:%lld.%03u:%lld.%03u\n", + (uintmax_t)p_intf->p_sys->now, din.quot, (unsigned int)din.rem, ddm.quot, (unsigned int)ddm.rem, dout.quot, (unsigned int)dout.rem );