File: Syslog.xs

package info (click to toggle)
libunix-syslog-perl 1.1-4
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, forky, sid, trixie
  • size: 116 kB
  • sloc: perl: 188; makefile: 3
file content (262 lines) | stat: -rw-r--r-- 3,928 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
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
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
#ifdef __cplusplus
extern "C" {
#endif
#include "EXTERN.h"
#include "perl.h"
#include "XSUB.h"
#ifdef __cplusplus
}
#endif

#include <syslog.h>

static SV *ident_svptr = NULL;

MODULE = Unix::Syslog	PACKAGE = Unix::Syslog

 # $Id: Syslog.xs,v 1.8 2008/05/18 13:40:47 marcus Exp $
 #
 # Copyright (c) 1999,2000,2001,2002,2007 Marcus Harnisch <marcus.harnisch@gmx.net>
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the Artistic License 2.0 (see file Artistic in
 # this directory).
 # 
 # Check clause (4) for your rights to distribute this software.

PROTOTYPES: DISABLE

 # Log priorities
int
_LOG_PRIORITY()
ALIAS:
	LOG_EMERG   = LOG_EMERG
	LOG_ALERT   = LOG_ALERT
	LOG_CRIT    = LOG_CRIT
	LOG_ERR     = LOG_ERR
	LOG_WARNING = LOG_WARNING
	LOG_NOTICE  = LOG_NOTICE
	LOG_INFO    = LOG_INFO
	LOG_DEBUG   = LOG_DEBUG
CODE:
	RETVAL = ix;
OUTPUT:
	RETVAL

 # Log facilities
int
_LOG_FACILITY()
ALIAS:
	LOG_KERN     = LOG_KERN    
	LOG_USER     = LOG_USER    
	LOG_MAIL     = LOG_MAIL    
	LOG_DAEMON   = LOG_DAEMON  
	LOG_AUTH     = LOG_AUTH    
	LOG_SYSLOG   = LOG_SYSLOG  
	LOG_LPR      = LOG_LPR     
	LOG_NEWS     = LOG_NEWS    
	LOG_UUCP     = LOG_UUCP    
	LOG_CRON     = LOG_CRON    
	LOG_LOCAL0   = LOG_LOCAL0  
	LOG_LOCAL1   = LOG_LOCAL1  
	LOG_LOCAL2   = LOG_LOCAL2  
	LOG_LOCAL3   = LOG_LOCAL3  
	LOG_LOCAL4   = LOG_LOCAL4  
	LOG_LOCAL5   = LOG_LOCAL5  
	LOG_LOCAL6   = LOG_LOCAL6  
	LOG_LOCAL7   = LOG_LOCAL7  
CODE:
	RETVAL = ix;
OUTPUT:
	RETVAL

#if defined(LOG_AUTHPRIV)
int
LOG_AUTHPRIV()
CODE:
	RETVAL = LOG_AUTHPRIV;
OUTPUT:
	RETVAL

#endif

#if defined(LOG_FTP)
int
LOG_FTP()
CODE:
	RETVAL = LOG_FTP;
OUTPUT:
	RETVAL

#endif

 # Arguments to setlogmask
int
LOG_MASK(pri)
	int pri
CODE:
	RETVAL = LOG_MASK(pri);
OUTPUT:
	RETVAL

int
LOG_UPTO(pri)
	int pri
CODE:
	RETVAL = LOG_UPTO(pri);
OUTPUT:
	RETVAL


 # Option flags
int
_LOG_OPTIONS()
ALIAS:
	LOG_PID    = LOG_PID   
	LOG_CONS   = LOG_CONS  
	LOG_ODELAY = LOG_ODELAY
	LOG_NDELAY = LOG_NDELAY
	LOG_NOWAIT = LOG_NOWAIT
CODE:
	RETVAL = ix;
OUTPUT:
	RETVAL

#if defined(LOG_PERROR)
int
LOG_PERROR()
CODE:
	RETVAL = LOG_PERROR;
OUTPUT:
	RETVAL

#endif

#if defined(LOG_PRI)
int
LOG_PRI(pri)
	int pri
CODE:
	RETVAL = LOG_PRI(pri);
OUTPUT:
	RETVAL

#endif

#if defined(LOG_MAKEPRI)
int
LOG_MAKEPRI(fac, pri)
	int fac
	int pri
CODE:
	RETVAL = LOG_MAKEPRI(fac, pri);
OUTPUT:
	RETVAL

#endif

#if defined(LOG_FAC)
int
LOG_FAC(p)
	int p
CODE:
	RETVAL = LOG_FAC(p);
OUTPUT:
	RETVAL

#endif

#ifdef SYSLOG_NAMES
char*
priorityname(p)
	int p
INIT:
	int i;
CODE:
	for (i=0; prioritynames[i].c_val != p && prioritynames[i].c_val != -1; i++) {}
	if (prioritynames[i].c_val == -1)
	  RETVAL="";
	else
	  RETVAL=prioritynames[i].c_name;
OUTPUT:
	RETVAL

char*
facilityname(f)
	int f
INIT:
	int i;
CODE:
	for (i=0; facilitynames[i].c_val != f && facilitynames[i].c_val != -1; i++) {}
	if (facilitynames[i].c_val == -1)
	  RETVAL="";
	else
	  RETVAL=facilitynames[i].c_name;
OUTPUT:
	RETVAL

#else
char*
priorityname(p)
	int p
CODE:
	XSRETURN_UNDEF;

char*
facilityname(f)
	int f
CODE:
	XSRETURN_UNDEF;

#endif

 # Miscellaneous constants
int
LOG_NFACILITIES()
CODE:
	RETVAL = LOG_NFACILITIES;
OUTPUT:
	RETVAL

int
LOG_FACMASK()
CODE:
	RETVAL = LOG_FACMASK;
OUTPUT:
	RETVAL

 # Open connection to system logger
void
openlog(ident, option, facility)
	SV*   ident
	int   option
	int   facility
	PREINIT:
	STRLEN len;
	char*  ident_pv;
CODE:
 	ident_svptr = newSVsv(ident);
	ident_pv    = SvPV(ident_svptr, len);
	openlog(ident_pv, option, facility);

 # Internal function to generate Log message
void
_isyslog(priority, message)
	int   priority
	char *message
CODE:
	syslog(priority, "%s", message);

 # Set log mask
int
setlogmask(mask)
	int mask
	CODE:
	setlogmask(mask);

 # Close connection to system logger
void
closelog()
	CODE:
	closelog();
	if ((ident_svptr != NULL) && SvREFCNT(ident_svptr)) SvREFCNT_dec(ident_svptr);