From 1a82883881f61b294157cadd736115e3c2b05c3b Mon Sep 17 00:00:00 2001 From: Chris Frey Date: Fri, 16 Jul 2010 17:58:04 -0400 Subject: [PATCH] lib: added C-style BarryLogf() function for internal use --- ChangeLog | 1 + src/Makefile.am | 3 ++- src/{log.cc => clog.h} | 42 +++++++++++++----------------------------- src/log.cc | 24 ++++++++++++++++++++++++ 4 files changed, 40 insertions(+), 30 deletions(-) copy src/{log.cc => clog.h} (51%) diff --git a/ChangeLog b/ChangeLog index 78274c4f..a19f0034 100644 --- a/ChangeLog +++ b/ChangeLog @@ -2,6 +2,7 @@ Release: version 0.17 - 2010/01/?? ------------------------------------------------------------------------------ 2010/07/16 - lib: added BARRY_GCC_FORMAT_CHECK() for printf() style arg checking + - lib: added C-style BarryLogf() function for internal use 2010/07/13 - os4x: undo run-as-process setting, since some tests indicate that sync will timeout diff --git a/src/Makefile.am b/src/Makefile.am index 2b7eb13b..d349cc73 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -138,7 +138,8 @@ noinst_HEADERS = cbarry.h \ strnlen.h \ dp_parser.h \ j_message.h \ - j_jdwp.h + j_jdwp.h \ + clog.h EXTRA_DIST = convo.awk \ legal.txt diff --git a/src/log.cc b/src/clog.h similarity index 51% copy from src/log.cc copy to src/clog.h index 0a574d75..fd482805 100644 --- a/src/log.cc +++ b/src/clog.h @@ -1,10 +1,10 @@ /// -/// \file log.cc -/// General Barry interface routines +/// \file clog.h +/// C oriented logging routines for Barry /// /* - Copyright (C) 2008-2010, Net Direct Inc. (http://www.netdirect.ca/) + Copyright (C) 2010, Net Direct Inc. (http://www.netdirect.ca/) 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 @@ -19,36 +19,20 @@ root directory of this project for more details. */ -#include "log.h" -#include +#ifndef __BARRY_CLOG_H__ +#define __BARRY_CLOG_H__ -namespace Barry { +#include "dll.h" -extern bool __data_dump_mode__; -extern std::ostream *LogStream; -extern pthread_mutex_t LogStreamMutex; +#ifdef __cplusplus +extern "C" { +#endif -LogLock::LogLock() -{ - while( pthread_mutex_lock(&LogStreamMutex) != 0 ) - ; -} - -LogLock::~LogLock() -{ - pthread_mutex_unlock(&LogStreamMutex); -} - - -bool LogVerbose() -{ - return __data_dump_mode__; -} +BXEXPORT void BarryLogf(int verbose, const char *msg, ...) BARRY_GCC_FORMAT_CHECK(2, 3); -std::ostream* GetLogStream() -{ - return LogStream; +#ifdef __cplusplus } +#endif -} // namespace Barry +#endif // __BARRY_CLOG_H__ diff --git a/src/log.cc b/src/log.cc index 0a574d75..d8df4330 100644 --- a/src/log.cc +++ b/src/log.cc @@ -20,7 +20,11 @@ */ #include "log.h" +#include "clog.h" #include +#include +#include +#include namespace Barry { @@ -52,3 +56,23 @@ std::ostream* GetLogStream() } // namespace Barry +// Callable from C: + +void BarryLogf(int verbose, const char *msg, ...) +{ + va_list vl; + va_start(vl, msg); + char buffer[2048]; + int n = vsnprintf(buffer, sizeof(buffer), msg, vl); + va_end(vl); + if( n > -1 && n < (int)sizeof(buffer) ) + strcpy(buffer, "BarryLog: (trace error, output too long for buffer)"); + + if( verbose ) { + barryverbose(buffer); + } + else { + barrylog(buffer); + } +} + -- 2.11.4.GIT