sd_notifyf(false, "X_IMPORT_PROGRESS=%u%%", percent);
- if (isatty_safe(STDERR_FILENO)) {
- _cleanup_free_ char *s = NULL;
-
- if (asprintf(&s, "%s %s/%s",
- special_glyph(SPECIAL_GLYPH_ARROW_RIGHT),
- FORMAT_BYTES(e->written_uncompressed),
- FORMAT_BYTES(e->st.st_size)) < 0)
- return;
-
- draw_progress_bar(s, percent);
- } else
+ if (isatty_safe(STDERR_FILENO))
+ (void) draw_progress_barf(
+ percent,
+ "%s %s/%s",
+ special_glyph(SPECIAL_GLYPH_ARROW_RIGHT),
+ FORMAT_BYTES(e->written_uncompressed),
+ FORMAT_BYTES(e->st.st_size));
+ else
log_info("Exported %u%%.", percent);
e->last_percent = percent;
sd_notifyf(false, "X_IMPORT_PROGRESS=%u%%", percent);
- if (isatty_safe(STDERR_FILENO)) {
- _cleanup_free_ char *s = NULL;
-
- if (asprintf(&s, "%s %s/%s",
- special_glyph(SPECIAL_GLYPH_ARROW_RIGHT),
- FORMAT_BYTES(e->written_uncompressed),
- FORMAT_BYTES(e->quota_referenced)) < 0)
- return;
-
- draw_progress_bar(s, percent);
- } else
+ if (isatty_safe(STDERR_FILENO))
+ (void) draw_progress_barf(
+ percent,
+ "%s %s/%s",
+ special_glyph(SPECIAL_GLYPH_ARROW_RIGHT),
+ FORMAT_BYTES(e->written_uncompressed),
+ FORMAT_BYTES(e->quota_referenced));
+ else
log_info("Exported %u%%.", percent);
e->last_percent = percent;
sd_notifyf(false, "X_IMPORT_PROGRESS=%u%%", percent);
- if (isatty_safe(STDERR_FILENO)) {
- _cleanup_free_ char *s = NULL;
-
- if (asprintf(&s, "%s %s/%s",
- special_glyph(SPECIAL_GLYPH_ARROW_RIGHT),
- FORMAT_BYTES(i->written_compressed),
- FORMAT_BYTES(i->input_stat.st_size)) < 0)
- return;
-
- draw_progress_bar(s, percent);
- } else
+ if (isatty_safe(STDERR_FILENO))
+ (void) draw_progress_barf(
+ percent,
+ "%s %s/%s",
+ special_glyph(SPECIAL_GLYPH_ARROW_RIGHT),
+ FORMAT_BYTES(i->written_compressed),
+ FORMAT_BYTES(i->input_stat.st_size));
+ else
log_info("Imported %u%%.", percent);
i->last_percent = percent;
sd_notifyf(false, "X_IMPORT_PROGRESS=%u%%", percent);
- if (isatty_safe(STDERR_FILENO)) {
- _cleanup_free_ char *s = NULL;
-
- if (asprintf(&s, "%s %s/%s",
- special_glyph(SPECIAL_GLYPH_ARROW_RIGHT),
- FORMAT_BYTES(i->written_compressed),
- FORMAT_BYTES(i->input_stat.st_size)) < 0)
- return;
-
- draw_progress_bar(s, percent);
- } else
+ if (isatty_safe(STDERR_FILENO))
+ (void) draw_progress_barf(
+ percent,
+ "%s %s/%s",
+ special_glyph(SPECIAL_GLYPH_ARROW_RIGHT),
+ FORMAT_BYTES(i->written_compressed),
+ FORMAT_BYTES(i->input_stat.st_size));
+ else
log_info("Imported %u%%.", percent);
i->last_percent = percent;
static int progress_bytes(uint64_t n_bytes, void *userdata) {
Partition *p = ASSERT_PTR(userdata);
- _cleanup_free_ char *s = NULL;
p->copy_blocks_done += n_bytes;
- if (asprintf(&s, "%s %s %s %s/%s",
- strna(p->copy_blocks_path),
- special_glyph(SPECIAL_GLYPH_ARROW_RIGHT),
- strna(p->definition_path),
- FORMAT_BYTES(p->copy_blocks_done),
- FORMAT_BYTES(p->copy_blocks_size)) < 0)
- return log_oom();
+ (void) draw_progress_barf(
+ p->copy_blocks_done >= p->copy_blocks_size ? 100.0 : /* catch division be zero */
+ 100.0 * (double) p->copy_blocks_done / (double) p->copy_blocks_size,
+ "%s %s %s %s/%s",
+ strna(p->copy_blocks_path),
+ special_glyph(SPECIAL_GLYPH_ARROW_RIGHT),
+ strna(p->definition_path),
+ FORMAT_BYTES(p->copy_blocks_done),
+ FORMAT_BYTES(p->copy_blocks_size));
- draw_progress_bar(s,
- p->copy_blocks_done >= p->copy_blocks_size ? 100.0 : /* catch division be zero */
- 100.0 * (double) p->copy_blocks_done / (double) p->copy_blocks_size);
return 0;
}
draw_progress_bar_unbuffered(prefix, percentage);
}
+int draw_progress_barf(double percentage, const char *prefixf, ...) {
+ _cleanup_free_ char *s = NULL;
+ va_list ap;
+ int r;
+
+ va_start(ap, prefixf);
+ r = vasprintf(&s, prefixf, ap);
+ va_end(ap);
+
+ if (r < 0)
+ return -ENOMEM;
+
+ draw_progress_bar(s, percentage);
+ return 0;
+}
+
void clear_progress_bar(const char *prefix) {
WITH_BUFFERED_STDERR;
clear_progress_bar_unbuffered(prefix);
bool shall_tint_background(void);
void draw_progress_bar(const char *prefix, double percentage);
+int draw_progress_barf(double percentage, const char *prefixf, ...) _printf_(2, 3);
void clear_progress_bar(const char *prefix);
void draw_progress_bar_unbuffered(const char *prefix, double percentage);
void clear_progress_bar_unbuffered(const char *prefix);
for (double d = 0; d <= 100; d += 0.5) {
usleep_safe(random_u64_range(20 * USEC_PER_MSEC));
- draw_progress_bar(PROGRESS_PREFIX, d);
+ draw_progress_barf(d, PROGRESS_PREFIX "[" PID_FMT "]", getpid_cached());
if (!paused && d >= 50) {
clear_progress_bar(PROGRESS_PREFIX);
}
}
- draw_progress_bar(PROGRESS_PREFIX, 100);
+ draw_progress_barf(100, PROGRESS_PREFIX "[" PID_FMT "]", getpid_cached());
usleep_safe(300 * MSEC_PER_SEC);
- clear_progress_bar(PROGRESS_PREFIX);
+ clear_progress_bar(PROGRESS_PREFIX "[0123456789]" );
fputs("Done.\n", stdout);
}