summaryrefslogtreecommitdiff
path: root/mg_tools.c
blob: 3a484c52ac51c8283eaf1451c1120990b5a851a5 (plain)
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
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
/*!
 * \file  mg_tools.c
 * \brief  A few util 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$
 */

#include "mg_tools.h"

/*extern "C"
{*/
#include <stdarg.h>
#include <stdio.h>
/*}
 */
#include <stdlib.h>

//! \brief buffer for messages
#define  MAX_BUFLEN  2048

static char buffer[MAX_BUFLEN];

static int DEBUG_LEVEL = 3;

void
mgSetDebugLevel (int new_level)
{
    DEBUG_LEVEL = new_level;
}


void
mgDebug (int level, const char *fmt, ...)
{

    va_list ap;
    if (level <= DEBUG_LEVEL)
    {
        va_start (ap, fmt);

        vsnprintf (buffer, MAX_BUFLEN - 1, fmt, ap);
        if (STANDALONE)
        {
            fprintf (stderr, "dbg %d: %s\n", level, buffer);
        }
        else
        {
#if !STANDALONE
            isyslog ("%s\n", buffer);
#endif
        }
    }
    va_end (ap);
}


void
mgDebug (const char *fmt, ...)
{
    va_list ap;
    va_start (ap, fmt);
    mgDebug (1, fmt, ap);
}


void
mgWarning (const char *fmt, ...)
{

    va_list ap;
    va_start (ap, fmt);
    vsnprintf (buffer, MAX_BUFLEN - 1, fmt, ap);

    if (STANDALONE)
    {
        fprintf (stderr, "warning: %s\n", buffer);
    }
    else
    {
#if !STANDALONE
        isyslog ("Warning: %s\n", buffer);
#endif
    }

    va_end (ap);
}


void
mgError (const char *fmt, ...)
{

    va_list ap;
    va_start (ap, fmt);
    vsnprintf (buffer, MAX_BUFLEN - 1, fmt, ap);

    if (STANDALONE)
    {
        fprintf (stderr, "Error: %s\n", buffer);
        exit (1);
    }
    else
    {
#if !STANDALONE
        isyslog ("Error in Muggle: %s\n", buffer);
#endif
    }

    va_end (ap);
}


std::string trim(std::string const& source, char const* delims ) {
  std::string result(source);
  std::string::size_type index = result.find_last_not_of(delims);
  if(index != std::string::npos)
    result.erase(++index);
  index = result.find_first_not_of(delims);
  if(index != std::string::npos)
    result.erase(0, index);
  else
    result.erase();
  return result;
}