summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndreas Bießmann <andreas.devel@googlemail.com>2013-02-07 04:58:19 +0000
committerTom Rini <trini@ti.com>2013-03-11 17:00:28 -0400
commitefd7c11404e59874d4da86d04cab4acacf77d793 (patch)
treed62969bc304fa19f68d77371c56b878584b2413b
parenta2681707b2478abef34b8c403e7ab52daae9c331 (diff)
downloadu-boot-imx-efd7c11404e59874d4da86d04cab4acacf77d793.zip
u-boot-imx-efd7c11404e59874d4da86d04cab4acacf77d793.tar.gz
u-boot-imx-efd7c11404e59874d4da86d04cab4acacf77d793.tar.bz2
display_options:print_buffer: align ASCII print
This patch adds whitespace to the printed hex numbers to have an aligned ASCII printout at the end of the line. This changes for example the md output from: ---8<--- OMAP3 Tricorder # md.l $loadaddr 5 82000000: 30200109 20a4028c 90010000 08a00000 .. 0... ........ 82000010: 01010000 .... --->8--- to ---8<--- OMAP3 Tricorder # md.l $loadaddr 5 82000000: 30200109 20a4028c 90010000 08a00000 .. 0... ........ 82000010: 01010000 .... --->8--- The cost of this is about 72 byte .text increase (tested with at91 build). Signed-off-by: Andreas Bießmann <andreas.devel@googlemail.com>
-rw-r--r--lib/display_options.c20
1 files changed, 14 insertions, 6 deletions
diff --git a/lib/display_options.c b/lib/display_options.c
index 0339970..e6d684b 100644
--- a/lib/display_options.c
+++ b/lib/display_options.c
@@ -115,14 +115,15 @@ int print_buffer(ulong addr, const void *data, uint width, uint count,
linelen = DEFAULT_LINE_LENGTH_BYTES / width;
while (count) {
+ uint thislinelen = linelen;
printf("%08lx:", addr);
/* check for overflow condition */
- if (count < linelen)
- linelen = count;
+ if (count < thislinelen)
+ thislinelen = count;
/* Copy from memory into linebuf and print hex values */
- for (i = 0; i < linelen; i++) {
+ for (i = 0; i < thislinelen; i++) {
uint32_t x;
if (width == 4)
x = lb.ui[i] = *(volatile uint32_t *)data;
@@ -134,8 +135,15 @@ int print_buffer(ulong addr, const void *data, uint width, uint count,
data += width;
}
+ while (thislinelen < linelen) {
+ /* fill line with whitespace for nice ASCII print */
+ for (i=0; i<width*2+1; i++)
+ puts(" ");
+ linelen--;
+ }
+
/* Print data in ASCII characters */
- for (i = 0; i < linelen * width; i++) {
+ for (i = 0; i < thislinelen * width; i++) {
if (!isprint(lb.uc[i]) || lb.uc[i] >= 0x80)
lb.uc[i] = '.';
}
@@ -143,8 +151,8 @@ int print_buffer(ulong addr, const void *data, uint width, uint count,
printf(" %s\n", lb.uc);
/* update references */
- addr += linelen * width;
- count -= linelen;
+ addr += thislinelen * width;
+ count -= thislinelen;
if (ctrlc())
return -1;