line |
stmt |
bran |
cond |
sub |
time |
code |
1
|
|
|
|
|
|
/* |
2
|
|
|
|
|
|
* Syslog.xs |
3
|
|
|
|
|
|
* |
4
|
|
|
|
|
|
* XS wrapper for the syslog(3) facility. |
5
|
|
|
|
|
|
* |
6
|
|
|
|
|
|
*/ |
7
|
|
|
|
|
|
|
8
|
|
|
|
|
|
#if defined(_WIN32) |
9
|
|
|
|
|
|
# include |
10
|
|
|
|
|
|
#endif |
11
|
|
|
|
|
|
|
12
|
|
|
|
|
|
#include "EXTERN.h" |
13
|
|
|
|
|
|
#include "perl.h" |
14
|
|
|
|
|
|
#include "XSUB.h" |
15
|
|
|
|
|
|
#ifdef USE_PPPORT_H |
16
|
|
|
|
|
|
# include "ppport.h" |
17
|
|
|
|
|
|
#endif |
18
|
|
|
|
|
|
|
19
|
|
|
|
|
|
#ifndef HAVE_SYSLOG |
20
|
|
|
|
|
|
#define HAVE_SYSLOG 1 |
21
|
|
|
|
|
|
#endif |
22
|
|
|
|
|
|
|
23
|
|
|
|
|
|
#if defined(_WIN32) && !defined(__CYGWIN__) |
24
|
|
|
|
|
|
# undef HAVE_SYSLOG |
25
|
|
|
|
|
|
# include "fallback/syslog.h" |
26
|
|
|
|
|
|
#else |
27
|
|
|
|
|
|
# if defined(I_SYSLOG) || PATCHLEVEL < 6 |
28
|
|
|
|
|
|
# include |
29
|
|
|
|
|
|
# endif |
30
|
|
|
|
|
|
#endif |
31
|
|
|
|
|
|
|
32
|
|
|
|
|
|
static SV *ident_svptr; |
33
|
|
|
|
|
|
|
34
|
|
|
|
|
|
|
35
|
|
|
|
|
|
#ifndef LOG_FAC |
36
|
|
|
|
|
|
#define LOG_FACMASK 0x03f8 |
37
|
|
|
|
|
|
#define LOG_FAC(p) (((p) & LOG_FACMASK) >> 3) |
38
|
|
|
|
|
|
#endif |
39
|
|
|
|
|
|
|
40
|
|
|
|
|
|
#ifndef LOG_PRIMASK |
41
|
|
|
|
|
|
#define LOG_PRIMASK 0x07 |
42
|
|
|
|
|
|
#endif |
43
|
|
|
|
|
|
|
44
|
|
|
|
|
|
#ifndef LOG_PRI |
45
|
|
|
|
|
|
#define LOG_PRI(p) ((p) & LOG_PRIMASK) |
46
|
|
|
|
|
|
#endif |
47
|
|
|
|
|
|
|
48
|
|
|
|
|
|
#ifndef LOG_MAKEPRI |
49
|
|
|
|
|
|
#define LOG_MAKEPRI(fac, pri) (((fac) << 3) | (pri)) |
50
|
|
|
|
|
|
#endif |
51
|
|
|
|
|
|
|
52
|
|
|
|
|
|
#ifndef LOG_MASK |
53
|
|
|
|
|
|
#define LOG_MASK(pri) (1 << (pri)) |
54
|
|
|
|
|
|
#endif |
55
|
|
|
|
|
|
|
56
|
|
|
|
|
|
#ifndef LOG_UPTO |
57
|
|
|
|
|
|
#define LOG_UPTO(pri) ((1 << ((pri)+1)) - 1) |
58
|
|
|
|
|
|
#endif |
59
|
|
|
|
|
|
|
60
|
|
|
|
|
|
#include "const-c.inc" |
61
|
|
|
|
|
|
|
62
|
|
|
|
|
|
|
63
|
|
|
|
|
|
MODULE = Sys::Syslog PACKAGE = Sys::Syslog |
64
|
|
|
|
|
|
|
65
|
|
|
|
|
|
INCLUDE: const-xs.inc |
66
|
|
|
|
|
|
|
67
|
|
|
|
|
|
int |
68
|
|
|
|
|
|
LOG_FAC(p) |
69
|
|
|
|
|
|
INPUT: |
70
|
|
|
|
|
|
int p |
71
|
|
|
|
|
|
|
72
|
|
|
|
|
|
int |
73
|
|
|
|
|
|
LOG_PRI(p) |
74
|
|
|
|
|
|
INPUT: |
75
|
|
|
|
|
|
int p |
76
|
|
|
|
|
|
|
77
|
|
|
|
|
|
int |
78
|
|
|
|
|
|
LOG_MAKEPRI(fac,pri) |
79
|
|
|
|
|
|
INPUT: |
80
|
|
|
|
|
|
int fac |
81
|
|
|
|
|
|
int pri |
82
|
|
|
|
|
|
|
83
|
|
|
|
|
|
int |
84
|
|
|
|
|
|
LOG_MASK(pri) |
85
|
|
|
|
|
|
INPUT: |
86
|
|
|
|
|
|
int pri |
87
|
|
|
|
|
|
|
88
|
|
|
|
|
|
int |
89
|
|
|
|
|
|
LOG_UPTO(pri) |
90
|
|
|
|
|
|
INPUT: |
91
|
|
|
|
|
|
int pri |
92
|
|
|
|
|
|
|
93
|
|
|
|
|
|
#ifdef HAVE_SYSLOG |
94
|
|
|
|
|
|
|
95
|
|
|
|
|
|
void |
96
|
|
|
|
|
|
openlog_xs(ident, option, facility) |
97
|
|
|
|
|
|
INPUT: |
98
|
|
|
|
|
|
SV* ident |
99
|
|
|
|
|
|
int option |
100
|
|
|
|
|
|
int facility |
101
|
|
|
|
|
|
PREINIT: |
102
|
|
|
|
|
|
STRLEN len; |
103
|
|
|
|
|
|
char* ident_pv; |
104
|
|
|
|
|
|
CODE: |
105
|
0
|
|
|
|
|
ident_svptr = newSVsv(ident); |
106
|
0
|
|
|
|
|
ident_pv = SvPV(ident_svptr, len); |
107
|
0
|
|
|
|
|
openlog(ident_pv, option, facility); |
108
|
|
|
|
|
|
|
109
|
|
|
|
|
|
void |
110
|
|
|
|
|
|
syslog_xs(priority, message) |
111
|
|
|
|
|
|
INPUT: |
112
|
|
|
|
|
|
int priority |
113
|
|
|
|
|
|
const char * message |
114
|
|
|
|
|
|
CODE: |
115
|
|
|
|
|
|
syslog(priority, "%s", message); |
116
|
|
|
|
|
|
|
117
|
|
|
|
|
|
int |
118
|
|
|
|
|
|
setlogmask_xs(mask) |
119
|
|
|
|
|
|
INPUT: |
120
|
|
|
|
|
|
int mask |
121
|
|
|
|
|
|
CODE: |
122
|
0
|
|
|
|
|
RETVAL = setlogmask(mask); |
123
|
|
|
|
|
|
OUTPUT: |
124
|
|
|
|
|
|
RETVAL |
125
|
|
|
|
|
|
|
126
|
|
|
|
|
|
void |
127
|
|
|
|
|
|
closelog_xs() |
128
|
|
|
|
|
|
PREINIT: |
129
|
|
|
|
|
|
U32 refcnt; |
130
|
|
|
|
|
|
CODE: |
131
|
0
|
|
|
|
|
if (!ident_svptr) |
132
|
|
|
|
|
|
return; |
133
|
0
|
|
|
|
|
closelog(); |
134
|
0
|
|
|
|
|
refcnt = SvREFCNT(ident_svptr); |
135
|
0
|
|
|
|
|
if (refcnt) { |
136
|
0
|
|
|
|
|
SvREFCNT_dec(ident_svptr); |
137
|
0
|
|
|
|
|
if (refcnt == 1) |
138
|
0
|
|
|
|
|
ident_svptr = NULL; |
139
|
|
|
|
|
|
} |
140
|
|
|
|
|
|
|
141
|
|
|
|
|
|
#else /* HAVE_SYSLOG */ |
142
|
|
|
|
|
|
|
143
|
|
|
|
|
|
void |
144
|
|
|
|
|
|
openlog_xs(ident, option, facility) |
145
|
|
|
|
|
|
INPUT: |
146
|
|
|
|
|
|
SV* ident |
147
|
|
|
|
|
|
int option |
148
|
|
|
|
|
|
int facility |
149
|
|
|
|
|
|
CODE: |
150
|
|
|
|
|
|
|
151
|
|
|
|
|
|
void |
152
|
|
|
|
|
|
syslog_xs(priority, message) |
153
|
|
|
|
|
|
INPUT: |
154
|
|
|
|
|
|
int priority |
155
|
|
|
|
|
|
const char * message |
156
|
|
|
|
|
|
CODE: |
157
|
|
|
|
|
|
|
158
|
|
|
|
|
|
int |
159
|
|
|
|
|
|
setlogmask_xs(mask) |
160
|
|
|
|
|
|
INPUT: |
161
|
|
|
|
|
|
int mask |
162
|
|
|
|
|
|
CODE: |
163
|
|
|
|
|
|
|
164
|
|
|
|
|
|
void |
165
|
|
|
|
|
|
closelog_xs() |
166
|
|
|
|
|
|
CODE: |
167
|
|
|
|
|
|
|
168
|
|
|
|
|
|
#endif /* HAVE_SYSLOG */ |