Radish alpha
H
rad:z3QDZAW2FAfuLvihrhiyDC9fAD8G9
HardenedBSD Package Manager
Radicle
Git
Emit explanation in DEVELOPER_MODE for the fatal error
Bryan Drewery committed 13 years ago
commit 9722a39b5ee6864fdec7ca0abaf8e1ae9ac25a3c
parent 94618b1
5 files changed +27 -2
modified libpkg/pkg.h
@@ -984,6 +984,7 @@ typedef enum {
	PKG_EVENT_NOREMOTEDB,
	PKG_EVENT_NOLOCALDB,
	PKG_EVENT_FILE_MISMATCH,
+
	PKG_EVENT_DEVELOPER_MODE,
} pkg_event_t;

struct pkg_event {
modified libpkg/pkg_event.c
@@ -64,6 +64,22 @@ pkg_emit_error(const char *fmt, ...)
}

void
+
pkg_emit_developer_mode(const char *fmt, ...)
+
{
+
	struct pkg_event ev;
+
	va_list ap;
+

+
	ev.type = PKG_EVENT_DEVELOPER_MODE;
+

+
	va_start(ap, fmt);
+
	vasprintf(&ev.e_pkg_error.msg, fmt, ap);
+
	va_end(ap);
+

+
	pkg_emit_event(&ev);
+
	free(ev.e_pkg_error.msg);
+
}
+

+
void
pkg_emit_errno(const char *func, const char *arg)
{
	struct pkg_event ev;
modified libpkg/pkg_ports.c
@@ -173,8 +173,10 @@ meta_dirrm(struct plist *p, char *line, bool try)
	if (!try) {
		if (p->stage != NULL)
			return (EPKG_FATAL);
-
		if (developer)
+
		if (developer) {
+
			pkg_emit_developer_mode("Plist error: @dirrm %s", line);
			return (EPKG_FATAL);
+
		}
	}
	return (EPKG_OK);
}
@@ -245,8 +247,10 @@ file(struct plist *p, char *line)
	if (p->stage != NULL)
		return (EPKG_FATAL);
	pkg_config_bool(PKG_CONFIG_DEVELOPER_MODE, &developer);
-
	if (developer)
+
	if (developer) {
+
		pkg_emit_developer_mode("Plist error, missing file: %s", line);
		return (EPKG_FATAL);
+
	}
	return (EPKG_OK);
}

modified libpkg/private/event.h
@@ -46,5 +46,6 @@ void pkg_emit_noremotedb(const char *);
void pkg_emit_nolocaldb(void);
void pkg_emit_file_mismatch(struct pkg *pkg, struct pkg_file *f, const char *newsum);
void pkg_emit_newpkgversion(void);
+
void pkg_emit_developer_mode(const char *fmt, ...);

#endif
modified pkg/event.c
@@ -59,6 +59,9 @@ event_callback(void *data, struct pkg_event *ev)
	case PKG_EVENT_ERROR:
		warnx("%s", ev->e_pkg_error.msg);
		break;
+
	case PKG_EVENT_DEVELOPER_MODE:
+
		warnx("DEVELOPER_MODE: %s", ev->e_pkg_error.msg);
+
		break;
	case PKG_EVENT_FETCHING:
		if (quiet || !isatty(fileno(stdin)))
			break;