Annotation of embedaddon/php/ext/standard/syslog.c, revision 1.1.1.2

1.1       misho       1: /*
                      2:    +----------------------------------------------------------------------+
                      3:    | PHP Version 5                                                        |
                      4:    +----------------------------------------------------------------------+
                      5:    | Copyright (c) 1997-2012 The PHP Group                                |
                      6:    +----------------------------------------------------------------------+
                      7:    | This source file is subject to version 3.01 of the PHP license,      |
                      8:    | that is bundled with this package in the file LICENSE, and is        |
                      9:    | available through the world-wide-web at the following url:           |
                     10:    | http://www.php.net/license/3_01.txt                                  |
                     11:    | If you did not receive a copy of the PHP license and are unable to   |
                     12:    | obtain it through the world-wide-web, please send a note to          |
                     13:    | license@php.net so we can mail you a copy immediately.               |
                     14:    +----------------------------------------------------------------------+
                     15:    | Author: Stig Sæther Bakken <ssb@php.net>                             |
                     16:    +----------------------------------------------------------------------+
                     17:  */
                     18: 
1.1.1.2 ! misho      19: /* $Id$ */
1.1       misho      20: 
                     21: #include "php.h"
                     22: 
                     23: #ifdef HAVE_SYSLOG_H
                     24: #include "php_ini.h"
                     25: #include "zend_globals.h"
                     26: 
                     27: #include <stdlib.h>
                     28: #if HAVE_UNISTD_H
                     29: #include <unistd.h>
                     30: #endif
                     31: 
                     32: #include <string.h>
                     33: #include <errno.h>
                     34: 
                     35: #include <stdio.h>
                     36: #include "basic_functions.h"
                     37: #include "php_ext_syslog.h"
                     38: 
                     39: /* {{{ PHP_MINIT_FUNCTION
                     40:  */
                     41: PHP_MINIT_FUNCTION(syslog)
                     42: {
                     43:        /* error levels */
                     44:        REGISTER_LONG_CONSTANT("LOG_EMERG", LOG_EMERG, CONST_CS | CONST_PERSISTENT); /* system unusable */
                     45:        REGISTER_LONG_CONSTANT("LOG_ALERT", LOG_ALERT, CONST_CS | CONST_PERSISTENT); /* immediate action required */
                     46:        REGISTER_LONG_CONSTANT("LOG_CRIT", LOG_CRIT, CONST_CS | CONST_PERSISTENT); /* critical conditions */
                     47:        REGISTER_LONG_CONSTANT("LOG_ERR", LOG_ERR, CONST_CS | CONST_PERSISTENT); 
                     48:        REGISTER_LONG_CONSTANT("LOG_WARNING", LOG_WARNING, CONST_CS | CONST_PERSISTENT);
                     49:        REGISTER_LONG_CONSTANT("LOG_NOTICE", LOG_NOTICE, CONST_CS | CONST_PERSISTENT);
                     50:        REGISTER_LONG_CONSTANT("LOG_INFO", LOG_INFO, CONST_CS | CONST_PERSISTENT);
                     51:        REGISTER_LONG_CONSTANT("LOG_DEBUG", LOG_DEBUG, CONST_CS | CONST_PERSISTENT);
                     52:        /* facility: type of program logging the message */
                     53:        REGISTER_LONG_CONSTANT("LOG_KERN", LOG_KERN, CONST_CS | CONST_PERSISTENT);
                     54:        REGISTER_LONG_CONSTANT("LOG_USER", LOG_USER, CONST_CS | CONST_PERSISTENT); /* generic user level */
                     55:        REGISTER_LONG_CONSTANT("LOG_MAIL", LOG_MAIL, CONST_CS | CONST_PERSISTENT); /* log to email */
                     56:        REGISTER_LONG_CONSTANT("LOG_DAEMON", LOG_DAEMON, CONST_CS | CONST_PERSISTENT); /* other system daemons */
                     57:        REGISTER_LONG_CONSTANT("LOG_AUTH", LOG_AUTH, CONST_CS | CONST_PERSISTENT);
                     58:        REGISTER_LONG_CONSTANT("LOG_SYSLOG", LOG_SYSLOG, CONST_CS | CONST_PERSISTENT);
                     59:        REGISTER_LONG_CONSTANT("LOG_LPR", LOG_LPR, CONST_CS | CONST_PERSISTENT);
                     60: #ifdef LOG_NEWS
                     61:        /* No LOG_NEWS on HP-UX */
                     62:        REGISTER_LONG_CONSTANT("LOG_NEWS", LOG_NEWS, CONST_CS | CONST_PERSISTENT); /* usenet new */
                     63: #endif
                     64: #ifdef LOG_UUCP
                     65:        /* No LOG_UUCP on HP-UX */
                     66:        REGISTER_LONG_CONSTANT("LOG_UUCP", LOG_UUCP, CONST_CS | CONST_PERSISTENT);
                     67: #endif
                     68: #ifdef LOG_CRON
                     69:        /* apparently some systems don't have this one */
                     70:        REGISTER_LONG_CONSTANT("LOG_CRON", LOG_CRON, CONST_CS | CONST_PERSISTENT);
                     71: #endif
                     72: #ifdef LOG_AUTHPRIV
                     73:        /* AIX doesn't have LOG_AUTHPRIV */
                     74:        REGISTER_LONG_CONSTANT("LOG_AUTHPRIV", LOG_AUTHPRIV, CONST_CS | CONST_PERSISTENT);
                     75: #endif
                     76: #ifndef PHP_WIN32
                     77:        REGISTER_LONG_CONSTANT("LOG_LOCAL0", LOG_LOCAL0, CONST_CS | CONST_PERSISTENT);
                     78:        REGISTER_LONG_CONSTANT("LOG_LOCAL1", LOG_LOCAL1, CONST_CS | CONST_PERSISTENT);
                     79:        REGISTER_LONG_CONSTANT("LOG_LOCAL2", LOG_LOCAL2, CONST_CS | CONST_PERSISTENT);
                     80:        REGISTER_LONG_CONSTANT("LOG_LOCAL3", LOG_LOCAL3, CONST_CS | CONST_PERSISTENT);
                     81:        REGISTER_LONG_CONSTANT("LOG_LOCAL4", LOG_LOCAL4, CONST_CS | CONST_PERSISTENT);
                     82:        REGISTER_LONG_CONSTANT("LOG_LOCAL5", LOG_LOCAL5, CONST_CS | CONST_PERSISTENT);
                     83:        REGISTER_LONG_CONSTANT("LOG_LOCAL6", LOG_LOCAL6, CONST_CS | CONST_PERSISTENT);
                     84:        REGISTER_LONG_CONSTANT("LOG_LOCAL7", LOG_LOCAL7, CONST_CS | CONST_PERSISTENT);
                     85: #endif
                     86:        /* options */
                     87:        REGISTER_LONG_CONSTANT("LOG_PID", LOG_PID, CONST_CS | CONST_PERSISTENT);
                     88:        REGISTER_LONG_CONSTANT("LOG_CONS", LOG_CONS, CONST_CS | CONST_PERSISTENT);
                     89:        REGISTER_LONG_CONSTANT("LOG_ODELAY", LOG_ODELAY, CONST_CS | CONST_PERSISTENT);
                     90:        REGISTER_LONG_CONSTANT("LOG_NDELAY", LOG_NDELAY, CONST_CS | CONST_PERSISTENT);
                     91: #ifdef LOG_NOWAIT
                     92:        REGISTER_LONG_CONSTANT("LOG_NOWAIT", LOG_NOWAIT, CONST_CS | CONST_PERSISTENT);
                     93: #endif
                     94: #ifdef LOG_PERROR
                     95:        /* AIX doesn't have LOG_PERROR */
                     96:        REGISTER_LONG_CONSTANT("LOG_PERROR", LOG_PERROR, CONST_CS | CONST_PERSISTENT); /*log to stderr*/
                     97: #endif
                     98:        BG(syslog_device)=NULL;
                     99: 
                    100:        return SUCCESS;
                    101: }
                    102: /* }}} */
                    103: 
                    104: PHP_RINIT_FUNCTION(syslog)
                    105: {
                    106:        BG(syslog_device) = NULL;
                    107:        return SUCCESS;
                    108: }
                    109: 
                    110: 
                    111: #ifdef PHP_WIN32
                    112: PHP_RSHUTDOWN_FUNCTION(syslog)
                    113: {
                    114:        closelog();
                    115:        return SUCCESS;
                    116: }
                    117: #endif
                    118: 
                    119: PHP_MSHUTDOWN_FUNCTION(syslog)
                    120: {
                    121:        if (BG(syslog_device)) {
                    122:                free(BG(syslog_device));
                    123:                BG(syslog_device) = NULL;
                    124:        }
                    125:        return SUCCESS;
                    126: }
                    127: 
                    128: /* {{{ proto bool openlog(string ident, int option, int facility)
                    129:    Open connection to system logger */
                    130: /*
                    131:    ** OpenLog("nettopp", $LOG_PID, $LOG_LOCAL1);
                    132:    ** Syslog($LOG_EMERG, "help me!")
                    133:    ** CloseLog();
                    134:  */
                    135: PHP_FUNCTION(openlog)
                    136: {
                    137:        char *ident;
                    138:        long option, facility;
                    139:        int ident_len;
                    140: 
                    141:        if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "sll", &ident,
                    142:                                                          &ident_len, &option, &facility) == FAILURE) {
                    143:                return;
                    144:        }
                    145:        if (BG(syslog_device)) {
                    146:                free(BG(syslog_device));
                    147:        }
                    148:        BG(syslog_device) = zend_strndup(ident, ident_len);
