Radish alpha
H
HardenedBSD Package Manager
Radicle
Git (anonymous pull)
Log in to clone via SSH
%# before a list in pkg query print the number of elements in that list
Baptiste Daroussin committed 13 years ago
commit 709ce4a0ac80a78d52a6f1141a039aba2deeb38e
parent 653c81c7d8520d7ab154f8f81b3688ddd978c2fb
4 files changed +78 -1
modified pkg/pkg-query.8
@@ -122,6 +122,30 @@ for groups
.It Cm B
for shared libraries
.El
+
.It Cm \&%# Ns Op drCFODLUGB
+
Returns the number of element in the list
+
.Bl -tag -width indent
+
.It Cm d
+
for dependencies
+
.It Cm r
+
for reverse dependencies
+
.It Cm C
+
for categories
+
.It Cm F
+
for files
+
.It Cm O
+
for options
+
.It Cm D
+
for directories
+
.It Cm L
+
for licenses
+
.It Cm U
+
for users
+
.It Cm G
+
for groups
+
.It Cm B
+
for shared libraries
+
.El
.El
.Ss Multiline patterns:
.Bl -tag -width F1
modified pkg/pkg-rquery.8
@@ -114,6 +114,22 @@ for options
for licenses
.It Cm B
for shared libraries
+
.It Cm \&%# Ns Op drCOLB
+
Returns the number of elements in the list
+
.Bl -tag -width indent
+
.It Cm d
+
for dependencies
+
.It Cm r
+
for reverse dependencies
+
.It Cm C
+
for categories
+
.It Cm O
+
for options
+
.It Cm L
+
for licenses
+
.It Cm B
+
for shared libraries
+
.El
.El
.El
.Ss Multiline patterns:
modified pkg/query.c
@@ -53,6 +53,7 @@ static struct query_flags accepted_query_flags[] = {
	{ 'G', "",		1, PKG_LOAD_GROUPS },
	{ 'B', "",		1, PKG_LOAD_SHLIBS },
	{ '?', "drCFODLUGB",	1, PKG_LOAD_BASIC },	/* dbflags handled in analyse_query_string() */
+
	{ '#', "drCFODLUGB",	1, PKG_LOAD_BASIC },	/* dbflags handled in analyse_query_string() */
	{ 's', "hb",		0, PKG_LOAD_BASIC },
	{ 'n', "",		0, PKG_LOAD_BASIC },
	{ 'v', "",		0, PKG_LOAD_BASIC },
@@ -183,6 +184,41 @@ format_str(struct pkg *pkg, struct sbuf *dest, const char *qstr, void *data)
					break;
				}
				break;
+
			case '#':
+
				qstr++;
+
				switch (qstr[0]) {
+
				case 'd':
+
					sbuf_printf(dest, "%d", pkg_list_count(pkg, PKG_DEPS));
+
					break;
+
				case 'r':
+
					sbuf_printf(dest, "%d", pkg_list_count(pkg, PKG_RDEPS));
+
					break;
+
				case 'C':
+
					sbuf_printf(dest, "%d", pkg_list_count(pkg, PKG_CATEGORIES));
+
					break;
+
				case 'F':
+
					sbuf_printf(dest, "%d", pkg_list_count(pkg, PKG_FILES));
+
					break;
+
				case 'O':
+
					sbuf_printf(dest, "%d", pkg_list_count(pkg, PKG_OPTIONS));
+
					break;
+
				case 'D':
+
					sbuf_printf(dest, "%d", pkg_list_count(pkg, PKG_DIRS));
+
					break;
+
				case 'L':
+
					sbuf_printf(dest, "%d", pkg_list_count(pkg, PKG_LICENSES));
+
					break;
+
				case 'U':
+
					sbuf_printf(dest, "%d", pkg_list_count(pkg, PKG_USERS));
+
					break;
+
				case 'G':
+
					sbuf_printf(dest, "%d", pkg_list_count(pkg, PKG_GROUPS));
+
					break;
+
				case 'B':
+
					sbuf_printf(dest, "%d", pkg_list_count(pkg, PKG_SHLIBS));
+
					break;
+
				}
+
				break;
			case 'l':
				pkg_get(pkg, PKG_LICENSE_LOGIC, &licenselogic);
				switch (licenselogic) {
@@ -724,7 +760,7 @@ analyse_query_string(char *qstr, struct query_flags *q_flags, const unsigned int
					}

					/* handle the '?' flag cases */
-
					if (q_flags[i].flag == '?') {
+
					if (q_flags[i].flag == '?' || q_flags[i].flag == '#') {
						for (k = 0; k < q_flags_len; k++)
							if (q_flags[k].flag == q_flags[i].options[j]) {
								*flags |= q_flags[k].dbflags;
modified pkg/rquery.c
@@ -49,6 +49,7 @@ static struct query_flags accepted_rquery_flags[] = {
	{ 'L', "",		1, PKG_LOAD_LICENSES },
	{ 'B', "",		1, PKG_LOAD_SHLIBS },
	{ '?', "drCOLB",	1, PKG_LOAD_BASIC },	/* dbflags handled in analyse_query_string() */
+
	{ '#', "drCOLB",	1, PKG_LOAD_BASIC },	/* dbflags handled in analyse_query_string() */
	{ 's', "hb",		0, PKG_LOAD_BASIC },
	{ 'n', "",		0, PKG_LOAD_BASIC },
	{ 'v', "",		0, PKG_LOAD_BASIC },