少年修仙传客户端基础资源
hch
2024-04-01 d01413b00ef631ac20347716b23818b0b811f65f
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
/**
 * \file
 * POSIX interface to the logger
 *
 * This module contains the POSIX syslog logger routines
 *
 * Author:
 *    Neale Ferguson <neale@sinenomine.net>
 *
 */
#include <config.h>
 
#ifdef HAVE_UNISTD_H
#include <unistd.h>
#endif
 
#if defined(_POSIX_VERSION) 
 
#include <stdlib.h>
#include <stdio.h>
#include <ctype.h>
#include <string.h>
#include <glib.h>
#include <syslog.h>
#include <stdarg.h>
#include <errno.h>
#include <time.h>
#include <sys/time.h>
#include "mono-logger-internals.h"
 
static void *logUserData = NULL;
 
/**
 * mapSyslogLevel:
 *     
 *     @level - GLogLevelFlags value
 *     @returns The equivalent syslog priority value
 */
static __inline__ int
mapSyslogLevel(GLogLevelFlags level) 
{
    if (level & G_LOG_LEVEL_ERROR)
        return (LOG_ERR);
    if (level & G_LOG_LEVEL_CRITICAL)
        return (LOG_CRIT);
    if (level & G_LOG_LEVEL_WARNING)
        return (LOG_WARNING);
    if (level & G_LOG_LEVEL_MESSAGE)
        return (LOG_NOTICE);
    if (level & G_LOG_LEVEL_INFO)
        return (LOG_INFO);
    if (level & G_LOG_LEVEL_DEBUG)
        return (LOG_DEBUG);
    return (LOG_INFO);
}
 
/**
 * mono_log_open_syslog:
 * \param ident Identifier: ignored
 * \param userData Not used
 * Open the syslog interface specifying that we want our PID recorded 
 * and that we're using the \c LOG_USER facility.
 */
void
mono_log_open_syslog(const char *ident, void *userData)
{
    openlog("mono", LOG_PID, LOG_USER);
    logUserData = userData;
}
 
/**
 * mono_log_write_syslog:
 * \param domain Identifier string
 * \param level Logging level flags
 * \param format \c printf format string
 * \param vargs Variable argument list
 * Write data to the log file.
 */
void
mono_log_write_syslog(const char *domain, GLogLevelFlags level, mono_bool hdr, const char *message)
{
    syslog (mapSyslogLevel(level), "%s", message);
 
    if (level & G_LOG_LEVEL_ERROR)
        abort();
}
 
/**
 * mono_log_close_syslog:
 * Close the log file
 */
void
mono_log_close_syslog()
{
    closelog();
}
#endif