X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=modules%2Fmisc%2Flogger.c;h=4229fa22d8281b9863a2ba36e4f8d3b944369a93;hb=fa81ade13492bab2a809e6c8990e211f04aecab8;hp=21b29e62a80f0d63fd6ae9f6acf764d48a732646;hpb=27d483e9ef7a451397d7857251c8d67097661f1d;p=vlc diff --git a/modules/misc/logger.c b/modules/misc/logger.c index 21b29e62a8..4229fa22d8 100644 --- a/modules/misc/logger.c +++ b/modules/misc/logger.c @@ -29,7 +29,7 @@ # include "config.h" #endif -#include +#include #include #include #include @@ -86,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; @@ -110,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 @@ -132,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 ); @@ -166,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 ) @@ -208,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 ) { @@ -290,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; @@ -342,7 +321,7 @@ 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, @@ -462,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, @@ -470,7 +450,7 @@ static void DoRRD( intf_thread_t *p_intf ) 1000 ); fprintf( p_intf->p_sys->p_rrd, "%"PRIi64":%lld.%03u:%lld.%03u:%lld.%03u\n", - p_intf->p_sys->last_update/1000000, + (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 );