Radish alpha
H
rad:z3QDZAW2FAfuLvihrhiyDC9fAD8G9
HardenedBSD Package Manager
Radicle
Git
Add progressbar events.
Vsevolod Stakhov committed 11 years ago
commit 76a4e76d7ca9ed3362ec5f4c740b6eca4b2a21c7
parent b157407
3 files changed +40 -0
modified libpkg/pkg.h.in
@@ -1383,6 +1383,8 @@ typedef enum {
	PKG_EVENT_QUERY_SELECT,
	PKG_EVENT_SANDBOX_CALL,
	PKG_EVENT_SANDBOX_GET_STRING,
+
	PKG_EVENT_PROGRESS_START,
+
	PKG_EVENT_PROGRESS_TICK,
	/* errors */
	PKG_EVENT_ERROR,
	PKG_EVENT_ERRNO,
@@ -1531,6 +1533,13 @@ struct pkg_event {
			char **result;
			int64_t *len;
		} e_sandbox_call_str;
+
		struct {
+
			char *msg;
+
		} e_progress_start;
+
		struct {
+
			int64_t current;
+
			int64_t total;
+
		} e_progress_tick;
	};
};

modified libpkg/pkg_event.c
@@ -877,3 +877,31 @@ pkg_debug(int level, const char *fmt, ...)
	pkg_emit_event(&ev);
	free(ev.e_debug.msg);
}
+

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

+
	ev.type = PKG_EVENT_PROGRESS_START;
+
	va_start(ap, fmt);
+
	vasprintf(&ev.e_progress_start.msg, fmt, ap);
+
	va_end(ap);
+

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

+
void
+
pkg_emit_progress_tick(int64_t current, int64_t total)
+
{
+
	struct pkg_event ev;
+

+
	ev.type = PKG_EVENT_PROGRESS_TICK;
+
	ev.e_progress_tick.current = current;
+
	ev.e_progress_tick.total = total;
+

+
	pkg_emit_event(&ev);
+

+
}
modified libpkg/private/event.h
@@ -63,4 +63,7 @@ int pkg_emit_sandbox_get_string(pkg_sandbox_cb call, void *ud, char **str, int64
bool pkg_emit_query_yesno(bool deft, const char *msg);
int pkg_emit_query_select(const char *msg, const char **items, int ncnt, int deft);

+
void pkg_emit_progress_start(const char *fmt, ...);
+
void pkg_emit_progress_tick(int64_t current, int64_t total);
+

#endif