aboutsummaryrefslogtreecommitdiff
path: root/toys/posix/printf.c
diff options
context:
space:
mode:
Diffstat (limited to 'toys/posix/printf.c')
-rw-r--r--toys/posix/printf.c11
1 files changed, 4 insertions, 7 deletions
diff --git a/toys/posix/printf.c b/toys/posix/printf.c
index 5448d8c7..b51eddc0 100644
--- a/toys/posix/printf.c
+++ b/toys/posix/printf.c
@@ -9,12 +9,12 @@
USE_PRINTF(NEWTOY(printf, "<1?^", TOYFLAG_USR|TOYFLAG_BIN))
-config PRINTF
+config PRINTF
bool "printf"
default y
help
usage: printf FORMAT [ARGUMENT...]
-
+
Format and print ARGUMENT(s) according to FORMAT, using C printf syntax
(% escapes for cdeEfgGiosuxX, \ escapes for abefnrtv0 or \OCTAL or \xHEX).
*/
@@ -61,11 +61,8 @@ static int handle_slash(char **esc_val, int posix)
num = tolower(*ptr) - '0';
if (num >= 'a'-'0') num += '0'-'a'+10;
if (num >= base) {
- // Don't parse invalid hex value ala "\xvd", print it verbatim
- if (base == 16 && len == 2) {
- ptr--;
- result = '\\';
- }
+ // "\xav" is "\xa"+"v", but "\xva" is an error.
+ if (base == 16 && len == 2) error_exit("bad \\x");
break;
}
result = (result*base)+num;