| 1 | $FreeWRT$
|
|---|
| 2 | --- busybox-1.1.3.orig/editors/awk.c Wed Mar 22 22:16:25 2006
|
|---|
| 3 | +++ busybox-1.1.3/editors/awk.c Sat Nov 25 19:54:19 2006
|
|---|
| 4 | @@ -258,7 +258,8 @@ enum {
|
|---|
| 5 | /* builtins */
|
|---|
| 6 | enum {
|
|---|
| 7 | B_a2=0, B_ix, B_ma, B_sp, B_ss, B_ti, B_lo, B_up,
|
|---|
| 8 | - B_ge, B_gs, B_su
|
|---|
| 9 | + B_ge, B_gs, B_su,
|
|---|
| 10 | + B_an, B_co, B_ls, B_or, B_rs, B_xo,
|
|---|
| 11 | };
|
|---|
| 12 |
|
|---|
| 13 | /* tokens and their corresponding info values */
|
|---|
| 14 | @@ -298,6 +299,8 @@ static char * const tokenlist =
|
|---|
| 15 | "\5while" NTC
|
|---|
| 16 | "\4else" NTC
|
|---|
| 17 |
|
|---|
| 18 | + "\3and" "\5compl" "\6lshift" "\2or"
|
|---|
| 19 | + "\6rshift" "\3xor"
|
|---|
| 20 | "\5close" "\6system" "\6fflush" "\5atan2" /* BUILTIN */
|
|---|
| 21 | "\3cos" "\3exp" "\3int" "\3log"
|
|---|
| 22 | "\4rand" "\3sin" "\4sqrt" "\5srand"
|
|---|
| 23 | @@ -351,6 +354,8 @@ static const uint32_t tokeninfo[] = {
|
|---|
| 24 | ST_WHILE,
|
|---|
| 25 | 0,
|
|---|
| 26 |
|
|---|
| 27 | + OC_B|B_an|P(0x83), OC_B|B_co|P(0x41), OC_B|B_ls|P(0x83), OC_B|B_or|P(0x83),
|
|---|
| 28 | + OC_B|B_rs|P(0x83), OC_B|B_xo|P(0x83),
|
|---|
| 29 | OC_FBLTIN|Sx|F_cl, OC_FBLTIN|Sx|F_sy, OC_FBLTIN|Sx|F_ff, OC_B|B_a2|P(0x83),
|
|---|
| 30 | OC_FBLTIN|Nx|F_co, OC_FBLTIN|Nx|F_ex, OC_FBLTIN|Nx|F_in, OC_FBLTIN|Nx|F_lg,
|
|---|
| 31 | OC_FBLTIN|F_rn, OC_FBLTIN|Nx|F_si, OC_FBLTIN|Nx|F_sq, OC_FBLTIN|Nx|F_sr,
|
|---|
| 32 | @@ -1931,6 +1936,30 @@ static var *exec_builtin(node *op, var *
|
|---|
| 33 | strncpy(s, as[0]+i, n);
|
|---|
| 34 | s[n] = '\0';
|
|---|
| 35 | setvar_p(res, s);
|
|---|
| 36 | + break;
|
|---|
| 37 | +
|
|---|
| 38 | + case B_an:
|
|---|
| 39 | + setvar_i(res, (long)getvar_i(av[0]) & (long)getvar_i(av[1]));
|
|---|
| 40 | + break;
|
|---|
| 41 | +
|
|---|
| 42 | + case B_co:
|
|---|
| 43 | + setvar_i(res, ~(long)getvar_i(av[0]));
|
|---|
| 44 | + break;
|
|---|
| 45 | +
|
|---|
| 46 | + case B_ls:
|
|---|
| 47 | + setvar_i(res, (long)getvar_i(av[0]) << (long)getvar_i(av[1]));
|
|---|
| 48 | + break;
|
|---|
| 49 | +
|
|---|
| 50 | + case B_or:
|
|---|
| 51 | + setvar_i(res, (long)getvar_i(av[0]) | (long)getvar_i(av[1]));
|
|---|
| 52 | + break;
|
|---|
| 53 | +
|
|---|
| 54 | + case B_rs:
|
|---|
| 55 | + setvar_i(res, (long)((unsigned long)getvar_i(av[0]) >> (unsigned long)getvar_i(av[1])));
|
|---|
| 56 | + break;
|
|---|
| 57 | +
|
|---|
| 58 | + case B_xo:
|
|---|
| 59 | + setvar_i(res, (long)getvar_i(av[0]) ^ (long)getvar_i(av[1]));
|
|---|
| 60 | break;
|
|---|
| 61 |
|
|---|
| 62 | case B_lo:
|
|---|