Commit b021b4e4 authored by Rafaël Carré's avatar Rafaël Carré Committed by Jean-Baptiste Kempf

logger: support android

(cherry picked from commit a43414d0)
Signed-off-by: default avatarJean-Baptiste Kempf <jb@videolan.org>
parent 5e037a77
...@@ -44,6 +44,11 @@ libmce_plugin_la_DEPENDENCIES = ...@@ -44,6 +44,11 @@ libmce_plugin_la_DEPENDENCIES =
EXTRA_LTLIBRARIES += libmce_plugin.la EXTRA_LTLIBRARIES += libmce_plugin.la
libvlc_LTLIBRARIES += $(LTLIBmce) libvlc_LTLIBRARIES += $(LTLIBmce)
liblogger_plugin_la_LIBADD = $(AM_LIBADD)
if HAVE_ANDROID
liblogger_plugin_la_LIBADD += -llog
endif
libvlc_LTLIBRARIES += \ libvlc_LTLIBRARIES += \
libaudioscrobbler_plugin.la \ libaudioscrobbler_plugin.la \
liblogger_plugin.la liblogger_plugin.la
......
...@@ -38,6 +38,10 @@ ...@@ -38,6 +38,10 @@
#include <stdarg.h> #include <stdarg.h>
#include <assert.h> #include <assert.h>
#ifdef __ANDROID__
# include <android/log.h>
#endif
#define MODE_TEXT 0 #define MODE_TEXT 0
#define MODE_HTML 1 #define MODE_HTML 1
#define MODE_SYSLOG 2 #define MODE_SYSLOG 2
...@@ -95,6 +99,9 @@ static void HtmlPrint(void *, int, const msg_item_t *, const char *, va_list); ...@@ -95,6 +99,9 @@ static void HtmlPrint(void *, int, const msg_item_t *, const char *, va_list);
static void SyslogPrint(void *, int, const msg_item_t *, const char *, static void SyslogPrint(void *, int, const msg_item_t *, const char *,
va_list); va_list);
#endif #endif
#ifdef __ANDROID__
static void AndroidPrint(void *, int, const msg_item_t *, const char *, va_list);
#endif
/***************************************************************************** /*****************************************************************************
* Module descriptor * Module descriptor
...@@ -103,11 +110,17 @@ static const char *const mode_list[] = { "text", "html" ...@@ -103,11 +110,17 @@ static const char *const mode_list[] = { "text", "html"
#ifdef HAVE_SYSLOG_H #ifdef HAVE_SYSLOG_H
,"syslog" ,"syslog"
#endif #endif
#ifdef __ANDROID__
,"android"
#endif
}; };
static const char *const mode_list_text[] = { N_("Text"), "HTML" static const char *const mode_list_text[] = { N_("Text"), "HTML"
#ifdef HAVE_SYSLOG_H #ifdef HAVE_SYSLOG_H
, "syslog" , "syslog"
#endif #endif
#ifdef __ANDROID__
,"android"
#endif
}; };
#define LOGMODE_TEXT N_("Log format") #define LOGMODE_TEXT N_("Log format")
...@@ -117,8 +130,9 @@ static const char *const mode_list_text[] = { N_("Text"), "HTML" ...@@ -117,8 +130,9 @@ static const char *const mode_list_text[] = { N_("Text"), "HTML"
#else #else
#define LOGMODE_LONGTEXT N_("Specify the log format. Available choices are " \ #define LOGMODE_LONGTEXT N_("Specify the log format. Available choices are " \
"\"text\" (default), \"html\", and \"syslog\" (special mode to send to " \ "\"text\" (default), \"html\", \"syslog\" (special mode to send to " \
"syslog instead of file.") "syslog instead of file), and \"android\" (special mode to send to " \
"android logging facility).")
#define SYSLOG_FACILITY_TEXT N_("Syslog facility") #define SYSLOG_FACILITY_TEXT N_("Syslog facility")
#define SYSLOG_FACILITY_LONGTEXT N_("Select the syslog facility where logs " \ #define SYSLOG_FACILITY_LONGTEXT N_("Select the syslog facility where logs " \
...@@ -211,6 +225,10 @@ static int Open( vlc_object_t *p_this ) ...@@ -211,6 +225,10 @@ static int Open( vlc_object_t *p_this )
#ifdef HAVE_SYSLOG_H #ifdef HAVE_SYSLOG_H
else if( !strcmp( mode, "syslog" ) ) else if( !strcmp( mode, "syslog" ) )
cb = SyslogPrint; cb = SyslogPrint;
#endif
#ifdef __ANDROID__
else if( !strcmp( mode, "android" ) )
cb = AndroidPrint;
#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 );
...@@ -253,6 +271,9 @@ static int Open( vlc_object_t *p_this ) ...@@ -253,6 +271,9 @@ static int Open( vlc_object_t *p_this )
p_sys->p_file = NULL; p_sys->p_file = NULL;
} }
else else
#endif
#ifdef __ANDROID__
if( cb != AndroidPrint )
#endif #endif
{ {
char *psz_file = var_InheritString( p_intf, "logfile" ); char *psz_file = var_InheritString( p_intf, "logfile" );
...@@ -338,6 +359,29 @@ static const char ppsz_type[4][9] = { ...@@ -338,6 +359,29 @@ static const char ppsz_type[4][9] = {
" debug", " debug",
}; };
#ifdef __ANDROID__
static const android_LogPriority prioritytype[4] = {
ANDROID_LOG_INFO,
ANDROID_LOG_ERROR,
ANDROID_LOG_WARN,
ANDROID_LOG_DEBUG
};
static void AndroidPrint( void *opaque, int type, const msg_item_t *item,
const char *fmt, va_list ap )
{
(void)item;
intf_thread_t *p_intf = opaque;
if( IgnoreMessage( p_intf, type ) )
return;
int canc = vlc_savecancel();
__android_log_vprint(prioritytype[type], "vlc", fmt, ap);
vlc_restorecancel( canc );
}
#endif
static void TextPrint( void *opaque, int type, const msg_item_t *item, static void TextPrint( void *opaque, int type, const msg_item_t *item,
const char *fmt, va_list ap ) const char *fmt, va_list ap )
{ {
......
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