| 8328 | va_end(copy); |
| 8329 | |
| 8330 | pthread_mutex_lock(&server_log_mu); |
| 8331 | fprintf(stderr, "%s ", ts); |
| 8332 | if (n < 0) { |
| 8333 | ds4_log(stderr, type, "%s", fmt); |
| 8334 | } else { |
| 8335 | char *line = xmalloc((size_t)n + 1); |
| 8336 | vsnprintf(line, (size_t)n + 1, fmt, ap); |
| 8337 | ds4_log(stderr, type, "%s", line); |
| 8338 | free(line); |
| 8339 | } |
| 8340 | va_end(ap); |
| 8341 | fputc('\n', stderr); |
| 8342 | pthread_mutex_unlock(&server_log_mu); |
| 8343 | } |
| 8344 | |
| 8345 | typedef struct job job; |