first and last commit
This commit is contained in:
commit
c9e78fd810
381 changed files with 37141 additions and 0 deletions
118
log.h
Normal file
118
log.h
Normal file
|
@ -0,0 +1,118 @@
|
|||
|
||||
void log_sys(const char *msg, int length, int offset);
|
||||
|
||||
ulong tmr_rtime();
|
||||
|
||||
void log_out(const char *str) {
|
||||
char c;
|
||||
int pos = 0;
|
||||
int last = 0;
|
||||
uint color;
|
||||
// fprintf(stderr, CON_DGRAY"["CON_GREEN"%s"CON_DGRAY"]["CON_LGRAY"%s"CON_DGRAY"][%s%s"CON_DGRAY"] %s",
|
||||
// tm, prefix, log_concolor[level], log_levels[level], log_concolor[level]);
|
||||
while(c = str[pos]) {
|
||||
if(((c >= CHR_COLORS1) && (c <= CHR_COLORE1)) || ((c >= CHR_COLORS2) && (c <= CHR_COLORE2))) {
|
||||
if(pos - last)
|
||||
fwrite(&str[last], 1, pos - last, stderr);
|
||||
color = (c >= CHR_COLORS2) && (c <= CHR_COLORE2) ? gdr.aux_colors[c - CHR_COLORS2] : text_colors[c - CHR_COLORS1];
|
||||
fprintf(stderr, "\x1b[38;2;%d;%d;%dm", (color >> 16) & 0xff, (color >> 8) & 0xff, color & 0xff);
|
||||
last = ++pos;
|
||||
continue;
|
||||
}
|
||||
else if(c == CHR_CRESET) {
|
||||
if(pos - last)
|
||||
fwrite(&str[last], 1, pos - last, stderr);
|
||||
fprintf(stderr, "\x1b[0m");
|
||||
last = ++pos;
|
||||
continue;
|
||||
}
|
||||
else if(c == CHR_UNK) {
|
||||
if(pos - last)
|
||||
fwrite(&str[last], 1, pos - last, stderr);
|
||||
fprintf(stderr, "?");
|
||||
last = ++pos;
|
||||
continue;
|
||||
}
|
||||
else if(c >= 0 && c < CHR_SPC && c != CHR_NLN) {
|
||||
if(pos - last)
|
||||
fwrite(&str[last], 1, pos - last, stderr);
|
||||
last = ++pos;
|
||||
continue;
|
||||
}
|
||||
pos++;
|
||||
if(!str[pos] && (pos - last))
|
||||
fwrite(&str[last], 1, pos - last, stderr);
|
||||
}
|
||||
fprintf(stderr, "\x1b[0m\n");
|
||||
}
|
||||
|
||||
void log_msg(const char *prefix, byte level, const char *fmt, va_list ap) {
|
||||
char tm[32];
|
||||
int pos = 0;
|
||||
int len;
|
||||
if(level > sys.log_level)
|
||||
return;
|
||||
str_time(tm, tmr_rtime());
|
||||
pos = sprintf(sys.log_buf, COL_DGRAY"["COL_GREEN"%s"COL_DGRAY"]["COL_LGRAY"%s"COL_DGRAY"][%s%s"COL_DGRAY"] %s",
|
||||
tm, prefix, log_colors[level], log_levels[level], log_colors[level]);
|
||||
len = pos + vsnprintf((sys.log_buf)+pos, LOG_BUF-pos, fmt, ap);
|
||||
log_sys(sys.log_buf, len, pos - 1);
|
||||
log_out(sys.log_buf);
|
||||
}
|
||||
|
||||
void log_str(const char *prefix, byte level, const char *fmt, ...) {
|
||||
va_list ap;
|
||||
va_start(ap, fmt);
|
||||
log_msg(prefix, level, fmt, ap);
|
||||
va_end(ap);
|
||||
}
|
||||
|
||||
LOG_FUNC(logu, LOG_USER)
|
||||
LOG_FUNC(loge, LOG_ERROR)
|
||||
LOG_FUNC(logw, LOG_WARN)
|
||||
LOG_FUNC(logi, LOG_INFO)
|
||||
LOG_FUNC(logp, LOG_PERF)
|
||||
LOG_FUNC(logd, LOG_DEBUG)
|
||||
LOG_FUNC(logt, LOG_TRACE)
|
||||
|
||||
void snd_log(byte level, const char *fmt, va_list ap) {
|
||||
while(sgt.log_queue == SND_LOG) {
|
||||
;
|
||||
}
|
||||
pthread_mutex_lock(&sgt.log_lock);
|
||||
char *msg = &sgt.logs[sgt.log_push * SND_LOG_LEN];
|
||||
msg[0] = (char)level;
|
||||
vsnprintf(&msg[1], SND_LOG_LEN - 1, fmt, ap);
|
||||
if(++(sgt.log_push) == SND_LOG)
|
||||
sgt.log_push = 0;
|
||||
sgt.log_queue += 1;
|
||||
pthread_mutex_unlock(&sgt.log_lock);
|
||||
}
|
||||
|
||||
SLOG_FUNC(snd_logu, LOG_USER)
|
||||
SLOG_FUNC(snd_loge, LOG_ERROR)
|
||||
SLOG_FUNC(snd_logw, LOG_WARN)
|
||||
SLOG_FUNC(snd_logi, LOG_INFO)
|
||||
SLOG_FUNC(snd_logp, LOG_PERF)
|
||||
SLOG_FUNC(snd_logd, LOG_DEBUG)
|
||||
SLOG_FUNC(snd_logt, LOG_TRACE)
|
||||
SLOG_FUNC(snd_logx, SND_LOGX)
|
||||
|
||||
void plr_tlog(int type, const char *text);
|
||||
|
||||
void snd_log_flush() {
|
||||
if(sgt.disabled)
|
||||
return;
|
||||
pthread_mutex_lock(&sgt.log_lock);
|
||||
while(sgt.log_queue) {
|
||||
char *msg = &sgt.logs[sgt.log_pop * SND_LOG_LEN];
|
||||
if(msg[0] == SND_LOGX)
|
||||
plr_tlog(msg[1] - '0', &msg[2]);
|
||||
else
|
||||
log_str(LOG_SND, msg[0], "%s", &msg[1]);
|
||||
if(++(sgt.log_pop) == SND_LOG)
|
||||
sgt.log_pop = 0;
|
||||
sgt.log_queue -= 1;
|
||||
}
|
||||
pthread_mutex_unlock(&sgt.log_lock);
|
||||
}
|
Reference in a new issue