summaryrefslogtreecommitdiff
path: root/src/pprint.c
diff options
context:
space:
mode:
authorRyo Nakamura <upa@haeena.net>2022-10-25 01:47:39 +0900
committerRyo Nakamura <upa@haeena.net>2022-10-25 01:47:39 +0900
commit47f6983148047975e00f48b1ef77f8c4c7f2fd73 (patch)
tree5ce9ac01f3b8b9c2bd66c7ffad0ffca35ff89e72 /src/pprint.c
parentc83927cd5a56111a11c2f7879c6e444b31eddb27 (diff)
wrap print progress in pprint
Diffstat (limited to 'src/pprint.c')
-rw-r--r--src/pprint.c32
1 files changed, 32 insertions, 0 deletions
diff --git a/src/pprint.c b/src/pprint.c
new file mode 100644
index 0000000..51eb4ad
--- /dev/null
+++ b/src/pprint.c
@@ -0,0 +1,32 @@
+#include <stdio.h>
+#include <stdarg.h>
+#include <pthread.h>
+
+static int pprint_level = 1;
+/* level 1: print progress bar only.
+ * level 2: print copy start/done messages.
+ * level 3: print ssh connection establishment/disconnection.
+ * level 4: print chunk information.
+ */
+
+static pthread_mutex_t pprint_lock = PTHREAD_MUTEX_INITIALIZER;
+
+void pprint_set_level(int level)
+{
+ pprint_level = level;
+}
+
+void pprint(int level, const char *fmt, ...)
+{
+ va_list va;
+
+ if (level <= pprint_level) {
+ pthread_mutex_lock(&pprint_lock);
+ va_start(va, fmt);
+ vfprintf(stdout, fmt, va);
+ fflush(stdout);
+ va_end(va);
+ pthread_mutex_unlock(&pprint_lock);
+ }
+}
+