blob: 4191efb42f2c3554bd63512e08f782ac92473e2d [file] [log] [blame]
diff --git a/ubi-utils/libscan.c b/ubi-utils/libscan.c
index dc47a89..e7d33e3 100644
--- a/ubi-utils/libscan.c
+++ b/ubi-utils/libscan.c
@@ -51,7 +51,7 @@ static int all_ff(const void *buf, int len)
int ubi_scan(struct mtd_dev_info *mtd, int fd, struct ubi_scan_info **info,
int verbose)
{
- int eb, v = (verbose == 2), pr = (verbose == 1);
+ int eb, v = (verbose == 2), pr = (verbose == 1) && isatty(STDOUT_FILENO);
struct ubi_scan_info *si;
unsigned long long sum = 0;
diff --git a/ubi-utils/ubiformat.c b/ubi-utils/ubiformat.c
index f286264..e421b3f 100644
--- a/ubi-utils/ubiformat.c
+++ b/ubi-utils/ubiformat.c
@@ -53,6 +53,7 @@ struct args {
unsigned int force:1;
unsigned int quiet:1;
unsigned int verbose:1;
+ unsigned int interactive:1;
unsigned int override_ec:1;
unsigned int novtbl:1;
unsigned int manual_subpage;
@@ -477,7 +478,7 @@ static int flash_image(libmtd_t libmtd, const struct mtd_dev_info *mtd,
char buf[mtd->eb_size];
long long ec;
- if (!args.quiet && !args.verbose) {
+ if (args.interactive && !args.quiet && !args.verbose) {
printf("\r" PROGRAM_NAME ": flashing eraseblock %d -- %2lld %% complete ",
eb, (long long)(eb + 1) * 100 / divisor);
fflush(stdout);
@@ -495,7 +496,7 @@ static int flash_image(libmtd_t libmtd, const struct mtd_dev_info *mtd,
err = mtd_erase(libmtd, mtd, args.node_fd, eb);
if (err) {
- if (!args.quiet)
+ if (args.interactive && !args.quiet)
printf("\n");
sys_errmsg("failed to erase eraseblock %d", eb);
@@ -570,7 +571,7 @@ static int flash_image(libmtd_t libmtd, const struct mtd_dev_info *mtd,
break;
}
- if (!args.quiet && !args.verbose)
+ if (args.interactive && !args.quiet && !args.verbose)
printf("\n");
close(fd);
return eb + 1;
@@ -601,7 +602,7 @@ static int format(libmtd_t libmtd, const struct mtd_dev_info *mtd,
for (eb = start_eb; eb < mtd->eb_cnt; eb++) {
long long ec;
- if (!args.quiet && !args.verbose) {
+ if (args.interactive && !args.quiet && !args.verbose) {
printf("\r" PROGRAM_NAME ": formatting eraseblock %d -- %2lld %% complete ",
eb, (long long)(eb + 1 - start_eb) * 100 / (mtd->eb_cnt - start_eb));
fflush(stdout);
@@ -625,7 +626,7 @@ static int format(libmtd_t libmtd, const struct mtd_dev_info *mtd,
err = mtd_erase(libmtd, mtd, args.node_fd, eb);
if (err) {
- if (!args.quiet)
+ if (args.interactive && !args.quiet)
printf("\n");
sys_errmsg("failed to erase eraseblock %d", eb);
@@ -658,7 +659,7 @@ static int format(libmtd_t libmtd, const struct mtd_dev_info *mtd,
err = mtd_write(libmtd, mtd, args.node_fd, eb, 0, hdr,
write_size, NULL, 0, 0);
if (err) {
- if (!args.quiet && !args.verbose)
+ if (args.interactive && !args.quiet && !args.verbose)
printf("\n");
sys_errmsg("cannot write EC header (%d bytes buffer) to eraseblock %d",
write_size, eb);
@@ -680,7 +681,7 @@ static int format(libmtd_t libmtd, const struct mtd_dev_info *mtd,
}
}
- if (!args.quiet && !args.verbose)
+ if (args.interactive && !args.quiet && !args.verbose)
printf("\n");
if (!novtbl) {
@@ -729,6 +730,12 @@ int main(int argc, char * const argv[])
if (err)
goto out_close_mtd;
+ args.interactive = isatty(STDOUT_FILENO);
+ if (!args.interactive && errno != EINVAL && errno != ENOTTY) {
+ sys_errmsg("cannot access stdout");
+ goto out_close_mtd;
+ }
+
err = mtd_get_info(libmtd, &mtd_info);
if (err) {
if (errno == ENODEV)