diff options
author | Ryo Nakamura <upa@haeena.net> | 2022-10-25 01:47:39 +0900 |
---|---|---|
committer | Ryo Nakamura <upa@haeena.net> | 2022-10-25 01:47:39 +0900 |
commit | 47f6983148047975e00f48b1ef77f8c4c7f2fd73 (patch) | |
tree | 5ce9ac01f3b8b9c2bd66c7ffad0ffca35ff89e72 /src/pprint.c | |
parent | c83927cd5a56111a11c2f7879c6e444b31eddb27 (diff) |
wrap print progress in pprint
Diffstat (limited to 'src/pprint.c')
-rw-r--r-- | src/pprint.c | 32 |
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); + } +} + |