summaryrefslogtreecommitdiff
path: root/src/pprint.c
diff options
context:
space:
mode:
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);
+ }
+}
+