Radish alpha
H
rad:z3QDZAW2FAfuLvihrhiyDC9fAD8G9
HardenedBSD Package Manager
Radicle
Git
Convert use bitmap for options passed to jobs (this will simplify some WIP on newsolver)
Baptiste Daroussin committed 13 years ago
commit bbc11c69d6778658a560c6d0a1f5d30c932ae61d
parent 5cdc080
9 files changed +36 -32
modified libpkg/pkg.h
@@ -835,13 +835,20 @@ int pkg_add(struct pkgdb *db, const char *path, unsigned flags);
#define PKG_ADD_AUTOMATIC		(1U << 2)
#define PKG_ADD_FORCE			(1U << 3)

+
typedef enum _pkg_job_flags {
+
	PKG_JOBS_FORCE=		(1U << 0),
+
	PKG_JOBS_AUTOMATIC=	(1U << 1),
+
	PKG_JOBS_RECURSIVE=	(1U << 2),
+
	PKG_JOBS_DRY_RUN=	(1U << 3),
+
} pkg_jobs_flags;
+

/**
 * Allocate a new pkg_jobs.
 * @param db A pkgdb open with PKGDB_REMOTE.
 * @return An error code.
 */
int pkg_jobs_new(struct pkg_jobs **jobs, pkg_jobs_t type, struct pkgdb *db,
-
		 bool force, bool dry_run);
+
		 pkg_jobs_flags flags);

/**
 * Free a pkg_jobs
modified libpkg/pkg_jobs.c
@@ -44,14 +44,14 @@
static int pkg_jobs_fetch(struct pkg_jobs *j);

int
-
pkg_jobs_new(struct pkg_jobs **j, pkg_jobs_t t, struct pkgdb *db, bool force,
-
	     bool dry_run)
+
pkg_jobs_new(struct pkg_jobs **j, pkg_jobs_t t, struct pkgdb *db,
+
	     pkg_jobs_flags flags)
{
	assert(db != NULL);
	assert(t != PKG_JOBS_INSTALL || db->type == PKGDB_REMOTE);

-
	if (!dry_run && pkgdb_lock(db) != EPKG_OK)
-
		return (EPKG_FATAL);
+
	if (((flags & PKG_JOBS_DRY_RUN) == 0) &&
+
	    pkgdb_lock(db) != EPKG_OK)

	if ((*j = calloc(1, sizeof(struct pkg_jobs))) == NULL) {
		pkg_emit_errno("calloc", "pkg_jobs");
@@ -60,10 +60,7 @@ pkg_jobs_new(struct pkg_jobs **j, pkg_jobs_t t, struct pkgdb *db, bool force,

	(*j)->db = db;
	(*j)->type = t;
-
	if (dry_run)
-
		(*j)->flags |= PKG_JOB_FLAGS_DRY_RUN;
-
	if (force)
-
		(*j)->flags |= PKG_JOB_FLAGS_FORCE;
+
	(*j)->flags |= flags;

	return (EPKG_OK);
}
@@ -74,7 +71,7 @@ pkg_jobs_free(struct pkg_jobs *j)
	if (j == NULL)
		return;

-
	if ((j->flags & PKG_JOB_FLAGS_DRY_RUN) == 0)
+
	if ((j->flags & PKG_JOBS_DRY_RUN) == 0)
		pkgdb_unlock(j->db);

	HASH_FREE(j->jobs, pkg, pkg_free);
@@ -242,7 +239,7 @@ pkg_jobs_install(struct pkg_jobs *j)
			}
		}

-
		if ((j->flags & PKG_JOB_FLAGS_FORCE) != 0)
+
		if ((j->flags & PKG_JOBS_FORCE) != 0)
			flags |= PKG_ADD_FORCE;
		flags |= PKG_ADD_UPGRADE;
		if (automatic)
@@ -280,10 +277,10 @@ pkg_jobs_deinstall(struct pkg_jobs *j)
	int retcode;
	int flags = 0;

-
	if ((j->flags & PKG_JOB_FLAGS_DRY_RUN) != 0)
+
	if ((j->flags & PKG_JOBS_DRY_RUN) != 0)
		return (EPKG_OK); /* Do nothing */

-
	if ((j->flags & PKG_JOB_FLAGS_FORCE) != 0)
+
	if ((j->flags & PKG_JOBS_FORCE) != 0)
		flags = PKG_DELETE_FORCE;

	while (pkg_jobs(j, &p) == EPKG_OK) {
@@ -374,7 +371,7 @@ pkg_jobs_fetch(struct pkg_jobs *j)
		return (EPKG_FATAL);
	}

-
	if ((j->flags & PKG_JOB_FLAGS_DRY_RUN) != 0)
+
	if ((j->flags & PKG_JOBS_DRY_RUN) != 0)
		return (EPKG_OK); /* don't download anything */

	/* Fetch */
modified libpkg/private/pkg.h
@@ -154,11 +154,6 @@ struct pkg_jobs {
	unsigned	 flags;
};

-
typedef enum _pkg_job_flags {
-
	PKG_JOB_FLAGS_FORCE =	(1 << 0 ),
-
	PKG_JOB_FLAGS_DRY_RUN =	(1 << 1),
-
} pkg_job_flags;
-

struct pkg_jobs_node {
	struct pkg	*pkg;
	size_t		 nrefs;
modified pkg/autoremove.c
@@ -54,6 +54,7 @@ exec_autoremove(int argc, char **argv)
	int64_t flatsize, newflatsize;
	char size[7];
	int ch;
+
	pkg_jobs_flags f = PKG_JOBS_FORCE;
	bool yes = false;
	bool dry_run = false;
	nbactions = nbdone = 0;
@@ -68,6 +69,7 @@ exec_autoremove(int argc, char **argv)
			break;
		case 'n':
			dry_run = true;
+
			f |= PKG_JOBS_DRY_RUN;
			break;
		default:
			break;
@@ -92,7 +94,7 @@ exec_autoremove(int argc, char **argv)
	}

	/* Always force packages to be removed */
