Commit 3dbcb212ef7504b32ef2ba70d4844c58f00f2e76
1 parent
ae35e78f
Exists in
master
and in
5 other branches
Implementando mais métodos de teclado pela estrutura de sessão
Showing
1 changed file
with
95 additions
and
81 deletions
Show diff stats
src/lib3270/kybd.c
... | ... | @@ -303,7 +303,7 @@ static void enq_ta(H3270 *hSession, void (*fn)(H3270 *, const char *, const char |
303 | 303 | } |
304 | 304 | hSession->ta_tail = ta; |
305 | 305 | |
306 | - trace_event(" action queued (kybdlock 0x%x)\n", h3270.kybdlock); | |
306 | + trace_event(" action queued (kybdlock 0x%x)\n", hSession->kybdlock); | |
307 | 307 | } |
308 | 308 | |
309 | 309 | /* |
... | ... | @@ -473,18 +473,18 @@ void kybd_in3270(H3270 *session, int in3270 unused, void *dunno) |
473 | 473 | /* |
474 | 474 | * Lock the keyboard because of an operator error. |
475 | 475 | */ |
476 | -static void operator_error(int error_type) | |
476 | +static void operator_error(H3270 *hSession, int error_type) | |
477 | 477 | { |
478 | - if(h3270.oerr_lock) | |
478 | + if(hSession->oerr_lock) | |
479 | 479 | { |
480 | - status_oerr(NULL,error_type); | |
481 | - mcursor_locked(&h3270); | |
482 | - kybdlock_set(&h3270,(unsigned int)error_type); | |
483 | - flush_ta(&h3270); | |
480 | + status_oerr(hSession,error_type); | |
481 | + mcursor_locked(hSession); | |
482 | + kybdlock_set(hSession,(unsigned int)error_type); | |
483 | + flush_ta(hSession); | |
484 | 484 | } |
485 | 485 | else |
486 | 486 | { |
487 | - lib3270_ring_bell(NULL); | |
487 | + lib3270_ring_bell(hSession); | |
488 | 488 | } |
489 | 489 | } |
490 | 490 | |
... | ... | @@ -493,7 +493,7 @@ static void operator_error(int error_type) |
493 | 493 | * Handle an AID (Attention IDentifier) key. This is the common stuff that |
494 | 494 | * gets executed for all AID keys (PFs, PAs, Clear and etc). |
495 | 495 | */ |
496 | -static void key_AID(H3270 *session, unsigned char aid_code) | |
496 | +static void key_AID(H3270 *hSession, unsigned char aid_code) | |
497 | 497 | { |
498 | 498 | #if defined(X3270_ANSI) /*[*/ |
499 | 499 | if (IN_ANSI) { |
... | ... | @@ -523,33 +523,37 @@ static void key_AID(H3270 *session, unsigned char aid_code) |
523 | 523 | plugin_aid(aid_code); |
524 | 524 | #endif /*]*/ |
525 | 525 | |
526 | - trace("IN_SSCP: %d cursor_addr: %d",IN_SSCP,h3270.cursor_addr); | |
526 | + trace("IN_SSCP: %d cursor_addr: %d",IN_SSCP,hSession->cursor_addr); | |
527 | 527 | |
528 | - if (IN_SSCP) { | |
529 | - if (h3270.kybdlock & KL_OIA_MINUS) | |
528 | + if (IN_SSCP) | |
529 | + { | |
530 | + if (hSession->kybdlock & KL_OIA_MINUS) | |
530 | 531 | return; |
531 | - if (aid_code != AID_ENTER && aid_code != AID_CLEAR) { | |
532 | - status_changed(&h3270,LIB3270_STATUS_MINUS); | |
533 | - kybdlock_set(&h3270,KL_OIA_MINUS); | |
532 | + if (aid_code != AID_ENTER && aid_code != AID_CLEAR) | |
533 | + { | |
534 | + status_changed(hSession,LIB3270_STATUS_MINUS); | |
535 | + kybdlock_set(hSession,KL_OIA_MINUS); | |
534 | 536 | return; |
535 | 537 | } |
536 | 538 | } |
539 | + | |
537 | 540 | if (IN_SSCP && aid_code == AID_ENTER) |
538 | 541 | { |
539 | 542 | /* Act as if the host had written our input. */ |
540 | - h3270.buffer_addr = h3270.cursor_addr; | |
543 | + hSession->buffer_addr = hSession->cursor_addr; | |
541 | 544 | } |
545 | + | |
542 | 546 | if (!IN_SSCP || aid_code != AID_CLEAR) |
543 | 547 | { |
544 | - status_twait(&h3270); | |
545 | - mcursor_waiting(&h3270); | |
546 | - lib3270_set_toggle(&h3270,LIB3270_TOGGLE_INSERT,0); | |
547 | - kybdlock_set(&h3270,KL_OIA_TWAIT | KL_OIA_LOCKED); | |
548 | - } | |
549 | - h3270.aid = aid_code; | |
550 | - ctlr_read_modified(h3270.aid, False); | |
551 | - ticking_start(&h3270,False); | |
552 | - status_ctlr_done(&h3270); | |
548 | + status_twait(hSession); | |
549 | + mcursor_waiting(hSession); | |
550 | + lib3270_set_toggle(hSession,LIB3270_TOGGLE_INSERT,0); | |
551 | + kybdlock_set(hSession,KL_OIA_TWAIT | KL_OIA_LOCKED); | |
552 | + } | |
553 | + hSession->aid = aid_code; | |
554 | + ctlr_read_modified(hSession->aid, False); | |
555 | + ticking_start(hSession,False); | |
556 | + status_ctlr_done(hSession); | |
553 | 557 | } |
554 | 558 | |
555 | 559 | LIB3270_FKEY_ACTION( pfkey ) |
... | ... | @@ -656,7 +660,7 @@ static Boolean ins_prep(int faddr, int baddr, int count) |
656 | 660 | printf("need %d at %d, tb_start at %d\n", count, baddr, tb_start); |
657 | 661 | #endif /*]*/ |
658 | 662 | if (need - ntb > 0) { |
659 | - operator_error(KL_OERR_OVERFLOW); | |
663 | + operator_error(&h3270,KL_OERR_OVERFLOW); | |
660 | 664 | return False; |
661 | 665 | } |
662 | 666 | |
... | ... | @@ -761,19 +765,19 @@ static Boolean key_Character(int code, Boolean with_ge, Boolean pasting, Boolean |
761 | 765 | faddr = find_field_attribute(&h3270,baddr); |
762 | 766 | fa = get_field_attribute(&h3270,baddr); |
763 | 767 | if (h3270.ea_buf[baddr].fa || FA_IS_PROTECTED(fa)) { |
764 | - operator_error(KL_OERR_PROTECTED); | |
768 | + operator_error(&h3270,KL_OERR_PROTECTED); | |
765 | 769 | return False; |
766 | 770 | } |
767 | 771 | if (h3270.numeric_lock && FA_IS_NUMERIC(fa) && |
768 | 772 | !((code >= EBC_0 && code <= EBC_9) || |
769 | 773 | code == EBC_minus || code == EBC_period)) { |
770 | - operator_error(KL_OERR_NUMERIC); | |
774 | + operator_error(&h3270,KL_OERR_NUMERIC); | |
771 | 775 | return False; |
772 | 776 | } |
773 | 777 | |
774 | 778 | /* Can't put an SBCS in a DBCS field. */ |
775 | 779 | if (h3270.ea_buf[faddr].cs == CS_DBCS) { |
776 | - operator_error(KL_OERR_DBCS); | |
780 | + operator_error(&h3270,KL_OERR_DBCS); | |
777 | 781 | return False; |
778 | 782 | } |
779 | 783 | |
... | ... | @@ -781,7 +785,7 @@ static Boolean key_Character(int code, Boolean with_ge, Boolean pasting, Boolean |
781 | 785 | if (h3270.ea_buf[baddr].cc == EBC_si) { |
782 | 786 | INC_BA(baddr); |
783 | 787 | if (baddr == faddr) { |
784 | - operator_error(KL_OERR_OVERFLOW); | |
788 | + operator_error(&h3270,KL_OERR_OVERFLOW); | |
785 | 789 | return False; |
786 | 790 | } |
787 | 791 | } |
... | ... | @@ -1199,18 +1203,17 @@ LIB3270_ACTION( firstfield ) |
1199 | 1203 | /* |
1200 | 1204 | * Cursor left 1 position. |
1201 | 1205 | */ |
1202 | -static void | |
1203 | -do_left(void) | |
1206 | +static void do_left(H3270 *hSession) | |
1204 | 1207 | { |
1205 | 1208 | register int baddr; |
1206 | 1209 | enum dbcs_state d; |
1207 | 1210 | |
1208 | - baddr = h3270.cursor_addr; | |
1211 | + baddr = hSession->cursor_addr; | |
1209 | 1212 | DEC_BA(baddr); |
1210 | 1213 | d = ctlr_dbcs_state(baddr); |
1211 | 1214 | if (IS_LEFT(d)) |
1212 | 1215 | DEC_BA(baddr); |
1213 | - cursor_move(&h3270,baddr); | |
1216 | + cursor_move(hSession,baddr); | |
1214 | 1217 | } |
1215 | 1218 | |
1216 | 1219 | LIB3270_CURSOR_ACTION( left ) |
... | ... | @@ -1220,7 +1223,7 @@ LIB3270_CURSOR_ACTION( left ) |
1220 | 1223 | if(KYBDLOCK_IS_OERR(hSession)) |
1221 | 1224 | { |
1222 | 1225 | lib3270_kybdlock_clear(hSession,KL_OERR_MASK); |
1223 | - status_reset(&h3270); | |
1226 | + status_reset(hSession); | |
1224 | 1227 | } |
1225 | 1228 | else |
1226 | 1229 | { |
... | ... | @@ -1238,7 +1241,7 @@ LIB3270_CURSOR_ACTION( left ) |
1238 | 1241 | |
1239 | 1242 | if (!hSession->flipped) |
1240 | 1243 | { |
1241 | - do_left(); | |
1244 | + do_left(hSession); | |
1242 | 1245 | } |
1243 | 1246 | else |
1244 | 1247 | { |
... | ... | @@ -1271,7 +1274,7 @@ do_delete(void) |
1271 | 1274 | /* Can't delete a field attribute. */ |
1272 | 1275 | fa = get_field_attribute(&h3270,baddr); |
1273 | 1276 | if (FA_IS_PROTECTED(fa) || h3270.ea_buf[baddr].fa) { |
1274 | - operator_error(KL_OERR_PROTECTED); | |
1277 | + operator_error(&h3270,KL_OERR_PROTECTED); | |
1275 | 1278 | return False; |
1276 | 1279 | } |
1277 | 1280 | if (h3270.ea_buf[baddr].cc == EBC_so || h3270.ea_buf[baddr].cc == EBC_si) { |
... | ... | @@ -1284,7 +1287,7 @@ do_delete(void) |
1284 | 1287 | if (h3270.ea_buf[xaddr].cc == SOSI(h3270.ea_buf[baddr].cc)) { |
1285 | 1288 | ndel = 2; |
1286 | 1289 | } else { |
1287 | - operator_error(KL_OERR_PROTECTED); | |
1290 | + operator_error(&h3270,KL_OERR_PROTECTED); | |
1288 | 1291 | return False; |
1289 | 1292 | } |
1290 | 1293 | } else if (IS_DBCS(h3270.ea_buf[baddr].db)) { |
... | ... | @@ -1380,7 +1383,7 @@ LIB3270_ACTION( backspace ) |
1380 | 1383 | if (hSession->reverse) |
1381 | 1384 | (void) do_delete(); |
1382 | 1385 | else if (!hSession->flipped) |
1383 | - do_left(); | |
1386 | + do_left(hSession); | |
1384 | 1387 | else { |
1385 | 1388 | register int baddr; |
1386 | 1389 | |
... | ... | @@ -1396,29 +1399,32 @@ LIB3270_ACTION( backspace ) |
1396 | 1399 | /* |
1397 | 1400 | * Destructive backspace, like Unix "erase". |
1398 | 1401 | */ |
1399 | -static void | |
1400 | -do_erase(void) | |
1402 | +static void do_erase(H3270 *hSession) | |
1401 | 1403 | { |
1402 | 1404 | int baddr, faddr; |
1403 | 1405 | enum dbcs_state d; |
1404 | 1406 | |
1405 | - baddr = h3270.cursor_addr; | |
1406 | - faddr = find_field_attribute(&h3270,baddr); | |
1407 | - if (faddr == baddr || FA_IS_PROTECTED(h3270.ea_buf[baddr].fa)) { | |
1408 | - operator_error(KL_OERR_PROTECTED); | |
1407 | + baddr = hSession->cursor_addr; | |
1408 | + faddr = find_field_attribute(hSession,baddr); | |
1409 | + if (faddr == baddr || FA_IS_PROTECTED(hSession->ea_buf[baddr].fa)) | |
1410 | + { | |
1411 | + operator_error(hSession,KL_OERR_PROTECTED); | |
1409 | 1412 | return; |
1410 | 1413 | } |
1414 | + | |
1411 | 1415 | if (baddr && faddr == baddr - 1) |
1412 | 1416 | return; |
1413 | - do_left(); | |
1417 | + | |
1418 | + do_left(hSession); | |
1414 | 1419 | |
1415 | 1420 | /* |
1416 | 1421 | * If we are now on an SI, move left again. |
1417 | 1422 | */ |
1418 | - if (h3270.ea_buf[h3270.cursor_addr].cc == EBC_si) { | |
1419 | - baddr = h3270.cursor_addr; | |
1423 | + if (hSession->ea_buf[hSession->cursor_addr].cc == EBC_si) | |
1424 | + { | |
1425 | + baddr = hSession->cursor_addr; | |
1420 | 1426 | DEC_BA(baddr); |
1421 | - cursor_move(&h3270,baddr); | |
1427 | + cursor_move(hSession,baddr); | |
1422 | 1428 | } |
1423 | 1429 | |
1424 | 1430 | /* |
... | ... | @@ -1427,11 +1433,12 @@ do_erase(void) |
1427 | 1433 | * This ensures that if this is the end of a DBCS subfield, we will |
1428 | 1434 | * land on the SI, instead of on the character following. |
1429 | 1435 | */ |
1430 | - d = ctlr_dbcs_state(h3270.cursor_addr); | |
1431 | - if (IS_RIGHT(d)) { | |
1432 | - baddr = h3270.cursor_addr; | |
1436 | + d = ctlr_dbcs_state(hSession->cursor_addr); | |
1437 | + if (IS_RIGHT(d)) | |
1438 | + { | |
1439 | + baddr = hSession->cursor_addr; | |
1433 | 1440 | DEC_BA(baddr); |
1434 | - cursor_move(&h3270,baddr); | |
1441 | + cursor_move(hSession,baddr); | |
1435 | 1442 | } |
1436 | 1443 | |
1437 | 1444 | /* |
... | ... | @@ -1444,29 +1451,32 @@ do_erase(void) |
1444 | 1451 | * If we've just erased the last character of a DBCS subfield, erase |
1445 | 1452 | * the SO/SI pair as well. |
1446 | 1453 | */ |
1447 | - baddr = h3270.cursor_addr; | |
1454 | + baddr = hSession->cursor_addr; | |
1448 | 1455 | DEC_BA(baddr); |
1449 | - if (h3270.ea_buf[baddr].cc == EBC_so && h3270.ea_buf[h3270.cursor_addr].cc == EBC_si) { | |
1450 | - cursor_move(&h3270,baddr); | |
1456 | + if (hSession->ea_buf[baddr].cc == EBC_so && hSession->ea_buf[hSession->cursor_addr].cc == EBC_si) | |
1457 | + { | |
1458 | + cursor_move(hSession,baddr); | |
1451 | 1459 | (void) do_delete(); |
1452 | 1460 | } |
1453 | - h3270.display(&h3270); | |
1461 | + hSession->display(hSession); | |
1454 | 1462 | } |
1455 | 1463 | |
1456 | 1464 | LIB3270_ACTION( erase ) |
1457 | 1465 | { |
1458 | 1466 | // reset_idle_timer(); |
1459 | - if (hSession->kybdlock) { | |
1467 | + if (hSession->kybdlock) | |
1468 | + { | |
1460 | 1469 | ENQUEUE_ACTION(lib3270_erase); |
1461 | 1470 | return 0; |
1462 | 1471 | } |
1463 | 1472 | #if defined(X3270_ANSI) /*[*/ |
1464 | - if (IN_ANSI) { | |
1473 | + if (IN_ANSI) | |
1474 | + { | |
1465 | 1475 | net_send_erase(); |
1466 | 1476 | return 0; |
1467 | 1477 | } |
1468 | 1478 | #endif /*]*/ |
1469 | - do_erase(); | |
1479 | + do_erase(hSession); | |
1470 | 1480 | return 0; |
1471 | 1481 | } |
1472 | 1482 | |
... | ... | @@ -1508,7 +1518,7 @@ LIB3270_CURSOR_ACTION( right ) |
1508 | 1518 | } |
1509 | 1519 | else |
1510 | 1520 | { |
1511 | - do_left(); | |
1521 | + do_left(hSession); | |
1512 | 1522 | } |
1513 | 1523 | return 0; |
1514 | 1524 | } |
... | ... | @@ -1943,7 +1953,7 @@ LIB3270_ACTION( eraseeol ) |
1943 | 1953 | fa = get_field_attribute(&h3270,baddr); |
1944 | 1954 | if (FA_IS_PROTECTED(fa) || h3270.ea_buf[baddr].fa) |
1945 | 1955 | { |
1946 | - operator_error(KL_OERR_PROTECTED); | |
1956 | + operator_error(&h3270,KL_OERR_PROTECTED); | |
1947 | 1957 | return -1; |
1948 | 1958 | } |
1949 | 1959 | |
... | ... | @@ -2007,7 +2017,7 @@ LIB3270_ACTION( eraseeof ) |
2007 | 2017 | baddr = hSession->cursor_addr; |
2008 | 2018 | fa = get_field_attribute(hSession,baddr); |
2009 | 2019 | if (FA_IS_PROTECTED(fa) || h3270.ea_buf[baddr].fa) { |
2010 | - operator_error(KL_OERR_PROTECTED); | |
2020 | + operator_error(&h3270,KL_OERR_PROTECTED); | |
2011 | 2021 | return -1; |
2012 | 2022 | } |
2013 | 2023 | if (hSession->formatted) { /* erase to next field attribute */ |
... | ... | @@ -2127,7 +2137,7 @@ LIB3270_ACTION( deleteword ) |
2127 | 2137 | |
2128 | 2138 | /* Make sure we're on a modifiable field. */ |
2129 | 2139 | if (FA_IS_PROTECTED(fa) || hSession->ea_buf[baddr].fa) { |
2130 | - operator_error(KL_OERR_PROTECTED); | |
2140 | + operator_error(&h3270,KL_OERR_PROTECTED); | |
2131 | 2141 | return -1; |
2132 | 2142 | } |
2133 | 2143 | |
... | ... | @@ -2139,13 +2149,14 @@ LIB3270_ACTION( deleteword ) |
2139 | 2149 | return 0; |
2140 | 2150 | if (hSession->ea_buf[baddr].cc == EBC_null || |
2141 | 2151 | hSession->ea_buf[baddr].cc == EBC_space) |
2142 | - do_erase(); | |
2152 | + do_erase(hSession); | |
2143 | 2153 | else |
2144 | 2154 | break; |
2145 | 2155 | } |
2146 | 2156 | |
2147 | 2157 | /* Backspace until the character to the left of the cursor is blank. */ |
2148 | - for (;;) { | |
2158 | + for (;;) | |
2159 | + { | |
2149 | 2160 | baddr = hSession->cursor_addr; |
2150 | 2161 | DEC_BA(baddr); |
2151 | 2162 | if (hSession->ea_buf[baddr].fa) |
... | ... | @@ -2154,7 +2165,7 @@ LIB3270_ACTION( deleteword ) |
2154 | 2165 | hSession->ea_buf[baddr].cc == EBC_space) |
2155 | 2166 | break; |
2156 | 2167 | else |
2157 | - do_erase(); | |
2168 | + do_erase(hSession); | |
2158 | 2169 | } |
2159 | 2170 | hSession->display(hSession); |
2160 | 2171 | return 0; |
... | ... | @@ -2192,7 +2203,7 @@ LIB3270_ACTION( deletefield ) |
2192 | 2203 | baddr = hSession->cursor_addr; |
2193 | 2204 | fa = get_field_attribute(hSession,baddr); |
2194 | 2205 | if (FA_IS_PROTECTED(fa) || hSession->ea_buf[baddr].fa) { |
2195 | - operator_error(KL_OERR_PROTECTED); | |
2206 | + operator_error(hSession,KL_OERR_PROTECTED); | |
2196 | 2207 | return -1; |
2197 | 2208 | } |
2198 | 2209 | while (!hSession->ea_buf[baddr].fa) |
... | ... | @@ -2362,31 +2373,34 @@ kybd_scroll_lock(Boolean lock) |
2362 | 2373 | * Move the cursor back within the legal paste area. |
2363 | 2374 | * Returns a Boolean indicating success. |
2364 | 2375 | */ |
2365 | -static Boolean | |
2366 | -remargin(int lmargin) | |
2376 | +static Boolean remargin(H3270 *hSession, int lmargin) | |
2367 | 2377 | { |
2368 | 2378 | Boolean ever = False; |
2369 | 2379 | int baddr, b0 = 0; |
2370 | 2380 | int faddr; |
2371 | 2381 | unsigned char fa; |
2372 | 2382 | |
2373 | - baddr = h3270.cursor_addr; | |
2374 | - while (BA_TO_COL(baddr) < lmargin) { | |
2383 | + baddr = hSession->cursor_addr; | |
2384 | + while (BA_TO_COL(baddr) < lmargin) | |
2385 | + { | |
2375 | 2386 | baddr = ROWCOL_TO_BA(BA_TO_ROW(baddr), lmargin); |
2376 | - if (!ever) { | |
2387 | + if (!ever) | |
2388 | + { | |
2377 | 2389 | b0 = baddr; |
2378 | 2390 | ever = True; |
2379 | 2391 | } |
2380 | - faddr = find_field_attribute(&h3270,baddr); | |
2381 | - fa = h3270.ea_buf[faddr].fa; | |
2382 | - if (faddr == baddr || FA_IS_PROTECTED(fa)) { | |
2383 | - baddr = next_unprotected(&h3270,baddr); | |
2392 | + faddr = find_field_attribute(hSession,baddr); | |
2393 | + fa = hSession->ea_buf[faddr].fa; | |
2394 | + | |
2395 | + if (faddr == baddr || FA_IS_PROTECTED(fa)) | |
2396 | + { | |
2397 | + baddr = next_unprotected(hSession,baddr); | |
2384 | 2398 | if (baddr <= b0) |
2385 | 2399 | return False; |
2386 | 2400 | } |
2387 | 2401 | } |
2388 | 2402 | |
2389 | - cursor_move(&h3270,baddr); | |
2403 | + cursor_move(hSession,baddr); | |
2390 | 2404 | return True; |
2391 | 2405 | } |
2392 | 2406 | |
... | ... | @@ -2462,7 +2476,7 @@ LIB3270_EXPORT int lib3270_emulate_input(H3270 *session, char *s, int len, int p |
2462 | 2476 | /* Jump cursor over left margin. */ |
2463 | 2477 | if (lib3270_get_toggle(&h3270,LIB3270_TOGGLE_MARGINED_PASTE) && |
2464 | 2478 | BA_TO_COL(session->cursor_addr) < orig_col) { |
2465 | - if (!remargin(orig_col)) | |
2479 | + if (!remargin(&h3270,orig_col)) | |
2466 | 2480 | return len-1; |
2467 | 2481 | skipped = True; |
2468 | 2482 | } |
... | ... | @@ -2743,7 +2757,7 @@ LIB3270_EXPORT int lib3270_emulate_input(H3270 *session, char *s, int len, int p |
2743 | 2757 | case BASE: |
2744 | 2758 | if (lib3270_get_toggle(&h3270,LIB3270_TOGGLE_MARGINED_PASTE) && |
2745 | 2759 | BA_TO_COL(session->cursor_addr) < orig_col) { |
2746 | - (void) remargin(orig_col); | |
2760 | + (void) remargin(&h3270,orig_col); | |
2747 | 2761 | } |
2748 | 2762 | break; |
2749 | 2763 | case OCTAL: |
... | ... | @@ -2752,7 +2766,7 @@ LIB3270_EXPORT int lib3270_emulate_input(H3270 *session, char *s, int len, int p |
2752 | 2766 | state = BASE; |
2753 | 2767 | if (lib3270_get_toggle(&h3270,LIB3270_TOGGLE_MARGINED_PASTE) && |
2754 | 2768 | BA_TO_COL(session->cursor_addr) < orig_col) { |
2755 | - (void) remargin(orig_col); | |
2769 | + (void) remargin(&h3270,orig_col); | |
2756 | 2770 | } |
2757 | 2771 | break; |
2758 | 2772 | case BACKPF: | ... | ... |