12 |
|
|
13 |
void FAST_FUNC bb_info_msg(const char *s, ...) |
void FAST_FUNC bb_info_msg(const char *s, ...) |
14 |
{ |
{ |
15 |
|
#ifdef THIS_ONE_DOESNT_DO_SINGLE_WRITE |
16 |
va_list p; |
va_list p; |
17 |
/* va_copy is used because it is not portable |
/* va_copy is used because it is not portable |
18 |
* to use va_list p twice */ |
* to use va_list p twice */ |
28 |
vsyslog(LOG_INFO, s, p2); |
vsyslog(LOG_INFO, s, p2); |
29 |
va_end(p2); |
va_end(p2); |
30 |
va_end(p); |
va_end(p); |
31 |
|
#else |
32 |
|
int used; |
33 |
|
char *msg; |
34 |
|
va_list p; |
35 |
|
|
36 |
|
if (logmode == 0) |
37 |
|
return; |
38 |
|
|
39 |
|
va_start(p, s); |
40 |
|
used = vasprintf(&msg, s, p); |
41 |
|
va_end(p); |
42 |
|
if (used < 0) |
43 |
|
return; |
44 |
|
|
45 |
|
if (ENABLE_FEATURE_SYSLOG && (logmode & LOGMODE_SYSLOG)) |
46 |
|
syslog(LOG_INFO, "%s", msg); |
47 |
|
if (logmode & LOGMODE_STDIO) { |
48 |
|
fflush_all(); |
49 |
|
/* used = strlen(msg); - must be true already */ |
50 |
|
msg[used++] = '\n'; |
51 |
|
full_write(STDOUT_FILENO, msg, used); |
52 |
|
} |
53 |
|
|
54 |
|
free(msg); |
55 |
|
#endif |
56 |
} |
} |