File: strmatch.c

package info (click to toggle)
libite 2.6.1-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 2,188 kB
  • sloc: sh: 4,665; ansic: 4,165; makefile: 141
file content (44 lines) | stat: -rw-r--r-- 974 bytes parent folder | download | duplicates (3)
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
#include "check.h"
#define SYSLOG_NAMES
#include <syslog.h>

#define SEVERITY_LEVEL {		     \
   CHOOSE(SEVERITY_NONE,    "none"),         \
   CHOOSE(SEVERITY_DEBUG,   "debug"),        \
   CHOOSE(SEVERITY_INFO,    "info"),         \
   CHOOSE(SEVERITY_NOTICE,  "notice"),       \
   CHOOSE(SEVERITY_WARNING, "warning"),      \
   CHOOSE(SEVERITY_ERR,     "err"),          \
   CHOOSE(SEVERITY_CRIT,    "crit"),         \
   CHOOSE(SEVERITY_ALERT,   "alert"),        \
   CHOOSE(SEVERITY_EMERG,   "emerg")         \
}

#define CHOOSE(a, b) b
const char *levels[] = SEVERITY_LEVEL;

#undef CHOOSE
#define CHOOSE(a, b) a
typedef enum SEVERITY_LEVEL severity_level_t;

int main(void)
{
	size_t i;
	int num;
	struct {
		char *str;
		int   val;
	} t[] = {
		{ "warn", SEVERITY_WARNING },
		{ "alert", SEVERITY_ALERT },
		{ NULL, 0 }
	};

	for (i = 0; t[i].str; i++) {
		num = strmatch(t[i].str, levels);
		fail_unless(num >= 0);
		fail_unless(num == t[i].val);
	}

	return 0;
}