-
	if (pkg_jobs_new(&jobs, PKG_JOBS_DEINSTALL, db, true, dry_run)
+
	if (pkg_jobs_new(&jobs, PKG_JOBS_DEINSTALL, db, f)
	    != EPKG_OK) {
		pkgdb_close(db);
		return (EX_IOERR);
modified pkg/check.c
@@ -145,7 +145,7 @@ fix_deps(struct pkgdb *db, struct deps_head *dh, int nbpkgs, bool yes)
	if (pkgdb_open(&db, PKGDB_REMOTE) != EPKG_OK)
		return (EPKG_ENODB);

-
	if (pkg_jobs_new(&jobs, PKG_JOBS_INSTALL, db, false, false) != EPKG_OK)
+
	if (pkg_jobs_new(&jobs, PKG_JOBS_INSTALL, db, 0) != EPKG_OK)
		free(pkgs);

	if ((it = pkgdb_query_installs(db, MATCH_EXACT, nbpkgs, pkgs, NULL, false, false)) == NULL) {
modified pkg/delete.c
@@ -55,11 +55,12 @@ exec_delete(int argc, char **argv)
	match_t match = MATCH_EXACT;
	int ch;
	int flags = PKG_LOAD_BASIC;
-
	bool force = false;
+
	pkg_jobs_flags f = 0;
	bool yes = false;
	bool dry_run = false;
	int retcode = EX_SOFTWARE;
	int recursive = 0;
+
	bool force = false;
	bool haspkg = false;
	const char *origin;
	nbactions = nbdone = 0;
@@ -70,13 +71,14 @@ exec_delete(int argc, char **argv)
			match = MATCH_ALL;
			break;
		case 'f':
-
			force = true;
+
			f |= PKG_JOBS_FORCE;
			break;
		case 'g':
			match = MATCH_GLOB;
			break;
		case 'n':
			dry_run = true;
+
			f |= PKG_JOBS_DRY_RUN;
			break;
		case 'q':
			quiet = true;
@@ -116,7 +118,7 @@ exec_delete(int argc, char **argv)
		return (EPKG_FATAL);
	}

-
	if (pkg_jobs_new(&jobs, PKG_JOBS_DEINSTALL, db, force, dry_run)
+
	if (pkg_jobs_new(&jobs, PKG_JOBS_DEINSTALL, db, f)
	    != EPKG_OK) {
		pkgdb_close(db);
		return (EX_IOERR);
modified pkg/fetch.c
@@ -117,7 +117,7 @@ exec_fetch(int argc, char **argv)
		return (EX_IOERR);
	}

-
	if (pkg_jobs_new(&jobs, PKG_JOBS_FETCH, db, false, false) != EPKG_OK) {
+
	if (pkg_jobs_new(&jobs, PKG_JOBS_FETCH, db, 0) != EPKG_OK) {
		goto cleanup;
	}

modified pkg/install.c
@@ -63,7 +63,7 @@ exec_install(int argc, char **argv)
	bool auto_update = true;
	bool recursive = false;
	bool automatic = false;
-

+
	pkg_jobs_flags f = 0;
	match_t match = MATCH_EXACT;
	bool force = false;
	bool dry_run = false;
@@ -76,6 +76,7 @@ exec_install(int argc, char **argv)
			break;
		case 'f':
			force = true;
+
			f |= PKG_JOBS_FORCE;
			break;
		case 'g':
			match = MATCH_GLOB;
@@ -85,6 +86,7 @@ exec_install(int argc, char **argv)
			break;
		case 'n':
			dry_run = true;
+
			f |= PKG_JOBS_DRY_RUN;
			break;
		case 'q':
			quiet = true;
@@ -126,14 +128,11 @@ exec_install(int argc, char **argv)
	if (auto_update && (retcode = pkgcli_update(false)) != EPKG_OK)
		return (retcode);

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

-
	if (pkg_jobs_new(&jobs, PKG_JOBS_INSTALL, db, force, dry_run)
-
	    != EPKG_OK) {
+
	if (pkg_jobs_new(&jobs, PKG_JOBS_INSTALL, db, f) != EPKG_OK)
		goto cleanup;
-
	}

	if ((it = pkgdb_query_installs(db, match, argc, argv, reponame,
	    force, recursive)) == NULL)
modified pkg/upgrade.c
@@ -56,6 +56,7 @@ exec_upgrade(int argc, char **argv)
	bool dry_run = false;
	bool auto_update = true;
	nbactions = nbdone = 0;
+
	pkg_jobs_flags f;

	while ((ch = getopt(argc, argv, "fLnqr:y")) != -1) {
		switch (ch) {
@@ -67,6 +68,7 @@ exec_upgrade(int argc, char **argv)
			break;
		case 'n':
			dry_run = true;
+
			f |= PKG_JOBS_DRY_RUN;
			break;
		case 'q':
			quiet = true;
@@ -105,7 +107,7 @@ exec_upgrade(int argc, char **argv)
		return (EX_IOERR);
	}

-
	if (pkg_jobs_new(&jobs, PKG_JOBS_INSTALL, db, false, dry_run)
+
	if (pkg_jobs_new(&jobs, PKG_JOBS_INSTALL, db, f)
	    != EPKG_OK) {
		goto cleanup;
	}