1 /* 2 * CDDL HEADER START 3 * 4 * The contents of this file are subject to the terms of the 5 * Common Development and Distribution License (the "License"). 6 * You may not use this file except in compliance with the License. 7 * 8 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 9 * or http://www.opensolaris.org/os/licensing. 10 * See the License for the specific language governing permissions 11 * and limitations under the License. 12 * 13 * When distributing Covered Code, include this CDDL HEADER in each 14 * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 15 * If applicable, add the following below this CDDL HEADER, with the 16 * fields enclosed by brackets "[]" replaced with your own identifying 17 * information: Portions Copyright [yyyy] [name of copyright owner] 18 * 19 * CDDL HEADER END 20 */ 21 /* 22 * Copyright 2008 Sun Microsystems, Inc. All rights reserved. 23 * Use is subject to license terms. 24 */ 25 26 #include <stdio.h> 27 #include <sys/varargs.h> 28 #include <syslog.h> 29 #include <time.h> 30 #include <string.h> 31 #include <errno.h> 32 33 #define MAX_LOG_LEN 2048 34 35 36 void 37 log(int priority, const char *routine, char *msg, ...) 38 { 39 char header[MAX_LOG_LEN+1]; 40 char message[MAX_LOG_LEN+1]; 41 int oldErrno = 0; 42 va_list ap; 43 44 45 oldErrno = errno; 46 47 (void) memset(&header, 0, MAX_LOG_LEN+1); 48 (void) memset(&message, 0, MAX_LOG_LEN+1); 49 50 (void) va_start(ap, msg); 51 52 (void) snprintf(header, MAX_LOG_LEN, "%s: %s: %s", 53 "MP-API (SUN) Plugin", 54 routine, 55 msg); 56 57 /* LINTED E_SEC_PRINTF_VAR_FMT */ 58 (void) vsnprintf(message, MAX_LOG_LEN, header, ap); 59 /* LINTED E_SEC_PRINTF_VAR_FMT */ 60 (void) syslog(LOG_USER|LOG_DEBUG, message); 61 62 (void) va_end(ap); 63 64 errno = oldErrno; 65 66 oldErrno = priority; 67 } 68