Signed-off-by: Daniel Wallace <daniel.wallace@gatech.edu> --- src/pacman/callback.c | 164 +++++++++++++++++++++++++++++++++++++++----------- 1 file changed, 128 insertions(+), 36 deletions(-) diff --git a/src/pacman/callback.c b/src/pacman/callback.c index 01c6b61..1c766e5 100644 --- a/src/pacman/callback.c +++ b/src/pacman/callback.c @@ -33,6 +33,7 @@ /* pacman */ #include "callback.h" #include "util.h" +#include "color.h" #include "conf.h" /* download progress bar */ @@ -223,16 +224,28 @@ void cb_event(alpm_event_t event, void *data1, void *data2) printf(_("generating %s with %s... "), (char *)data1, (char *)data2); break; case ALPM_EVENT_DELTA_PATCH_DONE: - printf(_("success!\n")); + if (config->color) { + color_printf(COLOR_GREEN_ALL, _("success!\n")); + } else { + printf(_("success!\n")); + } break; case ALPM_EVENT_DELTA_PATCH_FAILED: - printf(_("failed.\n")); + if (config->color) { + color_printf(COLOR_RED_ALL, _("failed.\n")); + } else { + printf(_("failed.\n")); + } break; case ALPM_EVENT_SCRIPTLET_INFO: fputs((const char *)data1, stdout); break; case ALPM_EVENT_RETRIEVE_START: - printf(_(":: Retrieving packages ...\n")); + if (config->color) { + color_printf(COLOR_DOUBLECOLON, _(":: Retrieving packages ...\n")); + } else { + printf(_(":: Retrieving packages ...\n")); + } break; case ALPM_EVENT_DISKSPACE_START: if(config->noprogressbar) { @@ -266,32 +279,63 @@ void cb_question(alpm_question_t event, void *data1, void *data2, switch(event) { case ALPM_QUESTION_INSTALL_IGNOREPKG: if(!config->op_s_downloadonly) { - *response = yesno(_(":: %s is in IgnorePkg/IgnoreGroup. Install anyway?"), + if (config->color) { + *response = color_yesno(COLOR_DOUBLECOLON, _(":: %s is in IgnorePkg/IgnoreGroup. Install anyway?"), alpm_pkg_get_name(data1)); + + } else { + *response = yesno(_(":: %s is in IgnorePkg/IgnoreGroup. Install anyway?"), + alpm_pkg_get_name(data1)); + } } else { *response = 1; } break; case ALPM_QUESTION_REPLACE_PKG: - *response = yesno(_(":: Replace %s with %s/%s?"), - alpm_pkg_get_name(data1), - (char *)data3, - alpm_pkg_get_name(data2)); + if (config->color) { + *response = color_yesno(COLOR_DOUBLECOLON, + _(":: Replace %s with %s/%s?"), + alpm_pkg_get_name(data1), + (char *)data3, + alpm_pkg_get_name(data2)); + } else { + *response = yesno(_(":: Replace %s with %s/%s?"), + alpm_pkg_get_name(data1), + (char *)data3, + alpm_pkg_get_name(data2)); + } break; case ALPM_QUESTION_CONFLICT_PKG: /* data parameters: target package, local package, conflict (strings) */ /* print conflict only if it contains new information */ if(strcmp(data1, data3) == 0 || strcmp(data2, data3) == 0) { - *response = noyes(_(":: %s and %s are in conflict. Remove %s?"), - (char *)data1, - (char *)data2, - (char *)data2); + if (config->color) { + *response = color_noyes(COLOR_DOUBLECOLON, + _(":: %s and %s are in conflict. Remove %s?"), + (char *)data1, + (char *)data2, + (char *)data2); + } else { + *response = noyes(_(":: %s and %s are in conflict. Remove %s?"), + (char *)data1, + (char *)data2, + (char *)data2); + } } else { - *response = noyes(_(":: %s and %s are in conflict (%s). Remove %s?"), - (char *)data1, - (char *)data2, - (char *)data3, - (char *)data2); + if (config->color) { + *response = color_noyes(COLOR_DOUBLECOLON, + _(":: %s and %s are in conflict (%s). Remove %s?"), + (char *)data1, + (char *)data2, + (char *)data3, + (char *)data2); + } else { + *response = noyes(_(":: %s and %s are in conflict (%s). Remove %s?"), + (char *)data1, + (char *)data2, + (char *)data3, + (char *)data2); + } } break; case ALPM_QUESTION_REMOVE_PKGS: @@ -304,10 +348,17 @@ void cb_question(alpm_question_t event, void *data1, void *data2, (char *)alpm_pkg_get_name(i->data)); count++; } - printf(_n( - ":: The following package cannot be upgraded due to unresolvable dependencies:\n", - ":: The following packages cannot be upgraded due to unresolvable dependencies:\n", - count)); + if (config->color) { + color_printf(COLOR_DOUBLECOLON, _n( + ":: The following package cannot be upgraded due to unresolvable dependencies:\n", + ":: The following packages cannot be upgraded due to unresolvable dependencies:\n", + count)); + } else { + printf(_n( + ":: The following package cannot be upgraded due to unresolvable dependencies:\n", + ":: The following packages cannot be upgraded due to unresolvable dependencies:\n", + count)); + } list_display(" ", namelist, getcols(fileno(stdout))); printf("\n"); *response = noyes(_n( @@ -322,8 +373,13 @@ void cb_question(alpm_question_t event, void *data1, void *data2, alpm_list_t *providers = data1; size_t count = alpm_list_count(providers); char *depstring = alpm_dep_compute_string((alpm_depend_t *)data2); - printf(_(":: There are %zd providers available for %s:\n"), count, - depstring); + if (config->color) { + color_printf(COLOR_DOUBLECOLON, _(":: There are %zd providers available for %s:\n"), + count, depstring); + } else { + printf(_(":: There are %zd providers available for %s:\n"), count, + depstring); + } free(depstring); select_display(providers); *response = select_question(count); @@ -331,18 +387,33 @@ void cb_question(alpm_question_t event, void *data1, void *data2, break; case ALPM_QUESTION_LOCAL_NEWER: if(!config->op_s_downloadonly) { - *response = yesno(_(":: %s-%s: local version is newer. Upgrade anyway?"), - alpm_pkg_get_name(data1), - alpm_pkg_get_version(data1)); + if (config->color) { + *response = color_yesno(COLOR_DOUBLECOLON, + _(":: %s-%s: local version is newer. Upgrade anyway?"), + alpm_pkg_get_name(data1), + alpm_pkg_get_version(data1)); + } else { + *response = yesno(_(":: %s-%s: local version is newer. Upgrade anyway?"), + alpm_pkg_get_name(data1), + alpm_pkg_get_version(data1)); + } } else { *response = 1; } break; case ALPM_QUESTION_CORRUPTED_PKG: - *response = yesno(_(":: File %s is corrupted (%s).\n" - "Do you want to delete it?"), - (char *)data1, - alpm_strerror(*(alpm_errno_t *)data2)); + if (config->color) { + *response = color_yesno(COLOR_DOUBLECOLON, + _(":: File %s is corrupted (%s).\n" + "Do you want to delete it?"), + (char *)data1, + alpm_strerror(*(alpm_errno_t *)data2)); + } else { + *response = yesno(_(":: File %s is corrupted (%s).\n" + "Do you want to delete it?"), + (char *)data1, + alpm_strerror(*(alpm_errno_t *)data2)); + } break; case ALPM_QUESTION_IMPORT_KEY: { @@ -356,8 +427,14 @@ void cb_question(alpm_question_t event, void *data1, void *data2, revoked = " (revoked)"; } - *response = yesno(_(":: Import PGP key %d%c/%s, \"%s\", created: %s%s?"), - key->length, key->pubkey_algo, key->fingerprint, key->uid, created, revoked); + if (config->color) { + *response = color_yesno(COLOR_DOUBLECOLON, + _(":: Import PGP key %d%c/%s, \"%s\", created: %s%s?"), + key->length, key->pubkey_algo, key->fingerprint, key->uid, created, revoked); + } else { + *response = yesno(_(":: Import PGP key %d%c/%s, \"%s\", created: %s%s?"), + key->length, key->pubkey_algo, key->fingerprint, key->uid, created, revoked); + } } break; } @@ -490,8 +567,15 @@ void cb_progress(alpm_progress_t event, const char *pkgname, int percent, } - printf("(%*ld/%*ld) %ls%-*s", digits, (unsigned long)current, - digits, (unsigned long)howmany, wcstr, padwid, ""); + if (config->color) { + color_printf(COLOR_BLUE_ALL, + "(%*ld/%*ld)", digits, (unsigned long)current, + digits, (unsigned long)howmany); + } else { + printf("(%*ld/%*ld)", digits, (unsigned long)current, + digits, (unsigned long)howmany); + } + printf(" %ls%-*s", wcstr, padwid, ""); free(wcstr); @@ -747,12 +831,20 @@ void cb_log(alpm_loglevel_t level, const char *fmt, va_list args) if(on_progress) { char *string = NULL; - pm_vasprintf(&string, level, fmt, args); + if (config->color) { + color_pm_vasprintf(&string, level, fmt, args); + } else { + pm_vasprintf(&string, level, fmt, args); + } if(string != NULL) { output = alpm_list_add(output, string); } } else { - pm_vfprintf(stderr, level, fmt, args); + if (config->color) { + color_pm_vfprintf(stderr, level, fmt, args); + } else { + pm_vfprintf(stderr, level, fmt, args); + } } } -- 1.7.11.4