コード例 #1
0
ファイル: lightsd.c プロジェクト: aoighost/lightsd
static void
lgtd_libevent_log(int severity, const char *msg)
{
    switch (severity) {
    case EVENT_LOG_DEBUG:   lgtd_debug("%s", msg); break;
    case EVENT_LOG_MSG:     lgtd_info("%s", msg);  break;
    case EVENT_LOG_WARN:    lgtd_warnx("%s", msg); break;
    case EVENT_LOG_ERR:     lgtd_warnx("%s", msg); break;
    default:                                       break;
    }
}
コード例 #2
0
ファイル: log.c プロジェクト: rivy/lightsd
char *
lgtd_sockaddrtoa(const struct sockaddr *peer, char *buf, int buflen)
{
    assert(peer);
    assert(buf);
    assert(buflen > 1);

    const char *printed = NULL;
    int i = 0;
    switch (peer->sa_family) {
    case AF_INET:
        (void)0;
        const struct sockaddr_in *in_peer = (const struct sockaddr_in *)peer;
        LGTD_SNPRINTF_APPEND(buf, i, buflen, "[::ffff:");
        printed = inet_ntop(AF_INET, &in_peer->sin_addr, &buf[i], buflen - i);
        if (printed) {
            i += strlen(printed);
            LGTD_SNPRINTF_APPEND(
                buf, i, buflen, "]:%hu", ntohs(in_peer->sin_port)
            );
        }
        break;
    case AF_INET6:
        (void)0;
        const struct sockaddr_in6 *in6_peer = (const struct sockaddr_in6 *)peer;
        LGTD_SNPRINTF_APPEND(buf, i, buflen, "[");
        printed = inet_ntop(AF_INET6, &in6_peer->sin6_addr, &buf[i], buflen - i);
        if (printed) {
            i += strlen(printed);
            LGTD_SNPRINTF_APPEND(
                buf, i, buflen, "]:%hu", ntohs(in6_peer->sin6_port)
            );
        }
        break;
    case AF_UNIX:
        (void)0;
        const struct sockaddr_un *un_path = (const struct sockaddr_un *)peer;
        LGTD_SNPRINTF_APPEND(buf, i, buflen, "at %s", un_path->sun_path);
        printed = buf;
        break;
    default:
        break;
    }

    if (!printed) {
        buf[0] = 0;
        lgtd_warnx("not enough space to log an ip address");
#ifndef NDEBUG
        abort();
#endif
    }

    return buf;
}