LCOV - code coverage report
Current view: top level - ipc/chromium/src/third_party/libevent - log.c (source / functions) Hit Total Coverage
Test: output.info Lines: 0 85 0.0 %
Date: 2017-07-14 16:53:18 Functions: 0 14 0.0 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : /*      $OpenBSD: err.c,v 1.2 2002/06/25 15:50:15 mickey Exp $  */
       2             : 
       3             : /*
       4             :  * log.c
       5             :  *
       6             :  * Based on err.c, which was adapted from OpenBSD libc *err* *warn* code.
       7             :  *
       8             :  * Copyright (c) 2005-2012 Niels Provos and Nick Mathewson
       9             :  *
      10             :  * Copyright (c) 2000 Dug Song <dugsong@monkey.org>
      11             :  *
      12             :  * Copyright (c) 1993
      13             :  *      The Regents of the University of California.  All rights reserved.
      14             :  *
      15             :  * Redistribution and use in source and binary forms, with or without
      16             :  * modification, are permitted provided that the following conditions
      17             :  * are met:
      18             :  * 1. Redistributions of source code must retain the above copyright
      19             :  *    notice, this list of conditions and the following disclaimer.
      20             :  * 2. Redistributions in binary form must reproduce the above copyright
      21             :  *    notice, this list of conditions and the following disclaimer in the
      22             :  *    documentation and/or other materials provided with the distribution.
      23             :  * 3. Neither the name of the University nor the names of its contributors
      24             :  *    may be used to endorse or promote products derived from this software
      25             :  *    without specific prior written permission.
      26             :  *
      27             :  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
      28             :  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
      29             :  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
      30             :  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
      31             :  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
      32             :  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
      33             :  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
      34             :  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
      35             :  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
      36             :  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
      37             :  * SUCH DAMAGE.
      38             :  */
      39             : 
      40             : #include "event2/event-config.h"
      41             : #include "evconfig-private.h"
      42             : 
      43             : #ifdef _WIN32
      44             : #include <winsock2.h>
      45             : #define WIN32_LEAN_AND_MEAN
      46             : #include <windows.h>
      47             : #undef WIN32_LEAN_AND_MEAN
      48             : #endif
      49             : #include <sys/types.h>
      50             : #include <stdio.h>
      51             : #include <stdlib.h>
      52             : #include <stdarg.h>
      53             : #include <string.h>
      54             : #include <errno.h>
      55             : #include "event2/event.h"
      56             : #include "event2/util.h"
      57             : 
      58             : #include "log-internal.h"
      59             : 
      60             : static void event_log(int severity, const char *msg);
      61             : static void event_exit(int errcode) EV_NORETURN;
      62             : 
      63             : static event_fatal_cb fatal_fn = NULL;
      64             : 
      65             : #ifdef EVENT_DEBUG_LOGGING_ENABLED
      66             : #ifdef USE_DEBUG
      67             : #define DEFAULT_MASK EVENT_DBG_ALL
      68             : #else
      69             : #define DEFAULT_MASK 0
      70             : #endif
      71             : 
      72             : #ifdef USE_GLOBAL_FOR_DEBUG_LOGGING
      73             : ev_uint32_t event_debug_logging_mask_ = DEFAULT_MASK;
      74             : #else
      75             : static ev_uint32_t event_debug_logging_mask_ = DEFAULT_MASK;
      76             : ev_uint32_t
      77             : event_debug_get_logging_mask_(void)
      78             : {
      79             :         return event_debug_logging_mask_;
      80             : }
      81             : #endif
      82             : #endif /* EVENT_DEBUG_LOGGING_ENABLED */
      83             : 
      84             : void
      85           0 : event_enable_debug_logging(ev_uint32_t which)
      86             : {
      87             : #ifdef EVENT_DEBUG_LOGGING_ENABLED
      88           0 :         event_debug_logging_mask_ = which;
      89             : #endif
      90           0 : }
      91             : 
      92             : void
      93           0 : event_set_fatal_callback(event_fatal_cb cb)
      94             : {
      95           0 :         fatal_fn = cb;
      96           0 : }
      97             : 
      98             : static void
      99           0 : event_exit(int errcode)
     100             : {
     101           0 :         if (fatal_fn) {
     102           0 :                 fatal_fn(errcode);
     103           0 :                 exit(errcode); /* should never be reached */
     104           0 :         } else if (errcode == EVENT_ERR_ABORT_)
     105           0 :                 abort();
     106             :         else
     107           0 :                 exit(errcode);
     108             : }
     109             : 
     110             : void
     111           0 : event_err(int eval, const char *fmt, ...)
     112             : {
     113             :         va_list ap;
     114             : 
     115           0 :         va_start(ap, fmt);
     116           0 :         event_logv_(EVENT_LOG_ERR, strerror(errno), fmt, ap);
     117           0 :         va_end(ap);
     118           0 :         event_exit(eval);
     119             : }
     120             : 
     121             : void
     122           0 : event_warn(const char *fmt, ...)
     123             : {
     124             :         va_list ap;
     125             : 
     126           0 :         va_start(ap, fmt);
     127           0 :         event_logv_(EVENT_LOG_WARN, strerror(errno), fmt, ap);
     128           0 :         va_end(ap);
     129           0 : }
     130             : 
     131             : void
     132           0 : event_sock_err(int eval, evutil_socket_t sock, const char *fmt, ...)
     133             : {
     134             :         va_list ap;
     135           0 :         int err = evutil_socket_geterror(sock);
     136             : 
     137           0 :         va_start(ap, fmt);
     138           0 :         event_logv_(EVENT_LOG_ERR, evutil_socket_error_to_string(err), fmt, ap);
     139           0 :         va_end(ap);
     140           0 :         event_exit(eval);
     141             : }
     142             : 
     143             : void
     144           0 : event_sock_warn(evutil_socket_t sock, const char *fmt, ...)
     145             : {
     146             :         va_list ap;
     147           0 :         int err = evutil_socket_geterror(sock);
     148             : 
     149           0 :         va_start(ap, fmt);
     150           0 :         event_logv_(EVENT_LOG_WARN, evutil_socket_error_to_string(err), fmt, ap);
     151           0 :         va_end(ap);
     152           0 : }
     153             : 
     154             : void
     155           0 : event_errx(int eval, const char *fmt, ...)
     156             : {
     157             :         va_list ap;
     158             : 
     159           0 :         va_start(ap, fmt);
     160           0 :         event_logv_(EVENT_LOG_ERR, NULL, fmt, ap);
     161           0 :         va_end(ap);
     162           0 :         event_exit(eval);
     163             : }
     164             : 
     165             : void
     166           0 : event_warnx(const char *fmt, ...)
     167             : {
     168             :         va_list ap;
     169             : 
     170           0 :         va_start(ap, fmt);
     171           0 :         event_logv_(EVENT_LOG_WARN, NULL, fmt, ap);
     172           0 :         va_end(ap);
     173           0 : }
     174             : 
     175             : void
     176           0 : event_msgx(const char *fmt, ...)
     177             : {
     178             :         va_list ap;
     179             : 
     180           0 :         va_start(ap, fmt);
     181           0 :         event_logv_(EVENT_LOG_MSG, NULL, fmt, ap);
     182           0 :         va_end(ap);
     183           0 : }
     184             : 
     185             : void
     186           0 : event_debugx_(const char *fmt, ...)
     187             : {
     188             :         va_list ap;
     189             : 
     190           0 :         va_start(ap, fmt);
     191           0 :         event_logv_(EVENT_LOG_DEBUG, NULL, fmt, ap);
     192           0 :         va_end(ap);
     193           0 : }
     194             : 
     195             : void
     196           0 : event_logv_(int severity, const char *errstr, const char *fmt, va_list ap)
     197             : {
     198             :         char buf[1024];
     199             :         size_t len;
     200             : 
     201           0 :         if (severity == EVENT_LOG_DEBUG && !event_debug_get_logging_mask_())
     202           0 :                 return;
     203             : 
     204           0 :         if (fmt != NULL)
     205           0 :                 evutil_vsnprintf(buf, sizeof(buf), fmt, ap);
     206             :         else
     207           0 :                 buf[0] = '\0';
     208             : 
     209           0 :         if (errstr) {
     210           0 :                 len = strlen(buf);
     211           0 :                 if (len < sizeof(buf) - 3) {
     212           0 :                         evutil_snprintf(buf + len, sizeof(buf) - len, ": %s", errstr);
     213             :                 }
     214             :         }
     215             : 
     216           0 :         event_log(severity, buf);
     217             : }
     218             : 
     219             : static event_log_cb log_fn = NULL;
     220             : 
     221             : void
     222           0 : event_set_log_callback(event_log_cb cb)
     223             : {
     224           0 :         log_fn = cb;
     225           0 : }
     226             : 
     227             : static void
     228           0 : event_log(int severity, const char *msg)
     229             : {
     230           0 :         if (log_fn)
     231           0 :                 log_fn(severity, msg);
     232             :         else {
     233             :                 const char *severity_str;
     234           0 :                 switch (severity) {
     235             :                 case EVENT_LOG_DEBUG:
     236           0 :                         severity_str = "debug";
     237           0 :                         break;
     238             :                 case EVENT_LOG_MSG:
     239           0 :                         severity_str = "msg";
     240           0 :                         break;
     241             :                 case EVENT_LOG_WARN:
     242           0 :                         severity_str = "warn";
     243           0 :                         break;
     244             :                 case EVENT_LOG_ERR:
     245           0 :                         severity_str = "err";
     246           0 :                         break;
     247             :                 default:
     248           0 :                         severity_str = "???";
     249           0 :                         break;
     250             :                 }
     251           0 :                 (void)fprintf(stderr, "[%s] %s\n", severity_str, msg);
     252             :         }
     253           0 : }

Generated by: LCOV version 1.13