[pacman-dev] [PATCH 1/2] Handle printing NULL correctly in table display
Treat this value as the empty string. Signed-off-by: Dan McGee <dan@archlinux.org> --- src/pacman/util.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/pacman/util.c b/src/pacman/util.c index 7be3dc5..a96aa62 100644 --- a/src/pacman/util.c +++ b/src/pacman/util.c @@ -500,6 +500,9 @@ static void table_print_line(const alpm_list_t *line, short col_padding, } value = curcell->data; + if(!value) { + value = ""; + } /* silly printf requires padding size to be an int */ cell_padding = (int)widths[i] - (int)string_length(value); if(cell_padding < 0) { -- 1.7.9.4
Currently, we try to do a bunch of funkyness constraining download size to print only when doing a -S/--sync operation. However, it is possible we try to download packages on a -U/--upgrade operation, and we currently won't show any itemized download sizes. Fix this ommission by always including the download size stuff in the built table rows; this column will be completely omitted anyway if there are no values due to prior work in commit 33bb7dbd35. Signed-off-by: Dan McGee <dan@archlinux.org> --- src/pacman/util.c | 31 +++++++++++++------------------ 1 file changed, 13 insertions(+), 18 deletions(-) diff --git a/src/pacman/util.c b/src/pacman/util.c index a96aa62..8b4f072 100644 --- a/src/pacman/util.c +++ b/src/pacman/util.c @@ -793,7 +793,7 @@ void signature_display(const char *title, alpm_siglist_t *siglist) } /* creates a header row for use with table_display */ -static alpm_list_t *create_verbose_header(int dl_size) +static alpm_list_t *create_verbose_header(void) { alpm_list_t *res = NULL; char *str; @@ -806,16 +806,14 @@ static alpm_list_t *create_verbose_header(int dl_size) res = alpm_list_add(res, str); str = _("Net Change"); res = alpm_list_add(res, str); - if(dl_size) { - str = _("Download Size"); - res = alpm_list_add(res, str); - } + str = _("Download Size"); + res = alpm_list_add(res, str); return res; } /* returns package info as list of strings */ -static alpm_list_t *create_verbose_row(pm_target_t *target, int dl_size) +static alpm_list_t *create_verbose_row(pm_target_t *target) { char *str; off_t size = 0; @@ -852,16 +850,14 @@ static alpm_list_t *create_verbose_row(pm_target_t *target, int dl_size) pm_asprintf(&str, "%.2f %s", human_size, label); ret = alpm_list_add(ret, str); - if(dl_size) { - size = target->install ? alpm_pkg_download_size(target->install) : 0; - human_size = humanize_size(size, 'M', 2, &label); - if(size != 0) { - pm_asprintf(&str, "%.2f %s", human_size, label); - } else { - str = strdup(""); - } - ret = alpm_list_add(ret, str); + size = target->install ? alpm_pkg_download_size(target->install) : 0; + human_size = humanize_size(size, 'M', 2, &label); + if(size != 0) { + pm_asprintf(&str, "%.2f %s", human_size, label); + } else { + str = NULL; } + ret = alpm_list_add(ret, str); return ret; } @@ -874,7 +870,6 @@ static void _display_targets(alpm_list_t *targets, int verbose) double size; off_t isize = 0, rsize = 0, dlsize = 0; alpm_list_t *i, *rows = NULL, *names = NULL; - int show_dl_size = config->op == PM_OP_SYNC; if(!targets) { return; @@ -898,7 +893,7 @@ static void _display_targets(alpm_list_t *targets, int verbose) for(i = targets; i; i = alpm_list_next(i)) { pm_target_t *target = i->data; - rows = alpm_list_add(rows, create_verbose_row(target, show_dl_size)); + rows = alpm_list_add(rows, create_verbose_row(target)); if(target->install) { pm_asprintf(&str, "%s-%s", alpm_pkg_get_name(target->install), alpm_pkg_get_version(target->install)); @@ -917,7 +912,7 @@ static void _display_targets(alpm_list_t *targets, int verbose) printf("\n"); if(verbose) { - alpm_list_t *header = create_verbose_header(show_dl_size); + alpm_list_t *header = create_verbose_header(); if(table_display(str, header, rows) != 0) { /* fallback to list display if table wouldn't fit */ list_display(str, names); -- 1.7.9.4
participants (1)
-
Dan McGee