3 /// General Barry interface routines
7 Copyright (C) 2008-2012, Net Direct Inc. (http://www.netdirect.ca/)
9 This program is free software; you can redistribute it and/or modify
10 it under the terms of the GNU General Public License as published by
11 the Free Software Foundation; either version 2 of the License, or
12 (at your option) any later version.
14 This program is distributed in the hope that it will be useful,
15 but WITHOUT ANY WARRANTY; without even the implied warranty of
16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
18 See the GNU General Public License in the COPYING file at the
19 root directory of this project for more details.
32 extern bool __data_dump_mode__
;
33 extern std::ostream
*LogStream
;
34 extern pthread_mutex_t LogStreamMutex
;
38 while( pthread_mutex_lock(&LogStreamMutex
) != 0 )
44 pthread_mutex_unlock(&LogStreamMutex
);
50 return __data_dump_mode__
;
53 std::ostream
* GetLogStream()
62 void BarryLogf(int verbose
, const char *msg
, ...)
67 char *output
= buffer
;
68 int buflen
= sizeof(buffer
);
69 int n
= vsnprintf(buffer
, buflen
, msg
, vl
);
70 if( n
< 0 || n
>= buflen
) {
72 output
= new char [buflen
];
73 n
= vsnprintf(output
, buflen
, msg
, vl
);
74 if( n
< 0 || n
>= buflen
) {
77 strcpy(buffer
, "BarryLog: (trace error, output too long for buffer)");
89 if( output
!= buffer
)