[libglnx] console: Add an "n items" API
- From: Colin Walters <walters src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [libglnx] console: Add an "n items" API
- Date: Wed, 13 Dec 2017 17:57:22 +0000 (UTC)
commit a8f96bd5f7e5a0cec6e4c40774e0eea99d0bd0c8
Author: Colin Walters <walters verbum org>
Date: Tue Dec 12 14:06:08 2017 -0500
console: Add an "n items" API
It's often really useful to see the counts, not just the percentage.
glnx-console.c | 26 ++++++++++++++++++++++++++
glnx-console.h | 6 +++++-
2 files changed, 31 insertions(+), 1 deletions(-)
---
diff --git a/glnx-console.c b/glnx-console.c
index c6d9331..3874765 100644
--- a/glnx-console.c
+++ b/glnx-console.c
@@ -280,6 +280,32 @@ glnx_console_progress_text_percent (const char *text,
text_percent_internal (text, percentage);
}
+/**
+ * glnx_console_progress_n_items:
+ * @text: Show this text before the progress bar
+ * @current: An integer for how many items have been processed
+ * @total: An integer for how many items there are total
+ *
+ * On a tty, print to the console @text followed by [@current/@total],
+ * then an ASCII art progress bar, like glnx_console_progress_text_percent().
+ *
+ * You must have called glnx_console_lock() before invoking this
+ * function.
+ */
+void
+glnx_console_progress_n_items (const char *text,
+ guint current,
+ guint total)
+{
+ g_return_if_fail (current <= total);
+ g_return_if_fail (total > 0);
+
+ g_autofree char *newtext = g_strdup_printf ("%s (%u/%u)", text, current, total);
+ /* Special case current == total to ensure we end at 100% */
+ int percentage = (current == total) ? 100 : (((double)current) / total * 100);
+ glnx_console_progress_text_percent (newtext, percentage);
+}
+
void
glnx_console_text (const char *text)
{
diff --git a/glnx-console.h b/glnx-console.h
index 8c1d811..108dc40 100644
--- a/glnx-console.h
+++ b/glnx-console.h
@@ -36,7 +36,11 @@ void glnx_console_lock (GLnxConsoleRef *ref);
void glnx_console_text (const char *text);
void glnx_console_progress_text_percent (const char *text,
- guint percentage);
+ guint percentage);
+
+void glnx_console_progress_n_items (const char *text,
+ guint current,
+ guint total);
void glnx_console_unlock (GLnxConsoleRef *ref);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]