Radish alpha
H
rad:z3QDZAW2FAfuLvihrhiyDC9fAD8G9
HardenedBSD Package Manager
Radicle
Git
Allow fetching packages and it's dependencies as requested
Marin Atanasov Nikolov committed 13 years ago
commit e62dd0e55fc04c7fedcb2d23dfa235bafbf9020e
parent 18b2cd3
3 files changed +20 -14
modified libpkg/pkg.h
@@ -676,7 +676,7 @@ struct pkgdb_it *pkgdb_query_upgrades(struct pkgdb *db, const char *reponame, bo
struct pkgdb_it *pkgdb_query_downgrades(struct pkgdb *db, const char *reponame);
struct pkgdb_it *pkgdb_query_delete(struct pkgdb *db, match_t type, int nbpkgs, char **pkgs, int recursive);
struct pkgdb_it *pkgdb_query_autoremove(struct pkgdb *db);
-
struct pkgdb_it *pkgdb_query_fetch(struct pkgdb *db, match_t type, int nbpkgs, char **pkgs, const char *reponame);
+
struct pkgdb_it *pkgdb_query_fetch(struct pkgdb *db, match_t type, int nbpkgs, char **pkgs, const char *reponame, int flags);

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

struct pkgdb_it *
-
pkgdb_query_fetch(struct pkgdb *db, match_t match, int nbpkgs, char **pkgs, const char *repo)
+
pkgdb_query_fetch(struct pkgdb *db, match_t match, int nbpkgs, char **pkgs, const char *repo, int flags)
{
	sqlite3_stmt *stmt = NULL;
	int i = 0;
@@ -3212,14 +3212,16 @@ pkgdb_query_fetch(struct pkgdb *db, match_t match, int nbpkgs, char **pkgs, cons
	sbuf_clear(sql);

	/* Append dependencies */
-
	sbuf_reset(sql);
-
	sbuf_printf(sql, deps_sql, reponame, reponame);
-
	sbuf_finish(sql);
-

-
	do {
-
		sql_exec(db->sqlite, sbuf_get(sql));
-
	} while (sqlite3_changes(db->sqlite) != 0);
-

+
	if (flags & PKG_LOAD_DEPS) {
+
		sbuf_reset(sql);
+
		sbuf_printf(sql, deps_sql, reponame, reponame);
+
		sbuf_finish(sql);
+
		
+
		do {
+
			sql_exec(db->sqlite, sbuf_get(sql));
+
		} while (sqlite3_changes(db->sqlite) != 0);
+
	}
+
		
	sbuf_reset(sql);
	sbuf_printf(sql, weight_sql, reponame);
	sbuf_finish(sql);
modified pkg/fetch.c
@@ -42,7 +42,7 @@
void
usage_fetch(void)
{
-
	fprintf(stderr, "usage: pkg fetch [-r reponame] [-yqgxXa] <pkg-name> <...>\n\n");
+
	fprintf(stderr, "usage: pkg fetch [-r reponame] [-yqdgxXadL] <pkg-name> <...>\n\n");
	fprintf(stderr, "For more information see 'pkg help fetch'.\n");
}

@@ -56,11 +56,12 @@ exec_fetch(int argc, char **argv)
	const char *reponame = NULL;
	int retcode = EXIT_FAILURE;
	int ch;
+
	int flags = PKG_LOAD_BASIC;
	bool yes = false;
	bool auto_update = true;
	match_t match = MATCH_EXACT;

-
	while ((ch = getopt(argc, argv, "ygxXr:qaL")) != -1) {
+
	while ((ch = getopt(argc, argv, "ygxXr:qaLd")) != -1) {
		switch (ch) {
		case 'y':
			yes = true;
@@ -86,6 +87,9 @@ exec_fetch(int argc, char **argv)
		case 'L':
			auto_update = false;
			break;
+
		case 'd':
+
			flags |= PKG_LOAD_DEPS;
+
			break;
		default:
			usage_fetch();
			return (EX_USAGE);
@@ -117,10 +121,10 @@ exec_fetch(int argc, char **argv)
		goto cleanup;
	}

-
	if ((it = pkgdb_query_fetch(db, match, argc, argv, reponame)) == NULL)
+
	if ((it = pkgdb_query_fetch(db, match, argc, argv, reponame, flags)) == NULL)
		goto cleanup;

-
	while (pkgdb_it_next(it, &pkg, PKG_LOAD_BASIC|PKG_LOAD_DEPS) == EPKG_OK) {
+
	while (pkgdb_it_next(it, &pkg, flags) == EPKG_OK) {
		pkg_jobs_add(jobs, pkg);
		pkg = NULL;
	}