| |
#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));
|
| |
}
|
| |
}
|
| |
|
| |
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);
|
| |
}
|
| |
|
| |
|
| |
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);
|
| |
}
|
| |
|
| |
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");
|