mirror of
https://codeberg.org/dnkl/foot.git
synced 2026-02-05 04:06:08 -05:00
Merge branch 'syslog' into master
This commit is contained in:
commit
f952d5a305
1 changed files with 6 additions and 25 deletions
31
log.c
31
log.c
|
|
@ -97,33 +97,14 @@ _sys_log(enum log_class log_class, const char *module,
|
|||
|
||||
assert(level != -1);
|
||||
|
||||
const char *sys_err = sys_errno != 0 ? strerror(sys_errno) : NULL;
|
||||
char msg[4096];
|
||||
int n = vsnprintf(msg, sizeof(msg), fmt, va);
|
||||
assert(n >= 0);
|
||||
|
||||
va_list va2;
|
||||
va_copy(va2, va);
|
||||
if (sys_errno != 0 && (size_t)n < sizeof(msg))
|
||||
snprintf(msg + n, sizeof(msg) - n, ": %s", strerror(sys_errno));
|
||||
|
||||
/* Calculate required size of buffer holding the entire log message */
|
||||
int required_len = 0;
|
||||
required_len += strlen(module) + 2; /* "%s: " */
|
||||
required_len += vsnprintf(NULL, 0, fmt, va2); va_end(va2);
|
||||
|
||||
if (sys_errno != 0)
|
||||
required_len += strlen(sys_err) + 2; /* ": %s" */
|
||||
|
||||
/* Format the msg */
|
||||
char *msg = malloc(required_len + 1);
|
||||
int idx = 0;
|
||||
|
||||
idx += snprintf(&msg[idx], required_len + 1 - idx, "%s: ", module);
|
||||
idx += vsnprintf(&msg[idx], required_len + 1 - idx, fmt, va);
|
||||
|
||||
if (sys_errno != 0) {
|
||||
snprintf(
|
||||
&msg[idx], required_len + 1 - idx, ": %s", strerror(sys_errno));
|
||||
}
|
||||
|
||||
syslog(level, "%s", msg);
|
||||
free(msg);
|
||||
syslog(level, "%s: %s", module, msg);
|
||||
}
|
||||
|
||||
void
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue