Annotation of embedaddon/lrzsz/src/lsyslog.c, revision 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>