[pacman-dev] [PATCH 2/2] Move flushing 'output' list into separate function
Allan McRae
allan at archlinux.org
Thu Mar 5 05:16:32 UTC 2020
On 5/3/20 6:38 am, Anatol Pomozov wrote:
> '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 at gmail.com>
> ---
> src/pacman/callback.c | 19 ++++++++++++-------
> 1 file changed, 12 insertions(+), 7 deletions(-)
>
> diff --git a/src/pacman/callback.c b/src/pacman/callback.c
> index 548e2df2..432fc734 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,9 @@ 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;
> + putchar('\n');
New line return added here. Why is that needed?
> + 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;
> }
>
More information about the pacman-dev
mailing list