File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / lrzsz / src / lsyslog.c
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs - revision graph
Thu Oct 24 15:49:50 2019 UTC (4 years, 11 months ago) by misho
Branches: lrzsz, MAIN
CVS tags: v0_12_20p5, HEAD
lrzsz ver 0.12.20

    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>