bsp: xil_printf: Handle 'u' conversions

Signed-off-by: Soren Brinkmann <soren.brinkmann@xilinx.com>
This commit is contained in:
Soren Brinkmann 2015-06-09 14:55:39 -07:00 committed by Nava kishore Manne
parent 3620711f05
commit ef374e062b
4 changed files with 28 additions and 7 deletions

View file

@ -24,6 +24,7 @@ typedef struct params_s {
char8 pad_character;
s32 do_padding;
s32 left_flag;
s32 unsigned_flag;
} params_t;
@ -104,7 +105,7 @@ static void outnum( const s32 n, const s32 base, struct params_s *par)
}
/* Check if number is negative */
if ((base == 10) && (n < 0L)) {
if ((par->unsigned_flag == 0) && (base == 10) && (n < 0L)) {
negative = 1;
num =(-(n));
}
@ -215,6 +216,7 @@ void xil_printf( const char8 *ctrl1, ...)
/* initialize all the flags for this format. */
dot_flag = 0;
long_flag = 0;
par.unsigned_flag = 0;
par.left_flag = 0;
par.do_padding = 0;
par.pad_character = ' ';
@ -275,6 +277,9 @@ void xil_printf( const char8 *ctrl1, ...)
Check = 0;
break;
case 'u':
par.unsigned_flag = 1;
/* fall through */
case 'i':
case 'd':
if ((long_flag != 0) || (ch == 'D')) {
@ -288,6 +293,7 @@ void xil_printf( const char8 *ctrl1, ...)
case 'p':
case 'X':
case 'x':
par.unsigned_flag = 1;
outnum((s32)va_arg(argp, s32), 16L, &par);
Check = 1;
break;

View file

@ -19,11 +19,11 @@ typedef struct params_s {
char8 pad_character;
s32 do_padding;
s32 left_flag;
s32 unsigned_flag;
} params_t;
static void padding( const s32 l_flag,const params_t *par);
static void outs(const charptr lp, params_t *par);
static void outnum( const s32 n, const s32 base, params_t *par);
static s32 getnum( charptr* linep);
/*---------------------------------------------------*/
@ -99,7 +99,7 @@ static void outnum( const s32 n, const s32 base, params_t *par)
}
/* Check if number is negative */
if ((base == 10) && (n < 0L)) {
if ((par->unsigned_flag == 0) && (base == 10) && (n < 0L)) {
negative = 1;
num =(-(n));
}
@ -206,6 +206,7 @@ void xil_printf( const char8 *ctrl1, ...)
/* initialize all the flags for this format. */
dot_flag = 0;
long_flag = 0;
par.unsigned_flag = 0;
par.left_flag = 0;
par.do_padding = 0;
par.pad_character = ' ';
@ -264,6 +265,9 @@ void xil_printf( const char8 *ctrl1, ...)
Check = 0;
break;
case 'u':
par.unsigned_flag = 1;
/* fall through */
case 'i':
case 'd':
if ((long_flag != 0) || (ch == 'D')) {
@ -277,6 +281,7 @@ void xil_printf( const char8 *ctrl1, ...)
case 'p':
case 'X':
case 'x':
par.unsigned_flag = 1;
outnum((s32)va_arg(argp, s32), 16L, &par);
Check = 1;
break;

View file

@ -14,7 +14,6 @@
static void padding( const s32 l_flag,const struct params_s *par);
static void outs(const charptr lp, struct params_s *par);
static void outnum( const s32 n, const s32 base, struct params_s *par);
static s32 getnum( charptr* linep);
typedef struct params_s {
@ -24,6 +23,7 @@ typedef struct params_s {
char8 pad_character;
s32 do_padding;
s32 left_flag;
s32 unsigned_flag;
} params_t;
@ -104,7 +104,7 @@ static void outnum( const s32 n, const s32 base, struct params_s *par)
}
/* Check if number is negative */
if ((base == 10) && (n < 0L)) {
if ((par->unsigned_flag == 0) && (base == 10) && (n < 0L)) {
negative = 1;
num =(-(n));
}
@ -215,6 +215,7 @@ void xil_printf( const char8 *ctrl1, ...)
/* initialize all the flags for this format. */
dot_flag = 0;
long_flag = 0;
par.unsigned_flag = 0;
par.left_flag = 0;
par.do_padding = 0;
par.pad_character = ' ';
@ -275,6 +276,9 @@ void xil_printf( const char8 *ctrl1, ...)
Check = 0;
break;
case 'u':
par.unsigned_flag = 1;
/* fall through */
case 'i':
case 'd':
if ((long_flag != 0) || (ch == 'D')) {
@ -288,6 +292,7 @@ void xil_printf( const char8 *ctrl1, ...)
case 'p':
case 'X':
case 'x':
par.unsigned_flag = 1;
outnum((s32)va_arg(argp, s32), 16L, &par);
Check = 1;
break;

View file

@ -14,7 +14,6 @@
static void padding( const s32 l_flag,const struct params_s *par);
static void outs(const charptr lp, struct params_s *par);
static void outnum( const s32 n, const s32 base, struct params_s *par);
static s32 getnum( charptr* linep);
typedef struct params_s {
@ -24,6 +23,7 @@ typedef struct params_s {
char8 pad_character;
s32 do_padding;
s32 left_flag;
s32 unsigned_flag;
} params_t;
@ -104,7 +104,7 @@ static void outnum( const s32 n, const s32 base, struct params_s *par)
}
/* Check if number is negative */
if ((base == 10) && (n < 0L)) {
if ((par->unsigned_flag == 0) && (base == 10) && (n < 0L)) {
negative = 1;
num =(-(n));
}
@ -215,6 +215,7 @@ void xil_printf( const char8 *ctrl1, ...)
/* initialize all the flags for this format. */
dot_flag = 0;
long_flag = 0;
par.unsigned_flag = 0;
par.left_flag = 0;
par.do_padding = 0;
par.pad_character = ' ';
@ -275,6 +276,9 @@ void xil_printf( const char8 *ctrl1, ...)
Check = 0;
break;
case 'u':
par.unsigned_flag = 1;
/* fall through */
case 'i':
case 'd':
if ((long_flag != 0) || (ch == 'D')) {
@ -288,6 +292,7 @@ void xil_printf( const char8 *ctrl1, ...)
case 'p':
case 'X':
case 'x':
par.unsigned_flag = 1;
outnum((s32)va_arg(argp, s32), 16L, &par);
Check = 1;
break;