⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 msyslog.c

📁 网络时间协议NTP 源码 版本v4.2.0b 该源码用于linux平台下
💻 C
字号:
/* * msyslog - either send a message to the terminal or print it on *	     the standard output. * * Converted to use varargs, much better ... jks */#ifdef HAVE_CONFIG_H# include <config.h>#endif#ifdef HAVE_SYS_TYPES_H# include <sys/types.h>#endif#ifdef HAVE_UNISTD_H# include <unistd.h>#endif#include <stdio.h>#include "ntp_types.h"#include "ntp_string.h"#include "ntp_syslog.h"#include "ntp_stdlib.h"#ifdef SYS_WINNT# include <stdarg.h># include "..\ports\winnt\libntp\messages.h"#endifint syslogit = 1;FILE *syslog_file = NULL;u_long ntp_syslogmask =  ~ (u_long) 0;#ifdef SYS_WINNTstatic char separator = '\\';#elsestatic char separator = '/';#endif /* SYS_WINNT */extern	char *progname;/* Declare the local functions */void	addto_syslog	P((int, char *));void	format_errmsg   P((char *, int, const char *, int));/* * This routine adds the contents of a buffer to the log */voidaddto_syslog(int level, char * buf){	char *prog;	FILE *out_file = syslog_file;#if !defined(VMS) && !defined (SYS_VXWORKS)	if (syslogit)	    syslog(level, "%s", buf);	else#endif /* VMS  && SYS_VXWORKS*/	{		out_file = syslog_file ? syslog_file: level <= LOG_ERR ? stderr : stdout;		/* syslog() provides the timestamp, so if we're not using		   syslog, we must provide it. */		prog = strrchr(progname, separator);		if (prog == NULL)		    prog = progname;		else		    prog++;		(void) fprintf(out_file, "%s ", humanlogtime ());		(void) fprintf(out_file, "%s[%d]: %s", prog, (int)getpid(), buf);		fflush (out_file);	}#if DEBUG	if (debug && out_file != stdout && out_file != stderr)		printf("addto_syslog: %s\n", buf);#endif}voidformat_errmsg(char *nfmt, int lennfmt, const char *fmt, int errval){	register char c;	register char *n;	register const char *f;	char *err;	n = nfmt;	f = fmt;	while ((c = *f++) != '\0' && n < (nfmt+lennfmt - 2)) {		if (c != '%') {			*n++ = c;			continue;		}		if ((c = *f++) != 'm') {			*n++ = '%';			*n++ = c;			continue;		}		err = 0;		err = strerror(errval);		/* Make sure we have enough space for the error message */		if ((n + strlen(err)) < (nfmt + lennfmt -2)) {			strcpy(n, err);			n += strlen(err);		}	}#if !defined(VMS)	if (!syslogit)#endif /* VMS */	    *n++ = '\n';	*n = '\0';}/* * The externally called functions are defined here * but share the internal function above to fetch * any error message strings, This is done so that we can * have two different functions to perform the logging * since Windows gets it's error information from different * places depending on whether or not it's network I/O. * msyslog() is for general use while netsyslog() is for * network I/O functions. They are virtually identical * in implementation. */#if defined(__STDC__) || defined(HAVE_STDARG_H)void msyslog(int level, const char *fmt, ...)#else /* defined(__STDC__) || defined(HAVE_STDARG_H) */     /*VARARGS*/     void msyslog(va_alist)     va_dcl#endif /* defined(__STDC__) || defined(HAVE_STDARG_H) */{#if defined(__STDC__) || defined(HAVE_STDARG_H)#else	int level;	const char *fmt;#endif	va_list ap;	char buf[1025], nfmt[256];	/*	 * Save the error value as soon as possible	 */#ifdef SYS_WINNT	int errval = GetLastError();#else	int errval = errno;#endif#if defined(__STDC__) || defined(HAVE_STDARG_H)	va_start(ap, fmt);#else	va_start(ap);	level = va_arg(ap, int);	fmt = va_arg(ap, char *);#endif	format_errmsg(nfmt, sizeof(nfmt), fmt, errval);	vsnprintf(buf, sizeof(buf), nfmt, ap);	addto_syslog(level, buf);	va_end(ap);}#if defined(__STDC__) || defined(HAVE_STDARG_H)void netsyslog(int level, const char *fmt, ...)#else /* defined(__STDC__) || defined(HAVE_STDARG_H) */     /*VARARGS*/     void netsyslog(va_alist)     va_dcl#endif /* defined(__STDC__) || defined(HAVE_STDARG_H) */{#if defined(__STDC__) || defined(HAVE_STDARG_H)#else	int level;	const char *fmt;#endif	va_list ap;	char buf[1025], nfmt[256];	/*	 * Save the error value as soon as possible	 */#ifdef SYS_WINNT	int errval = WSAGetLastError();#else	int errval = errno;#endif#if defined(__STDC__) || defined(HAVE_STDARG_H)	va_start(ap, fmt);#else	va_start(ap);	level = va_arg(ap, int);	fmt = va_arg(ap, char *);#endif	format_errmsg(nfmt, sizeof(nfmt), fmt, errval);	vsnprintf(buf, sizeof(buf), nfmt, ap);	addto_syslog(level, buf);	va_end(ap);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -