diff options
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); + } +} + |