File Coverage

cpan/Sys-Syslog/Syslog.xs
Criterion Covered Total %
statement 0 11 0.0
branch n/a
condition n/a
subroutine n/a
total 0 11 0.0


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 */