diff options
Diffstat (limited to 'libbb')
-rw-r--r-- | libbb/info_msg.c | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/libbb/info_msg.c b/libbb/info_msg.c index ffef05e54..8b8a1fcca 100644 --- a/libbb/info_msg.c +++ b/libbb/info_msg.c | |||
@@ -12,6 +12,7 @@ | |||
12 | 12 | ||
13 | void FAST_FUNC bb_info_msg(const char *s, ...) | 13 | void FAST_FUNC bb_info_msg(const char *s, ...) |
14 | { | 14 | { |
15 | #ifdef THIS_ONE_DOESNT_DO_SINGLE_WRITE | ||
15 | va_list p; | 16 | va_list p; |
16 | /* va_copy is used because it is not portable | 17 | /* va_copy is used because it is not portable |
17 | * to use va_list p twice */ | 18 | * to use va_list p twice */ |
@@ -27,4 +28,29 @@ void FAST_FUNC bb_info_msg(const char *s, ...) | |||
27 | vsyslog(LOG_INFO, s, p2); | 28 | vsyslog(LOG_INFO, s, p2); |
28 | va_end(p2); | 29 | va_end(p2); |
29 | va_end(p); | 30 | 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 | if (used < 0) | ||
42 | return; | ||
43 | |||
44 | if (ENABLE_FEATURE_SYSLOG && (logmode & LOGMODE_SYSLOG)) | ||
45 | syslog(LOG_INFO, "%s", msg); | ||
46 | if (logmode & LOGMODE_STDIO) { | ||
47 | fflush(stdout); | ||
48 | /* used = strlen(msg); - must be true already */ | ||
49 | msg[used++] = '\n'; | ||
50 | full_write(STDOUT_FILENO, msg, used); | ||
51 | } | ||
52 | |||
53 | free(msg); | ||
54 | va_end(p); | ||
55 | #endif | ||
30 | } | 56 | } |