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>