Radish alpha
H
rad:z3QDZAW2FAfuLvihrhiyDC9fAD8G9
HardenedBSD Package Manager
Radicle
Git
Add errno to the struct pkg_event.e_errno so errno is not accidentally overwritten somewhere in the middle. Add error message in json for ERRNO events, add the errno number to the data object
Baptiste Daroussin committed 13 years ago
commit 0ed55be88317371b82eabd70b3883a578811e00b
parent 561fb33
2 files changed +10 -2
modified libpkg/pkg.h.in
@@ -1131,6 +1131,7 @@ struct pkg_event {
		struct {
			const char *func;
			const char *arg;
+
			int no;
		} e_errno;
		struct {
			char *msg;
modified libpkg/pkg_event.c
@@ -25,6 +25,8 @@
 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */

+
#include <errno.h>
+
#include <string.h>
#include <syslog.h>

#define _WITH_DPRINTF
@@ -52,8 +54,12 @@ pipeevent(struct pkg_event *ev)
	switch(ev->type) {
	case PKG_EVENT_ERRNO:
		sbuf_printf(msg, "{ \"type\": \"ERROR\", "
-
		    "\"data\": {\"msg\": \"%s(%s)\"}}",
-
		    ev->e_errno.func, ev->e_errno.arg);
+
		    "\"data\": {"
+
		    "\"msg\": \"%s(%s): %s\","
+
		    "\"errno\": %d}}",
+
		    ev->e_errno.func, ev->e_errno.arg,
+
		    strerror(ev->e_errno.no),
+
		    ev->e_errno.no);
		break;
	case PKG_EVENT_ERROR:
		sbuf_printf(msg, "{ \"type\": \"ERROR\", "
@@ -353,6 +359,7 @@ pkg_emit_errno(const char *func, const char *arg)
	ev.type = PKG_EVENT_ERRNO;
	ev.e_errno.func = func;
	ev.e_errno.arg = arg;
+
	ev.e_errno.no = errno;

	pkg_emit_event(&ev);
}