Radish alpha
H
rad:z3QDZAW2FAfuLvihrhiyDC9fAD8G9
HardenedBSD Package Manager
Radicle
Git
query: factorize code
Baptiste Daroussin committed 2 months ago
commit e5f4a57c5904b7cd4439686484c4b7946ff486f0
parent e1841f2
1 file changed +16 -51
modified src/query.c
@@ -396,7 +396,22 @@ print_query(struct pkg *pkg, char *qstr, char multiline)
		}
		break;
	case 'C':
-
		pkg_get(pkg, PKG_ATTR_CATEGORIES, &sl);
+
	case 'L':
+
	case 'U':
+
	case 'G':
+
	case 'B':
+
	case 'b':;
+
		int attr;
+
		switch (multiline) {
+
		case 'C': attr = PKG_ATTR_CATEGORIES; break;
+
		case 'L': attr = PKG_ATTR_LICENSES; break;
+
		case 'U': attr = PKG_ATTR_USERS; break;
+
		case 'G': attr = PKG_ATTR_GROUPS; break;
+
		case 'B': attr = PKG_ATTR_SHLIBS_REQUIRED; break;
+
		case 'b': attr = PKG_ATTR_SHLIBS_PROVIDED; break;
+
		default: __unreachable();
+
		}
+
		pkg_get(pkg, attr, &sl);
		slit = pkg_stringlist_iterator(sl);
		while ((str = pkg_stringlist_next(slit))) {
			format_str(pkg, output, qstr, str);
@@ -424,56 +439,6 @@ print_query(struct pkg *pkg, char *qstr, char multiline)
			printf("%s\n", output->buf);
		}
		break;
-
	case 'L':
-
		pkg_get(pkg, PKG_ATTR_LICENSES, &sl);
-
		slit = pkg_stringlist_iterator(sl);
-
		while ((str = pkg_stringlist_next(slit))) {
-
			format_str(pkg, output, qstr, str);
-
			printf("%s\n", output->buf);
-
		}
-
		free(slit);
-
		free(sl);
-
		break;
-
	case 'U':
-
		pkg_get(pkg, PKG_ATTR_USERS, &sl);
-
		slit = pkg_stringlist_iterator(sl);
-
		while ((str = pkg_stringlist_next(slit))) {
-
			format_str(pkg, output, qstr, str);
-
			printf("%s\n", output->buf);
-
		}
-
		free(slit);
-
		free(sl);
-
		break;
-
	case 'G':
-
		pkg_get(pkg, PKG_ATTR_GROUPS, &sl);
-
		slit = pkg_stringlist_iterator(sl);
-
		while ((str = pkg_stringlist_next(slit))) {
-
			format_str(pkg, output, qstr, str);
-
			printf("%s\n", output->buf);
-
		}
-
		free(slit);
-
		free(sl);
-
		break;
-
	case 'B':
-
		pkg_get(pkg, PKG_ATTR_SHLIBS_REQUIRED, &sl);
-
		slit = pkg_stringlist_iterator(sl);
-
		while ((str = pkg_stringlist_next(slit))) {
-
			format_str(pkg, output, qstr, str);
-
			printf("%s\n", output->buf);
-
		}
-
		free(slit);
-
		free(sl);
-
		break;
-
	case 'b':
-
		pkg_get(pkg, PKG_ATTR_SHLIBS_PROVIDED, &sl);
-
		slit = pkg_stringlist_iterator(sl);
-
		while ((str = pkg_stringlist_next(slit))) {
-
			format_str(pkg, output, qstr, str);
-
			printf("%s\n", output->buf);
-
		}
-
		free(slit);
-
		free(sl);
-
		break;
	case 'A':
		pkg_get(pkg, PKG_ATTR_ANNOTATIONS, &kl);
		kit = pkg_kvlist_iterator(kl);