提交 0c7ee376 创建 作者: Silas Boyd-Wickizer's avatar Silas Boyd-Wickizer

Add %lx and %lx to printf.c

上级 070c2e4e
...@@ -8,7 +8,7 @@ static void ...@@ -8,7 +8,7 @@ static void
printint(void (*putch) (void*, char), void *putarg, printint(void (*putch) (void*, char), void *putarg,
int xx, int base, int sgn) int xx, int base, int sgn)
{ {
static char digits[] = "0123456789ABCDEF"; const static char digits[] = "0123456789ABCDEF";
char buf[16]; char buf[16];
int i, neg; int i, neg;
int x; int x;
...@@ -54,6 +54,9 @@ vprintfmt(void (*putch) (void*, char), void *putarg, ...@@ -54,6 +54,9 @@ vprintfmt(void (*putch) (void*, char), void *putarg,
printint(putch, putarg, va_arg(ap, u32), 10, 1); printint(putch, putarg, va_arg(ap, u32), 10, 1);
} else if(c == 'x') { } else if(c == 'x') {
printint(putch, putarg, va_arg(ap, u32), 16, 0); printint(putch, putarg, va_arg(ap, u32), 16, 0);
} else if(c == 'l') {
state = 'l';
continue;
} else if(c == 's'){ } else if(c == 's'){
s = (char*) va_arg(ap, char*); s = (char*) va_arg(ap, char*);
if(s == 0) if(s == 0)
...@@ -72,6 +75,19 @@ vprintfmt(void (*putch) (void*, char), void *putarg, ...@@ -72,6 +75,19 @@ vprintfmt(void (*putch) (void*, char), void *putarg,
putch(putarg, c); putch(putarg, c);
} }
state = 0; state = 0;
} else if(state == 'l') {
if(c == 'x') {
printint(putch, putarg, va_arg(ap, u64), 16, 0);
}
else if(c == 'u') {
printint(putch, putarg, va_arg(ap, u64), 10, 0);
}
else {
// Unknown % sequence. Print it to draw attention.
putch(putarg, '%');
putch(putarg, c);
}
state = 0;
} }
} }
} }
......
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论