Data::Dumper doesn't need ppport.h in core
[p5sagit/p5-mst-13.2.git] / ext / Sys / Syslog / Syslog.xs
1 #include "EXTERN.h"
2 #include "perl.h"
3 #include "XSUB.h"
4 #include "ppport.h"
5
6 #ifdef I_SYSLOG
7 #include <syslog.h>
8 #endif
9
10 static SV *ident_svptr;
11
12 #include "const-c.inc"
13
14 MODULE = Sys::Syslog            PACKAGE = Sys::Syslog           
15
16 INCLUDE: const-xs.inc
17
18 int
19 LOG_FAC(p)
20     INPUT:
21         int             p
22     CODE:
23 #ifdef LOG_FAC
24         RETVAL = LOG_FAC(p);
25 #else
26         croak("Your vendor has not defined the Sys::Syslog macro LOG_FAC");
27         RETVAL = -1;
28 #endif
29     OUTPUT:
30         RETVAL
31
32 int
33 LOG_PRI(p)
34     INPUT:
35         int             p
36     CODE:
37 #ifdef LOG_PRI
38         RETVAL = LOG_PRI(p);
39 #else
40         croak("Your vendor has not defined the Sys::Syslog macro LOG_PRI");
41         RETVAL = -1;
42 #endif
43     OUTPUT:
44         RETVAL
45
46 int
47 LOG_MAKEPRI(fac,pri)
48     INPUT:
49         int             fac
50         int             pri
51     CODE:
52 #ifdef LOG_MAKEPRI
53         RETVAL = LOG_MAKEPRI(fac,pri);
54 #else
55         croak("Your vendor has not defined the Sys::Syslog macro LOG_MAKEPRI");
56         RETVAL = -1;
57 #endif
58     OUTPUT:
59         RETVAL
60
61 int
62 LOG_MASK(pri)
63     INPUT:
64         int             pri
65     CODE:
66 #ifdef LOG_MASK
67         RETVAL = LOG_MASK(pri);
68 #else
69         croak("Your vendor has not defined the Sys::Syslog macro LOG_MASK");
70         RETVAL = -1;
71 #endif
72     OUTPUT:
73         RETVAL
74
75 int
76 LOG_UPTO(pri)
77     INPUT:
78         int             pri
79     CODE:
80 #ifdef LOG_UPTO
81         RETVAL = LOG_UPTO(pri);
82 #else
83         croak("Your vendor has not defined the Sys::Syslog macro LOG_UPTO");
84         RETVAL = -1;
85 #endif
86     OUTPUT:
87         RETVAL
88
89
90 void
91 openlog_xs(ident, option, facility)
92     INPUT:
93         SV*   ident
94         int   option
95         int   facility
96     PREINIT:
97         STRLEN len;
98         char*  ident_pv;
99     CODE:
100         ident_svptr = newSVsv(ident);
101         ident_pv    = SvPV(ident_svptr, len);
102         openlog(ident_pv, option, facility);
103
104 void
105 syslog_xs(priority, message)
106     INPUT:
107         int   priority
108         const char * message
109     CODE:
110         syslog(priority, "%s", message);
111
112 int
113 setlogmask_xs(mask)
114     INPUT:
115         int mask
116     CODE:
117         setlogmask(mask);
118
119 void
120 closelog_xs()
121     CODE:
122         closelog();
123         if (SvREFCNT(ident_svptr))
124             SvREFCNT_dec(ident_svptr);
125