Radish alpha
H
rad:z3QDZAW2FAfuLvihrhiyDC9fAD8G9
HardenedBSD Package Manager
Radicle
Git
Implement full view for pkg info
Baptiste Daroussin committed 14 years ago
commit 3989def5f828ddd4c08609aeb2e8a2a599901c09
parent 11b8d1e
4 files changed +55 -25
modified libpkg/pkg_private.h
@@ -63,18 +63,18 @@ struct pkg_category {
};

struct pkg_file {
-
	char path[MAXPATHLEN];
+
	char path[MAXPATHLEN +1];
	char sha256[65];
-
	char uname[MAXLOGNAME];
-
	char gname[MAXLOGNAME];
+
	char uname[MAXLOGNAME +1];
+
	char gname[MAXLOGNAME +1];
	mode_t perm;
	STAILQ_ENTRY(pkg_file) next;
};

struct pkg_dir {
-
	char path[MAXPATHLEN];
-
	char uname[MAXLOGNAME];
-
	char gname[MAXLOGNAME];
+
	char path[MAXPATHLEN +1];
+
	char uname[MAXLOGNAME +1];
+
	char gname[MAXLOGNAME +1];
	mode_t perm;
	STAILQ_ENTRY(pkg_dir) next;
};
@@ -120,12 +120,12 @@ struct pkg_remote_repo {
};

struct pkg_user {
-
	char name[MAXLOGNAME];
+
	char name[MAXLOGNAME+1];
	STAILQ_ENTRY(pkg_user) next;
};

struct pkg_group {
-
	char name[MAXLOGNAME];
+
	char name[MAXLOGNAME+1];
	STAILQ_ENTRY(pkg_group) next;
};

modified libpkg/pkgdb.c
@@ -462,7 +462,7 @@ pkgdb_open(struct pkgdb **db, pkgdb_t type)
			return (EPKG_FATAL);
		}

-
		sqlite3_snprintf(sizeof(sql), sql, "ATTACH \"%s\" as remote;", remotepath);
+
		sqlite3_snprintf(sizeof(sql), sql, "ATTACH \"%s\" AS remote;", remotepath);

		if (sql_exec((*db)->sqlite, sql) != EPKG_OK) {
			pkgdb_close(*db);
@@ -667,7 +667,7 @@ pkgdb_query(struct pkgdb *db, const char *pattern, match_t match)
	}

	snprintf(sql, sizeof(sql),
-
			"SELECT id as rowid, origin, name, version, comment, desc, "
+
			"SELECT id AS rowid, origin, name, version, comment, desc, "
				"message, arch, osversion, maintainer, www, "
				"prefix, flatsize, licenselogic "
			"FROM packages AS p%s "
@@ -692,9 +692,9 @@ pkgdb_query_remote(struct pkgdb *db, const char *pattern)
	struct pkg *pkg = NULL;
	int ret;
	char sql[] = ""
-
		"SELECT rowid, origin, name, version, comment, desc, "
+
		"SELECT id AS rowid, origin, name, version, comment, desc, "
			"arch, osversion, maintainer, www, pkgsize, "
-
			"flatsize as newflatsize, cksum, path "
+
			"flatsize AS newflatsize, cksum, path AS repopath "
		"FROM remote.packages "
		"WHERE origin = ?1";
	char sql_deps[] = ""
@@ -1702,10 +1702,10 @@ pkgdb_query_upgrades(struct pkgdb *db)
	}

	const char sql[] = ""
-
		"SELECT l.id as rowid, l.origin as origin, l.name as name, l.version as version, l.comment as comment, l.desc as desc, "
-
		"l.message as message, l.arch as arch, l.osversion as osversion, l.maintainer as maintainer, "
-
		"l.www as www, l.prefix as prefix, l.flatsize as flatsize, r.version as version, r.flatsize as flatsize, "
-
		"r.pkgsize as pkgsize, r.path as repopath "
+
		"SELECT l.id AS rowid, l.origin AS origin, l.name AS name, l.version AS version, l.comment AS comment, l.desc AS desc, "
+
		"l.message AS message, l.arch AS arch, l.osversion AS osversion, l.maintainer AS maintainer, "
