1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
|
/*! -*- c++ -*-
* \file mg_tools.h
* \ingroup muggle
* \brief A few utility functions for standalone and plugin messaging for the vdr muggle plugindatabase
*
* \version $Revision: 1.4 $
* \date $Date$
* \author Ralf Klueber, Lars von Wedel, Andreas Kellner
* \author file owner: $Author$
*
*/
/* makes sure we don't use the same declarations twice */
#ifndef _MUGGLE_TOOLS_H
#define _MUGGLE_TOOLS_H
#include <iostream>
#include <sstream>
#include <string>
#include <cstdarg>
using namespace std;
/*!
* \brief Logging utilities
*
* \todo these could be static members in the mgLog class
* \todo code of these functions should be compiled conditionally
*/
//@{
void mgSetDebugLevel (int new_level);
void mgDebug (int level, const char *fmt, ...);
void mgDebug (const char *fmt, ...);
void mgWarning (const char *fmt, ...);
void mgError (const char *fmt, ...);
int msprintf(char **strp, const char *fmt, ...);
int vmsprintf(char **strp, const char *fmt, va_list &ap);
//@}
#ifdef DEBUG
#define MGLOG(x) mgLog __thelog(x)
#else
#define MGLOG(x) {}
#endif
/*! \brief simplified logging class
* \ingroup muggle
*
* Create a local instance at the beginning of the method
* and entering/leaving the function will be logged
* as constructors/destructors are called.
*/
class mgLog
{
public:
mgLog (string methodname):m_methodname (methodname) {
mgDebug(1,"%s entered",m_methodname.c_str());
};
~mgLog () {
mgDebug(1,"%s terminated",m_methodname.c_str());
}
private:
string m_methodname;
};
string trim(string const& source, char const* delims = " \t\r\n");
char *SeparateFolders(const char *filename, char * folders[],unsigned int fcount);
//! \brief adds string n to string s, using string sep to separate them
string& addsep (string & s, string sep, string n);
//! \brief adds string n to string s, using a comma to separate them
string comma (string &s, string n);
//! \brief converts long to string
string itos (int i);
//! \brief convert long to string
string ltos (long l);
//! \brief return extension of a file
char *extension (const char *filename);
bool notempty(const char *s);
//! \brief check whether two directory names point to the identical directory
bool samedir(const char *s1, const char *s2);
#endif /* _MUGGLE_TOOLS_H */
//! \brief recursive mkdir, like shell "mkdir -p"
// \param s this must be a filename
bool mkdir_p(const char *s);
void mgTimestamp(const char *s);
|