diff options
Diffstat (limited to 'package/busybox/busybox-1.12.0-awk.patch')
-rw-r--r-- | package/busybox/busybox-1.12.0-awk.patch | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/package/busybox/busybox-1.12.0-awk.patch b/package/busybox/busybox-1.12.0-awk.patch new file mode 100644 index 000000000..f89ae043f --- /dev/null +++ b/package/busybox/busybox-1.12.0-awk.patch @@ -0,0 +1,53 @@ +--- busybox-1.12.0/editors/awk.c Wed Aug 6 00:56:11 2008 ++++ busybox-1.12.0-awk/editors/awk.c Fri Aug 29 01:17:05 2008 +@@ -973,7 +973,12 @@ + + } else if (*p == '.' || isdigit(*p)) { + /* it's a number */ +- t_double = strtod(p, &p); ++#if ENABLE_DESKTOP ++ if (p[0] == '0' && (p[1] | 0x20) == 'x') ++ t_double = strtoll(p, &p, 0); ++ else ++#endif ++ t_double = strtod(p, &p); + if (*p == '.') + syntax_error(EMSG_UNEXP_TOKEN); + tc = TC_NUMBER; +@@ -2034,28 +2039,30 @@ + setvar_p(res, s); + break; + ++ /* Bitwise ops must assume that operands are unsigned. GNU Awk 3.1.5: ++ * awk '{ print or(-1,1) }' gives "4.29497e+09", not "-2.xxxe+09" */ + case B_an: +- setvar_i(res, (long)getvar_i(av[0]) & (long)getvar_i(av[1])); ++ setvar_i(res, (unsigned long)getvar_i(av[0]) & (unsigned long)getvar_i(av[1])); + break; + + case B_co: +- setvar_i(res, ~(long)getvar_i(av[0])); ++ setvar_i(res, ~(unsigned long)getvar_i(av[0])); + break; + + case B_ls: +- setvar_i(res, (long)getvar_i(av[0]) << (long)getvar_i(av[1])); ++ setvar_i(res, (unsigned long)getvar_i(av[0]) << (unsigned long)getvar_i(av[1])); + break; + + case B_or: +- setvar_i(res, (long)getvar_i(av[0]) | (long)getvar_i(av[1])); ++ setvar_i(res, (unsigned long)getvar_i(av[0]) | (unsigned long)getvar_i(av[1])); + break; + + case B_rs: +- setvar_i(res, (long)((unsigned long)getvar_i(av[0]) >> (unsigned long)getvar_i(av[1]))); ++ setvar_i(res, (unsigned long)getvar_i(av[0]) >> (unsigned long)getvar_i(av[1])); + break; + + case B_xo: +- setvar_i(res, (long)getvar_i(av[0]) ^ (long)getvar_i(av[1])); ++ setvar_i(res, (unsigned long)getvar_i(av[0]) ^ (unsigned long)getvar_i(av[1])); + break; + + case B_lo: |