Annotation of embedaddon/php/win32/wsyslog.c, revision 1.1
1.1 ! misho 1: /*
! 2: * This file modified from sources for imap4 for use
! 3: * in PHP 3
! 4: */
! 5: /*
! 6: * Program: Unix compatibility routines
! 7: *
! 8: * Author: Mark Crispin
! 9: * Networks and Distributed Computing
! 10: * Computing & Communications
! 11: * University of Washington
! 12: * Administration Building, AG-44
! 13: * Seattle, WA 98195
! 14: * Internet: MRC@CAC.Washington.EDU
! 15: *
! 16: * Date: 14 September 1996
! 17: * Last Edited: 22 October 1996
! 18: *
! 19: * Copyright 1996 by the University of Washington
! 20: *
! 21: * Permission to use, copy, modify, and distribute this software and its
! 22: * documentation for any purpose and without fee is hereby granted, provided
! 23: * that the above copyright notice appears in all copies and that both the
! 24: * above copyright notice and this permission notice appear in supporting
! 25: * documentation, and that the name of the University of Washington not be
! 26: * used in advertising or publicity pertaining to distribution of the software
! 27: * without specific, written prior permission. This software is made available
! 28: * "as is", and
! 29: * THE UNIVERSITY OF WASHINGTON DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED,
! 30: * WITH REGARD TO THIS SOFTWARE, INCLUDING WITHOUT LIMITATION ALL IMPLIED
! 31: * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, AND IN
! 32: * NO EVENT SHALL THE UNIVERSITY OF WASHINGTON BE LIABLE FOR ANY SPECIAL,
! 33: * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
! 34: * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, TORT
! 35: * (INCLUDING NEGLIGENCE) OR STRICT LIABILITY, ARISING OUT OF OR IN CONNECTION
! 36: * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
! 37: *
! 38: */
! 39:
! 40:
! 41: /* DEDICATION
! 42:
! 43: * This file is dedicated to my dog, Unix, also known as Yun-chan and
! 44: * Unix J. Terwilliker Jehosophat Aloysius Monstrosity Animal Beast. Unix
! 45: * passed away at the age of 11 1/2 on September 14, 1996, 12:18 PM PDT, after
! 46: * a two-month bout with cirrhosis of the liver.
! 47: *
! 48: * He was a dear friend, and I miss him terribly.
! 49: *
! 50: * Lift a leg, Yunie. Luv ya forever!!!!
! 51: */
! 52:
! 53: #include "php.h" /*php specific */
! 54: #include "syslog.h"
! 55: #include <stdio.h>
! 56: #include <fcntl.h>
! 57: #include <process.h>
! 58:
! 59: #include "php_win32_globals.h"
! 60: #include "wsyslog.h"
! 61:
! 62: void closelog(void)
! 63: {
! 64: TSRMLS_FETCH();
! 65: if (PW32G(log_source)) {
! 66: DeregisterEventSource(PW32G(log_source));
! 67: PW32G(log_source) = NULL;
! 68: }
! 69: if (PW32G(log_header)) {
! 70: STR_FREE(PW32G(log_header));
! 71: PW32G(log_header) = NULL;
! 72: }
! 73: }
! 74:
! 75: /* Emulator for BSD syslog() routine
! 76: * Accepts: priority
! 77: * message
! 78: * parameters
! 79: */
! 80:
! 81: void syslog(int priority, const char *message, ...)
! 82: {
! 83: va_list args;
! 84: LPTSTR strs[2];
! 85: unsigned short etype;
! 86: char *tmp = NULL;
! 87: DWORD evid;
! 88: TSRMLS_FETCH();
! 89:
! 90: /* default event source */
! 91: if (!PW32G(log_source))
! 92: openlog("php", LOG_PID, LOG_SYSLOG);
! 93:
! 94: switch (priority) { /* translate UNIX type into NT type */
! 95: case LOG_ALERT:
! 96: etype = EVENTLOG_ERROR_TYPE;
! 97: evid = PHP_SYSLOG_ERROR_TYPE;
! 98: break;
! 99: case LOG_INFO:
! 100: etype = EVENTLOG_INFORMATION_TYPE;
! 101: evid = PHP_SYSLOG_INFO_TYPE;
! 102: break;
! 103: default:
! 104: etype = EVENTLOG_WARNING_TYPE;
! 105: evid = PHP_SYSLOG_WARNING_TYPE;
! 106: }
! 107: va_start(args, message); /* initialize vararg mechanism */
! 108: vspprintf(&tmp, 0, message, args); /* build message */
! 109: strs[0] = PW32G(log_header); /* write header */
! 110: strs[1] = tmp; /* then the message */
! 111: /* report the event */
! 112: ReportEvent(PW32G(log_source), etype, (unsigned short) priority, evid, NULL, 2, 0, strs, NULL);
! 113: va_end(args);
! 114: efree(tmp);
! 115: }
! 116:
! 117:
! 118: /* Emulator for BSD openlog() routine
! 119: * Accepts: identity
! 120: * options
! 121: * facility
! 122: */
! 123:
! 124: void openlog(const char *ident, int logopt, int facility)
! 125: {
! 126: TSRMLS_FETCH();
! 127:
! 128: if (PW32G(log_source)) {
! 129: closelog();
! 130: }
! 131:
! 132: STR_FREE(PW32G(log_header));
! 133:
! 134: PW32G(log_source) = RegisterEventSource(NULL, "PHP-" PHP_VERSION);
! 135: spprintf(&PW32G(log_header), 0, (logopt & LOG_PID) ? "%s[%d]" : "%s", ident, getpid());
! 136: }
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>