root/win32/wsyslog.c

/* [<][>][^][v][top][bottom][index][help] */

DEFINITIONS

This source file includes following definitions.
  1. closelog
  2. syslog
  3. openlog

   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         if (INVALID_HANDLE_VALUE != PW32G(log_source)) {
  65                 DeregisterEventSource(PW32G(log_source));
  66                 PW32G(log_source) = INVALID_HANDLE_VALUE;
  67         }
  68         if (PW32G(log_header)) {
  69                 efree(PW32G(log_header));
  70                 PW32G(log_header) = NULL;
  71         }
  72 }
  73 
  74 /* Emulator for BSD syslog() routine
  75  * Accepts: priority
  76  *      message
  77  *      parameters
  78  */
  79 
  80 void syslog(int priority, const char *message, ...)
  81 {
  82         va_list args;
  83         LPTSTR strs[2];
  84         unsigned short etype;
  85         char *tmp = NULL;
  86         DWORD evid;
  87 
  88         /* default event source */
  89         if (INVALID_HANDLE_VALUE == PW32G(log_source))
  90                 openlog("php", LOG_PID, LOG_SYSLOG);
  91 
  92         switch (priority) {                     /* translate UNIX type into NT type */
  93                 case LOG_ALERT:
  94                         etype = EVENTLOG_ERROR_TYPE;
  95                         evid = PHP_SYSLOG_ERROR_TYPE;
  96                         break;
  97                 case LOG_INFO:
  98                         etype = EVENTLOG_INFORMATION_TYPE;
  99                         evid = PHP_SYSLOG_INFO_TYPE;
 100                         break;
 101                 default:
 102                         etype = EVENTLOG_WARNING_TYPE;
 103                         evid = PHP_SYSLOG_WARNING_TYPE;
 104         }
 105         va_start(args, message);        /* initialize vararg mechanism */
 106         vspprintf(&tmp, 0, message, args);      /* build message */
 107         strs[0] = PW32G(log_header);    /* write header */
 108         strs[1] = tmp;                          /* then the message */
 109         /* report the event */
 110         ReportEvent(PW32G(log_source), etype, (unsigned short) priority, evid, NULL, 2, 0, strs, NULL);
 111         va_end(args);
 112         efree(tmp);
 113 }
 114 
 115 
 116 /* Emulator for BSD openlog() routine
 117  * Accepts: identity
 118  *      options
 119  *      facility
 120  */
 121 
 122 void openlog(const char *ident, int logopt, int facility)
 123 {
 124 
 125         closelog();
 126 
 127         PW32G(log_source) = RegisterEventSource(NULL, "PHP-" PHP_VERSION);
 128         spprintf(&PW32G(log_header), 0, (logopt & LOG_PID) ? "%s[%d]" : "%s", ident, getpid());
 129 }
 130 
 131 /*
 132  * Local variables:
 133  * tab-width: 4
 134  * c-basic-offset: 4
 135  * End:
 136  * vim600: sw=4 ts=4 fdm=marker
 137  * vim<600: sw=4 ts=4
 138  */

/* [<][>][^][v][top][bottom][index][help] */