void progress(uproc_io_stream *stream, const char *new_label, double percent) { static const char *label; static double last_percent; if (new_label) { last_percent = -1.0; label = new_label; } if (percent < 0.0 || last_percent >= 100.0 || (!new_label && fabs(percent - last_percent) < 0.05 && percent < 100.0)) { return; } char bar[PROGRESS_WIDTH + 1] = ""; int p = percent / 100.0 * PROGRESS_WIDTH; for (int i = 0; i < PROGRESS_WIDTH; i++) { bar[i] = i < p ? '#' : ' '; } uproc_io_printf(stream, "\r%s: [%s] %5.1f%%", label, bar, percent); if (percent >= 100.0) { uproc_io_printf(stream, "\n"); } last_percent = percent; }
void uproc_features_print(uproc_io_stream *stream) { uproc_io_printf(stream, "libuproc version %s\n", uproc_features_version()); uproc_io_printf(stream, "zlib: %s\n", uproc_features_zlib_version()); uproc_io_printf(stream, "OpenMP: %d\n", uproc_features_openmp()); uproc_io_printf(stream, "mmap: %s\n", uproc_features_mmap() ? "yes" : "no"); }