summaryrefslogtreecommitdiff
path: root/user
diff options
context:
space:
mode:
Diffstat (limited to 'user')
-rw-r--r--user/lib/printf.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/user/lib/printf.c b/user/lib/printf.c
index 89806da..4d20263 100644
--- a/user/lib/printf.c
+++ b/user/lib/printf.c
@@ -224,6 +224,9 @@ static void get_radix(char spec, options_t *opts)
case 'o':
opts->radix = 8;
break;
+ case 'b':
+ opts->radix = 2;
+ break;
default:
opts->radix = 10;
break;
@@ -288,6 +291,10 @@ static int printf_lltoa(char *buf, options_t *opts, bool is_neg,
// radix specifier
if (opts->hash) {
+ if (opts->radix == 2) {
+ *(buf++) = 'b';
+ *(buf++) = '0';
+ }
if (opts->radix == 8) {
*(buf++) = 'o';
*(buf++) = '0';
@@ -440,6 +447,7 @@ static void do_printf(context_t *ctx, va_list args)
case 'd':
case 'i':
case 'u':
+ case 'b':
case 'o':
case 'x':
case 'X':
@@ -487,6 +495,7 @@ static void do_printf(context_t *ctx, va_list args)
// unsigned int
case 'p':
case 'u':
+ case 'b':
case 'o':
case 'x':
case 'X':