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         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 }

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