+
		"l.www AS www, l.prefix AS prefix, l.flatsize AS flatsize, r.version AS version, r.flatsize AS flatsize, "
+
		"r.pkgsize AS pkgsize, r.path AS repopath "
		"FROM main.packages AS l, "
		"remote.packages AS r "
		"WHERE l.origin = r.origin "
@@ -1730,10 +1730,10 @@ pkgdb_query_downgrades(struct pkgdb *db)
	}

	const char sql[] = ""
-
		"SELECT l.id as rowid, l.origin as origin, l.name as name, l.version as version, l.comment as comment, l.desc as desc, "
-
		"l.message as message, l.arch as arch, l.osversion as osversion, l.maintainer as maintainer, "
-
		"l.www as www, l.prefix as prefix, l.flatsize as flatsize, r.version as version, r.flatsize as flatsize, "
-
		"r.pkgsize as pkgsize, r.path as repopath "
+
		"SELECT l.id AS rowid, l.origin AS origin, l.name AS name, l.version AS version, l.comment AS comment, l.desc AS desc, "
+
		"l.message AS message, l.arch AS arch, l.osversion AS osversion, l.maintainer AS maintainer, "
+
		"l.www AS www, l.prefix AS prefix, l.flatsize AS flatsize, r.version AS version, r.flatsize AS flatsize, "
+
		"r.pkgsize AS pkgsize, r.path AS repopath "
		"FROM main.packages AS l, "
		"remote.packages AS r "
		"WHERE l.origin = r.origin "
@@ -1753,7 +1753,7 @@ pkgdb_query_autoremove(struct pkgdb *db)
	sqlite3_stmt *stmt;

	const char sql[] = ""
-
		"SELECT id as rowid, origin, name, version, comment, desc, "
+
		"SELECT id AS rowid, origin, name, version, comment, desc, "
		"message, arch, osversion, maintainer, www, prefix, "
		"flatsize FROM packages WHERE automatic=1 AND "
		"(SELECT deps.origin FROM deps where deps.origin = packages.origin) "
@@ -1784,7 +1784,7 @@ pkgdb_rquery(struct pkgdb *db, const char *pattern, match_t match, pkgdb_field f

	sbuf_cat(sql, "SELECT origin, name, version, comment, "
			"desc, arch, arch, osversion, maintainer, www, "
-
			"flatsize, pkgsize, cksum, path as repopath FROM remote.packages");
+
			"flatsize, pkgsize, cksum, path AS repopath FROM remote.packages");

	switch (match) {
		case MATCH_ALL:
modified pkg/info.c
@@ -25,9 +25,35 @@ 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;
	char size[7];

-
	if (opt & INFO_PRINT_DEP) {
+
	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("Categories:");
+
		while (pkg_categories(pkg, &cat) == EPKG_OK)
+
			printf(" %s", pkg_category_name(cat));
+
		printf("\n");
+
		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));
+
		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));

@@ -84,7 +110,7 @@ void
usage_info(void)
{
	fprintf(stderr, "usage: pkg info\n");
-
	fprintf(stderr, "       pkg info [-aegxXdrlsqO] <pkg-name>\n\n");
+
	fprintf(stderr, "       pkg info [-aegxXdrlsqOf] <pkg-name>\n\n");
	fprintf(stderr, "For more information see 'pkg help info'.\n");
}

@@ -98,7 +124,7 @@ exec_info(int argc, char **argv)
{
	struct pkgdb *db;
	struct pkgdb_it *it;
-
	int query_flags = PKG_LOAD_BASIC;
+
	int query_flags = PKG_LOAD_BASIC|PKG_LOAD_CATEGORIES|PKG_LOAD_LICENSES;
	struct pkg *pkg = NULL;
	unsigned int opt = 0;
	match_t match = MATCH_EXACT;
@@ -155,6 +181,9 @@ exec_info(int argc, char **argv)
			case 'p':
				opt |= INFO_PREFIX;
				break;
+
			case 'f':
+
				opt |= INFO_FULL;
+
				break;
			default:
				usage_info();
				return(EX_USAGE);
modified pkg/info.h
@@ -10,6 +10,7 @@
#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);