Annotation of embedaddon/lrzsz/src/lsyslog.c, revision 1.1.1.1
1.1 misho 1: /*
2: lsyslog.c - wrapper for the syslog function
3: Copyright (C) 1997 Uwe Ohse
4:
5: This program is free software; you can redistribute it and/or modify
6: it under the terms of the GNU General Public License as published by
7: the Free Software Foundation; either version 2, or (at your option)
8: any later version.
9:
10: This program is distributed in the hope that it will be useful,
11: but WITHOUT ANY WARRANTY; without even the implied warranty of
12: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13: GNU General Public License for more details.
14:
15: You should have received a copy of the GNU General Public License
16: along with this program; if not, write to the Free Software
17: Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
18: 02111-1307, USA.
19:
20: */
21: #include "config.h"
22: #ifdef ENABLE_SYSLOG
23: #include "zglobal.h"
24: #include <pwd.h>
25: #include <stdlib.h>
26: #include <string.h>
27: #endif
28:
29: #if __STDC__
30: # include <stdarg.h>
31: # define VA_START(args, lastarg) va_start(args, lastarg)
32: # define WAYTOGO
33: #else
34: # include <varargs.h>
35: # define VA_START(args, lastarg) va_start(args)
36: #endif
37:
38: void
39: #ifdef WAYTOGO
40: lsyslog(int prio, const char *format, ...)
41: #else
42: lsyslog(prio,format,va_alist)
43: int prio;
44: const char *format;
45: va_dcl
46: #endif
47: {
48: #ifdef ENABLE_SYSLOG
49: static char *username=NULL;
50: static char uid_string[20]=""; /* i'd really hate this function to fail! */
51: char *s=NULL;
52: static int init_done=0;
53: va_list ap;
54: if (!enable_syslog)
55: return;
56: if (!init_done) {
57: uid_t uid;
58: struct passwd *pwd;
59: init_done=1;
60: uid=getuid();
61: pwd=getpwuid(uid);
62: if (pwd && pwd->pw_name && *pwd->pw_name) {
63: username=strdup(pwd->pw_name);
64: }
65: if (!username) {
66: username=uid_string;
67: sprintf(uid_string,"#%lu",(unsigned long) uid);
68: }
69: }
70:
71: VA_START(ap, format);
72: vasprintf(&s,format, ap);
73: va_end(ap);
74: syslog(prio,"[%s] %s",username,s);
75: free(s);
76: #else
77: (void) prio; /* get rid of warning */
78: (void) format; /* get rid of warning */
79: #endif
80: }
81:
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>