[pacman-dev] [PATCH 09/11] Add color to sync.c

Daniel Wallace daniel.wallace at gatech.edu
Sun Aug 5 05:46:45 EDT 2012


Signed-off-by: Daniel Wallace <daniel.wallace at gatech.edu>
---
 src/pacman/sync.c | 151 ++++++++++++++++++++++++++++++++++++++++++------------
 1 file changed, 119 insertions(+), 32 deletions(-)

diff --git a/src/pacman/sync.c b/src/pacman/sync.c
index 532a667..2174a5d 100644
--- a/src/pacman/sync.c
+++ b/src/pacman/sync.c
@@ -36,6 +36,7 @@
 #include "util.h"
 #include "package.h"
 #include "conf.h"
+#include "color.h"
 
 static int unlink_verbose(const char *pathname, int ignore_missing)
 {
@@ -144,7 +145,11 @@ static int sync_cleandb_all(void)
 	int ret = 0;
 
 	dbpath = alpm_option_get_dbpath(config->handle);
-	printf(_("Database directory: %s\n"), dbpath);
+	if (config->color) {
+		color_printf(COLOR_WHITE_COLON, _("Database directory: %s\n"), dbpath);
+	} else {
+		printf(_("Database directory: %s\n"), dbpath);
+	}
 	if(!yesno(_("Do you want to remove unused repositories?"))) {
 		return 0;
 	}
@@ -178,7 +183,11 @@ static int sync_cleancache(int level)
 	}
 
 	if(level == 1) {
-		printf(_("Packages to keep:\n"));
+		if (config->color) {
+			color_printf(COLOR_WHITE_COLON, _("Packages to keep:\n"));
+		} else {
+			printf(_("Packages to keep:\n"));
+		}
 		if(config->cleanmethod & PM_CLEAN_KEEPINST) {
 			printf(_("  All locally installed packages\n"));
 		}
@@ -193,7 +202,11 @@ static int sync_cleancache(int level)
 		DIR *dir;
 		struct dirent *ent;
 
-		printf(_("Cache directory: %s\n"), (const char *)i->data);
+		if (config->color) {
+			color_printf(COLOR_WHITE_COLON, _("Cache directory: %s\n"), (const char *)i->data);
+		} else {
+			printf(_("Cache directory: %s\n"), (const char *)i->data);
+		}
 
 		if(level == 1) {
 			if(!yesno(_("Do you want to remove all other packages from cache?"))) {
@@ -360,9 +373,17 @@ static void print_installed(alpm_db_t *db_local, alpm_pkg_t *pkg)
 	if(lpkg) {
 		const char *lpkgver = alpm_pkg_get_version(lpkg);
 		if(strcmp(lpkgver,pkgver) == 0) {
-			printf(" [%s]", _("installed"));
+			if (config->color) {
+				color_printf(COLOR_CYAN_ALL, " [%s]", _("installed"));
+			} else {
+				printf(" [%s]", _("installed"));
+			}
 		} else {
-			printf(" [%s: %s]", _("installed"), lpkgver);
+			if (config->color) {
+				color_printf(COLOR_CYAN_ALL, " [%s: %s]", _("installed"), lpkgver);
+			} else {
+				printf(" [%s: %s]", _("installed"), lpkgver);
+			}
 		}
 	}
 }
@@ -397,8 +418,14 @@ static int sync_search(alpm_list_t *syncs, alpm_list_t *targets)
 			alpm_pkg_t *pkg = j->data;
 
 			if(!config->quiet) {
-				printf("%s/%s %s", alpm_db_get_name(db), alpm_pkg_get_name(pkg),
-							 alpm_pkg_get_version(pkg));
+				if (config->color) {
+					color_printf(COLOR_MAGENTA_ALL, "%s/", alpm_db_get_name(db));
+					color_printf(COLOR_WHITE_ALL, "%s ", alpm_pkg_get_name(pkg));
+					color_printf(COLOR_GREEN_ALL, "%s", alpm_pkg_get_version(pkg));
+				} else {
+					printf("%s/%s %s", alpm_db_get_name(db), alpm_pkg_get_name(pkg),
+								 alpm_pkg_get_version(pkg));
+				}
 			} else {
 				fputs(alpm_pkg_get_name(pkg), stdout);
 			}
@@ -406,16 +433,25 @@ static int sync_search(alpm_list_t *syncs, alpm_list_t *targets)
 			if(!config->quiet) {
 				if((grp = alpm_pkg_get_groups(pkg)) != NULL) {
 					alpm_list_t *k;
-					fputs(" (", stdout);
-					for(k = grp; k; k = alpm_list_next(k)) {
-						const char *group = k->data;
-						fputs(group, stdout);
-						if(alpm_list_next(k)) {
-							/* only print a spacer if there are more groups */
-							putchar(' ');
+					if (config->color) {
+						fputs(" (", stdout);
+						for(k = grp; k; k = alpm_list_next(k)) {
+							const char *group = k->data;
+							color_printf(COLOR_BLUE_ALL, "%s%s", group,
+									(alpm_list_next(k) ? " " : ")"));
 						}
+					} else {
+						fputs(" (", stdout);
+						for(k = grp; k; k = alpm_list_next(k)) {
+							const char *group = k->data;
+							fputs(group, stdout);
+							if(alpm_list_next(k)) {
+								/* only print a spacer if there are more groups */
+								putchar(' ');
+							}
+						}
+						putchar(')');
 					}
-					putchar(')');
 				}
 
 				print_installed(db_local, pkg);
@@ -450,8 +486,13 @@ static int sync_group(int level, alpm_list_t *syncs, alpm_list_t *targets)
 					/* get names of packages in group */
 					for(k = grp->packages; k; k = alpm_list_next(k)) {
 						if(!config->quiet) {
-							printf("%s %s\n", grpname,
-									alpm_pkg_get_name(k->data));
+							if (config->color) {
+								color_printf(COLOR_BLUE_ALL, "%s ", grpname);
+								color_printf(COLOR_WHITE_ALL, "%s", alpm_pkg_get_name(k->data));
+							} else {
+								printf("%s %s\n", grpname,
+										alpm_pkg_get_name(k->data));
+							}
 						} else {
 							printf("%s\n", alpm_pkg_get_name(k->data));
 						}
@@ -591,8 +632,14 @@ static int sync_list(alpm_list_t *syncs, alpm_list_t *targets)
 			alpm_pkg_t *pkg = j->data;
 
 			if(!config->quiet) {
-				printf("%s %s %s", alpm_db_get_name(db), alpm_pkg_get_name(pkg),
-						alpm_pkg_get_version(pkg));
+				if (config->color) {
+					color_printf(COLOR_MAGENTA_ALL, "%s ", alpm_db_get_name(db));
+					color_printf(COLOR_WHITE_ALL, "%s ", alpm_pkg_get_name(pkg));
+					color_printf(COLOR_GREEN_ALL, "%s ", alpm_pkg_get_version(pkg));
+				} else {
+					printf("%s %s %s", alpm_db_get_name(db), alpm_pkg_get_name(pkg),
+							alpm_pkg_get_version(pkg));
+				}
 				print_installed(db_local, pkg);
 				printf("\n");
 			} else {
@@ -661,8 +708,13 @@ static int process_group(alpm_list_t *dbs, const char *group, int error)
 	}
 
 	if(config->print == 0) {
-		printf(_(":: There are %d members in group %s:\n"), count,
-				group);
+		if (config->color) {
+			color_printf(COLOR_DOUBLECOLON, _(":: There are %d members in group %s:\n"), count,
+					group);
+		} else {
+			printf(_(":: There are %d members in group %s:\n"), count,
+					group);
+		}
 		select_display(pkgs);
 		char *array = malloc(count);
 		if(!array) {
@@ -786,7 +838,11 @@ static int sync_trans(alpm_list_t *targets)
 	}
 
 	if(config->op_s_upgrade) {
-		printf(_(":: Starting full system upgrade...\n"));
+		if (config->color) {
+			color_printf(COLOR_DOUBLECOLON, _(":: Starting full system upgrade...\n"));
+		} else {
+			printf(_(":: Starting full system upgrade...\n"));
+		}
 		alpm_logaction(config->handle, "starting full system upgrade\n");
 		if(alpm_sync_sysupgrade(config->handle, config->op_s_upgrade >= 2) == -1) {
 			pm_printf(ALPM_LOG_ERROR, "%s\n", alpm_strerror(alpm_errno(config->handle)));
@@ -812,14 +868,22 @@ int sync_prepare_execute(void)
 			case ALPM_ERR_PKG_INVALID_ARCH:
 				for(i = data; i; i = alpm_list_next(i)) {
 					const char *pkg = i->data;
-					printf(_(":: package %s does not have a valid architecture\n"), pkg);
+					if (config->color) {
+						color_printf(COLOR_DOUBLECOLON, _(":: package %s does not have a valid architecture\n"), pkg);
+					} else {
+						printf(_(":: package %s does not have a valid architecture\n"), pkg);
+					}
 				}
 				break;
 			case ALPM_ERR_UNSATISFIED_DEPS:
 				for(i = data; i; i = alpm_list_next(i)) {
 					alpm_depmissing_t *miss = i->data;
 					char *depstring = alpm_dep_compute_string(miss->depend);
-					printf(_(":: %s: requires %s\n"), miss->target, depstring);
+					if (config->color) {
+						color_printf(COLOR_DOUBLECOLON, _(":: %s: requires %s\n"), miss->target, depstring);
+					} else {
+						printf(_(":: %s: requires %s\n"), miss->target, depstring);
+					}
 					free(depstring);
 				}
 				break;
@@ -828,12 +892,22 @@ int sync_prepare_execute(void)
 					alpm_conflict_t *conflict = i->data;
 					/* only print reason if it contains new information */
 					if(conflict->reason->mod == ALPM_DEP_MOD_ANY) {
-						printf(_(":: %s and %s are in conflict\n"),
-								conflict->package1, conflict->package2);
+						if (config->color) {
+							color_printf(COLOR_DOUBLECOLON, _(":: %s and %s are in conflict\n"),
+									conflict->package1, conflict->package2);
+						} else {
+							printf(_(":: %s and %s are in conflict\n"),
+									conflict->package1, conflict->package2);
+						}
 					} else {
 						char *reason = alpm_dep_compute_string(conflict->reason);
-						printf(_(":: %s and %s are in conflict (%s)\n"),
-								conflict->package1, conflict->package2, reason);
+						if (config->color) {
+							color_printf(COLOR_DOUBLECOLON, _(":: %s and %s are in conflict (%s)\n"),
+									conflict->package1, conflict->package2, reason);
+						} else {
+							printf(_(":: %s and %s are in conflict (%s)\n"),
+									conflict->package1, conflict->package2, reason);
+						}
 						free(reason);
 					}
 				}
@@ -887,8 +961,13 @@ int sync_prepare_execute(void)
 									conflict->file, conflict->target, conflict->ctarget);
 							break;
 						case ALPM_FILECONFLICT_FILESYSTEM:
-							printf(_("%s: %s exists in filesystem\n"),
-									conflict->target, conflict->file);
+							if (config->color) {
+								color_printf(COLOR_WHITE_COLON, _("%s: %s exists in filesystem\n"),
+										conflict->target, conflict->file);
+							} else {
+								printf(_("%s: %s exists in filesystem\n"),
+										conflict->target, conflict->file);
+							}
 							break;
 					}
 				}
@@ -906,7 +985,11 @@ int sync_prepare_execute(void)
 				break;
 		}
 		/* TODO: stderr? */
-		printf(_("Errors occurred, no packages were upgraded.\n"));
+		if (config->color) {
+			color_printf(COLOR_RED_ALL, _("Errors occurred, no packages were upgraded.\n"));
+		} else {
+			printf(_("Errors occurred, no packages were upgraded.\n"));
+		}
 		retval = 1;
 		goto cleanup;
 	}
@@ -953,7 +1036,11 @@ int pacman_sync(alpm_list_t *targets)
 
 	if(config->op_s_sync) {
 		/* grab a fresh package list */
-		printf(_(":: Synchronizing package databases...\n"));
+		if (config->color) {
+			color_printf(COLOR_DOUBLECOLON, _(":: Synchronizing package databases...\n"));
+		} else {
+			printf(_(":: Synchronizing package databases...\n"));
+		}
 		alpm_logaction(config->handle, "synchronizing package lists\n");
 		if(!sync_synctree(config->op_s_sync, sync_dbs)) {
 			return 1;
-- 
1.7.11.4



More information about the pacman-dev mailing list