mirror of
				https://github.com/bgp/bgpq4.git
				synced 2024-05-11 05:55:05 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			98 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			98 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
#if HAVE_CONFIG_H
 | 
						|
#include <config.h>
 | 
						|
#endif
 | 
						|
 | 
						|
#include <errno.h>
 | 
						|
#include <inttypes.h>
 | 
						|
#include <stdarg.h>
 | 
						|
#include <stdio.h>
 | 
						|
#include <stdlib.h>
 | 
						|
#include <string.h>
 | 
						|
#include <strings.h>
 | 
						|
#include <syslog.h>
 | 
						|
 | 
						|
#include "sx_report.h"
 | 
						|
 | 
						|
static int reportStderr=1;
 | 
						|
 | 
						|
static char const* 
 | 
						|
sx_report_name(sx_report_t t)
 | 
						|
{ 
 | 
						|
	switch(t) { 
 | 
						|
		case SX_MISFEATURE: return "MISSING FEATURE:";
 | 
						|
		case SX_FATAL: return "FATAL ERROR:";
 | 
						|
		case SX_ERROR: return "ERROR:";
 | 
						|
		case SX_NOTICE: return "Notice:";
 | 
						|
		case SX_DEBUG: return "Debug:";
 | 
						|
	};
 | 
						|
	return "...... HMMMMM.... ERROR... \n";
 | 
						|
};
 | 
						|
 | 
						|
int
 | 
						|
sx_report(sx_report_t t, char* fmt, ...)
 | 
						|
{ 
 | 
						|
	char buffer[65536];
 | 
						|
	va_list ap;
 | 
						|
	va_start(ap,fmt);
 | 
						|
 | 
						|
	vsnprintf(buffer,sizeof(buffer),fmt,ap);
 | 
						|
	va_end(ap);
 | 
						|
 | 
						|
	if(reportStderr) { 
 | 
						|
		fputs(sx_report_name(t),stderr);
 | 
						|
		fputs(buffer,stderr);
 | 
						|
	} else { 
 | 
						|
		switch(t) { 
 | 
						|
			case SX_FATAL: 
 | 
						|
				syslog(LOG_ERR,"FATAL ERROR: %s", buffer);
 | 
						|
				break;
 | 
						|
			case SX_MISFEATURE:
 | 
						|
			case SX_ERROR: 
 | 
						|
				syslog(LOG_ERR,"ERROR: %s", buffer);
 | 
						|
				break;
 | 
						|
			case SX_NOTICE: 
 | 
						|
				syslog(LOG_WARNING,"Notice: %s", buffer);
 | 
						|
				break;
 | 
						|
			case SX_DEBUG: 
 | 
						|
				syslog(LOG_DEBUG,"Debug: %s", buffer);
 | 
						|
				break;
 | 
						|
		};
 | 
						|
	};
 | 
						|
 | 
						|
	if(t==SX_FATAL) exit(-1);
 | 
						|
 | 
						|
	return 0;
 | 
						|
};
 | 
						|
 | 
						|
int 
 | 
						|
sx_debug(char const* const file, char const* const func, int const line, 
 | 
						|
	char* fmt, ...)
 | 
						|
{
 | 
						|
	char buffer[65536];
 | 
						|
	char bline[65536];
 | 
						|
 | 
						|
	va_list ap;
 | 
						|
	va_start(ap,fmt);
 | 
						|
 | 
						|
	vsnprintf(buffer,sizeof(buffer),fmt,ap);
 | 
						|
	va_end(ap);
 | 
						|
 | 
						|
	snprintf(bline,sizeof(bline),"DEBUG: %s:%i %s ", file, line, func);
 | 
						|
	if(reportStderr) { 
 | 
						|
		fputs(bline,stderr);
 | 
						|
		fputs(buffer,stderr);
 | 
						|
	} else { 
 | 
						|
		syslog(LOG_DEBUG,"%s %s", bline, buffer);
 | 
						|
	};
 | 
						|
 | 
						|
	return 0;
 | 
						|
};
 | 
						|
 | 
						|
void
 | 
						|
sx_openlog(char* progname)
 | 
						|
{ 
 | 
						|
	openlog(progname?progname:"<unknown>",LOG_PID,LOG_DAEMON);
 | 
						|
	reportStderr=0;
 | 
						|
};
 | 
						|
 |