Radish alpha
H
rad:z3QDZAW2FAfuLvihrhiyDC9fAD8G9
HardenedBSD Package Manager
Radicle
Git
Use transactions for pkg-set.
Vsevolod Stakhov committed 11 years ago
commit f891d9f574e7cfbddd43c747108ce0828b7de694
parent 7782333
1 file changed +13 -0
modified src/set.c
@@ -218,6 +218,12 @@ exec_set(int argc, char **argv)
		return (EX_TEMPFAIL);
	}

+
	if (pkgdb_transaction_begin(db, NULL) != EPKG_OK) {
+
		pkgdb_close(db);
+
		warnx("Cannot start transaction for update");
+
		return (EX_TEMPFAIL);
+
	}
+

 
	if (oldvalue != NULL) {
		match = MATCH_ALL;
@@ -302,6 +308,13 @@ cleanup:
	free(oldvalue);
	pkg_free(pkg);

+
	if (retcode == 0) {
+
		pkgdb_transaction_commit(db, NULL);
+
	}
+
	else {
+
		pkgdb_transaction_rollback(db, NULL);
+
	}
+

	pkgdb_release_lock(db, PKGDB_LOCK_EXCLUSIVE);
	pkgdb_close(db);