Radish alpha
H
HardenedBSD Package Manager
Radicle
Git (anonymous pull)
Log in to clone via SSH
better output and make use of the new PKGLT and PKGGT
Baptiste Daroussin committed 15 years ago
commit b87732481a90886831ff15ce397ae5b9cbecf880
parent 15fc803a57fe0b63fb52b51728d41ea71388da26
3 files changed +53 -14
modified libpkg/pkg.h
@@ -417,7 +417,8 @@ struct pkgdb_it * pkgdb_query(struct pkgdb *db, const char *pattern,
/**
 * 
 */
-
struct pkgdb_it *pkgdb_repos_diff(struct pkgdb *db);
+
struct pkgdb_it *pkgdb_query_upgrades(struct pkgdb *db);
+
struct pkgdb_it *pkgdb_query_downgrades(struct pkgdb *db);

/**
 * @todo Return directly the struct pkg?
modified libpkg/pkgdb.c
@@ -1243,7 +1243,7 @@ pkgdb_compact(struct pkgdb *db)
}

struct pkgdb_it *
-
pkgdb_repos_diff(struct pkgdb *db)
+
pkgdb_query_upgrades(struct pkgdb *db)
{

	sqlite3_stmt *stmt;
@@ -1256,7 +1256,36 @@ pkgdb_repos_diff(struct pkgdb *db)
		"FROM main.packages AS l, "
		"remote.packages AS r "
		"WHERE l.origin = r.origin "
-
		"AND l.version != r.version";
+
		"AND PKGLT(l.version, r.version)";
+

+

+
	if (sqlite3_exec(db->sqlite, "ATTACH \"/var/db/pkg/repo.sqlite\" as remote;", NULL, NULL, &errmsg) != SQLITE_OK){
+
		pkg_error_set(EPKG_FATAL, "%s", errmsg);
+
		sqlite3_free(errmsg);
+
		return (NULL);
+
	}
+

+
	if (sqlite3_prepare_v2(db->sqlite, sql, -1, &stmt, NULL) != SQLITE_OK)
+
		return (NULL);
+

+
	return (pkgdb_it_new(db, stmt));
+
}
+

+
struct pkgdb_it *
+
pkgdb_query_downgrades(struct pkgdb *db)
+
{
+

+
	sqlite3_stmt *stmt;
+
	char *errmsg;
+

+
	const char sql[] = ""
+
		"SELECT l.id, l.origin, l.name, l.version, l.comment, l.desc, "
+
		"l.message, l.arch, l.osversion, l.maintainer, "
+
		"l.www, l.prefix, l.flatsize, r.version, r.flatsize, r.pkgsize, r.path "
+
		"FROM main.packages AS l, "
+
		"remote.packages AS r "
+
		"WHERE l.origin = r.origin "
+
		"AND PKGGT(l.version, r.version)";


	if (sqlite3_exec(db->sqlite, "ATTACH \"/var/db/pkg/repo.sqlite\" as remote;", NULL, NULL, &errmsg) != SQLITE_OK){
modified pkg/upgrade.c
@@ -69,27 +69,36 @@ exec_upgrade(int argc, char **argv)
	}


-
	if ((it = pkgdb_repos_diff(db)) == NULL) {
+
	if ((it = pkgdb_query_upgrades(db)) == NULL) {
		pkg_error_warn("can not query database");
		goto cleanup;
	}

+
	printf("Packages to be upgraded: \n");
	while ((retcode = pkgdb_it_next(it, &pkg, PKG_LOAD_BASIC|PKG_LOAD_NEWVERSION)) == EPKG_OK) {
		oldsize += pkg_flatsize(pkg);
		newsize += pkg_new_flatsize(pkg);
		dlsize += pkg_new_pkgsize(pkg);
-
		switch (pkg_version_cmp(pkg_get(pkg, PKG_VERSION), pkg_get(pkg, PKG_NEWVERSION))) {
-
			case -1:
-
				printf("%s: upgrade from %s to %s\n", pkg_get(pkg, PKG_NAME),
-
						pkg_get(pkg, PKG_VERSION), pkg_get(pkg, PKG_NEWVERSION));
-
				break;
-
			case 1:
-
				printf("%s: downgrade from %s to %s\n", pkg_get(pkg, PKG_NAME),
-
						pkg_get(pkg, PKG_VERSION), pkg_get(pkg, PKG_NEWVERSION));
-
				break;
-
		}
+
		printf("\t%s: %s -> %s\n", pkg_get(pkg, PKG_NAME), pkg_get(pkg, PKG_VERSION), pkg_get(pkg,PKG_NEWVERSION));
	}
	printf("\n");
+
	pkgdb_it_free(it);
+

+
	if ((it = pkgdb_query_downgrades(db)) == NULL) {
+
		pkg_error_warn("can not query database");
+
		goto cleanup;
+
	}
+

+
	printf("Packages to be downgraded: \n");
+
	while ((retcode = pkgdb_it_next(it, &pkg, PKG_LOAD_BASIC|PKG_LOAD_NEWVERSION)) == EPKG_OK) {
+
		oldsize += pkg_flatsize(pkg);
+
		newsize += pkg_new_flatsize(pkg);
+
		dlsize += pkg_new_pkgsize(pkg);
+
		printf("\t%s: %s -> %s\n", pkg_get(pkg, PKG_NAME), pkg_get(pkg, PKG_VERSION), pkg_get(pkg, PKG_NEWVERSION));
+
	}
+
	printf("\n");
+
	pkgdb_it_free(it);
+


	if (oldsize > newsize) {
		newsize *= -1;