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
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
|
#include "LuaSL.h"
// "01:03:52 01-01-1973\n\0"
# define DATE_TIME_LEN 21
char dateTime[DATE_TIME_LEN];
static
void _ggg_log_print_cb(const Eina_Log_Domain *d, Eina_Log_Level level, const char *file, const char *fnc, int line, const char *fmt, void *data, va_list args)
{
FILE *f = data;
char dt[DATE_TIME_LEN + 1];
char fileTab[256], funcTab[256];
getDateTime(NULL, dt, NULL);
dt[19] = '\0';
if (12 > strlen(file))
snprintf(fileTab, sizeof(fileTab), "%s\t\t", file);
else
snprintf(fileTab, sizeof(fileTab), "%s\t", file);
snprintf(funcTab, sizeof(funcTab), "\t%s", fnc);
fprintf(f, "%s ", dt);
if (f == stderr)
eina_log_print_cb_stderr(d, level, fileTab, funcTab, line, fmt, data, args);
else if (f == stdout)
eina_log_print_cb_stdout(d, level, fileTab, funcTab, line, fmt, data, args);
fflush(f);
}
void loggingStartup(gameGlobals *game)
{
game->logDom = eina_log_domain_register("LuaSL", NULL);
if (game->logDom < 0)
{
EINA_LOG_CRIT("could not register log domain 'LuaSL'");
}
// TODO - should unregister this later.
eina_log_level_set(EINA_LOG_LEVEL_DBG);
eina_log_domain_level_set("LuaSL", EINA_LOG_LEVEL_DBG);
eina_log_print_cb_set(_ggg_log_print_cb, stderr);
// Shut up the excess debugging shit from EFL.
eina_log_domain_level_set("eo", EINA_LOG_LEVEL_WARN);
eina_log_domain_level_set("eldbus", EINA_LOG_LEVEL_WARN);
eina_log_domain_level_set("eet", EINA_LOG_LEVEL_WARN);
eina_log_domain_level_set("ecore", EINA_LOG_LEVEL_WARN);
eina_log_domain_level_set("ecore_audio", EINA_LOG_LEVEL_WARN);
eina_log_domain_level_set("ecore_con", EINA_LOG_LEVEL_WARN);
eina_log_domain_level_set("ecore_input_evas", EINA_LOG_LEVEL_WARN);
eina_log_domain_level_set("ecore_input_evas", EINA_LOG_LEVEL_WARN);
eina_log_domain_level_set("ecore_system_upower", EINA_LOG_LEVEL_WARN);
}
char *getDateTime(struct tm **nowOut, char *dateOut, time_t *timeOut)
{
struct tm *newTime;
time_t szClock;
char *date = dateTime;
// Get time in seconds
time(&szClock);
// Convert time to struct tm form
newTime = localtime(&szClock);
if (nowOut)
*nowOut = newTime;
if (dateOut)
date = dateOut;
if (timeOut)
*timeOut = szClock;
// format
strftime(date, DATE_TIME_LEN, "%d/%m/%Y %H:%M:%S\r", newTime);
return (dateTime);
}
void sendBack(gameGlobals *game, Ecore_Con_Client *client, const char *SID, const char *message, ...)
{
va_list args;
char buf[PATH_MAX];
int length = strlen(SID);
strncpy(buf, SID, length);
buf[length++] = '.';
va_start(args, message);
length += vsprintf(&buf[length], message, args);
va_end(args);
buf[length++] = '\n';
buf[length++] = '\0';
ecore_con_client_send(client, buf, strlen(buf));
ecore_con_client_flush(client);
}
void sendForth(gameGlobals *game, const char *SID, const char *message, ...)
{
va_list args;
char buf[PATH_MAX];
int length = strlen(SID);
strncpy(buf, SID, length);
buf[length++] = '.';
va_start(args, message);
length += vsprintf(&buf[length], message, args);
va_end(args);
buf[length++] = '\n';
buf[length++] = '\0';
ecore_con_server_send(game->server, buf, strlen(buf));
ecore_con_server_flush(game->server);
}
float timeDiff(struct timeval *now, struct timeval *then)
{
if (0 == gettimeofday(now, 0))
{
struct timeval thisTime = { 0, 0 };
double result = 0.0;
thisTime.tv_sec = now->tv_sec;
thisTime.tv_usec = now->tv_usec;
if (thisTime.tv_usec < then->tv_usec)
{
thisTime.tv_sec--;
thisTime.tv_usec += 1000000;
}
thisTime.tv_usec -= then->tv_usec;
thisTime.tv_sec -= then->tv_sec;
result = ((double) thisTime.tv_usec) / ((double) 1000000.0);
result += thisTime.tv_sec;
return result;
}
else
return 0.0;
}
|