Radish alpha
H
rad:z3QDZAW2FAfuLvihrhiyDC9fAD8G9
HardenedBSD Package Manager
Radicle
Git
Use a single event for db creation errors.
Will Andrews committed 14 years ago
commit 2fce7922233b24be38726de0a4cb9f75fccd981a
parent b091aa0
4 files changed +10 -17
modified libpkg/pkg.h
@@ -586,8 +586,7 @@ typedef enum {
	PKG_EVENT_ALREADY_INSTALLED,
	PKG_EVENT_CKSUM_ERROR,
	PKG_EVENT_CONFIG_KEY_NOTFOUND,
-
	PKG_EVENT_CREATEDB_ERROR,
-
	PKG_EVENT_CREATEDB_ERROR_ERRNO,
+
	PKG_EVENT_CREATE_DB_ERROR,
	PKG_EVENT_DELETE_DEP_EXISTS,
	PKG_EVENT_ERROR_INSTALLING_DEP,
	PKG_EVENT_FETCH_ERROR,
@@ -622,9 +621,6 @@ struct pkg_handle *pkg_get_handle(void);
pkg_event_cb pkg_handle_get_event_callback(struct pkg_handle *);
void pkg_handle_set_event_callback(struct pkg_handle *, pkg_event_cb);

-
/* XXX maybe the event callback should also get a pointer to the handle, and
-
 * just drop arg1 altogether..? */
-

void __pkg_emit_event(struct pkg_handle *, pkg_event_t, int, ...);

#define	pkg_emit_event(ev, argc, argv...) \
modified libpkg/pkg_add.c
@@ -128,8 +128,6 @@ pkg_add(struct pkgdb *db, const char *path, struct pkg **pkg_p)
		retcode = ret;
		goto cleanup;
	}
-
	pkg_free(p);
-
	p = NULL;

	/*
	 * Check for dependencies
modified libpkg/pkg_create_repo.c
@@ -77,8 +77,8 @@ pkg_create_repo(char *path, void (progress)(struct pkg *pkg, void *data), void *
		"VALUES (?1, ?2, ?3, ?4);";

	if (!is_dir(path)) {
-
		pkg_emit_event(PKG_EVENT_CREATEDB_ERROR, /*argc*/2,
-
		    path, "not a directory");
+
		pkg_emit_event(PKG_EVENT_CREATE_DB_ERROR, /*argc*/3,
+
		    path, "not a directory", NULL);
		return EPKG_FATAL;
	}

@@ -89,7 +89,7 @@ pkg_create_repo(char *path, void (progress)(struct pkg *pkg, void *data), void *

	if (stat(repodb, &st) != -1)
		if (unlink(repodb) != 0) {
-
			pkg_emit_event(PKG_EVENT_CREATEDB_ERROR_ERRNO,
+
			pkg_emit_event(PKG_EVENT_CREATE_DB_ERROR,
			    /*argc*/3, path, repodb, strerror(errno));
			return EPKG_FATAL;
		}
modified libpkg/pkg_event.c
@@ -23,7 +23,6 @@ pkg_event_argument_check(pkg_event_t ev, int argc)
		break;
	case PKG_EVENT_ARCHIVE_COMP_UNSUP:
	case PKG_EVENT_ARCHIVE_ERROR:
-
	case PKG_EVENT_CREATEDB_ERROR:
	case PKG_EVENT_ERROR_INSTALLING_DEP:
	case PKG_EVENT_MISSING_DEP:
	case PKG_EVENT_OPEN_DB_ERROR:
@@ -33,7 +32,7 @@ pkg_event_argument_check(pkg_event_t ev, int argc)
	case PKG_EVENT_SQLITE_CONSTRAINT:
		assert(argc == 2);
		break;
-
	case PKG_EVENT_CREATEDB_ERROR_ERRNO:
+
	case PKG_EVENT_CREATE_DB_ERROR:
	case PKG_EVENT_IO_ERROR:
		assert(argc == 3);
		break;
@@ -66,11 +65,11 @@ libpkg_handle_event(pkg_event_t ev, void **argv)
	case PKG_EVENT_CONFIG_KEY_NOTFOUND:
		pkg_error_set(EPKG_FATAL, "unknown configuration key `%s'", argv[0]);
		break;
-
	case PKG_EVENT_CREATEDB_ERROR:
-
		pkg_error_set(EPKG_FATAL, "%s: %s", argv[0], argv[1]);
-
		break;
-
	case PKG_EVENT_CREATEDB_ERROR_ERRNO:
-
		pkg_error_set(EPKG_FATAL, "%s(%s): %s", argv[0], argv[1], argv[2]);
+
	case PKG_EVENT_CREATE_DB_ERROR:
+
		if (argv[2] == NULL)
+
			pkg_error_set(EPKG_FATAL, "%s: %s", argv[0], argv[1]);
+
		else
+
			pkg_error_set(EPKG_FATAL, "%s(%s): %s", argv[0], argv[1], argv[2]);
		break;
	case PKG_EVENT_DELETE_DEP_EXISTS:
		pkg_error_set(EPKG_REQUIRED, "%s", argv[0]);