1.1.1.2 ! misho     149:        if(BG(syslog_device) == NULL) {
        !           150:                RETURN_FALSE;
        !           151:        }
1.1       misho     152:        openlog(BG(syslog_device), option, facility);
                    153:        RETURN_TRUE;
                    154: }
                    155: /* }}} */
                    156: 
                    157: /* {{{ proto bool closelog(void)
                    158:    Close connection to system logger */
                    159: PHP_FUNCTION(closelog)
                    160: {
                    161:        if (zend_parse_parameters_none() == FAILURE) {
                    162:                return;
                    163:        }
                    164: 
                    165:        closelog();
                    166:        if (BG(syslog_device)) {
                    167:                free(BG(syslog_device));
                    168:                BG(syslog_device)=NULL;
                    169:        }
                    170:        RETURN_TRUE;
                    171: }
                    172: /* }}} */
                    173: 
                    174: /* {{{ proto bool syslog(int priority, string message)
                    175:    Generate a system log message */
                    176: PHP_FUNCTION(syslog)
                    177: {
                    178:        long priority;
                    179:        char *message;
                    180:        int message_len;
                    181: 
                    182:        if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ls", &priority,
                    183:                                                          &message, &message_len) == FAILURE) {
                    184:                return;
                    185:        }
                    186: 
                    187:        php_syslog(priority, "%s", message);
                    188:        RETURN_TRUE;
                    189: }
                    190: /* }}} */
                    191: 
                    192: #endif
                    193: 
                    194: /*
                    195:  * Local variables:
                    196:  * tab-width: 4
                    197:  * c-basic-offset: 4
                    198:  * End:
                    199:  * vim600: sw=4 ts=4 fdm=marker
                    200:  * vim<600: sw=4 ts=4
                    201:  */

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>