summaryrefslogtreecommitdiff
path: root/mg_tools.c
blob: d2dc1efbff3a80dcc4f43649fbbd51540764f68d (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
/*!
 * \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 <tools.h>

#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;
    SysLogLevel = 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);
        dsyslog ("%s\n", buffer);
    }
    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);

    isyslog ("Warning: %s\n", buffer);
    extern void showmessage(const char*,int duration=0);
    showmessage(buffer);
    va_end (ap);
}


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

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

    isyslog ("Error in Muggle: %s\n", buffer);

    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;
}


char *
SeparateFolders(const char *filename, char * folders[],unsigned int fcount)
{
	for (unsigned int i=0;i<fcount;i++)
		folders[i]="";
	char *fbuf=strdup(filename);
	char *slash=fbuf-1;
	for (unsigned int i=0;i<fcount;i++)
	{
		char *p=slash+1;
		slash=strchr(p,'/');
		if (!slash)
			break;
		folders[i]=p;
		*slash=0;
	}
	return fbuf;
}