[vlc-commits] console: convert console logger to module
Rémi Denis-Courmont
git at videolan.org
Sun Feb 8 13:57:21 CET 2015
vlc | branch: master | Rémi Denis-Courmont <remi at remlab.net> | 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)
More information about the vlc-commits
mailing list