summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAnatol Pomozov <anatol.pomozov@gmail.com>2020-03-06 00:09:14 +0100
committerAllan McRae <allan@archlinux.org>2020-03-06 00:28:13 +0100
commite578903b60081bb8a7ddd094ed67946d5e48b719 (patch)
treeee281dfe477f4f01ef037c197e2b67547d1876a8
parentaff69f43b1bd9cf602dd5bf2c0b6d1bbe5e336f2 (diff)
downloadpacman-e578903b60081bb8a7ddd094ed67946d5e48b719.tar.gz
pacman-e578903b60081bb8a7ddd094ed67946d5e48b719.tar.xz
Move flushing 'output' list into separate function
'output' is a list of messages that pacman received but delayed printing to avoid messing with UI. Such functionality is useful for the upcoming multi-line progress bar UI. Let's move it to a separate function. Signed-off-by: Anatol Pomozov <anatol.pomozov@gmail.com> Signed-off-by: Allan McRae <allan@archlinux.org>
-rw-r--r--src/pacman/callback.c18
1 files changed, 11 insertions, 7 deletions
diff --git a/src/pacman/callback.c b/src/pacman/callback.c
index 548e2df2..8fb89b39 100644
--- a/src/pacman/callback.c
+++ b/src/pacman/callback.c
@@ -160,6 +160,16 @@ static void fill_progress(const int bar_percent, const int disp_percent,
fflush(stdout);
}
+static void flush_output_list(void) {
+ alpm_list_t *i = NULL;
+ fflush(stdout);
+ for(i = output; i; i = i->next) {
+ fputs((const char *)i->data, stderr);
+ }
+ fflush(stderr);
+ FREELIST(output);
+}
+
static int number_length(size_t n)
{
int digits = 1;
@@ -610,14 +620,8 @@ void cb_progress(alpm_progress_t event, const char *pkgname, int percent,
fill_progress(percent, percent, cols - infolen);
if(percent == 100) {
- alpm_list_t *i = NULL;
+ flush_output_list();
on_progress = 0;
- fflush(stdout);
- for(i = output; i; i = i->next) {
- fputs((const char *)i->data, stderr);
- }
- fflush(stderr);
- FREELIST(output);
} else {
on_progress = 1;
}