Radish alpha
H
rad:z3QDZAW2FAfuLvihrhiyDC9fAD8G9
HardenedBSD Package Manager
Radicle
Git
Merge branch 'master' of github.com:pkgng/pkgng
Baptiste Daroussin committed 14 years ago
commit a48edcafd498c8b11224cc811534e7af9a49ab29
parent a5ac008
5 files changed +167 -164
modified pkg/info.c
@@ -2,7 +2,6 @@

#include <err.h>
#include <inttypes.h>
-
#include <libutil.h>
#include <pkg.h>
#include <stdbool.h>
#include <stdio.h>
@@ -11,6 +10,7 @@
#include <unistd.h>

#include "info.h"
+
#include "utils.h"

enum sign {
	LT,
@@ -20,107 +20,11 @@ enum sign {
	EQ
};

-
static int
-
print_info(struct pkg * const pkg, unsigned int opt)
-
{
-
	struct pkg_dep *dep = NULL;
-
	struct pkg_file *file = NULL;
-
	struct pkg_category *cat = NULL;
-
	struct pkg_license *lic = NULL;
-
	struct pkg_option *option = NULL;
-
	char size[7];
-

-
	if (opt & INFO_FULL) {
-
		printf("Name: %s\n", pkg_get(pkg, PKG_NAME));
-
		printf("Version: %s\n", pkg_get(pkg, PKG_VERSION));
-
		printf("Origin: %s\n", pkg_get(pkg, PKG_ORIGIN));
-
		printf("Prefix: %s\n", pkg_get(pkg, PKG_PREFIX));
-
		if (!pkg_list_isempty(pkg, PKG_CATEGORIES)) {
-
			printf("Categories:");
-
			while (pkg_categories(pkg, &cat) == EPKG_OK)
-
				printf(" %s", pkg_category_name(cat));
-
			printf("\n");
-
		}
-
		if (!pkg_list_isempty(pkg, PKG_LICENSES)) {
-
			printf("Licenses: ");
-
			while (pkg_licenses(pkg, &lic) == EPKG_OK) {
-
				printf(" %s", pkg_license_name(lic));
-
				if (pkg_licenselogic(pkg) != 1)
-
					printf(" %c", pkg_licenselogic(pkg));
-
				else
-
					printf(" ");
-
			}
-
			printf("\b \n");
-
		}
-
		printf("Maintainer: %s\n", pkg_get(pkg, PKG_MAINTAINER));
-
		printf("WWW: %s\n", pkg_get(pkg, PKG_WWW));
-
		printf("Comment: %s\n", pkg_get(pkg, PKG_COMMENT));
-
		if (!pkg_list_isempty(pkg, PKG_OPTIONS)) {
-
			printf("Options: \n");
-
			while (pkg_options(pkg, &option) == EPKG_OK)
-
				printf("\t%s: %s\n", pkg_option_opt(option), pkg_option_value(option));
-
		}
-
		humanize_number(size, sizeof(size), pkg_flatsize(pkg), "B", HN_AUTOSCALE, 0);
-
		printf("Flat size: %s\n", size);
-
		printf("Description:\n%s\n", pkg_get(pkg, PKG_DESC));
-
		printf("\n");
-
	} 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));
-

-
		while (pkg_deps(pkg, &dep) == EPKG_OK) {
-
			printf("%s-%s\n", pkg_dep_name(dep), pkg_dep_version(dep));
-
		}
-

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

-
		while (pkg_rdeps(pkg, &dep) == EPKG_OK) {
-
			printf("%s-%s\n", pkg_dep_name(dep), pkg_dep_version(dep));
-
		}
-

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

-
		while (pkg_files(pkg, &file) == EPKG_OK) {
-
			printf("%s\n", pkg_file_path(file));
-
		}
-

-
		if (!(opt & INFO_QUIET))
-
			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));
-
	}
-

-
	return (0);
-
}
-

