vlc | branch: master | Rémi Denis-Courmont <[email protected]> | Sun Feb 8 11:54:10 2015 +0200| [49006c59483bba366e29a6e00bfb64b3f67ac113] | committer: Rémi Denis-Courmont
console: convert console logger to module > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=49006c59483bba366e29a6e00bfb64b3f67ac113 --- modules/Makefile.am | 1 + modules/logger/Makefile.am | 5 ++ modules/logger/console.c | 135 ++++++++++++++++++++++++++++++++++++++++++++ src/libvlc-module.c | 8 --- src/misc/messages.c | 88 ++--------------------------- 5 files changed, 145 insertions(+), 92 deletions(-) diff --git a/modules/Makefile.am b/modules/Makefile.am index f057871..c5d59b2 100644 --- a/modules/Makefile.am +++ b/modules/Makefile.am @@ -41,6 +41,7 @@ include audio_output/Makefile.am include codec/Makefile.am include demux/Makefile.am include hw/vdpau/Makefile.am +include logger/Makefile.am include lua/Makefile.am include meta_engine/Makefile.am include misc/Makefile.am diff --git a/modules/logger/Makefile.am b/modules/logger/Makefile.am new file mode 100644 index 0000000..609f3e9 --- /dev/null +++ b/modules/logger/Makefile.am @@ -0,0 +1,5 @@ +loggerdir = $(pluginsdir)/logger + +libconsole_logger_plugin_la_SOURCES = logger/console.c + +logger_LTLIBRARIES = libconsole_logger_plugin.la diff --git a/modules/logger/console.c b/modules/logger/console.c new file mode 100644 index 0000000..2de454e --- /dev/null +++ b/modules/logger/console.c @@ -0,0 +1,135 @@ +/***************************************************************************** + * console.c: console logger + ***************************************************************************** + * Copyright © 1998-2005 VLC authors and VideoLAN + * Copyright © 2006-2015 Rémi Denis-Courmont + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA. + *****************************************************************************/ + +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +#include <stdarg.h> +#include <stdio.h> +#include <inttypes.h> + +#include <vlc_common.h> +#include <vlc_plugin.h> + +static const int ptr_width = 2 * /* hex digits */ sizeof (uintptr_t); +static const char msg_type[4][9] = { "", " error", " warning", " debug" }; + +#ifndef _WIN32 +# define COL(x,y) "\033[" #x ";" #y "m" +# define RED COL(31,1) +# define GREEN COL(32,1) +# define YELLOW COL(0,33) +# define WHITE COL(0,1) +# define GRAY "\033[0m" +static const char msg_color[4][8] = { WHITE, RED, YELLOW, GRAY }; + +static void LogConsoleColor(void *opaque, int type, const vlc_log_t *meta, + const char *format, va_list ap) +{ + FILE *stream = stderr; + int verbose = (intptr_t)opaque; + + if (verbose < type) + return; + + int canc = vlc_savecancel(); + + flockfile(stream); + fprintf(stream, "["GREEN"%0*"PRIxPTR GRAY"] ", ptr_width, + meta->i_object_id); + if (meta->psz_header != NULL) + fprintf(stream, "[%s] ", meta->psz_header); + fprintf(stream, "%s %s%s: %s", meta->psz_module, meta->psz_object_type, + msg_type[type], msg_color[type]); + vfprintf(stream, format, ap); + fputs(GRAY"\n", stream); + funlockfile(stream); + + vlc_restorecancel(canc); +} +#endif /* !_WIN32 */ + +static void LogConsoleGray(void *opaque, int type, const vlc_log_t *meta, + const char *format, va_list ap) +{ + FILE *stream = stderr; + int verbose = (intptr_t)opaque; + + if (verbose < type) + return; + + int canc = vlc_savecancel(); + + flockfile(stream); + fprintf(stream, "[%0*"PRIxPTR"] ", ptr_width, meta->i_object_id); + if (meta->psz_header != NULL) + fprintf(stream, "[%s] ", meta->psz_header); + fprintf(stream, "%s %s%s: ", meta->psz_module, meta->psz_object_type, + msg_type[type]); + vfprintf(stream, format, ap); + putc_unlocked('\n', stream); + funlockfile(stream); + + vlc_restorecancel(canc); +} + +static vlc_log_cb Open(vlc_object_t *obj, void **sysp) +{ + int verbosity = -1; + + if (!var_InheritBool(obj, "quiet")) + { + const char *str = getenv("VLC_VERBOSE"); + if (str != NULL) + verbosity = atoi(str); + else + verbosity = var_InheritInteger(obj, "verbose"); + } + + if (verbosity < 0) + return NULL; + + verbosity += VLC_MSG_ERR; + *sysp = (void *)(uintptr_t)verbosity; + +#if defined (HAVE_ISATTY) && !defined (_WIN32) + if (isatty(STDERR_FILENO) && var_InheritBool(obj, "color")) + return LogConsoleColor; +#endif + return LogConsoleGray; +} + +#define QUIET_TEXT N_("Be quiet") +#define QUIET_LONGTEXT N_("Turn off all messages on the console.") + +vlc_module_begin() + set_shortname(N_("Console log")) + set_description(N_("Console logger")) + set_category(CAT_ADVANCED) + set_subcategory(SUBCAT_ADVANCED_MISC) + set_capability("logger", 10) + set_callbacks(Open, NULL) + + add_bool("quiet", false, QUIET_TEXT, QUIET_LONGTEXT, false) + change_short('q') + change_volatile() +vlc_module_end () diff --git a/src/libvlc-module.c b/src/libvlc-module.c index b24d943..7c4c73c 100644 --- a/src/libvlc-module.c +++ b/src/libvlc-module.c @@ -85,10 +85,6 @@ static const char *const ppsz_snap_formats[] = "This is the verbosity level (0=only errors and " \ "standard messages, 1=warnings, 2=debug).") -#define QUIET_TEXT N_("Be quiet") -#define QUIET_LONGTEXT N_( \ - "Turn off all warning and information messages.") - #define OPEN_TEXT N_("Default stream") #define OPEN_LONGTEXT N_( \ "This stream will always be opened at VLC startup." ) @@ -2034,10 +2030,6 @@ vlc_module_begin () change_short('v') change_volatile () add_obsolete_string( "verbose-objects" ) /* since 2.1.0 */ - add_bool( "quiet", 0, QUIET_TEXT, QUIET_LONGTEXT, false ) - change_short('q') - change_volatile () - #if !defined(_WIN32) && !defined(__OS2__) add_bool( "daemon", 0, DAEMON_TEXT, DAEMON_LONGTEXT, true ) change_short('d') diff --git a/src/misc/messages.c b/src/misc/messages.c index a9b0a29..77a5ec9 100644 --- a/src/misc/messages.c +++ b/src/misc/messages.c @@ -154,71 +154,9 @@ void vlc_Log(vlc_object_t *obj, int type, const char *module, va_end(ap); } +#ifdef _WIN32 static const char msg_type[4][9] = { "", " error", " warning", " debug" }; -#define COL(x,y) "\033[" #x ";" #y "m" -#define RED COL(31,1) -#define GREEN COL(32,1) -#define YELLOW COL(0,33) -#define WHITE COL(0,1) -#define GRAY "\033[0m" -static const char msg_color[4][8] = { WHITE, RED, YELLOW, GRAY }; - -/* Display size of a pointer */ -static const int ptr_width = 2 * /* hex digits */ sizeof(uintptr_t); - -static void PrintColorMsg (void *d, int type, const vlc_log_t *p_item, - const char *format, va_list ap) -{ - FILE *stream = stderr; - int verbose = (intptr_t)d; - - if (verbose < 0 || verbose < (type - VLC_MSG_ERR)) - return; - - int canc = vlc_savecancel (); - - flockfile (stream); - utf8_fprintf (stream, "["GREEN"%0*"PRIxPTR""GRAY"] ", ptr_width, p_item->i_object_id); - if (p_item->psz_header != NULL) - utf8_fprintf (stream, "[%s] ", p_item->psz_header); - utf8_fprintf (stream, "%s %s%s: %s", p_item->psz_module, - p_item->psz_object_type, msg_type[type], msg_color[type]); - utf8_vfprintf (stream, format, ap); - fputs (GRAY"\n", stream); -#if defined (_WIN32) || defined (__OS2__) - fflush (stream); -#endif - funlockfile (stream); - vlc_restorecancel (canc); -} - -static void PrintMsg (void *d, int type, const vlc_log_t *p_item, - const char *format, va_list ap) -{ - FILE *stream = stderr; - int verbose = (intptr_t)d; - - if (verbose < 0 || verbose < (type - VLC_MSG_ERR)) - return; - int canc = vlc_savecancel (); - - flockfile (stream); - utf8_fprintf (stream, "[%0*"PRIxPTR"] ", ptr_width, p_item->i_object_id); - if (p_item->psz_header != NULL) - utf8_fprintf (stream, "[%s] ", p_item->psz_header); - utf8_fprintf (stream, "%s %s%s: ", p_item->psz_module, - p_item->psz_object_type, msg_type[type]); - utf8_vfprintf (stream, format, ap); - putc_unlocked ('\n', stream); -#if defined (_WIN32) || defined (__OS2__) - fflush (stream); -#endif - funlockfile (stream); - vlc_restorecancel (canc); -} - -#ifdef _WIN32 static void Win32DebugOutputMsg (void* d, int type, const vlc_log_t *p_item, const char *format, va_list dol) { @@ -454,29 +392,11 @@ int vlc_LogInit(libvlc_int_t *vlc) module_t *module = vlc_module_load(logger, "logger", NULL, false, vlc_logger_load, logger, &cb, &sys); if (module == NULL) - { #ifdef __ANDROID__ - cb = AndroidPrintMsg; -#elif defined (HAVE_ISATTY) && !defined (_WIN32) - if (isatty(STDERR_FILENO) && var_InheritBool(vlc, "color")) - cb = PrintColorMsg; + cb = AndroidPrintMsg, sys = NULL; +#else + cb = vlc_vaLogDiscard; #endif - else - cb = PrintMsg; - - signed char verbosity; - - if (var_InheritBool(vlc, "quiet")) - verbosity = -1; - else - { - const char *str = getenv("VLC_VERBOSE"); - - if (str == NULL || sscanf(str, "%hhd", &verbosity) < 1) - verbosity = var_InheritInteger(vlc, "verbose"); - } - sys = (void *)(intptr_t)verbosity; - } vlc_rwlock_wrlock(&logger->lock); if (logger->log == vlc_vaLogEarly) _______________________________________________ vlc-commits mailing list [email protected] https://mailman.videolan.org/listinfo/vlc-commits
