From: Jerry Van Baren <gerald.vanbaren@ge.com>
To: u-boot@lists.denx.de
Subject: [U-Boot-Users] [PATCH] Add flash programming counter]
Date: Thu, 06 Mar 2008 14:35:21 -0500 [thread overview]
Message-ID: <47D04779.1070404@ge.com> (raw)
In-Reply-To: <47D02734.3000705@discworld.dascon.de>
Michael Schwingen wrote:
> Wolfgang Denk wrote:
>> Please let's stay terse. Printing a dot is a single character on the
>> console. I dislike funny stuff which requires output of non-printing
>> characters or (weven worse!) terminal specific escape sequences.
>>
> Backspace or CR without LF should work on all terminals, no?
>
> No matter how it is implemented, I am strongly in favor of *some* kind
> of progress output.
>
> If it is possible to estimate how long the operation will take, this
> would be a big plus IMHO (which precludes the simple dots).
>
> cu
> Michael
Hi Michael, Stefan, Wolfgang,
I understand where you are coming from and like countdowns a lot when
driving the system from a terminal.
The dark side of countdowns with \r characters is if you capture it in a
log file. It isn't impossibly bad, but you end up with a lot of crap in
your log file.
The dark side of dots, as you point out, is that you don't know how many
dots are suppose to print, at least the first couple of times you do it.
Here is a thought, what about printing a bar and then print the dots.
How sophisticated is our printf() formatting capabilities? Hmmm. How
about something like this (I think the?
#include <stdio.h>
#include <unistd.h>
int main(int argc, char *argv[])
{
int k;
int cnt;
if(sscanf(argv[1], "%d", &cnt) != 1) {
fprintf(stderr, "sscanf() failed\n");
return 0;
} else {
printf("%*c\r", (cnt + (1 << 14) - 1) / (1 << 14), '|');
fflush(stdout);
for(k = 0; k < cnt; k++) {
if ((k % (1 << 14)) == 0) {
sleep(1);
putchar('.');
fflush(stdout);
}
}
printf("\n");
}
return 0;
}
Example use:
After three dots are printed:
./dots 491520
... |
At the end:
> ./dots 491520
..............................
Note that, if our printf() doesn't understand the '*' modifier, it could
still be done with a static string that is at least as long as the
expected length. That would be much less desirable, however, because it
is hard to guess what the maximum length string should be.
The above also is a little iffy with line wrapping if you have more than
79 dots.
Using '\r' rather than '\n' on the progress bar is on the iffy side. It
looks cool on a video terminal, but '\n' is a safer choice. It also has
less problems with line wrapping (ugly, but still understandable).
Substituting
printf("%*c\n", (cnt + (1 << 14) - 1) / (1 << 14), '|');
looks like:
> ./dots 491520
|
..............................
Best regards,
gvb
next prev parent reply other threads:[~2008-03-06 19:35 UTC|newest]
Thread overview: 34+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-03-05 19:43 [U-Boot-Users] [PATCH] Add flash programming counter] York Sun
2008-03-06 6:20 ` Stefan Roese
2008-03-06 8:19 ` Martin Krause
2008-03-06 12:48 ` Wolfgang Denk
2008-03-06 13:33 ` Stefan Roese
2008-03-06 16:32 ` Wolfgang Denk
2008-03-06 17:17 ` Michael Schwingen
2008-03-06 19:35 ` Jerry Van Baren [this message]
2008-03-07 13:02 ` Clemens Koller
2008-03-07 13:11 ` Stefan Roese
2008-03-07 13:26 ` Jerry Van Baren
2008-03-07 13:35 ` Stefan Roese
2008-03-07 13:57 ` Jerry Van Baren
2008-03-07 14:04 ` Stefan Roese
2008-03-07 14:15 ` Wolfgang Denk
2008-03-07 14:18 ` Kumar Gala
2008-03-07 14:22 ` Stefan Roese
2008-03-07 14:13 ` Wolfgang Denk
2008-03-07 14:36 ` Jerry Van Baren
2008-03-07 14:59 ` Wolfgang Denk
2008-03-07 16:09 ` Jerry Van Baren
2008-03-07 16:33 ` Wolfgang Denk
2008-03-07 17:12 ` Jerry Van Baren
2008-03-07 19:36 ` Wolfgang Denk
2008-03-07 20:52 ` Jerry Van Baren
2008-03-07 17:46 ` Kim Phillips
2008-03-07 19:39 ` Wolfgang Denk
2008-03-07 14:10 ` Wolfgang Denk
2008-03-07 13:24 ` Jerry Van Baren
2008-03-07 13:33 ` Jerry Van Baren
2008-03-06 19:41 ` Stefan Roese
2008-03-06 22:58 ` Wolfgang Denk
2008-03-07 6:38 ` Stefan Roese
2008-03-07 16:34 ` Jon Loeliger
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=47D04779.1070404@ge.com \
--to=gerald.vanbaren@ge.com \
--cc=u-boot@lists.denx.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox