diff options
author | Denis Vlasenko <vda.linux@googlemail.com> | 2006-09-26 17:41:00 +0000 |
---|---|---|
committer | Denis Vlasenko <vda.linux@googlemail.com> | 2006-09-26 17:41:00 +0000 |
commit | e175ff252f9abb7267000571207c9d612728e1b9 (patch) | |
tree | bc6843cbc8ca3d0d2257a9e2349c03358b70b85a /editors | |
parent | 22f6dcb47c32909ca0a3d720b11df5ea86b1e76c (diff) | |
download | busybox-w32-e175ff252f9abb7267000571207c9d612728e1b9.tar.gz busybox-w32-e175ff252f9abb7267000571207c9d612728e1b9.tar.bz2 busybox-w32-e175ff252f9abb7267000571207c9d612728e1b9.zip |
several fixes from openWRT project
Diffstat (limited to 'editors')
-rw-r--r-- | editors/awk.c | 31 |
1 files changed, 30 insertions, 1 deletions
diff --git a/editors/awk.c b/editors/awk.c index c934fe0df..bebc78092 100644 --- a/editors/awk.c +++ b/editors/awk.c | |||
@@ -249,7 +249,8 @@ enum { | |||
249 | /* builtins */ | 249 | /* builtins */ |
250 | enum { | 250 | enum { |
251 | B_a2=0, B_ix, B_ma, B_sp, B_ss, B_ti, B_lo, B_up, | 251 | B_a2=0, B_ix, B_ma, B_sp, B_ss, B_ti, B_lo, B_up, |
252 | B_ge, B_gs, B_su | 252 | B_ge, B_gs, B_su, |
253 | B_an, B_co, B_ls, B_or, B_rs, B_xo, | ||
253 | }; | 254 | }; |
254 | 255 | ||
255 | /* tokens and their corresponding info values */ | 256 | /* tokens and their corresponding info values */ |
@@ -289,6 +290,8 @@ static char * const tokenlist = | |||
289 | "\5while" NTC | 290 | "\5while" NTC |
290 | "\4else" NTC | 291 | "\4else" NTC |
291 | 292 | ||
293 | "\3and" "\5compl" "\6lshift" "\2or" | ||
294 | "\6rshift" "\3xor" | ||
292 | "\5close" "\6system" "\6fflush" "\5atan2" /* BUILTIN */ | 295 | "\5close" "\6system" "\6fflush" "\5atan2" /* BUILTIN */ |
293 | "\3cos" "\3exp" "\3int" "\3log" | 296 | "\3cos" "\3exp" "\3int" "\3log" |
294 | "\4rand" "\3sin" "\4sqrt" "\5srand" | 297 | "\4rand" "\3sin" "\4sqrt" "\5srand" |
@@ -342,6 +345,8 @@ static const uint32_t tokeninfo[] = { | |||
342 | ST_WHILE, | 345 | ST_WHILE, |
343 | 0, | 346 | 0, |
344 | 347 | ||
348 | OC_B|B_an|P(0x83), OC_B|B_co|P(0x41), OC_B|B_ls|P(0x83), OC_B|B_or|P(0x83), | ||
349 | OC_B|B_rs|P(0x83), OC_B|B_xo|P(0x83), | ||
345 | OC_FBLTIN|Sx|F_cl, OC_FBLTIN|Sx|F_sy, OC_FBLTIN|Sx|F_ff, OC_B|B_a2|P(0x83), | 350 | OC_FBLTIN|Sx|F_cl, OC_FBLTIN|Sx|F_sy, OC_FBLTIN|Sx|F_ff, OC_B|B_a2|P(0x83), |
346 | OC_FBLTIN|Nx|F_co, OC_FBLTIN|Nx|F_ex, OC_FBLTIN|Nx|F_in, OC_FBLTIN|Nx|F_lg, | 351 | OC_FBLTIN|Nx|F_co, OC_FBLTIN|Nx|F_ex, OC_FBLTIN|Nx|F_in, OC_FBLTIN|Nx|F_lg, |
347 | OC_FBLTIN|F_rn, OC_FBLTIN|Nx|F_si, OC_FBLTIN|Nx|F_sq, OC_FBLTIN|Nx|F_sr, | 352 | OC_FBLTIN|F_rn, OC_FBLTIN|Nx|F_si, OC_FBLTIN|Nx|F_sq, OC_FBLTIN|Nx|F_sr, |
@@ -1923,6 +1928,30 @@ static var *exec_builtin(node *op, var *res) | |||
1923 | s[n] = '\0'; | 1928 | s[n] = '\0'; |
1924 | setvar_p(res, s); | 1929 | setvar_p(res, s); |
1925 | break; | 1930 | break; |
1931 | |||
1932 | case B_an: | ||
1933 | setvar_i(res, (long)getvar_i(av[0]) & (long)getvar_i(av[1])); | ||
1934 | break; | ||
1935 | |||
1936 | case B_co: | ||
1937 | setvar_i(res, ~(long)getvar_i(av[0])); | ||
1938 | break; | ||
1939 | |||
1940 | case B_ls: | ||
1941 | setvar_i(res, (long)getvar_i(av[0]) << (long)getvar_i(av[1])); | ||
1942 | break; | ||
1943 | |||
1944 | case B_or: | ||
1945 | setvar_i(res, (long)getvar_i(av[0]) | (long)getvar_i(av[1])); | ||
1946 | break; | ||
1947 | |||
1948 | case B_rs: | ||
1949 | setvar_i(res, (long)((unsigned long)getvar_i(av[0]) >> (unsigned long)getvar_i(av[1]))); | ||
1950 | break; | ||
1951 | |||
1952 | case B_xo: | ||
1953 | setvar_i(res, (long)getvar_i(av[0]) ^ (long)getvar_i(av[1])); | ||
1954 | break; | ||
1926 | 1955 | ||
1927 | case B_lo: | 1956 | case B_lo: |
1928 | to_xxx = tolower; | 1957 | to_xxx = tolower; |