Radish alpha
H
rad:z3QDZAW2FAfuLvihrhiyDC9fAD8G9
HardenedBSD Package Manager
Radicle
Git
Refactoring.
jlaffaye committed 15 years ago
commit 03681e79ad8e977385e28563fd02ca25b6f45265
parent 2343f2c
1 file changed +56 -74
modified pkg/info.c
@@ -13,15 +13,28 @@
#include "info.h"

static int
-
query_pkg(struct pkg *pkg, unsigned char opt) {
+
print_info(struct pkg *pkg, unsigned int opt)
+
{
	struct pkg **deps;
	struct pkg_file **files;
+
	char size[7];
	int i;

	if (opt & INFO_PRINT_DEP) {
-
		printf("%s-%s depends on: \n", pkg_get(pkg, PKG_NAME), pkg_get(pkg, PKG_VERSION));
+
		if (!(opt & INFO_QUIET))
+
			printf("%s-%s depends on:\n", pkg_get(pkg, PKG_NAME), pkg_get(pkg, PKG_VERSION));

-
		deps = pkg_deps(pkg);
+
			deps = pkg_deps(pkg);
+
			for (i = 0; deps[i] != NULL; i++) {
+
				printf("%s-%s\n", pkg_get(deps[i], PKG_NAME), pkg_get(deps[i], PKG_VERSION));
+
			}
+

+
			if (!(opt & INFO_QUIET))
+
				printf("\n");
+
	} else if (opt & INFO_PRINT_RDEP) {
+
		printf("%s-%s is required by:\n", pkg_get(pkg, PKG_NAME), pkg_get(pkg, PKG_VERSION));
+

+
		deps = pkg_rdeps(pkg);
		for (i = 0; deps[i] != NULL; i++) {
			printf("%s-%s\n", pkg_get(deps[i], PKG_NAME), pkg_get(deps[i], PKG_VERSION));
		}
@@ -36,12 +49,26 @@ query_pkg(struct pkg *pkg, unsigned char opt) {
		}

		printf("\n");
+
	} else if (opt & INFO_SIZE) {
+
		humanize_number(size, sizeof(size), pkg_flatsize(pkg), "B", HN_AUTOSCALE, 0);
+
		printf("%s-%s size is %s\n", pkg_get(pkg, PKG_NAME), pkg_get(pkg, PKG_VERSION), size);
+
	} else if (opt & INFO_ORIGIN) {
+
		if (opt & INFO_QUIET)
+
			printf("%s\n", pkg_get(pkg, PKG_ORIGIN));
+
		else
+
			printf("%s-%s: %s\n", pkg_get(pkg, PKG_NAME), pkg_get(pkg, PKG_VERSION), pkg_get(pkg, PKG_ORIGIN));
+
	} else if (opt & INFO_PREFIX) {
+
		if (opt & INFO_QUIET)
+
			printf("%s\n", pkg_get(pkg, PKG_PREFIX));
+
		else
+
			printf("%s-%s: %s\n", pkg_get(pkg, PKG_NAME), pkg_get(pkg, PKG_VERSION), pkg_get(pkg, PKG_PREFIX));
	} else {
-
		printf("%s-%s: %s\n", pkg_get(pkg, PKG_NAME), pkg_get(pkg, PKG_VERSION), pkg_get(pkg, PKG_COMMENT));
+
		if (opt & INFO_QUIET)
+
			printf("%s-%s\n", pkg_get(pkg, PKG_NAME), pkg_get(pkg, PKG_VERSION));
+
		else
+
			printf("%s-%s: %s\n", pkg_get(pkg, PKG_NAME), pkg_get(pkg, PKG_VERSION), pkg_get(pkg, PKG_COMMENT));
	}

-
	pkg_free(pkg);
-

	return (0);
}

@@ -64,17 +91,13 @@ exec_info(int argc, char **argv)
	struct pkgdb_it *it;
	int query_flags = PKG_LOAD_BASIC;
	struct pkg *pkg = NULL;
-
	struct pkg **deps;
-
	struct pkg_file **files;
	unsigned int opt = 0;
-
	char size[7];
	match_t match = MATCH_EXACT;
	char ch;
-
	size_t i;
	int ret;
	int retcode = 0;
	bool gotone = false;
-
	int j;
+
	int i;

	/* TODO: exclusive opts ? */
	while ((ch = getopt(argc, argv, "egxXdrlsqopO")) != -1) {
@@ -129,23 +152,27 @@ exec_info(int argc, char **argv)

	pkg_new(&pkg);

-
	/* if the last argument is a file then query directly the file */
-
	if (argc == 1 && access(argv[0], F_OK) == 0) {
-
		if (pkg_open(&pkg, argv[0]) != EPKG_OK) {
-
			warnx("can not read package %s", argv[0]);
-
			return (-1);
-
		}
-
		return (query_pkg(pkg, opt));
-
	}
-

	if (pkgdb_open(&db) != EPKG_OK) {
		pkg_error_warn("can not open database");
		pkgdb_close(db);
		return (-1);
	}

-
	for (j = 0; j < argc; j++) {
-
		if ((it = pkgdb_query(db, argv[j], match)) == NULL) {
+
	i = 0;
+
	do {
+

+
		/* if the argument is a file then query directly the file */
+
		if (argc > 0 && access(argv[i], F_OK) == 0) {
+
			if (pkg_open(&pkg, argv[i]) != EPKG_OK) {
+
				warnx("can not read package %s", argv[i]);
+
				return (-1);
+
			}
+
			print_info(pkg, opt);
+
			i++;
+
			continue;
+
		}
+

+
		if ((it = pkgdb_query(db, argv[i], match)) == NULL) {
			pkg_error_warn("can not query database");
			return (-1);
		}
@@ -161,57 +188,10 @@ exec_info(int argc, char **argv)

		while ((ret = pkgdb_it_next(it, &pkg, query_flags)) == EPKG_OK) {
			gotone = true;
-

-
			if (opt & INFO_EXISTS) {
+
			if (opt & INFO_EXISTS)
				retcode = 0;
-
			} else if (opt & INFO_PRINT_DEP) {
-
				if (!(opt & INFO_QUIET))
-
					printf("%s-%s depends on:\n", pkg_get(pkg, PKG_NAME), pkg_get(pkg, PKG_VERSION));
-

-
				deps = pkg_deps(pkg);
-
				for (i = 0; deps[i] != NULL; i++) {
-
					printf("%s-%s\n", pkg_get(deps[i], PKG_NAME), pkg_get(deps[i], PKG_VERSION));
-
				}
-

-
				if (!(opt & INFO_QUIET))
-
					printf("\n");
-
			} else if (opt & INFO_PRINT_RDEP) {
-
				printf("%s-%s is required by:\n", pkg_get(pkg, PKG_NAME), pkg_get(pkg, PKG_VERSION));
-

-
				deps = pkg_rdeps(pkg);
-
				for (i = 0; deps[i] != NULL; i++) {
-
					printf("%s-%s\n", pkg_get(deps[i], PKG_NAME), pkg_get(deps[i], PKG_VERSION));
-
				}
-

-
				printf("\n");
-
			} else if (opt & INFO_LIST_FILES) {
-
				printf("%s-%s owns the following files:\n", pkg_get(pkg, PKG_NAME), pkg_get(pkg, PKG_VERSION));
-

-
				files = pkg_files(pkg);
-
				for (i = 0; files[i] != NULL; i++) {
-
					printf("%s\n", pkg_file_path(files[i]));
-
				}
-

-
				printf("\n");
-
			} else if (opt & INFO_SIZE) {
-
				humanize_number(size, sizeof(size), pkg_flatsize(pkg), "B", HN_AUTOSCALE, 0);
-
				printf("%s-%s size is %s\n", pkg_get(pkg, PKG_NAME), pkg_get(pkg, PKG_VERSION), size);
-
			} else if (opt & INFO_ORIGIN) {
-
				if (opt & INFO_QUIET)
-
					printf("%s\n", pkg_get(pkg, PKG_ORIGIN));
-
				else
-
					printf("%s-%s: %s\n", pkg_get(pkg, PKG_NAME), pkg_get(pkg, PKG_VERSION), pkg_get(pkg, PKG_ORIGIN));
-
			} else if (opt & INFO_PREFIX) {
-
				if (opt & INFO_QUIET)
-
					printf("%s\n", pkg_get(pkg, PKG_PREFIX));
-
				else
-
					printf("%s-%s: %s\n", pkg_get(pkg, PKG_NAME), pkg_get(pkg, PKG_VERSION), pkg_get(pkg, PKG_PREFIX));
-
			} else {
-
				if (opt & INFO_QUIET)
-
					printf("%s-%s\n", pkg_get(pkg, PKG_NAME), pkg_get(pkg, PKG_VERSION));
-
				else
-
					printf("%s-%s: %s\n", pkg_get(pkg, PKG_NAME), pkg_get(pkg, PKG_VERSION), pkg_get(pkg, PKG_COMMENT));
-
			}
+
			else
+
				print_info(pkg, opt);
		}
		if (ret != EPKG_END) {
			pkg_error_warn("can not iterate over results");
@@ -222,9 +202,11 @@ exec_info(int argc, char **argv)
			retcode = EX_SOFTWARE;

		pkgdb_it_free(it);
-
	}
-
	pkg_free(pkg);

+
		i++;
+
	} while (i < argc);
+

+
	pkg_free(pkg);
	pkgdb_close(db);

	return (retcode);