[vlc-commits] logger: store in the context which logging mode is being used
Rafaël Carré
git at videolan.org
Wed Jan 25 07:50:21 CET 2012
vlc/vlc-2.0 | branch: master | Rafaël Carré <funman at videolan.org> | Wed Jan 25 01:43:15 2012 -0500| [d417550f2c2c8b25f4b33ffade524d9334419111] | committer: 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: Rafaël Carré <funman at videolan.org>
> http://git.videolan.org/gitweb.cgi/vlc/vlc-2.0.git/?a=commit;h=d417550f2c2c8b25f4b33ffade524d9334419111
---
modules/misc/logger.c | 27 ++++++++++++++++++++++++---
1 files changed, 24 insertions(+), 3 deletions(-)
diff --git a/modules/misc/logger.c b/modules/misc/logger.c
index 481d262..2669319 100644
--- a/modules/misc/logger.c
+++ b/modules/misc/logger.c
@@ -69,6 +69,17 @@
#include <syslog.h>
#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
*****************************************************************************/
@@ -77,6 +88,7 @@ struct intf_sys_t
msg_subscription_t *p_sub;
FILE *p_file;
const char *footer;
+ enum logmode logmode;
};
/*****************************************************************************
@@ -204,6 +216,7 @@ static int Open( vlc_object_t *p_this )
msg_callback_t cb = TextPrint;
const char *filename = LOG_FILE_TEXT, *header = TEXT_HEADER;
p_sys->footer = TEXT_FOOTER;
+ p_sys->logmode = LOGGER_TEXT;
char *mode = var_InheritString( p_intf, "logmode" );
if( mode != NULL )
@@ -213,14 +226,21 @@ static int Open( vlc_object_t *p_this )
p_sys->footer = HTML_FOOTER;
header = HTML_HEADER;
cb = HtmlPrint;
+ p_sys->logmode = LOGGER_HTML;
}
#ifdef HAVE_SYSLOG_H
else if( !strcmp( mode, "syslog" ) )
+ {
cb = SyslogPrint;
+ p_sys->logmode = LOGGER_SYSLOG;
+ }
#endif
#ifdef __ANDROID__
else if( !strcmp( mode, "android" ) )
+ {
cb = AndroidPrint;
+ p_sys->logmode = LOGGER_ANDROID;
+ }
#endif
else if( strcmp( mode, "text" ) )
msg_Warn( p_intf, "invalid log mode `%s', using `text'", mode );
@@ -228,7 +248,7 @@ static int Open( vlc_object_t *p_this )
}
#ifdef HAVE_SYSLOG_H
- if( cb == SyslogPrint )
+ if( p_sys->logmode == LOGGER_SYSLOG )
{
int i_facility;
char *psz_facility = var_InheritString( p_intf, "syslog-facility" );
@@ -265,7 +285,7 @@ static int Open( vlc_object_t *p_this )
else
#endif
#ifdef __ANDROID__
- if( cb == AndroidPrint )
+ if( p_sys->logmode == LOGGER_ANDROID )
{
/* nothing to do */
}
@@ -322,10 +342,11 @@ static void Close( vlc_object_t *p_this )
/* Close the log file */
#ifdef HAVE_SYSLOG_H
- if( p_sys->p_file == NULL )
+ if( p_sys->logmode == LOGGER_SYSLOG )
closelog();
else
#endif
+ if( p_sys->logmode == LOGGER_TEXT || p_sys->logmode == LOGGER_HTML )
{
fputs( p_sys->footer, p_sys->p_file );
fclose( p_sys->p_file );
More information about the vlc-commits
mailing list