void
usage_info(void)
{
-
	fprintf(stderr, "usage: pkg info -a\n");
+
	fprintf(stderr, "usage: pkg info <pkg-name>\n");
+
	fprintf(stderr, "       pkg info -a\n");
	fprintf(stderr, "       pkg info [-egxXdrlsqOf] <pkg-name>\n");
	fprintf(stderr, "       pkg info [-drlsqf] -F <pkg-file>\n\n");
	fprintf(stderr, "For more information see 'pkg help info'.\n");
modified pkg/info.h
@@ -1,17 +1,6 @@
#ifndef _INFO_H
#define _INFO_H

-
#define INFO_PRINT_DEP (1<<0)
-
#define INFO_PRINT_RDEP (1<<1)
-
#define INFO_EXISTS (1<<2)
-
#define INFO_LIST_FILES (1<<3)
-
#define INFO_SIZE (1<<4)
-
#define INFO_QUIET (1<<5)
-
#define INFO_ORIGIN (1<<6)
-
#define INFO_ORIGIN_SEARCH (1<<7)
-
#define INFO_PREFIX (1<<8)
-
#define INFO_FULL (1<<9)
-

int exec_info(int, char **);
void usage_info(void);

modified pkg/search.c
@@ -1,37 +1,36 @@
#include <stdio.h>
#include <stdbool.h>
#include <unistd.h>
-
#include <libutil.h>
#include <sysexits.h>

#include <pkg.h>

#include "search.h"
+
#include "utils.h"

void
usage_search(void)
{
-
	fprintf(stderr, "usage, pkg search [-gxXcd] pattern\n");
+
	fprintf(stderr, "usage: pkg search <pkg-name>\n");
+
	fprintf(stderr, "       pkg search [-fDsqop] <pkg-name>\n");
+
	fprintf(stderr, "       pkg search [-gxXcdfDsqop] <pattern>\n\n");
	fprintf(stderr, "For more information see 'pkg help search'.\n");
}

int
exec_search(int argc, char **argv)
{
-
	char *pattern;
+
	int retcode = EPKG_OK, ch;
+
	int flags = PKG_LOAD_BASIC;
+
	unsigned int opt = 0;
	match_t match = MATCH_EXACT;
-
	int  retcode = EPKG_OK;
	pkgdb_field field = FIELD_NAME;
-
	int ch;
-
	char size[7];
+
	const char *pattern = NULL;
	struct pkgdb *db = NULL;
	struct pkgdb_it *it = NULL;
	struct pkg *pkg = NULL;
-
	struct pkg_category *cat = NULL;
-
	struct pkg_license *lic = NULL;
-
	struct pkg_option *opt = NULL;

-
	while ((ch = getopt(argc, argv, "gxXcd")) != -1) {
+
	while ((ch = getopt(argc, argv, "gxXcdfDsqop")) != -1) {
		switch (ch) {
			case 'g':
				match = MATCH_GLOB;
@@ -48,6 +47,26 @@ exec_search(int argc, char **argv)
			case 'd':
				field = FIELD_DESC;
				break;
+
			case 'f':
+
				opt |= INFO_FULL;
+
				flags |= PKG_LOAD_CATEGORIES|PKG_LOAD_LICENSES|PKG_LOAD_OPTIONS;
+
				break;
+
			case 'D':
+
				opt |= INFO_PRINT_DEP;
+
				flags |= PKG_LOAD_DEPS;
+
				break;
+
			case 's':
+
				opt |= INFO_SIZE;
+
				break;
+
			case 'q':
+
				opt |= INFO_QUIET;
+
				break;
+
			case 'o':
+
				opt |= INFO_ORIGIN;
+
				break;
+
			case 'p':
+
				opt |= INFO_PREFIX;
+
				break;
			default:
				usage_search();
				return (EX_USAGE);
@@ -64,54 +83,17 @@ exec_search(int argc, char **argv)

	pattern = argv[0];

-
	if (pkgdb_open(&db, PKGDB_REMOTE) != EPKG_OK) {
-
		retcode = EPKG_FATAL;
-
		goto cleanup;
-
	}
+
	if (pkgdb_open(&db, PKGDB_REMOTE) != EPKG_OK)
+
		return (EX_IOERR);

	if ((it = pkgdb_rquery(db, pattern, match, field)) == NULL) {
-
		retcode = EPKG_FATAL;
-
		goto cleanup;
+
		pkgdb_close(db);
+
		return (1);
	}

-
	while (( retcode = pkgdb_it_next(it, &pkg, PKG_LOAD_BASIC|PKG_LOAD_CATEGORIES|PKG_LOAD_LICENSES|PKG_LOAD_OPTIONS)) == EPKG_OK) {
-
		printf("Name: %s\n", pkg_get(pkg, PKG_NAME));
-
		printf("Version: %s\n", pkg_get(pkg, PKG_VERSION));
-
		printf("Origin: %s\n", pkg_get(pkg, PKG_ORIGIN));
-
		printf("Prefix: %s\n", pkg_get(pkg, PKG_PREFIX));
-
		if (!pkg_list_isempty(pkg, PKG_CATEGORIES)) {
-
			printf("Categories:");
-
			while (pkg_categories(pkg, &cat) == EPKG_OK)
-
				printf(" %s", pkg_category_name(cat));
-
			printf("\n");
-
		}
-
		if (!pkg_list_isempty(pkg, PKG_LICENSES)) {
-
			printf("Licenses: ");
-
			while (pkg_licenses(pkg, &lic) == EPKG_OK) {
-
				printf(" %s", pkg_license_name(lic));
-
				if (pkg_licenselogic(pkg) != 1)
-
					printf(" %c", pkg_licenselogic(pkg));
-
				else
-
					printf(" ");
-
			}
-
			printf("\b \n");
-
		}
-
		printf("Maintainer: %s\n", pkg_get(pkg, PKG_MAINTAINER));
-
		printf("WWW: %s\n", pkg_get(pkg, PKG_WWW));
-
		printf("Comment: %s\n", pkg_get(pkg, PKG_COMMENT));
-
		if (!pkg_list_isempty(pkg, PKG_OPTIONS)) {
-
			printf("Options: \n");
-
			while (pkg_options(pkg, &opt) == EPKG_OK)
-
				printf("\t%s: %s\n", pkg_option_opt(opt), pkg_option_value(opt));
-
		}
-
		humanize_number(size, sizeof(size), pkg_new_flatsize(pkg), "B", HN_AUTOSCALE, 0);
-
		printf("Flat size: %s\n", size);
-
		humanize_number(size, sizeof(size), pkg_new_pkgsize(pkg), "B", HN_AUTOSCALE, 0);
-
		printf("Pkg size: %s\n", size);
-
		printf("\n");
-
	}
+
	while ((retcode = pkgdb_it_next(it, &pkg, flags)) == EPKG_OK)
+
		print_info(pkg, opt);

-
	cleanup:
	pkgdb_it_free(it);
	pkgdb_close(db);

modified pkg/utils.c
@@ -3,6 +3,7 @@

#include <err.h>
#include <errno.h>
+
#include <libutil.h>
#include <string.h>
#include <pkg.h>

@@ -26,3 +27,119 @@ query_yesno(const char *msg)

        return r;
}
+

+
int
+
print_info(struct pkg * const pkg, unsigned int opt)
+
{
+
        struct pkg_dep *dep = NULL;
+
        struct pkg_file *file = NULL;
+
        struct pkg_category *cat = NULL;
+
        struct pkg_license *lic = NULL;
+
        struct pkg_option *option = NULL;
+
        char size[7];
+

+
        if (opt & INFO_FULL) {
+
                printf("%-15s: %s\n", "Name", pkg_get(pkg, PKG_NAME));
+
                printf("%-15s: %s\n", "Version", pkg_get(pkg, PKG_VERSION));
+
                printf("%-15s: %s\n", "Origin", pkg_get(pkg, PKG_ORIGIN));
+
                printf("%-15s: %s\n", "Prefix", pkg_get(pkg, PKG_PREFIX));
+

+
                if (!pkg_list_isempty(pkg, PKG_CATEGORIES)) {
+
                        printf("%-15s:", "Categories");
+
                        while (pkg_categories(pkg, &cat) == EPKG_OK)
+
                                printf(" %s", pkg_category_name(cat));
+
                        printf("\n");
+
                }
+

+
                if (!pkg_list_isempty(pkg, PKG_LICENSES)) {
+
                        printf("%-15s:", "Licenses");
+
                        while (pkg_licenses(pkg, &lic) == EPKG_OK) {
+
                                printf(" %s", pkg_license_name(lic));
+
                                if (pkg_licenselogic(pkg) != 1)
+
                                        printf(" %c", pkg_licenselogic(pkg));
+
                                else
+
                                        printf(" ");
+
                        }
+
                        printf("\b \n");
+
                }
+
                printf("%-15s: %s\n", "Maintainer", pkg_get(pkg, PKG_MAINTAINER));
+
                printf("%-15s: %s\n", "WWW", pkg_get(pkg, PKG_WWW));
+
                printf("%-15s: %s\n", "Comment", pkg_get(pkg, PKG_COMMENT));
+

+
                if (!pkg_list_isempty(pkg, PKG_OPTIONS)) {
+
                        printf("%-15s: \n", "Options");
+
                        while (pkg_options(pkg, &option) == EPKG_OK)
+
                                printf("\t%s: %s\n", pkg_option_opt(option), pkg_option_value(option));
+
                }
+

+
		if (pkg_type(pkg) == PKG_INSTALLED) {
+
			humanize_number(size, sizeof(size), pkg_flatsize(pkg), "B", HN_AUTOSCALE, 0);
+
			printf("%-15s: %s\n", "Flat size", size);
+
		} else {
+
			humanize_number(size, sizeof(size), pkg_new_flatsize(pkg), "B", HN_AUTOSCALE, 0);
+
			printf("%-15s: %s\n", "Flat size", size);
+
			humanize_number(size, sizeof(size), pkg_new_pkgsize(pkg), "B", HN_AUTOSCALE, 0);
+
			printf("%-15s: %s\n", "Pkg size", size);
+
		}
+

+
                printf("%-15s: \n%s\n", "Description", pkg_get(pkg, PKG_DESC));
+
                printf("\n");
+
        } 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));
+

+
                while (pkg_deps(pkg, &dep) == EPKG_OK) {
+
                        printf("%s-%s\n", pkg_dep_name(dep), pkg_dep_version(dep));
+
                }
+

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

+
                while (pkg_rdeps(pkg, &dep) == EPKG_OK) {
+
                        printf("%s-%s\n", pkg_dep_name(dep), pkg_dep_version(dep));
+
                }
+

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

+
                while (pkg_files(pkg, &file) == EPKG_OK) {
+
                        printf("%s\n", pkg_file_path(file));
+
                }
+

+
                if (!(opt & INFO_QUIET))
+
                        printf("\n");
+
        } else if (opt & INFO_SIZE) {
+
		if (pkg_type(pkg) == PKG_INSTALLED) {
+
			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 {
+
			humanize_number(size, sizeof(size), pkg_new_flatsize(pkg), "B", HN_AUTOSCALE, 0);
+
			printf("%s-%s flat size is: %s\n", pkg_get(pkg, PKG_NAME), pkg_get(pkg, PKG_VERSION), size);
+
			humanize_number(size, sizeof(size), pkg_new_pkgsize(pkg), "B", HN_AUTOSCALE, 0);
+
			printf("%s-%s package 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));
+
        }
+

+
        return (0);
+
}
modified pkg/utils.h
@@ -1,7 +1,18 @@
#ifndef _UTILS_H
#define _UTILS_H

+
#define INFO_PRINT_DEP (1<<0)
+
#define INFO_PRINT_RDEP (1<<1)
+
#define INFO_EXISTS (1<<2)
+
#define INFO_LIST_FILES (1<<3)
+
#define INFO_SIZE (1<<4)
+
#define INFO_QUIET (1<<5)
+
#define INFO_ORIGIN (1<<6)
+
#define INFO_ORIGIN_SEARCH (1<<7)
+
#define INFO_PREFIX (1<<8)
+
#define INFO_FULL (1<<9)
+

int query_yesno(const char *msg);
-
int mkdirs(const char *path);
+
int print_info(struct pkg * const pkg, unsigned int opt);

#endif