From 6728035e8b29b78debc7ea7773f9d169b2968c65 Mon Sep 17 00:00:00 2001 From: Joel Sherrill Date: Wed, 6 Feb 2008 23:15:57 +0000 Subject: 2008-02-06 Joel Sherrill * libcsupport/src/printk.c: Added width and padding for %s. * libmisc/cpuuse/cpuusagereport.c: Support object names that are strings longer than 4 chanracters. --- cpukit/libcsupport/src/printk.c | 33 +++++++++++++++++++++++++++++---- 1 file changed, 29 insertions(+), 4 deletions(-) (limited to 'cpukit/libcsupport/src/printk.c') diff --git a/cpukit/libcsupport/src/printk.c b/cpukit/libcsupport/src/printk.c index e8ccbd7da6..97895ab75d 100644 --- a/cpukit/libcsupport/src/printk.c +++ b/cpukit/libcsupport/src/printk.c @@ -63,7 +63,6 @@ static void printNum( } } - /* * vprintk * @@ -79,13 +78,14 @@ void vprintk( ) { char c, *str; - int lflag, base, sign, width, lead; + int lflag, base, sign, width, lead, minus; for (; *fmt != '\0'; fmt++) { lflag = 0; base = 0; sign = 0; width = 0; + minus = 0; lead = ' '; if (*fmt == '%') { fmt++; @@ -93,6 +93,10 @@ void vprintk( lead = '0'; fmt++; } + if (*fmt == '-' ) { + minus = 1; + fmt++; + } while (*fmt >= '0' && *fmt <= '9' ) { width *= 10; width += (*fmt - '0'); @@ -111,8 +115,29 @@ void vprintk( case 'x': case 'X': base = 16; sign = 0; break; case 'p': base = 16; sign = 0; break; case 's': - for (str = va_arg(ap, char *); *str; str++) - BSP_output_char(*str); + { int i, len; + char *s; + + str = va_arg(ap, char *); + + /* calculate length of string */ + for ( len=0, s=str ; *s ; len++, s++ ) + ; + + /* leading spaces */ + if ( !minus ) + for ( i=len ; i