Radish alpha
H
rad:z3QDZAW2FAfuLvihrhiyDC9fAD8G9
HardenedBSD Package Manager
Radicle
Git
Refactor the I/O error events into a single event.
Will Andrews committed 14 years ago
commit 3e8242dd96110fed1e8e003bfa73e198f3449cfc
parent 5124083
6 files changed +19 -35
modified libpkg/fetch.c
@@ -29,7 +29,7 @@ pkg_fetch_file(const char *url, const char *dest, void *data, fetch_cb cb)
	int retcode = EPKG_OK;

	if ((fd = open(dest, O_WRONLY|O_CREAT|O_TRUNC, 0644)) == -1) {
-
		pkg_emit_event(PKG_EVENT_OPEN_FAILED, /*argc*/2, dest,
+
		pkg_emit_event(PKG_EVENT_IO_ERROR, /*argc*/3, "open", dest,
		    strerror(errno));
		retcode = EPKG_FATAL;
		goto cleanup;
@@ -55,7 +55,7 @@ pkg_fetch_file(const char *url, const char *dest, void *data, fetch_cb cb)
			break;

		if (write(fd, buf, r) != r) {
-
			pkg_emit_event(PKG_EVENT_WRITE_FAILED, /*argc*/2,
+
			pkg_emit_event(PKG_EVENT_IO_ERROR, /*argc*/3, "write",
			    dest, strerror(errno));
			retcode = EPKG_FATAL;
			goto cleanup;
modified libpkg/packing.c
@@ -121,8 +121,8 @@ packing_append_file(struct packing *pack, const char *filepath, const char *newp

	if (archive_entry_size(pack->entry) > 0) {
		if ((fd = open(filepath, O_RDONLY)) < 0) {
-
			pkg_emit_event(PKG_EVENT_OPEN_FAILED, /*argc*/2,
-
			    filepath, strerror(errno));
+
			pkg_emit_event(PKG_EVENT_IO_ERROR, /*argc*/3,
+
			    "open", filepath, strerror(errno));
			retcode = EPKG_FATAL;
			goto cleanup;
		}
modified libpkg/pkg.h
@@ -583,7 +583,6 @@ typedef enum {
	/* errors */
	PKG_EVENT_ARCHIVE_COMP_UNSUP = 65536,
	PKG_EVENT_ARCHIVE_ERROR,
-
	PKG_EVENT_ACCESS_ERROR,
	PKG_EVENT_ALREADY_INSTALLED,
	PKG_EVENT_CKSUM_FAILED,
	PKG_EVENT_CONFIG_KEY_NOTFOUND,
@@ -593,21 +592,17 @@ typedef enum {
	PKG_EVENT_DELETE_DEP_EXISTS,
	PKG_EVENT_ERROR_INSTALLING_DEP,
	PKG_EVENT_FETCH_FAILED,
-
	PKG_EVENT_FSTAT_ERROR,
	PKG_EVENT_INVALID_DB_STATE,
+
	PKG_EVENT_IO_ERROR,
	PKG_EVENT_MALLOC_FAILED,
	PKG_EVENT_MISSING_DEP,
	PKG_EVENT_OPEN_DB_FAILED,
-
	PKG_EVENT_OPEN_ERROR,
-
	PKG_EVENT_OPEN_FAILED,
	PKG_EVENT_PARSE_ERROR,
-
	PKG_EVENT_READ_ERROR,
	PKG_EVENT_REPO_KEY_UNAVAIL,
	PKG_EVENT_REPO_KEY_UNUSABLE,
	PKG_EVENT_SQLITE_CONSTRAINT,
	PKG_EVENT_SQLITE_ERROR,
	PKG_EVENT_UNKNOWN_SCRIPT,
-
	PKG_EVENT_WRITE_FAILED,
} pkg_event_t;

/**
modified libpkg/pkg_event.c
@@ -31,17 +31,15 @@ libpkg_handle_event(pkg_event_t ev, void **argv)
		pkg_error_set(EPKG_FATAL, "archive error at %s: %s",
		    argv[0], archive_error_string(argv[1]));
		break;
-
	case PKG_EVENT_OPEN_FAILED:
-
		pkg_error_set(EPKG_FATAL, "open of %s failed: %s", argv[0], argv[1]);
+
	case PKG_EVENT_IO_ERROR:
+
		pkg_error_set(EPKG_FATAL, "I/O error: %s(%s): %s",
+
		    /*call*/argv[0], /*arg*/argv[1], /*strerror*/argv[2]);
		break;
	case PKG_EVENT_FETCH_FAILED:
		pkg_error_set(EPKG_FATAL, "%s", argv[0]);
		break;
-
	case PKG_EVENT_WRITE_FAILED:
-
		pkg_error_set(EPKG_FATAL, "write(%s): %s", argv[0], argv[1]);
-
		break;
	case PKG_EVENT_MALLOC_FAILED:
-
		pkg_error_set(EPKG_FATAL, "malloc: %s", argv[0]);
+
		pkg_error_set(EPKG_FATAL, "allocation error: %s", argv[0]);
		break;
	case PKG_EVENT_UNKNOWN_SCRIPT:
		pkg_error_set(EPKG_FATAL, "unknown script '%s'", argv[0]);
@@ -89,15 +87,6 @@ libpkg_handle_event(pkg_event_t ev, void **argv)
		pkg_error_set(EPKG_FATAL, "package '%s' failed checksum",
		    pkg_get(argv[0], PKG_NAME));
		break;
-
	case PKG_EVENT_FSTAT_ERROR:
-
		pkg_error_set(EPKG_FATAL, "fstat(%s): %s", argv[0], argv[1]);
-
		break;
-
	case PKG_EVENT_READ_ERROR:
-
		pkg_error_set(EPKG_FATAL, "read(%s): %s\n", argv[0], argv[1]);
-
		break;
-
	case PKG_EVENT_ACCESS_ERROR:
-
		pkg_error_set(EPKG_FATAL, "access(%s): %s\n", argv[0], argv[1]);
-
		break;
	case PKG_EVENT_INVALID_DB_STATE:
		pkg_error_set(EPKG_FATAL, "%s", argv[0]);
		break;
modified libpkg/pkg_util.c
@@ -70,15 +70,15 @@ file_to_buffer(const char *path, char **buffer, off_t *sz)
		return (ERROR_BAD_ARG("buffer"));

	if ((fd = open(path, O_RDONLY)) == -1) {
-
		pkg_emit_event(PKG_EVENT_OPEN_ERROR, /*argc*/2, path,
-
		    strerror(errno));
+
		pkg_emit_event(PKG_EVENT_IO_ERROR, /*argc*/3, "open",
+
		    path, strerror(errno));
		return EPKG_FATAL;
	}

	if (fstat(fd, &st) == -1) {
		close(fd);
-
		pkg_emit_event(PKG_EVENT_FSTAT_ERROR, /*argc*/2, path,
-
		    strerror(errno));
+
		pkg_emit_event(PKG_EVENT_IO_ERROR, /*argc*/3, "fstat",
+
		    path, strerror(errno));
		return EPKG_FATAL;
	}

@@ -91,7 +91,7 @@ file_to_buffer(const char *path, char **buffer, off_t *sz)

	if (read(fd, *buffer, st.st_size) == -1) {
		close(fd);
-
		pkg_emit_event(PKG_EVENT_READ_ERROR, /*argc*/2,
+
		pkg_emit_event(PKG_EVENT_IO_ERROR, /*argc*/3, "read",
		    path, strerror(errno));
		return EPKG_FATAL;
	}
@@ -214,7 +214,7 @@ sha256_file(const char *path, char out[65])
	SHA256_CTX sha256;

	if ((fp = fopen(path, "rb")) == NULL) {
-
		pkg_emit_event(PKG_EVENT_OPEN_FAILED, /*argc*/2,
+
		pkg_emit_event(PKG_EVENT_IO_ERROR, /*argc*/3, "open",
		    path, strerror(errno));
		return EPKG_FATAL;
	}
@@ -227,7 +227,7 @@ sha256_file(const char *path, char out[65])
	if (ferror(fp) != 0) {
		fclose(fp);
		out[0] = '\0';
-
		pkg_emit_event(PKG_EVENT_READ_ERROR, /*argc*/2,
+
		pkg_emit_event(PKG_EVENT_IO_ERROR, /*argc*/3, "read",
		    path, strerror(errno));
		return EPKG_FATAL;
	}
modified libpkg/pkgdb.c
@@ -263,12 +263,12 @@ pkgdb_open(struct pkgdb **db, pkgdb_t type)
	retcode = access(localpath, R_OK);
	if (retcode == -1) {
		if (errno != ENOENT) {
-
			pkg_emit_event(PKG_EVENT_ACCESS_ERROR, /*argc*/2,
+
			pkg_emit_event(PKG_EVENT_IO_ERROR, /*argc*/3, "access",
			    localpath, strerror(errno));
			return EPKG_FATAL;
		}
		else if (eaccess(dbdir, W_OK) != 0) {
-
			pkg_emit_event(PKG_EVENT_ACCESS_ERROR, /*argc*/2,
+
			pkg_emit_event(PKG_EVENT_IO_ERROR, /*argc*/3, "eaccess",
			    dbdir, strerror(errno));
			return EPKG_FATAL;
		}
@@ -281,7 +281,7 @@ pkgdb_open(struct pkgdb **db, pkgdb_t type)
		snprintf(remotepath, sizeof(remotepath), "%s/repo.sqlite", dbdir);

		if (access(remotepath, R_OK) != 0) {
-
			pkg_emit_event(PKG_EVENT_ACCESS_ERROR, /*argc*/2,
+
			pkg_emit_event(PKG_EVENT_IO_ERROR, /*argc*/3, "access",
			    remotepath, strerror(errno));
			return EPKG_FATAL;
		}