summaryrefslogtreecommitdiff
path: root/editors
diff options
context:
space:
mode:
authorDenis Vlasenko <vda.linux@googlemail.com>2006-09-26 17:41:00 +0000
committerDenis Vlasenko <vda.linux@googlemail.com>2006-09-26 17:41:00 +0000
commite175ff252f9abb7267000571207c9d612728e1b9 (patch)
treebc6843cbc8ca3d0d2257a9e2349c03358b70b85a /editors
parent22f6dcb47c32909ca0a3d720b11df5ea86b1e76c (diff)
downloadbusybox-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.c31
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 */
250enum { 250enum {
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;