Radish alpha
H
HardenedBSD Package Manager
Radicle
Git (anonymous pull)
Log in to clone via SSH
info: print depends list
Philippe Pepiot committed 15 years ago
commit 7392b89d35e875a2ee2306accd308edd4a8bc22b
parent 5b0bf825158ad61a28602b264e9a0f08d6e8dd4b
4 files changed +33 -16
modified libpkg/pkgdb.c
@@ -6,10 +6,10 @@
#include "pkgdb_cache.h"

void
-
pkgdb_init(struct pkgdb *db, const char *pattern, match_t match) {
+
pkgdb_init(struct pkgdb *db, const char *pattern, match_t match, unsigned char flags) {
	/* first check if the cache has to be rebuild */
	pkgdb_cache_update();
-
	pkgdb_cache_init(db, pattern, match, 0);
+
	pkgdb_cache_init(db, pattern, match, flags);
}

static void
modified libpkg/pkgdb.h
@@ -12,7 +12,7 @@ typedef enum _math_t {
	MATCH_EREGEX
} match_t;

-
void pkgdb_init(struct pkgdb *db, const char *pattern, match_t match);
+
void pkgdb_init(struct pkgdb *db, const char *pattern, match_t match, unsigned char flags);
void pkgdb_free(struct pkgdb *db);
size_t pkgdb_count(struct pkgdb *db);

modified pkg/info.c
@@ -24,11 +24,13 @@ int
cmd_info(int argc, char **argv)
{
	struct pkgdb db;
-
	struct pkg *pkg;
+
	struct pkg *pkg, **deps;
+
	unsigned char flags = 0;
+
	unsigned char opt = 0;
	match_t match = MATCH_EXACT;
-
	int ch;
+
	char ch;

-
	while ((ch = getopt(argc, argv, "gxX")) != -1) {
+
	while ((ch = getopt(argc, argv, "gxXdD")) != -1) {
		switch (ch) {
			case 'g':
				match = MATCH_GLOB;
@@ -39,6 +41,10 @@ cmd_info(int argc, char **argv)
			case 'X':
				match = MATCH_EREGEX;
				break;
+
			case 'd':
+
				flags |= PKGDB_INIT_DEPS;
+
				opt |= INFO_PRINT_DEPEND_LIST;
+
				break;
		}
	}
	argc -= optind;
@@ -47,16 +53,25 @@ cmd_info(int argc, char **argv)
	if (argc == 0)
		match = MATCH_ALL;

-
	pkgdb_init(&db, argv[0], match);
-
	if (pkgdb_count(&db) == 1) {
-
		/* one match */
-
		pkg = db.pkgs[0];
-
		printf("Information for %s\n", pkg->name_version);
-
		printf("Comment:\n%s\n\n", pkg->comment);
-
		printf("Description:\n%s\n\n", pkg->desc);
-
	}
-
	else if (pkgdb_count(&db) > 1) {
-
		PKGDB_FOREACH(pkg, &db) {
+
	pkgdb_init(&db, argv[0], match, flags);
+

+
	PKGDB_FOREACH(pkg, &db) {
+

+
		if (opt & INFO_PRINT_DEPEND_LIST) {
+
			printf("Informations for %s\n\n", pkg->name_version);
+
			printf("Depends on:\n");
+
			for (deps = pkg->deps; *deps; deps++)
+
				printf("%s\n", (*deps)->name_version);
+
			printf("\n\n");
+
		}
+

+
		else if (pkgdb_count(&db) == 1) {
+
			printf("Informations for %s\n\n", pkg->name_version);
+
			printf("Comment:\n%s\n\n", pkg->comment);
+
			printf("Description:\n%s\n\n", pkg->desc);
+
		}
+

+
		else {
			printf("%s: %s\n", pkg->name_version, pkg->comment);
		}
	}
modified pkg/info.h
@@ -1,5 +1,7 @@
#ifndef _INFO_H
#define _INFO_H

+
#define INFO_PRINT_DEPEND_LIST (1<<0)
+

int cmd_info(int argc, char **argv);
#endif