Commit d417550f authored by Rafaël Carré's avatar Rafaël Carré

logger: store in the context which logging mode is being used

Don't close a NULL FILE* on android
(cherry picked from commit e50cfac2d3cbc00abd7d332eb47abb584ef5eac4)
Signed-off-by: default avatarRafaël Carré <funman@videolan.org>
parent 954295dc
...@@ -69,6 +69,17 @@ ...@@ -69,6 +69,17 @@
#include <syslog.h> #include <syslog.h>
#endif #endif
enum logmode {
LOGGER_TEXT,
LOGGER_HTML,
#ifdef HAVE_SYSLOG_H
LOGGER_SYSLOG,
#endif
#ifdef __ANDROID__
LOGGER_ANDROID,
#endif
};
/***************************************************************************** /*****************************************************************************
* intf_sys_t: description and status of log interface * intf_sys_t: description and status of log interface
*****************************************************************************/ *****************************************************************************/
...@@ -77,6 +88,7 @@ struct intf_sys_t ...@@ -77,6 +88,7 @@ struct intf_sys_t
msg_subscription_t *p_sub; msg_subscription_t *p_sub;
FILE *p_file; FILE *p_file;
const char *footer; const char *footer;
enum logmode logmode;
}; };
/***************************************************************************** /*****************************************************************************
...@@ -204,6 +216,7 @@ static int Open( vlc_object_t *p_this ) ...@@ -204,6 +216,7 @@ static int Open( vlc_object_t *p_this )
msg_callback_t cb = TextPrint; msg_callback_t cb = TextPrint;
const char *filename = LOG_FILE_TEXT, *header = TEXT_HEADER; const char *filename = LOG_FILE_TEXT, *header = TEXT_HEADER;
p_sys->footer = TEXT_FOOTER; p_sys->footer = TEXT_FOOTER;
p_sys->logmode = LOGGER_TEXT;
char *mode = var_InheritString( p_intf, "logmode" ); char *mode = var_InheritString( p_intf, "logmode" );
if( mode != NULL ) if( mode != NULL )
...@@ -213,14 +226,21 @@ static int Open( vlc_object_t *p_this ) ...@@ -213,14 +226,21 @@ static int Open( vlc_object_t *p_this )
p_sys->footer = HTML_FOOTER; p_sys->footer = HTML_FOOTER;
header = HTML_HEADER; header = HTML_HEADER;
cb = HtmlPrint; cb = HtmlPrint;
p_sys->logmode = LOGGER_HTML;
} }
#ifdef HAVE_SYSLOG_H #ifdef HAVE_SYSLOG_H
else if( !strcmp( mode, "syslog" ) ) else if( !strcmp( mode, "syslog" ) )
{
cb = SyslogPrint; cb = SyslogPrint;
p_sys->logmode = LOGGER_SYSLOG;
}
#endif #endif
#ifdef __ANDROID__ #ifdef __ANDROID__
else if( !strcmp( mode, "android" ) ) else if( !strcmp( mode, "android" ) )
{
cb = AndroidPrint; cb = AndroidPrint;
p_sys->logmode = LOGGER_ANDROID;
}
#endif #endif
else if( strcmp( mode, "text" ) ) else if( strcmp( mode, "text" ) )
msg_Warn( p_intf, "invalid log mode `%s', using `text'", mode ); msg_Warn( p_intf, "invalid log mode `%s', using `text'", mode );
...@@ -228,7 +248,7 @@ static int Open( vlc_object_t *p_this ) ...@@ -228,7 +248,7 @@ static int Open( vlc_object_t *p_this )
} }
#ifdef HAVE_SYSLOG_H #ifdef HAVE_SYSLOG_H
if( cb == SyslogPrint ) if( p_sys->logmode == LOGGER_SYSLOG )
{ {
int i_facility; int i_facility;
char *psz_facility = var_InheritString( p_intf, "syslog-facility" ); char *psz_facility = var_InheritString( p_intf, "syslog-facility" );
...@@ -265,7 +285,7 @@ static int Open( vlc_object_t *p_this ) ...@@ -265,7 +285,7 @@ static int Open( vlc_object_t *p_this )
else else
#endif #endif
#ifdef __ANDROID__ #ifdef __ANDROID__
if( cb == AndroidPrint ) if( p_sys->logmode == LOGGER_ANDROID )
{ {
/* nothing to do */ /* nothing to do */
} }
...@@ -322,10 +342,11 @@ static void Close( vlc_object_t *p_this ) ...@@ -322,10 +342,11 @@ static void Close( vlc_object_t *p_this )
/* Close the log file */ /* Close the log file */
#ifdef HAVE_SYSLOG_H #ifdef HAVE_SYSLOG_H
if( p_sys->p_file == NULL ) if( p_sys->logmode == LOGGER_SYSLOG )
closelog(); closelog();
else else
#endif #endif
if( p_sys->logmode == LOGGER_TEXT || p_sys->logmode == LOGGER_HTML )
{ {
fputs( p_sys->footer, p_sys->p_file ); fputs( p_sys->footer, p_sys->p_file );
fclose( p_sys->p_file ); fclose( p_sys->p_file );
......
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