|
Packit |
972a07 |
/*
|
|
Packit |
972a07 |
* Syslog.xs
|
|
Packit |
972a07 |
*
|
|
Packit |
972a07 |
* XS wrapper for the syslog(3) facility.
|
|
Packit |
972a07 |
*
|
|
Packit |
972a07 |
*/
|
|
Packit |
972a07 |
|
|
Packit |
972a07 |
#if defined(_WIN32)
|
|
Packit |
972a07 |
# include <windows.h>
|
|
Packit |
972a07 |
#endif
|
|
Packit |
972a07 |
|
|
Packit |
972a07 |
#include "EXTERN.h"
|
|
Packit |
972a07 |
#include "perl.h"
|
|
Packit |
972a07 |
#include "XSUB.h"
|
|
Packit |
972a07 |
#ifdef USE_PPPORT_H
|
|
Packit |
972a07 |
# include "ppport.h"
|
|
Packit |
972a07 |
#endif
|
|
Packit |
972a07 |
|
|
Packit |
972a07 |
#ifndef HAVE_SYSLOG
|
|
Packit |
972a07 |
#define HAVE_SYSLOG 1
|
|
Packit |
972a07 |
#endif
|
|
Packit |
972a07 |
|
|
Packit |
972a07 |
#if defined(_WIN32) && !defined(__CYGWIN__)
|
|
Packit |
972a07 |
# undef HAVE_SYSLOG
|
|
Packit |
972a07 |
# include "fallback/syslog.h"
|
|
Packit |
972a07 |
#else
|
|
Packit |
972a07 |
# if defined(I_SYSLOG) || PATCHLEVEL < 6
|
|
Packit |
972a07 |
# include <syslog.h>
|
|
Packit |
972a07 |
# else
|
|
Packit |
972a07 |
# undef HAVE_SYSLOG
|
|
Packit |
972a07 |
# include "fallback/syslog.h"
|
|
Packit |
972a07 |
# endif
|
|
Packit |
972a07 |
#endif
|
|
Packit |
972a07 |
|
|
Packit |
972a07 |
static SV *ident_svptr;
|
|
Packit |
972a07 |
|
|
Packit |
972a07 |
|
|
Packit |
972a07 |
#ifndef LOG_FAC
|
|
Packit |
972a07 |
#define LOG_FACMASK 0x03f8
|
|
Packit |
972a07 |
#define LOG_FAC(p) (((p) & LOG_FACMASK) >> 3)
|
|
Packit |
972a07 |
#endif
|
|
Packit |
972a07 |
|
|
Packit |
972a07 |
#ifndef LOG_PRIMASK
|
|
Packit |
972a07 |
#define LOG_PRIMASK 0x07
|
|
Packit |
972a07 |
#endif
|
|
Packit |
972a07 |
|
|
Packit |
972a07 |
#ifndef LOG_PRI
|
|
Packit |
972a07 |
#define LOG_PRI(p) ((p) & LOG_PRIMASK)
|
|
Packit |
972a07 |
#endif
|
|
Packit |
972a07 |
|
|
Packit |
972a07 |
#ifndef LOG_MAKEPRI
|
|
Packit |
972a07 |
#define LOG_MAKEPRI(fac, pri) (((fac) << 3) | (pri))
|
|
Packit |
972a07 |
#endif
|
|
Packit |
972a07 |
|
|
Packit |
972a07 |
#ifndef LOG_MASK
|
|
Packit |
972a07 |
#define LOG_MASK(pri) (1 << (pri))
|
|
Packit |
972a07 |
#endif
|
|
Packit |
972a07 |
|
|
Packit |
972a07 |
#ifndef LOG_UPTO
|
|
Packit |
972a07 |
#define LOG_UPTO(pri) ((1 << ((pri)+1)) - 1)
|
|
Packit |
972a07 |
#endif
|
|
Packit |
972a07 |
|
|
Packit |
972a07 |
#include "const-c.inc"
|
|
Packit |
972a07 |
|
|
Packit |
972a07 |
|
|
Packit |
972a07 |
MODULE = Sys::Syslog PACKAGE = Sys::Syslog
|
|
Packit |
972a07 |
|
|
Packit |
972a07 |
INCLUDE: const-xs.inc
|
|
Packit |
972a07 |
|
|
Packit |
972a07 |
int
|
|
Packit |
972a07 |
LOG_FAC(p)
|
|
Packit |
972a07 |
INPUT:
|
|
Packit |
972a07 |
int p
|
|
Packit |
972a07 |
|
|
Packit |
972a07 |
int
|
|
Packit |
972a07 |
LOG_PRI(p)
|
|
Packit |
972a07 |
INPUT:
|
|
Packit |
972a07 |
int p
|
|
Packit |
972a07 |
|
|
Packit |
972a07 |
int
|
|
Packit |
972a07 |
LOG_MAKEPRI(fac,pri)
|
|
Packit |
972a07 |
INPUT:
|
|
Packit |
972a07 |
int fac
|
|
Packit |
972a07 |
int pri
|
|
Packit |
972a07 |
|
|
Packit |
972a07 |
int
|
|
Packit |
972a07 |
LOG_MASK(pri)
|
|
Packit |
972a07 |
INPUT:
|
|
Packit |
972a07 |
int pri
|
|
Packit |
972a07 |
|
|
Packit |
972a07 |
int
|
|
Packit |
972a07 |
LOG_UPTO(pri)
|
|
Packit |
972a07 |
INPUT:
|
|
Packit |
972a07 |
int pri
|
|
Packit |
972a07 |
|
|
Packit |
972a07 |
#ifdef HAVE_SYSLOG
|
|
Packit |
972a07 |
|
|
Packit |
972a07 |
void
|
|
Packit |
972a07 |
openlog_xs(ident, option, facility)
|
|
Packit |
972a07 |
INPUT:
|
|
Packit |
972a07 |
SV* ident
|
|
Packit |
972a07 |
int option
|
|
Packit |
972a07 |
int facility
|
|
Packit |
972a07 |
PREINIT:
|
|
Packit |
972a07 |
STRLEN len;
|
|
Packit |
972a07 |
char* ident_pv;
|
|
Packit |
972a07 |
CODE:
|
|
Packit |
972a07 |
ident_svptr = newSVsv(ident);
|
|
Packit |
972a07 |
ident_pv = SvPV(ident_svptr, len);
|
|
Packit |
972a07 |
openlog(ident_pv, option, facility);
|
|
Packit |
972a07 |
|
|
Packit |
972a07 |
void
|
|
Packit |
972a07 |
syslog_xs(priority, message)
|
|
Packit |
972a07 |
INPUT:
|
|
Packit |
972a07 |
int priority
|
|
Packit |
972a07 |
const char * message
|
|
Packit |
972a07 |
CODE:
|
|
Packit |
972a07 |
syslog(priority, "%s", message);
|
|
Packit |
972a07 |
|
|
Packit |
972a07 |
int
|
|
Packit |
972a07 |
setlogmask_xs(mask)
|
|
Packit |
972a07 |
INPUT:
|
|
Packit |
972a07 |
int mask
|
|
Packit |
972a07 |
CODE:
|
|
Packit |
972a07 |
RETVAL = setlogmask(mask);
|
|
Packit |
972a07 |
OUTPUT:
|
|
Packit |
972a07 |
RETVAL
|
|
Packit |
972a07 |
|
|
Packit |
972a07 |
void
|
|
Packit |
972a07 |
closelog_xs()
|
|
Packit |
972a07 |
PREINIT:
|
|
Packit |
972a07 |
U32 refcnt;
|
|
Packit |
972a07 |
CODE:
|
|
Packit |
972a07 |
if (!ident_svptr)
|
|
Packit |
972a07 |
return;
|
|
Packit |
972a07 |
closelog();
|
|
Packit |
972a07 |
refcnt = SvREFCNT(ident_svptr);
|
|
Packit |
972a07 |
if (refcnt) {
|
|
Packit |
972a07 |
SvREFCNT_dec(ident_svptr);
|
|
Packit |
972a07 |
if (refcnt == 1)
|
|
Packit |
972a07 |
ident_svptr = NULL;
|
|
Packit |
972a07 |
}
|
|
Packit |
972a07 |
|
|
Packit |
972a07 |
#else /* HAVE_SYSLOG */
|
|
Packit |
972a07 |
|
|
Packit |
972a07 |
void
|
|
Packit |
972a07 |
openlog_xs(ident, option, facility)
|
|
Packit |
972a07 |
INPUT:
|
|
Packit |
972a07 |
SV* ident
|
|
Packit |
972a07 |
int option
|
|
Packit |
972a07 |
int facility
|
|
Packit |
972a07 |
CODE:
|
|
Packit |
972a07 |
|
|
Packit |
972a07 |
void
|
|
Packit |
972a07 |
syslog_xs(priority, message)
|
|
Packit |
972a07 |
INPUT:
|
|
Packit |
972a07 |
int priority
|
|
Packit |
972a07 |
const char * message
|
|
Packit |
972a07 |
CODE:
|
|
Packit |
972a07 |
|
|
Packit |
972a07 |
int
|
|
Packit |
972a07 |
setlogmask_xs(mask)
|
|
Packit |
972a07 |
INPUT:
|
|
Packit |
972a07 |
int mask
|
|
Packit |
972a07 |
CODE:
|
|
Packit |
972a07 |
|
|
Packit |
972a07 |
void
|
|
Packit |
972a07 |
closelog_xs()
|
|
Packit |
972a07 |
CODE:
|
|
Packit |
972a07 |
|
|
Packit |
972a07 |
#endif /* HAVE_SYSLOG */
|