diff options
Diffstat (limited to 'main/apk-tools/0002-print-use-stdout-instead-of-stderr-for-logging-and-p.patch')
-rw-r--r-- | main/apk-tools/0002-print-use-stdout-instead-of-stderr-for-logging-and-p.patch | 77 |
1 files changed, 77 insertions, 0 deletions
diff --git a/main/apk-tools/0002-print-use-stdout-instead-of-stderr-for-logging-and-p.patch b/main/apk-tools/0002-print-use-stdout-instead-of-stderr-for-logging-and-p.patch new file mode 100644 index 0000000000..82d7b13479 --- /dev/null +++ b/main/apk-tools/0002-print-use-stdout-instead-of-stderr-for-logging-and-p.patch @@ -0,0 +1,77 @@ +From 517378721855280d2e23d25d7529e6b9cbae9136 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Timo=20Ter=C3=A4s?= <timo.teras@iki.fi> +Date: Fri, 11 Oct 2013 14:52:34 +0300 +Subject: [PATCH] print: use stdout instead of stderr for logging and progress + +stdout is the proper place for it. this also fixes the progress +bar in musl, which seems to not support using line buffering for +stderr. +--- + src/apk.c | 1 - + src/print.c | 20 ++++++++++---------- + 2 files changed, 10 insertions(+), 11 deletions(-) + +diff --git a/src/apk.c b/src/apk.c +index 8744de6..8a3c7ef 100644 +--- a/src/apk.c ++++ b/src/apk.c +@@ -266,7 +266,6 @@ static void on_sigwinch(int s) + + static void setup_terminal(void) + { +- setvbuf(stderr, NULL, _IOLBF, BUFSIZ); + signal(SIGWINCH, on_sigwinch); + signal(SIGPIPE, SIG_IGN); + } +diff --git a/src/print.c b/src/print.c +index 6d00064..aafe2ef 100644 +--- a/src/print.c ++++ b/src/print.c +@@ -35,7 +35,7 @@ int apk_get_screen_width(void) + + if (apk_screen_width == 0) { + apk_screen_width = 50; +- if (ioctl(STDERR_FILENO, TIOCGWINSZ, &w) == 0 && ++ if (ioctl(STDOUT_FILENO, TIOCGWINSZ, &w) == 0 && + w.ws_col > 50) + apk_screen_width = w.ws_col; + } +@@ -77,14 +77,14 @@ void apk_print_progress(size_t done, size_t total) + last_percent = percent; + apk_progress_force = 0; + +- fprintf(stderr, "\e7%3i%% [", percent); ++ fprintf(stdout, "\e7%3i%% [", percent); + for (i = 0; i < bar; i++) +- fputc('#', stderr); ++ fputc('#', stdout); + for (; i < bar_width; i++) +- fputc(' ', stderr); +- fputc(']', stderr); +- fflush(stderr); +- fputs("\e8\e[0K", stderr); ++ fputc(' ', stdout); ++ fputc(']', stdout); ++ fflush(stdout); ++ fputs("\e8\e[0K", stdout); + } + + int apk_print_indented(struct apk_indent *i, apk_blob_t blob) +@@ -144,11 +144,11 @@ void apk_log(const char *prefix, const char *format, ...) + va_list va; + + if (prefix != NULL) +- fprintf(stderr, "%s", prefix); ++ fprintf(stdout, "%s", prefix); + va_start(va, format); +- vfprintf(stderr, format, va); ++ vfprintf(stdout, format, va); + va_end(va); +- fprintf(stderr, "\n"); ++ fprintf(stdout, "\n"); + apk_progress_force = 1; + } + +-- +1.8.4 + |