# include "config.h"
#endif
-#include <vlc/vlc.h>
+#include <vlc_common.h>
#include <vlc_plugin.h>
#include <vlc_interface.h>
#include <vlc_playlist.h>
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;
/*****************************************************************************
* 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
/* 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 )
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 )
{
{
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 );
p_intf->pf_run = Run;
*****************************************************************************/
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,
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,
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 );