Radish alpha
H
HardenedBSD Package Manager
Radicle
Git (anonymous pull)
Log in to clone via SSH
Add %K to query conflicts
Baptiste Daroussin committed 14 years ago
commit 9e54e47a526e1b8f43f81a7ab07905e0c67dc2ac
parent 9ccc831f426096f4e7ee215b5a6c03eb6eb5c33d
2 files changed +31 -2
modified pkg/pkg-query.1
@@ -93,6 +93,8 @@ for licenses
for users
.It \fBG\fB
for groups
+
.It \fBK\fB
+
for conflicts
.El
.El
.Ss Multilines pattern:
@@ -115,6 +117,8 @@ List of license of the matched package.
List of users needed for the matched package.
.It \fB%G\fB
List of groups needed for the matched package.
+
.It \fB%K\fB
+
List of conflicts registred with the matched package.
.El
.Sh WARNING
.Sh ENVRIOMENT
modified pkg/query.c
@@ -85,6 +85,9 @@ format_str(struct pkg *pkg, struct sbuf *dest, const char *qstr, void *data)
						case 'G':
							sbuf_printf(dest, "%d", !pkg_list_empty(pkg, PKG_GROUPS));
							break;
+
						case 'K':
+
							sbuf_printf(dest, "%d", !pkg_list_empty(pkg, PKG_CONFLICTS));
+
							break;
					}
					break;
				case 'l':
@@ -141,6 +144,9 @@ format_str(struct pkg *pkg, struct sbuf *dest, const char *qstr, void *data)
				case 'G':
					sbuf_cat(dest, pkg_group_name((struct pkg_group *)data));
					break;
+
				case 'K':
+
					sbuf_cat(dest, pkg_conflict_glob((struct pkg_conflict *)data));
+
					break;
				case '%':
					sbuf_putc(dest, '%');
					break;
@@ -189,6 +195,7 @@ print_query(struct pkg *pkg, char *qstr, char multiline)
	struct pkg_license *lic = NULL;
	struct pkg_user *user = NULL;
	struct pkg_group *group = NULL;
+
	struct pkg_conflict *conflict = NULL;

	switch (multiline) {
		case 'd':
@@ -245,6 +252,12 @@ print_query(struct pkg *pkg, char *qstr, char multiline)
				printf("%s\n", sbuf_data(output));
			}
			break;
+
		case 'K':
+
			while (pkg_conflicts(pkg, &conflict) == EPKG_OK) {
+
				format_str(pkg, output, qstr, conflict);
+
				printf("%s\n", sbuf_data(output));
+
			}
+
			break;
		default:
			format_str(pkg, output, qstr, dep);
			printf("%s\n", sbuf_data(output));
@@ -359,6 +372,14 @@ analyse_query_string(char *qstr, int *flags, char *multiline)
					*multiline = 'G';
					*flags |= PKG_LOAD_GROUPS;
					break;
+
				case 'K':
+
					if (*multiline != 0 && *multiline != 'K') {
+
						fprintf(stderr, "Invalid query format string, you can't query '%%%c' and '%%K' at the same time\n", *multiline);
+
						return (EPKG_FATAL);
+
					}
+
					*multiline = 'K';
+
					*flags |= PKG_LOAD_CONFLICTS;
+
					break;
				case 's':
					qstr++;
					if (qstr[0] != 'h' && qstr[0] != 'b') {
@@ -371,8 +392,9 @@ analyse_query_string(char *qstr, int *flags, char *multiline)
					if (qstr[0] != 'd' && qstr[0] != 'r' && qstr[0] != 'C' &&
							qstr[0] != 'F' && qstr[0] != '0' &&
							qstr[0] != 'D' && qstr[0] != 'L' &&
-
							qstr[0] != 'U' && qstr[0] != 'G') {
-
						fprintf(stderr, "Invalid query: %%? should be followed by: d, r, C, F, O, D, L, U or G\n");
+
							qstr[0] != 'U' && qstr[0] != 'G' &&
+
							qstr[0] != 'K' ) {
+
						fprintf(stderr, "Invalid query: %%? should be followed by: d, r, C, F, O, D, L, U, G or K\n");
						return (EPKG_FATAL);
					}
					switch (qstr[0]) {
@@ -403,6 +425,9 @@ analyse_query_string(char *qstr, int *flags, char *multiline)
						case 'G':
							*flags |= PKG_LOAD_GROUPS;
							break;
+
						case 'K':
+
							*flags |= PKG_LOAD_CONFLICTS;
+
							break;
					}

					break;