Radish alpha
H
HardenedBSD Package Manager
Radicle
Git (anonymous pull)
Log in to clone via SSH
Allow fetching packages and it's dependencies as requested
Marin Atanasov Nikolov committed 14 years ago
commit e62dd0e55fc04c7fedcb2d23dfa235bafbf9020e
parent 18b2cd33f38fba28aaf999c6759ff22a5977f300
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;
	}