Radish alpha
H
rad:z3QDZAW2FAfuLvihrhiyDC9fAD8G9
HardenedBSD Package Manager
Radicle
Git
Support -f flag in pkg query to get information about a package file
Marin Atanasov Nikolov committed 14 years ago
commit 98a8654a7ef5d11caabeecee05095d93c8b5f9dc
parent 17c9bd7
1 file changed +17 -3
modified pkg/query.c
@@ -457,7 +457,8 @@ void
usage_query(void)
{
	fprintf(stderr, "usage: pkg query -a <query-format>\n");
-
	fprintf(stderr, "       pkg query [-gxX] <query-format> <pattern>\n\n");
+
	fprintf(stderr, "       pkg query -f <pkg-name> <query-format>\n");
+
	fprintf(stderr, "       pkg query [-gxX] <query-format> <pattern> <...>\n\n");
	fprintf(stderr, "For more information see 'pkg help query.\n");
}

@@ -476,7 +477,7 @@ exec_query(int argc, char **argv)
	int i;
	char multiline = 0;

-
	while ((ch = getopt(argc, argv, "agxX")) != -1) {
+
	while ((ch = getopt(argc, argv, "agxXf:")) != -1) {
		switch (ch) {
			case 'a':
				match = MATCH_ALL;
@@ -490,6 +491,9 @@ exec_query(int argc, char **argv)
			case 'X':
				match = MATCH_EREGEX;
				break;
+
			case 'f':
+
				pkgname = optarg;
+
				break;
			default:
				usage_query();
				return (EX_USAGE);
@@ -504,7 +508,7 @@ exec_query(int argc, char **argv)
		return (EX_USAGE);
	}

-
	if ((argc == 1) ^ (match == MATCH_ALL)) {
+
	if ((argc == 1) ^ (match == MATCH_ALL) && pkgname == NULL) {
		usage_query();
		return (EX_USAGE);
	}
@@ -512,6 +516,16 @@ exec_query(int argc, char **argv)
	if (analyse_query_string(argv[0], &query_flags, &multiline) != EPKG_OK)
		return (EX_USAGE);

+
	if (pkgname != NULL) {
+
		if (pkg_open(&pkg, pkgname) != EPKG_OK) {
+
			return (1);
+
		}
+
		
+
		print_query(pkg, argv[0], multiline);
+
		pkg_free(pkg);
+
		return (0);
+
	}
+

	if (pkgdb_open(&db, PKGDB_DEFAULT) != EPKG_OK)
		return (EX_IOERR);