Radish alpha
H
HardenedBSD Package Manager
Radicle
Git (anonymous pull)
Log in to clone via SSH
Fix constraint events so they are in parity with original usage.
Will Andrews committed 15 years ago
commit 458231849260cca61f6adf078af3fabeb9c15ed3
parent ca9432593f4a1bc2ae6dd8a819b9d2ea84440fca
2 files changed +16 -9
modified libpkg/pkg_event.c
@@ -18,7 +18,6 @@ pkg_event_argument_check(pkg_event_t ev, int argc)
	case PKG_EVENT_INVALID_DB_STATE:
	case PKG_EVENT_MALLOC_FAILED:
	case PKG_EVENT_UNKNOWN_SCRIPT:
-
	case PKG_EVENT_SQLITE_CONSTRAINT:
	case PKG_EVENT_SQLITE_ERROR:
		assert(argc == 1);
		break;
@@ -31,6 +30,7 @@ pkg_event_argument_check(pkg_event_t ev, int argc)
	case PKG_EVENT_PARSE_ERROR:
	case PKG_EVENT_REPO_KEY_UNAVAIL:
	case PKG_EVENT_REPO_KEY_UNUSABLE:
+
	case PKG_EVENT_SQLITE_CONSTRAINT:
		assert(argc == 2);
		break;
	case PKG_EVENT_CREATEDB_FAILED_ERRNO:
@@ -109,8 +109,7 @@ libpkg_handle_event(pkg_event_t ev, void **argv)
		pkg_error_set(EPKG_FATAL, "RSA key %s unusable: %s", argv[0], argv[1]);
		break;
	case PKG_EVENT_SQLITE_CONSTRAINT:
-
		/* XXX: this is not specific enough - see original usage */
-
		pkg_error_set(EPKG_FATAL, "constraint violation: %s", argv[0]);
+
		pkg_error_set(EPKG_FATAL, "constraint violation on %s: %s", argv[0], argv[1]);
		break;
	case PKG_EVENT_SQLITE_ERROR:
		pkg_error_set(EPKG_FATAL, "sqlite: %s", argv[0]);
modified libpkg/pkgdb.c
@@ -928,7 +928,8 @@ pkgdb_register_pkg(struct pkgdb *db, struct pkg *pkg)

	if ((ret = sqlite3_step(stmt_pkg)) != SQLITE_DONE) {
		if ( ret == SQLITE_CONSTRAINT) {
-
			pkg_emit_event(PKG_EVENT_SQLITE_CONSTRAINT, /*argc*/1, pkg);
+
			pkg_emit_event(PKG_EVENT_SQLITE_CONSTRAINT, /*argc*/2,
+
			    "pkg", pkg_get(pkg, PKG_ORIGIN));
			retcode = EPKG_FATAL;
		} else
			retcode = ERROR_SQLITE(s);
@@ -971,7 +972,8 @@ pkgdb_register_pkg(struct pkgdb *db, struct pkg *pkg)

		if ((ret = sqlite3_step(stmt_dep)) != SQLITE_DONE) {
			if ( ret == SQLITE_CONSTRAINT) {
-
				pkg_emit_event(PKG_EVENT_SQLITE_CONSTRAINT, /*argc*/1,dep);
+
				pkg_emit_event(PKG_EVENT_SQLITE_CONSTRAINT,
+
				    /*argc*/2, "deps", pkg_dep_origin(dep));
				retcode = EPKG_FATAL;
			} else
				retcode = ERROR_SQLITE(s);
@@ -996,7 +998,9 @@ pkgdb_register_pkg(struct pkgdb *db, struct pkg *pkg)

		if ((ret = sqlite3_step(stmt_conflict)) != SQLITE_DONE) {
			if ( ret == SQLITE_CONSTRAINT) {
-
				pkg_emit_event(PKG_EVENT_SQLITE_CONSTRAINT, /*argc*/1, conflict);
+
				pkg_emit_event(PKG_EVENT_SQLITE_CONSTRAINT,
+
				    /*argc*/2, "conflicts",
+
				    pkg_conflict_glob(conflict));
				retcode = EPKG_FATAL;
			} else
				retcode = ERROR_SQLITE(s);
@@ -1023,7 +1027,8 @@ pkgdb_register_pkg(struct pkgdb *db, struct pkg *pkg)

		if ((ret = sqlite3_step(stmt_file)) != SQLITE_DONE) {
			if (ret == SQLITE_CONSTRAINT) {
-
				pkg_emit_event(PKG_EVENT_SQLITE_CONSTRAINT, /*argc*/1, file);
+
				pkg_emit_event(PKG_EVENT_SQLITE_CONSTRAINT,
+
				    /*argc*/2, "path", pkg_file_path(file));
				retcode = EPKG_FATAL;
			} else
				retcode = ERROR_SQLITE(s);
@@ -1047,7 +1052,8 @@ pkgdb_register_pkg(struct pkgdb *db, struct pkg *pkg)
			
		if ((ret = sqlite3_step(stmt_dirs)) != SQLITE_DONE) {
			if ( ret == SQLITE_CONSTRAINT) {
-
				pkg_emit_event(PKG_EVENT_SQLITE_CONSTRAINT, /*argc*/1, dir);
+
				pkg_emit_event(PKG_EVENT_SQLITE_CONSTRAINT,
+
				    /*argc*/2, "dirs", pkg_dir_path(dir));
				retcode = EPKG_FATAL;
			} else
				retcode = ERROR_SQLITE(s);
@@ -1072,7 +1078,9 @@ pkgdb_register_pkg(struct pkgdb *db, struct pkg *pkg)

		if (sqlite3_step(stmt_script) != SQLITE_DONE) {
			if ( ret == SQLITE_CONSTRAINT) {
-
				pkg_emit_event(PKG_EVENT_SQLITE_CONSTRAINT, /*argc*/1, script);
+
				pkg_emit_event(PKG_EVENT_SQLITE_CONSTRAINT,
+
				    /*argc*/2, "scripts",
+
				    pkg_script_data(script));
				retcode = EPKG_FATAL;
			} else
				retcode = ERROR_SQLITE(s);