~ubuntu-branches/ubuntu/hardy/php5/hardy-updates

« back to all changes in this revision

Viewing changes to win32/wsyslog.c

  • Committer: Bazaar Package Importer
  • Author(s): Adam Conrad
  • Date: 2005-10-09 03:14:32 UTC
  • Revision ID: james.westby@ubuntu.com-20051009031432-kspik3lobxstafv9
Tags: upstream-5.0.5
ImportĀ upstreamĀ versionĀ 5.0.5

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
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
 
 
61
void closelog(void)
 
62
{
 
63
        TSRMLS_FETCH();
 
64
        DeregisterEventSource(PW32G(log_source));
 
65
        STR_FREE(PW32G(log_header));
 
66
        PW32G(log_header) = NULL;
 
67
}
 
68
 
 
69
/* Emulator for BSD syslog() routine
 
70
 * Accepts: priority
 
71
 *      message
 
72
 *      parameters
 
73
 */
 
74
 
 
75
void syslog(int priority, const char *message, ...)
 
76
{
 
77
        va_list args;
 
78
        LPTSTR strs[2];
 
79
        unsigned short etype;
 
80
        char *tmp = NULL;
 
81
        TSRMLS_FETCH();
 
82
 
 
83
        /* default event source */
 
84
        if (!PW32G(log_source))
 
85
                openlog("php", LOG_PID, LOG_SYSLOG);
 
86
 
 
87
        switch (priority) {                     /* translate UNIX type into NT type */
 
88
                case LOG_ALERT:
 
89
                        etype = EVENTLOG_ERROR_TYPE;
 
90
                        break;
 
91
                case LOG_INFO:
 
92
                        etype = EVENTLOG_INFORMATION_TYPE;
 
93
                        break;
 
94
                default:
 
95
                        etype = EVENTLOG_WARNING_TYPE;
 
96
        }
 
97
        va_start(args, message);        /* initialize vararg mechanism */
 
98
        vspprintf(&tmp, 0, message, args);      /* build message */
 
99
        strs[0] = PW32G(log_header);    /* write header */
 
100
        strs[1] = tmp;                          /* then the message */
 
101
        /* report the event */
 
102
        ReportEvent(PW32G(log_source), etype, (unsigned short) priority, 2000, NULL, 2, 0, strs, NULL);
 
103
        va_end(args);
 
104
        efree(tmp);
 
105
}
 
106
 
 
107
 
 
108
/* Emulator for BSD openlog() routine
 
109
 * Accepts: identity
 
110
 *      options
 
111
 *      facility
 
112
 */
 
113
 
 
114
void openlog(const char *ident, int logopt, int facility)
 
115
{
 
116
        TSRMLS_FETCH();
 
117
 
 
118
        if (PW32G(log_source)) {
 
119
                closelog();
 
120
        }
 
121
 
 
122
        STR_FREE(PW32G(log_header));
 
123
 
 
124
        PW32G(log_source) = RegisterEventSource(NULL, ident);
 
125
        spprintf(&PW32G(log_header), 0, (logopt & LOG_PID) ? "%s[%d]" : "%s", ident, getpid());
 
126
}