[pacman-dev] [PATCH v3 1/2] pacman: refactor file match printing to their own functions

morganamilo morganamilo at gmail.com
Tue May 28 21:30:07 UTC 2019


---
 src/pacman/files.c | 71 ++++++++++++++++++++++++++--------------------
 1 file changed, 41 insertions(+), 30 deletions(-)

diff --git a/src/pacman/files.c b/src/pacman/files.c
index fa4170bd..26f96a67 100644
--- a/src/pacman/files.c
+++ b/src/pacman/files.c
@@ -49,6 +49,15 @@ static void dump_pkg_machinereadable(alpm_db_t *db, alpm_pkg_t *pkg)
 	}
 }
 
+static void print_owned_by(alpm_db_t *db, alpm_pkg_t *pkg, char *filename)
+{
+	const colstr_t *colstr = &config->colstr;
+	printf(_("%s is owned by %s%s/%s%s %s%s%s\n"), filename,
+		colstr->repo, alpm_db_get_name(db), colstr->title,
+		alpm_pkg_get_name(pkg), colstr->version,
+		alpm_pkg_get_version(pkg), colstr->nocolor);
+}
+
 static int files_fileowner(alpm_list_t *syncs, alpm_list_t *targets) {
 	int ret = 0;
 	alpm_list_t *t;
@@ -77,11 +86,7 @@ static int files_fileowner(alpm_list_t *syncs, alpm_list_t *targets) {
 					if(config->op_f_machinereadable) {
 						print_line_machinereadable(repo, pkg, filename);
 					} else if(!config->quiet) {
-						const colstr_t *colstr = &config->colstr;
-						printf(_("%s is owned by %s%s/%s%s %s%s%s\n"), filename,
-								colstr->repo, alpm_db_get_name(repo), colstr->title,
-								alpm_pkg_get_name(pkg), colstr->version,
-								alpm_pkg_get_version(pkg), colstr->nocolor);
+						print_owned_by(repo, pkg, filename);
 					} else {
 						printf("%s/%s\n", alpm_db_get_name(repo), alpm_pkg_get_name(pkg));
 					}
@@ -99,11 +104,39 @@ static int files_fileowner(alpm_list_t *syncs, alpm_list_t *targets) {
 	return 0;
 }
 
+static void print_match(alpm_list_t *match, alpm_db_t *repo, alpm_pkg_t *pkg)
+{
+	alpm_db_t *db_local = alpm_get_localdb(config->handle);
+	const colstr_t *colstr = &config->colstr;
+
+	if(config->op_f_machinereadable) {
+		alpm_list_t *ml;
+		for(ml = match; ml; ml = alpm_list_next(ml)) {
+			char *filename = ml->data;
+			print_line_machinereadable(repo, pkg, filename);
+		}
+	} else if(config->quiet) {
+		printf("%s/%s\n", alpm_db_get_name(repo), alpm_pkg_get_name(pkg));
+	} else {
+		alpm_list_t *ml;
+		printf("%s%s/%s%s %s%s%s", colstr->repo, alpm_db_get_name(repo),
+			colstr->title, alpm_pkg_get_name(pkg),
+			colstr->version, alpm_pkg_get_version(pkg), colstr->nocolor);
+
+		print_groups(pkg);
+		print_installed(db_local, pkg);
+		printf("\n");
+
+		for(ml = match; ml; ml = alpm_list_next(ml)) {
+			char *filename = ml->data;
+			printf("    %s\n", filename);
+		}
+	}
+}
+
 static int files_search(alpm_list_t *syncs, alpm_list_t *targets, int regex) {
 	int ret = 0;
-	alpm_db_t *db_local = alpm_get_localdb(config->handle);
 	alpm_list_t *t;
-	const colstr_t *colstr = &config->colstr;
 
 	for(t = targets; t; t = alpm_list_next(t)) {
 		char *targ = t->data;
@@ -148,29 +181,7 @@ static int files_search(alpm_list_t *syncs, alpm_list_t *targets, int regex) {
 				}
 
 				if(match != NULL) {
-					if(config->op_f_machinereadable) {
-						alpm_list_t *ml;
-						for(ml = match; ml; ml = alpm_list_next(ml)) {
-							char *filename = ml->data;
-							print_line_machinereadable(repo, pkg, filename);
-						}
-					} else if(config->quiet) {
-						printf("%s/%s\n", alpm_db_get_name(repo), alpm_pkg_get_name(pkg));
-					} else {
-						alpm_list_t *ml;
-						printf("%s%s/%s%s %s%s%s", colstr->repo, alpm_db_get_name(repo),
-							colstr->title, alpm_pkg_get_name(pkg),
-							colstr->version, alpm_pkg_get_version(pkg), colstr->nocolor);
-
-						print_groups(pkg);
-						print_installed(db_local, pkg);
-						printf("\n");
-
-						for(ml = match; ml; ml = alpm_list_next(ml)) {
-							c = ml->data;
-							printf("    %s\n", c);
-						}
-					}
+					print_match(match, repo, pkg);
 					alpm_list_free(match);
 				}
 			}
-- 
2.21.0


More information about the pacman-dev mailing list