New functions ngt_SyslogFacilityName() and ngt_SyslogFacilityID()

These both functions translate syslog facility names to ID numbers
and vice versa. On systems that don't define the facilitynames[] array
in syslog.h, we try to build one ourself.
This commit is contained in:
Alexander Barton 2010-09-24 16:29:55 +02:00
parent e2ba7e08b4
commit 4943bbb066
2 changed files with 100 additions and 2 deletions

View File

@ -1,6 +1,6 @@
/*
* ngIRCd -- The Next Generation IRC Daemon
* Copyright (c)2001-2009 Alexander Barton (alex@barton.de)
* Copyright (c)2001-2010 Alexander Barton (alex@barton.de)
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@ -22,6 +22,11 @@
#include <netinet/in.h>
#ifdef SYSLOG
#define SYSLOG_NAMES 1
#include <syslog.h>
#endif
#include "exp.h"
#include "tool.h"
@ -122,4 +127,92 @@ ngt_TrimLastChr( char *String, const char Chr)
} /* ngt_TrimLastChr */
#ifdef SYSLOG
#ifndef INTERNAL_MARK
#ifndef _code
typedef struct _code {
char *c_name;
int c_val;
} CODE;
#endif
CODE facilitynames[] = {
#ifdef LOG_AUTH
{ "auth", LOG_AUTH },
#endif
#ifdef LOG_AUTHPRIV
{ "authpriv", LOG_AUTHPRIV },
#endif
#ifdef LOG_CRON
{ "cron", LOG_CRON },
#endif
#ifdef LOG_DAEMON
{ "daemon", LOG_DAEMON },
#endif
#ifdef LOG_FTP
{ "ftp", LOG_FTP },
#endif
#ifdef LOG_LPR
{ "lpr", LOG_LPR },
#endif
#ifdef LOG_MAIL
{ "mail", LOG_MAIL },
#endif
#ifdef LOG_NEWS
{ "news", LOG_NEWS },
#endif
#ifdef LOG_UUCP
{ "uucp", LOG_UUCP },
#endif
#ifdef LOG_USER
{ "user", LOG_USER },
#endif
#ifdef LOG_LOCAL7
{ "local0", LOG_LOCAL0 },
{ "local1", LOG_LOCAL1 },
{ "local2", LOG_LOCAL2 },
{ "local3", LOG_LOCAL3 },
{ "local4", LOG_LOCAL4 },
{ "local5", LOG_LOCAL5 },
{ "local6", LOG_LOCAL6 },
{ "local7", LOG_LOCAL7 },
#endif
{ 0, -1 }
};
#endif
GLOBAL char
*ngt_SyslogFacilityName(int Facility)
{
int i = 0;
while(facilitynames[i].c_name) {
if (facilitynames[i].c_val == Facility)
return facilitynames[i].c_name;
i++;
}
return "unknown";
}
GLOBAL int
ngt_SyslogFacilityID(char *Name, int DefaultFacility)
{
int i = 0;
while(facilitynames[i].c_name) {
if (strcasecmp(facilitynames[i].c_name, Name) == 0)
return facilitynames[i].c_val;
i++;
}
return DefaultFacility;
}
#endif
/* -eof- */

View File

@ -1,6 +1,6 @@
/*
* ngIRCd -- The Next Generation IRC Daemon
* Copyright (c)2001-2008 by Alexander Barton (alex@barton.de)
* Copyright (c)2001-2010 Alexander Barton (alex@barton.de)
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@ -29,6 +29,11 @@ GLOBAL void ngt_TrimStr PARAMS((char *String ));
GLOBAL char *ngt_UpperStr PARAMS((char *String ));
GLOBAL char *ngt_LowerStr PARAMS((char *String ));
#ifdef SYSLOG
GLOBAL char *ngt_SyslogFacilityName PARAMS((int Facility));
GLOBAL int ngt_SyslogFacilityID PARAMS((char *Name, int DefaultFacility));
#endif
#endif