Commit b48cbcf080279591000b7c0a864acb22c28127a7

Authored by perry.werneck@gmail.com
1 parent ae2663cf
Exists in master

Implementação de multi-sessões: Movendo mais campos de controle do terminal para…

… a estrutura de sessão
latest/src/gtk2/main.c
... ... @@ -90,7 +90,7 @@ static void connect_main(H3270 *session, int status, void *dunno)
90 90 {
91 91 SetStatusCode(STATUS_CODE_DISCONNECTED);
92 92 cMode &= ~CURSOR_MODE_ENABLED;
93   - ctlr_erase(1);
  93 +// ctlr_erase(1);
94 94 online = FALSE;
95 95 #ifdef X3270_FT
96 96 action_group_set_sensitive(ACTION_GROUP_FT,status);
... ...
latest/src/include/lib3270/api.h
... ... @@ -230,6 +230,10 @@
230 230 int cols;
231 231 int cursor_addr;
232 232 char flipped;
  233 + int screen_alt; /**< alternate screen? */
  234 + int is_altbuffer;
  235 +
  236 + int formatted; /**< set in screen_disp */
233 237  
234 238 // Widget info
235 239 void * widget;
... ... @@ -522,9 +526,9 @@
522 526 LIB3270_EXPORT void show_3270_popup_dialog(H3270 *session, PW3270_DIALOG type, const char *title, const char *msg, const char *fmt, ...);
523 527  
524 528 /* Set/Get screen contents */
525   - LIB3270_EXPORT int find_field_attribute(int baddr);
526   - LIB3270_EXPORT int find_field_length(int baddr);
527   - LIB3270_EXPORT unsigned char get_field_attribute(int baddr);
  529 + LIB3270_EXPORT int find_field_attribute(H3270 *session, int baddr);
  530 + LIB3270_EXPORT int find_field_length(H3270 *session, int baddr);
  531 + LIB3270_EXPORT unsigned char get_field_attribute(H3270 *session, int baddr);
528 532 LIB3270_EXPORT int screen_read(char *dest, int baddr, int count);
529 533 LIB3270_EXPORT void Input_String(const unsigned char *str);
530 534 LIB3270_EXPORT void screen_size(int *rows, int *cols);
... ... @@ -561,9 +565,8 @@
561 565 LIB3270_EXPORT void RunPendingEvents(int wait);
562 566 LIB3270_EXPORT int Wait(int seconds);
563 567  
564   - LIB3270_EXPORT void ctlr_erase(int alt);
565   - LIB3270_EXPORT int ctlr_get_cols(void);
566   - LIB3270_EXPORT int ctlr_get_rows(void);
  568 + LIB3270_EXPORT int ctlr_get_cols(void) __attribute__ ((deprecated));
  569 + LIB3270_EXPORT int ctlr_get_rows(void) __attribute__ ((deprecated));
567 570  
568 571 /* Screen calls */
569 572 LIB3270_EXPORT void screen_resume(void);
... ...
latest/src/lib/ansi.c
... ... @@ -605,10 +605,10 @@ ansi_reset(int ig1 unused, int ig2 unused)
605 605 tabs[i] = 0x01;
606 606 held_wrap = False;
607 607 if (!first) {
608   - ctlr_altbuffer(True);
  608 + ctlr_altbuffer(&h3270,True);
609 609 ctlr_aclear(0, h3270.rows * h3270.cols, 1);
610   - ctlr_altbuffer(False);
611   - ctlr_clear(False);
  610 + ctlr_altbuffer(&h3270,False);
  611 + ctlr_clear(&h3270,False);
612 612 screen_80();
613 613 }
614 614 first = False;
... ... @@ -714,7 +714,7 @@ ansi_erase_in_display(int nn, int ig2 unused)
714 714 ctlr_aclear(0, h3270.cursor_addr + 1, 1);
715 715 break;
716 716 case 2: /* all (without moving cursor) */
717   - if (cursor_addr == 0 && !is_altbuffer)
  717 + if (cursor_addr == 0 && !h3270.is_altbuffer)
718 718 scroll_save(h3270.rows, True);
719 719 ctlr_aclear(0, h3270.rows * h3270.cols, 1);
720 720 break;
... ... @@ -924,7 +924,7 @@ ansi_bell(int ig1 unused, int ig2 unused)
924 924 static enum state
925 925 ansi_newpage(int ig1 unused, int ig2 unused)
926 926 {
927   - ctlr_clear(False);
  927 + ctlr_clear(&h3270,False);
928 928 return DATA;
929 929 }
930 930  
... ... @@ -1443,7 +1443,7 @@ dec_set(int ig1 unused, int ig2 unused)
1443 1443 rev_wraparound_mode = 1;
1444 1444 break;
1445 1445 case 47: /* alt buffer */
1446   - ctlr_altbuffer(True);
  1446 + ctlr_altbuffer(&h3270,True);
1447 1447 break;
1448 1448 }
1449 1449 return DATA;
... ... @@ -1475,7 +1475,7 @@ dec_reset(int ig1 unused, int ig2 unused)
1475 1475 rev_wraparound_mode = 0;
1476 1476 break;
1477 1477 case 47: /* alt buffer */
1478   - ctlr_altbuffer(False);
  1478 + ctlr_altbuffer(&h3270,False);
1479 1479 break;
1480 1480 }
1481 1481 return DATA;
... ... @@ -1504,7 +1504,7 @@ dec_save(int ig1 unused, int ig2 unused)
1504 1504 saved_rev_wraparound_mode = rev_wraparound_mode;
1505 1505 break;
1506 1506 case 47: /* alt buffer */
1507   - saved_altbuffer = is_altbuffer;
  1507 + saved_altbuffer = h3270.is_altbuffer;
1508 1508 break;
1509 1509 }
1510 1510 return DATA;
... ... @@ -1539,7 +1539,7 @@ dec_restore(int ig1 unused, int ig2 unused)
1539 1539 rev_wraparound_mode = saved_rev_wraparound_mode;
1540 1540 break;
1541 1541 case 47: /* alt buffer */
1542   - ctlr_altbuffer(saved_altbuffer);
  1542 + ctlr_altbuffer(&h3270,saved_altbuffer);
1543 1543 break;
1544 1544 }
1545 1545 return DATA;
... ... @@ -1664,7 +1664,7 @@ ansi_scroll(void)
1664 1664  
1665 1665 /* Save the top line */
1666 1666 if (scroll_top == 1 && scroll_bottom == h3270.rows) {
1667   - if (!is_altbuffer)
  1667 + if (!h3270.is_altbuffer)
1668 1668 scroll_save(1, False);
1669 1669 ctlr_scroll();
1670 1670 return;
... ...
latest/src/lib/ctlr.c
... ... @@ -77,13 +77,13 @@ extern unsigned char aid;
77 77 // int cursor_addr;
78 78  
79 79 int buffer_addr;
80   -Boolean screen_alt = False; /* alternate screen? */
81   -Boolean is_altbuffer = False;
  80 +// Boolean screen_alt = False; /* alternate screen? */
  81 +// Boolean is_altbuffer = False;
82 82  
83 83 struct ea *ea_buf = NULL; /* 3270 device buffer */
84 84 /* ea_buf[-1] is the dummy default field attribute */
85 85  
86   -Boolean formatted = False; /* set in screen_disp */
  86 +// Boolean formatted = False; /* set in screen_disp */
87 87 unsigned char reply_mode = SF_SRM_FIELD;
88 88 int crm_nattr = 0;
89 89 unsigned char crm_attr[16];
... ... @@ -92,7 +92,7 @@ Boolean dbcs = False;
92 92 /* Statics */
93 93 static struct ea *aea_buf; /* alternate 3270 extended attribute buffer */
94 94 static unsigned char *zero_buf; /* empty buffer, for area clears */
95   -static void set_formatted(void);
  95 +static void set_formatted(H3270 *session);
96 96 static void ctlr_blanks(void);
97 97 static Boolean trace_primed = False;
98 98 static unsigned char default_fg;
... ... @@ -251,7 +251,7 @@ void ctlr_set_rows_cols(H3270 *session, int mn, int ovc, int ovr)
251 251 // Make sure that the current rows/cols are still 24x80.
252 252 session->cols = 80;
253 253 session->rows = 24;
254   - screen_alt = False;
  254 + session->screen_alt = False;
255 255  
256 256 }
257 257  
... ... @@ -260,16 +260,19 @@ void ctlr_set_rows_cols(H3270 *session, int mn, int ovc, int ovr)
260 260 * Set the formatted screen flag. A formatted screen is a screen that
261 261 * has at least one field somewhere on it.
262 262 */
263   -static void
264   -set_formatted(void)
  263 +static void set_formatted(H3270 *session)
265 264 {
266   - register int baddr;
  265 + register int baddr;
267 266  
268   - formatted = False;
  267 + CHECK_SESSION_HANDLE(session);
  268 +
  269 + session->formatted = False;
269 270 baddr = 0;
270   - do {
271   - if (ea_buf[baddr].fa) {
272   - formatted = True;
  271 + do
  272 + {
  273 + if (ea_buf[baddr].fa)
  274 + {
  275 + session->formatted = True;
273 276 break;
274 277 }
275 278 INC_BA(baddr);
... ... @@ -288,8 +291,7 @@ static void ctlr_half_connect(H3270 *session, int ignored unused, void *dunno)
288 291 /*
289 292 * Called when a host connects, disconnects, or changes ANSI/3270 modes.
290 293 */
291   -static void
292   -ctlr_connect(H3270 *session, int ignored unused, void *dunno)
  294 +static void ctlr_connect(H3270 *session, int ignored unused, void *dunno)
293 295 {
294 296 ticking_stop(session);
295 297 status_untiming(session);
... ... @@ -318,12 +320,13 @@ ctlr_connect(H3270 *session, int ignored unused, void *dunno)
318 320 * Find the buffer address of the field attribute for a given buffer address.
319 321 * Returns -1 if the screen isn't formatted.
320 322 */
321   -int
322   -find_field_attribute(int baddr)
  323 +int find_field_attribute(H3270 *h, int baddr)
323 324 {
324 325 int sbaddr;
325 326  
326   - if (!formatted)
  327 + CHECK_SESSION_HANDLE(h);
  328 +
  329 + if (!h->formatted)
327 330 return -1;
328 331  
329 332 sbaddr = baddr;
... ... @@ -338,12 +341,16 @@ find_field_attribute(int baddr)
338 341 /*
339 342 * Get Field width
340 343 */
341   -int find_field_length(int baddr)
  344 +int find_field_length(H3270 *h, int baddr)
342 345 {
343 346 int saddr;
344   - int addr = find_field_attribute(baddr);
  347 + int addr;
345 348 int width = 0;
346 349  
  350 + CHECK_SESSION_HANDLE(h);
  351 +
  352 + addr = find_field_attribute(h,baddr);
  353 +
347 354 if(addr < 0)
348 355 return -1;
349 356  
... ... @@ -364,10 +371,10 @@ int find_field_length(int baddr)
364 371 * Find the field attribute for the given buffer address. Return its address
365 372 * rather than its value.
366 373 */
367   -unsigned char
368   -get_field_attribute(int baddr)
  374 +unsigned char get_field_attribute(H3270 *h, int baddr)
369 375 {
370   - return ea_buf[find_field_attribute(baddr)].fa;
  376 + CHECK_SESSION_HANDLE(h);
  377 + return ea_buf[find_field_attribute(h,baddr)].fa;
371 378 }
372 379  
373 380 /*
... ... @@ -382,7 +389,7 @@ get_bounded_field_attribute(register int baddr, register int bound,
382 389 {
383 390 int sbaddr;
384 391  
385   - if (!formatted) {
  392 + if (!h3270.formatted) {
386 393 *fa_out = ea_buf[-1].fa;
387 394 return True;
388 395 }
... ... @@ -442,36 +449,39 @@ next_unprotected(int baddr0)
442 449 * Perform an erase command, which may include changing the (virtual) screen
443 450 * size.
444 451 */
445   -void
446   -ctlr_erase(int alt)
  452 +void ctlr_erase(H3270 *session, int alt)
447 453 {
448   - kybd_inhibit(False);
  454 + CHECK_SESSION_HANDLE(session);
449 455  
450   - ctlr_clear(True);
451   - screen_erase(&h3270);
  456 + kybd_inhibit(False);
452 457  
453   - /* Let a script go. */
454   -// sms_host_output();
  458 + ctlr_clear(session,True);
  459 + screen_erase(session);
455 460  
456   - if (alt == screen_alt)
  461 + if(alt == session->screen_alt)
457 462 return;
458 463  
459   - if (alt) {
  464 + if (alt)
  465 + {
460 466 /* Going from 24x80 to maximum. */
461   - screen_disp(&h3270);
462   - set_viewsize(&h3270,h3270.maxROWS,h3270.maxCOLS);
463   - } else {
  467 + screen_disp(session);
  468 + set_viewsize(session,session->maxROWS,session->maxCOLS);
  469 + }
  470 + else
  471 + {
464 472 /* Going from maximum to 24x80. */
465   - if (h3270.maxROWS > 24 || h3270.maxCOLS > 80) {
466   - if (visible_control) {
  473 + if (session->maxROWS > 24 || session->maxCOLS > 80)
  474 + {
  475 + if (visible_control)
  476 + {
467 477 ctlr_blanks();
468   - screen_disp(&h3270);
  478 + screen_disp(session);
469 479 }
470   - set_viewsize(&h3270,24,80);
  480 + set_viewsize(session,24,80);
471 481 }
472 482 }
473 483  
474   - screen_alt = alt;
  484 + session->screen_alt = alt;
475 485 }
476 486  
477 487  
... ... @@ -500,7 +510,7 @@ process_ds(unsigned char *buf, int buflen)
500 510 case CMD_EWA: /* erase/write alternate */
501 511 case SNA_CMD_EWA:
502 512 trace_ds("EraseWriteAlternate");
503   - ctlr_erase(True);
  513 + ctlr_erase(NULL,True);
504 514 if ((rv = ctlr_write(buf, buflen, True)) < 0)
505 515 return rv;
506 516 return PDS_OKAY_NO_OUTPUT;
... ... @@ -508,7 +518,7 @@ process_ds(unsigned char *buf, int buflen)
508 518 case CMD_EW: /* erase/write */
509 519 case SNA_CMD_EW:
510 520 trace_ds("EraseWrite");
511   - ctlr_erase(False);
  521 + ctlr_erase(NULL,False);
512 522 if ((rv = ctlr_write(buf, buflen, True)) < 0)
513 523 return rv;
514 524 return PDS_OKAY_NO_OUTPUT;
... ... @@ -685,7 +695,7 @@ ctlr_read_modified(unsigned char aid_byte, Boolean all)
685 695 }
686 696  
687 697 baddr = 0;
688   - if (formatted) {
  698 + if (h3270.formatted) {
689 699 /* find first field attribute */
690 700 do {
691 701 if (ea_buf[baddr].fa)
... ... @@ -934,7 +944,7 @@ ctlr_snap_buffer(void)
934 944 unsigned char av;
935 945  
936 946 space3270out(2);
937   - *obptr++ = screen_alt ? CMD_EWA : CMD_EW;
  947 + *obptr++ = h3270.screen_alt ? CMD_EWA : CMD_EW;
938 948 *obptr++ = code_table[0];
939 949  
940 950 do {
... ... @@ -1061,7 +1071,7 @@ ctlr_erase_all_unprotected(void)
1061 1071  
1062 1072 kybd_inhibit(False);
1063 1073  
1064   - if (formatted) {
  1074 + if (h3270.formatted) {
1065 1075 /* find first field attribute */
1066 1076 baddr = 0;
1067 1077 do {
... ... @@ -1095,7 +1105,7 @@ ctlr_erase_all_unprotected(void)
1095 1105 if (!f)
1096 1106 cursor_move(0);
1097 1107 } else {
1098   - ctlr_clear(True);
  1108 + ctlr_clear(&h3270,True);
1099 1109 }
1100 1110 aid = AID_NO;
1101 1111 do_reset(False);
... ... @@ -1151,7 +1161,7 @@ ctlr_write(unsigned char buf[], int buflen, Boolean erase)
1151 1161 ctlr_add_gr(buffer_addr, 0); \
1152 1162 ctlr_add_ic(buffer_addr, 0); \
1153 1163 trace_ds("%s",see_attr(fa)); \
1154   - formatted = True; \
  1164 + h3270.formatted = True; \
1155 1165 }
1156 1166  
1157 1167 kybd_inhibit(False);
... ... @@ -1203,7 +1213,7 @@ ctlr_write(unsigned char buf[], int buflen, Boolean erase)
1203 1213  
1204 1214 last_cmd = True;
1205 1215 last_zpt = False;
1206   - current_fa = get_field_attribute(buffer_addr);
  1216 + current_fa = get_field_attribute(&h3270,buffer_addr);
1207 1217  
1208 1218 #define ABORT_WRITEx { \
1209 1219 rv = PDS_BAD_ADDR; \
... ... @@ -1239,7 +1249,7 @@ ctlr_write(unsigned char buf[], int buflen, Boolean erase)
1239 1249 if (buffer_addr >= h3270.cols * h3270.rows) {
1240 1250 ABORT_WRITE("invalid SBA address");
1241 1251 }
1242   - current_fa = get_field_attribute(buffer_addr);
  1252 + current_fa = get_field_attribute(&h3270,buffer_addr);
1243 1253 last_cmd = True;
1244 1254 last_zpt = False;
1245 1255 break;
... ... @@ -1399,7 +1409,7 @@ ctlr_write(unsigned char buf[], int buflen, Boolean erase)
1399 1409 INC_BA(buffer_addr);
1400 1410 }
1401 1411 } while (buffer_addr != baddr);
1402   - current_fa = get_field_attribute(buffer_addr);
  1412 + current_fa = get_field_attribute(&h3270,buffer_addr);
1403 1413 last_cmd = True;
1404 1414 last_zpt = False;
1405 1415 break;
... ... @@ -1430,7 +1440,7 @@ ctlr_write(unsigned char buf[], int buflen, Boolean erase)
1430 1440 }
1431 1441 INC_BA(buffer_addr);
1432 1442 } while (buffer_addr != baddr);
1433   - current_fa = get_field_attribute(buffer_addr);
  1443 + current_fa = get_field_attribute(&h3270,buffer_addr);
1434 1444 last_cmd = True;
1435 1445 last_zpt = False;
1436 1446 break;
... ... @@ -1450,7 +1460,7 @@ ctlr_write(unsigned char buf[], int buflen, Boolean erase)
1450 1460 ctlr_add_gr(buffer_addr, default_gr);
1451 1461 ctlr_add_ic(buffer_addr, default_ic);
1452 1462 INC_BA(buffer_addr);
1453   - current_fa = get_field_attribute(buffer_addr);
  1463 + current_fa = get_field_attribute(&h3270,buffer_addr);
1454 1464 last_cmd = False;
1455 1465 last_zpt = False;
1456 1466 break;
... ... @@ -1697,7 +1707,7 @@ ctlr_write(unsigned char buf[], int buflen, Boolean erase)
1697 1707 if (d != DBCS_NONE && why == DBCS_FIELD) {
1698 1708 ABORT_WRITE("SI in DBCS field");
1699 1709 }
1700   - fa_addr = find_field_attribute(buffer_addr);
  1710 + fa_addr = find_field_attribute(&h3270,buffer_addr);
1701 1711 baddr = buffer_addr;
1702 1712 DEC_BA(baddr);
1703 1713 while (!aborted &&
... ... @@ -1849,7 +1859,7 @@ ctlr_write(unsigned char buf[], int buflen, Boolean erase)
1849 1859 break;
1850 1860 }
1851 1861 }
1852   - set_formatted();
  1862 + set_formatted(&h3270);
1853 1863 END_TEXT0;
1854 1864 trace_ds("\n");
1855 1865 if (wcc_keyboard_restore) {
... ... @@ -2278,8 +2288,8 @@ ps_process(void)
2278 2288 #if defined(X3270_FT) /*[*/
2279 2289 /* Process file transfers. */
2280 2290 if (ft_state != FT_NONE && /* transfer in progress */
2281   - formatted && /* screen is formatted */
2282   - !screen_alt && /* 24x80 screen */
  2291 + h3270.formatted && /* screen is formatted */
  2292 + !h3270.screen_alt && /* 24x80 screen */
2283 2293 !kybdlock && /* keyboard not locked */
2284 2294 /* magic field */
2285 2295 ea_buf[1919].fa && FA_IS_SKIP(ea_buf[1919].fa)) {
... ... @@ -2308,7 +2318,7 @@ ctlr_any_data(void)
2308 2318 * and buffer addresses and extended attributes.
2309 2319 */
2310 2320 void
2311   -ctlr_clear(Boolean can_snap)
  2321 +ctlr_clear(H3270 *session, Boolean can_snap)
2312 2322 {
2313 2323 /* Snap any data that is about to be lost into the trace file. */
2314 2324 if (ctlr_any_data()) {
... ... @@ -2316,18 +2326,18 @@ ctlr_clear(Boolean can_snap)
2316 2326 if (can_snap && !trace_skipping && toggled(SCREEN_TRACE))
2317 2327 trace_screen();
2318 2328 #endif /*]*/
2319   - scroll_save(maxROWS, ever_3270 ? False : True);
  2329 + scroll_save(session->maxROWS, ever_3270 ? False : True);
2320 2330 }
2321 2331 #if defined(X3270_TRACE) /*[*/
2322 2332 trace_skipping = False;
2323 2333 #endif /*]*/
2324 2334  
2325 2335 /* Clear the screen. */
2326   - (void) memset((char *)ea_buf, 0, h3270.rows*h3270.cols*sizeof(struct ea));
  2336 + (void) memset((char *)ea_buf, 0, session->rows*session->cols*sizeof(struct ea));
2327 2337 cursor_move(0);
2328 2338 buffer_addr = 0;
2329 2339 // unselect(0, ROWS*COLS);
2330   - formatted = False;
  2340 + session->formatted = False;
2331 2341 default_fg = 0;
2332 2342 default_bg = 0;
2333 2343 default_gr = 0;
... ... @@ -2335,7 +2345,7 @@ ctlr_clear(Boolean can_snap)
2335 2345 sscp_start = 0;
2336 2346  
2337 2347 // ALL_CHANGED;
2338   - screen_erase(&h3270);
  2348 + screen_erase(session);
2339 2349  
2340 2350 }
2341 2351  
... ... @@ -2354,7 +2364,7 @@ ctlr_blanks(void)
2354 2364 cursor_move(0);
2355 2365 buffer_addr = 0;
2356 2366 // unselect(0, ROWS*COLS);
2357   - formatted = False;
  2367 + h3270.formatted = False;
2358 2368 ALL_CHANGED;
2359 2369 }
2360 2370  
... ... @@ -2376,7 +2386,7 @@ ctlr_add(int baddr, unsigned char c, unsigned char cs)
2376 2386 if (toggled(SCREEN_TRACE))
2377 2387 trace_screen();
2378 2388 #endif /*]*/
2379   - scroll_save(maxROWS, False);
  2389 + scroll_save(session->maxROWS, False);
2380 2390 trace_primed = False;
2381 2391 }
2382 2392 /*
... ... @@ -2622,22 +2632,23 @@ void changed(H3270 *session, int bstart, int bend)
2622 2632  
2623 2633 }
2624 2634  
2625   -#if defined(X3270_ANSI) /*[*/
2626 2635 /*
2627 2636 * Swap the regular and alternate screen buffers
2628 2637 */
2629   -void
2630   -ctlr_altbuffer(Boolean alt)
  2638 +void ctlr_altbuffer(H3270 *session, int alt)
2631 2639 {
2632 2640 struct ea *etmp;
2633 2641  
2634   - if (alt != is_altbuffer) {
  2642 + CHECK_SESSION_HANDLE(session);
  2643 +
  2644 + if (alt != session->is_altbuffer)
  2645 + {
2635 2646  
2636 2647 etmp = ea_buf;
2637 2648 ea_buf = aea_buf;
2638 2649 aea_buf = etmp;
2639 2650  
2640   - is_altbuffer = alt;
  2651 + session->is_altbuffer = alt;
2641 2652 ALL_CHANGED;
2642 2653 // unselect(0, ROWS*COLS);
2643 2654  
... ... @@ -2648,7 +2659,6 @@ ctlr_altbuffer(Boolean alt)
2648 2659 blink_start();
2649 2660 }
2650 2661 }
2651   -#endif /*]*/
2652 2662  
2653 2663  
2654 2664 /*
... ... @@ -2659,7 +2669,7 @@ mdt_set(int baddr)
2659 2669 {
2660 2670 int faddr;
2661 2671  
2662   - faddr = find_field_attribute(baddr);
  2672 + faddr = find_field_attribute(&h3270,baddr);
2663 2673 if (faddr >= 0 && !(ea_buf[faddr].fa & FA_MODIFY)) {
2664 2674 ea_buf[faddr].fa |= FA_MODIFY;
2665 2675 if (appres.modified_sel)
... ... @@ -2672,7 +2682,7 @@ mdt_clear(int baddr)
2672 2682 {
2673 2683 int faddr;
2674 2684  
2675   - faddr = find_field_attribute(baddr);
  2685 + faddr = find_field_attribute(&h3270,baddr);
2676 2686 if (faddr >= 0 && (ea_buf[faddr].fa & FA_MODIFY)) {
2677 2687 ea_buf[faddr].fa &= ~FA_MODIFY;
2678 2688 if (appres.modified_sel)
... ...
latest/src/lib/ctlr.h
... ... @@ -20,5 +20,5 @@
20 20 LIB3270_INTERNAL int buffer_addr; /**< buffer address */
21 21 LIB3270_INTERNAL int cursor_addr; /**< cursor address */
22 22 LIB3270_INTERNAL struct ea *ea_buf; /**< 3270 device buffer */
23   -LIB3270_INTERNAL Boolean formatted; /**< contains at least one field? */
24   -LIB3270_INTERNAL Boolean is_altbuffer; /**< in alternate-buffer mode? */
  23 +//LIB3270_INTERNAL Boolean formatted; /**< contains at least one field? */
  24 +//LIB3270_INTERNAL Boolean is_altbuffer; /**< in alternate-buffer mode? */
... ...
latest/src/lib/ctlrc.h
... ... @@ -31,11 +31,11 @@ LIB3270_INTERNAL void ctlr_add_cs(int baddr, unsigned char cs);
31 31 LIB3270_INTERNAL void ctlr_add_fa(int baddr, unsigned char fa, unsigned char cs);
32 32 LIB3270_INTERNAL void ctlr_add_fg(int baddr, unsigned char color);
33 33 LIB3270_INTERNAL void ctlr_add_gr(int baddr, unsigned char gr);
34   -LIB3270_INTERNAL void ctlr_altbuffer(Boolean alt);
  34 +LIB3270_INTERNAL void ctlr_altbuffer(H3270 *session, int alt);
35 35 LIB3270_INTERNAL Boolean ctlr_any_data(void);
36 36 LIB3270_INTERNAL void ctlr_bcopy(int baddr_from, int baddr_to, int count, int move_ea);
37 37 // LIB3270_INTERNAL void ctlr_changed(int bstart, int bend);
38   -LIB3270_INTERNAL void ctlr_clear(Boolean can_snap);
  38 +LIB3270_INTERNAL void ctlr_clear(H3270 *session, Boolean can_snap);
39 39 LIB3270_INTERNAL void ctlr_erase_all_unprotected(void);
40 40 LIB3270_INTERNAL void ctlr_init(unsigned cmask);
41 41 LIB3270_INTERNAL void ctlr_read_buffer(unsigned char aid_byte);
... ... @@ -59,6 +59,7 @@ LIB3270_INTERNAL void ps_process(void);
59 59  
60 60 LIB3270_INTERNAL void update_model_info(H3270 *session, int model, int cols, int rows);
61 61 LIB3270_INTERNAL void ctlr_set_rows_cols(H3270 *session, int mn, int ovc, int ovr);
  62 +LIB3270_INTERNAL void ctlr_erase(H3270 *session, int alt);
62 63  
63 64 LIB3270_INTERNAL void ticking_start(H3270 *session, Boolean anyway);
64 65 LIB3270_INTERNAL void toggle_nop(struct toggle *t, enum toggle_type tt);
... ...
latest/src/lib/globals.h
... ... @@ -203,10 +203,10 @@ LIB3270_INTERNAL char *hostname;
203 203 LIB3270_INTERNAL Boolean local_process;
204 204 #endif /*]*/
205 205  
206   -LIB3270_INTERNAL int maxCOLS;
207   -LIB3270_INTERNAL int maxROWS;
208   -LIB3270_INTERNAL char *model_name;
209   -LIB3270_INTERNAL int model_num;
  206 +// LIB3270_INTERNAL int maxCOLS;
  207 +// LIB3270_INTERNAL int maxROWS;
  208 +// LIB3270_INTERNAL char *model_name;
  209 +// LIB3270_INTERNAL int model_num;
210 210 LIB3270_INTERNAL Boolean no_login_host;
211 211 LIB3270_INTERNAL Boolean non_tn3270e_host;
212 212 LIB3270_INTERNAL int ov_cols, ov_rows;
... ...
latest/src/lib/kybd.c
... ... @@ -766,8 +766,8 @@ key_Character(int code, Boolean with_ge, Boolean pasting, Boolean *skipped)
766 766 return False;
767 767 }
768 768 baddr = h3270.cursor_addr;
769   - faddr = find_field_attribute(baddr);
770   - fa = get_field_attribute(baddr);
  769 + faddr = find_field_attribute(&h3270,baddr);
  770 + fa = get_field_attribute(&h3270,baddr);
771 771 if (ea_buf[baddr].fa || FA_IS_PROTECTED(fa)) {
772 772 operator_error(KL_OERR_PROTECTED);
773 773 return False;
... ... @@ -919,7 +919,7 @@ key_Character(int code, Boolean with_ge, Boolean pasting, Boolean *skipped)
919 919 INC_BA(baddr);
920 920  
921 921 /* Replace leading nulls with blanks, if desired. */
922   - if (formatted && toggled(BLANK_FILL)) {
  922 + if (h3270.formatted && toggled(BLANK_FILL)) {
923 923 register int baddr_fill = baddr;
924 924  
925 925 DEC_BA(baddr_fill);
... ... @@ -1602,7 +1602,7 @@ LIB3270_ACTION( firstfield )
1602 1602 return 0;
1603 1603 }
1604 1604 #endif /*]*/
1605   - if (!formatted) {
  1605 + if (!h3270.formatted) {
1606 1606 cursor_move(0);
1607 1607 return 0;
1608 1608 }
... ... @@ -1692,7 +1692,7 @@ do_delete(void)
1692 1692 baddr = h3270.cursor_addr;
1693 1693  
1694 1694 /* Can't delete a field attribute. */
1695   - fa = get_field_attribute(baddr);
  1695 + fa = get_field_attribute(&h3270,baddr);
1696 1696 if (FA_IS_PROTECTED(fa) || ea_buf[baddr].fa) {
1697 1697 operator_error(KL_OERR_PROTECTED);
1698 1698 return False;
... ... @@ -1718,7 +1718,7 @@ do_delete(void)
1718 1718 ndel = 1;
1719 1719  
1720 1720 /* find next fa */
1721   - if (formatted) {
  1721 + if (h3270.formatted) {
1722 1722 end_baddr = baddr;
1723 1723 do {
1724 1724 INC_BA(end_baddr);
... ... @@ -1826,7 +1826,7 @@ do_erase(void)
1826 1826 enum dbcs_state d;
1827 1827  
1828 1828 baddr = h3270.cursor_addr;
1829   - faddr = find_field_attribute(baddr);
  1829 + faddr = find_field_attribute(&h3270,baddr);
1830 1830 if (faddr == baddr || FA_IS_PROTECTED(ea_buf[baddr].fa)) {
1831 1831 operator_error(KL_OERR_PROTECTED);
1832 1832 return;
... ... @@ -1994,11 +1994,11 @@ LIB3270_ACTION( previousword )
1994 1994 if (IN_ANSI)
1995 1995 return 0;
1996 1996 #endif /*]*/
1997   - if (!formatted)
  1997 + if (!h3270.formatted)
1998 1998 return 0;
1999 1999  
2000 2000 baddr = h3270.cursor_addr;
2001   - prot = FA_IS_PROTECTED(get_field_attribute(baddr));
  2001 + prot = FA_IS_PROTECTED(get_field_attribute(&h3270,baddr));
2002 2002  
2003 2003 /* Skip to before this word, if in one now. */
2004 2004 if (!prot) {
... ... @@ -2017,7 +2017,7 @@ LIB3270_ACTION( previousword )
2017 2017 c = ea_buf[baddr].cc;
2018 2018 if (ea_buf[baddr].fa) {
2019 2019 DEC_BA(baddr);
2020   - prot = FA_IS_PROTECTED(get_field_attribute(baddr));
  2020 + prot = FA_IS_PROTECTED(get_field_attribute(&h3270,baddr));
2021 2021 continue;
2022 2022 }
2023 2023 if (!prot && c != EBC_space && c != EBC_null)
... ... @@ -2087,7 +2087,7 @@ nu_word(int baddr)
2087 2087 unsigned char c;
2088 2088 Boolean prot;
2089 2089  
2090   - prot = FA_IS_PROTECTED(get_field_attribute(baddr));
  2090 + prot = FA_IS_PROTECTED(get_field_attribute(&h3270,baddr));
2091 2091  
2092 2092 do {
2093 2093 c = ea_buf[baddr].cc;
... ... @@ -2145,12 +2145,12 @@ LIB3270_ACTION( nextword )
2145 2145 if (IN_ANSI)
2146 2146 return 0;
2147 2147 #endif /*]*/
2148   - if (!formatted)
  2148 + if (!h3270.formatted)
2149 2149 return 0;
2150 2150  
2151 2151 /* If not in an unprotected field, go to the next unprotected word. */
2152 2152 if (ea_buf[h3270.cursor_addr].fa ||
2153   - FA_IS_PROTECTED(get_field_attribute(h3270.cursor_addr))) {
  2153 + FA_IS_PROTECTED(get_field_attribute(&h3270,h3270.cursor_addr))) {
2154 2154 baddr = nu_word(h3270.cursor_addr);
2155 2155 if (baddr != -1)
2156 2156 cursor_move(baddr);
... ... @@ -2311,7 +2311,7 @@ LIB3270_CURSOR_ACTION( newline )
2311 2311 #endif /*]*/
2312 2312 baddr = (h3270.cursor_addr + h3270.cols) % (h3270.cols * h3270.rows); /* down */
2313 2313 baddr = (baddr / h3270.cols) * h3270.cols; /* 1st col */
2314   - faddr = find_field_attribute(baddr);
  2314 + faddr = find_field_attribute(&h3270,baddr);
2315 2315 fa = ea_buf[faddr].fa;
2316 2316 if (faddr != baddr && !FA_IS_PROTECTED(fa))
2317 2317 cursor_move(baddr);
... ... @@ -2426,7 +2426,7 @@ LIB3270_ACTION( clear )
2426 2426 }
2427 2427 #endif /*]*/
2428 2428 buffer_addr = 0;
2429   - ctlr_clear(True);
  2429 + ctlr_clear(&h3270,True);
2430 2430 cursor_move(0);
2431 2431 if (CONNECTED)
2432 2432 key_AID(AID_CLEAR);
... ... @@ -2566,14 +2566,14 @@ LIB3270_ACTION( eraseeol )
2566 2566 #endif /*]*/
2567 2567  
2568 2568 baddr = h3270.cursor_addr;
2569   - fa = get_field_attribute(baddr);
  2569 + fa = get_field_attribute(&h3270,baddr);
2570 2570 if (FA_IS_PROTECTED(fa) || ea_buf[baddr].fa)
2571 2571 {
2572 2572 operator_error(KL_OERR_PROTECTED);
2573 2573 return -1;
2574 2574 }
2575 2575  
2576   - if (formatted)
  2576 + if (h3270.formatted)
2577 2577 {
2578 2578 /* erase to next field attribute or current line */
2579 2579 do
... ... @@ -2631,12 +2631,12 @@ LIB3270_ACTION( eraseeof )
2631 2631 return 0;
2632 2632 #endif /*]*/
2633 2633 baddr = h3270.cursor_addr;
2634   - fa = get_field_attribute(baddr);
  2634 + fa = get_field_attribute(&h3270,baddr);
2635 2635 if (FA_IS_PROTECTED(fa) || ea_buf[baddr].fa) {
2636 2636 operator_error(KL_OERR_PROTECTED);
2637 2637 return -1;
2638 2638 }
2639   - if (formatted) { /* erase to next field attribute */
  2639 + if (h3270.formatted) { /* erase to next field attribute */
2640 2640 do {
2641 2641 ctlr_add(baddr, EBC_null, 0);
2642 2642 INC_BA(baddr);
... ... @@ -2679,7 +2679,7 @@ LIB3270_ACTION( eraseinput )
2679 2679 if (IN_ANSI)
2680 2680 return 0;
2681 2681 #endif /*]*/
2682   - if (formatted) {
  2682 + if (h3270.formatted) {
2683 2683 /* find first field attribute */
2684 2684 baddr = 0;
2685 2685 do {
... ... @@ -2712,7 +2712,7 @@ LIB3270_ACTION( eraseinput )
2712 2712 if (!f)
2713 2713 cursor_move(0);
2714 2714 } else {
2715   - ctlr_clear(True);
  2715 + ctlr_clear(&h3270,True);
2716 2716 cursor_move(0);
2717 2717 }
2718 2718 screen_disp(&h3270);
... ... @@ -2745,11 +2745,11 @@ LIB3270_ACTION( deleteword )
2745 2745 return 0;
2746 2746 }
2747 2747 #endif /*]*/
2748   - if (!formatted)
  2748 + if (!h3270.formatted)
2749 2749 return 0;
2750 2750  
2751 2751 baddr = h3270.cursor_addr;
2752   - fa = get_field_attribute(baddr);
  2752 + fa = get_field_attribute(&h3270,baddr);
2753 2753  
2754 2754 /* Make sure we're on a modifiable field. */
2755 2755 if (FA_IS_PROTECTED(fa) || ea_buf[baddr].fa) {
... ... @@ -2812,11 +2812,11 @@ LIB3270_ACTION( deletefield )
2812 2812 return 0;
2813 2813 }
2814 2814 #endif /*]*/
2815   - if (!formatted)
  2815 + if (!h3270.formatted)
2816 2816 return 0;
2817 2817  
2818 2818 baddr = h3270.cursor_addr;
2819   - fa = get_field_attribute(baddr);
  2819 + fa = get_field_attribute(&h3270,baddr);
2820 2820 if (FA_IS_PROTECTED(fa) || ea_buf[baddr].fa) {
2821 2821 operator_error(KL_OERR_PROTECTED);
2822 2822 return -1;
... ... @@ -2916,10 +2916,10 @@ LIB3270_ACTION( fieldend )
2916 2916 if (IN_ANSI)
2917 2917 return 0;
2918 2918 #endif /*]*/
2919   - if (!formatted)
  2919 + if (!h3270.formatted)
2920 2920 return 0;
2921 2921 baddr = h3270.cursor_addr;
2922   - faddr = find_field_attribute(baddr);
  2922 + faddr = find_field_attribute(&h3270,baddr);
2923 2923 fa = ea_buf[faddr].fa;
2924 2924 if (faddr == baddr || FA_IS_PROTECTED(fa))
2925 2925 return 0;
... ... @@ -3299,7 +3299,7 @@ remargin(int lmargin)
3299 3299 b0 = baddr;
3300 3300 ever = True;
3301 3301 }
3302   - faddr = find_field_attribute(baddr);
  3302 + faddr = find_field_attribute(&h3270,baddr);
3303 3303 fa = ea_buf[faddr].fa;
3304 3304 if (faddr == baddr || FA_IS_PROTECTED(fa)) {
3305 3305 baddr = next_unprotected(baddr);
... ... @@ -3855,10 +3855,10 @@ kybd_prime(void)
3855 3855 * No point in trying if the screen isn't formatted, the keyboard
3856 3856 * is locked, or we aren't in 3270 mode.
3857 3857 */
3858   - if (!formatted || kybdlock || !IN_3270)
  3858 + if (!h3270.formatted || kybdlock || !IN_3270)
3859 3859 return 0;
3860 3860  
3861   - fa = get_field_attribute(h3270.cursor_addr);
  3861 + fa = get_field_attribute(&h3270,h3270.cursor_addr);
3862 3862 if (ea_buf[h3270.cursor_addr].fa || FA_IS_PROTECTED(fa)) {
3863 3863 /*
3864 3864 * The cursor is not in an unprotected field. Find the
... ...
latest/src/lib/paste.c
... ... @@ -111,7 +111,7 @@
111 111 ever = True;
112 112 }
113 113  
114   - faddr = find_field_attribute(baddr);
  114 + faddr = find_field_attribute(&h3270,baddr);
115 115 fa = ea_buf[faddr].fa;
116 116 if (faddr == baddr || FA_IS_PROTECTED(fa))
117 117 {
... ... @@ -132,7 +132,7 @@
132 132  
133 133 if(toggled(SMART_PASTE))
134 134 {
135   - int faddr = find_field_attribute(h3270.cursor_addr);
  135 + int faddr = find_field_attribute(&h3270,h3270.cursor_addr);
136 136 if(FA_IS_PROTECTED(ea_buf[faddr].fa))
137 137 h3270.cursor_addr++;
138 138 else
... ... @@ -190,7 +190,7 @@ LIB3270_EXPORT int lib3270_set_string(H3270 *h, const unsigned char *str)
190 190 {
191 191 baddr = (h->cursor_addr + h->cols) % (h->cols * h->rows); /* down */
192 192 baddr = (baddr / h->cols) * h->cols; /* 1st col */
193   - faddr = find_field_attribute(baddr);
  193 + faddr = find_field_attribute(h,baddr);
194 194 fa = ea_buf[faddr].fa;
195 195 if (faddr != baddr && !FA_IS_PROTECTED(fa))
196 196 cursor_move(baddr);
... ...
latest/src/lib/print.c
... ... @@ -150,7 +150,7 @@ fprint_screen(FILE *f, Boolean even_if_empty, Boolean use_html)
150 150 int ns = 0;
151 151 int nr = 0;
152 152 Boolean any = False;
153   - int fa_addr = find_field_attribute(0);
  153 + int fa_addr = find_field_attribute(&h3270,0);
154 154 unsigned char fa = ea_buf[fa_addr].fa;
155 155 int fa_color, current_color;
156 156 Bool fa_high, current_high;
... ...
latest/src/lib/screen.c
... ... @@ -99,11 +99,19 @@ void set_display_charset(char *dcs)
99 99 callbacks->charset(dcs);
100 100 }
101 101  
  102 +/*
102 103 static void addch(int row, int col, int c, int attr)
103 104 {
104 105 if(callbacks && callbacks->addch)
105 106 callbacks->addch(row, col, c, attr);
106 107 }
  108 +*/
  109 +
  110 +static void addch(H3270 *session, int baddr, unsigned short c, int attr)
  111 +{
  112 + if(callbacks && callbacks->addch)
  113 + callbacks->addch(baddr/session->cols, baddr%session->cols, c, attr);
  114 +}
107 115  
108 116 /**
109 117 * Initialize the screen.
... ... @@ -141,8 +149,6 @@ int screen_init(H3270 *session)
141 149 // if (ab_mode == TS_AUTO)
142 150 // ab_mode = appres.m3279? TS_ON: TS_OFF;
143 151  
144   - /* Pull in the user's color mappings. */
145   -
146 152 /* Set up the controller. */
147 153 ctlr_init(-1);
148 154 ctlr_reinit(session,-1);
... ... @@ -298,7 +304,7 @@ void update_model_info(H3270 *session, int model, int cols, int rows)
298 304 /* Get screen contents */
299 305 int screen_read(char *dest, int baddr, int count)
300 306 {
301   - unsigned char fa = get_field_attribute(baddr);
  307 + unsigned char fa = get_field_attribute(&h3270,baddr);
302 308 int max = (h3270.maxROWS * h3270.maxCOLS);
303 309  
304 310 *dest = 0;
... ... @@ -333,20 +339,15 @@ int screen_read(char *dest, int baddr, int count)
333 339 static void screen_update(H3270 *session, int bstart, int bend)
334 340 {
335 341  
336   - int baddr, row, col;
  342 + int baddr;
337 343 unsigned short a;
338 344 int attr = COLOR_GREEN;
339 345 unsigned char fa;
340 346 int fa_addr;
341 347  
342   - fa = get_field_attribute(bstart);
  348 + fa = get_field_attribute(session,bstart);
343 349 a = color_from_fa(fa);
344   - fa_addr = find_field_attribute(bstart); // may be -1, that's okay
345   -
346   - row = bstart/session->cols;
347   - col = bstart%session->cols;
348   -
349   - Trace("Update@%d-%d (%d,%d): [%c]",bstart,bend,row,col,ebc2asc[ea_buf[bstart].cc]);
  350 + fa_addr = find_field_attribute(session,bstart); // may be -1, that's okay
350 351  
351 352 for(baddr = bstart; baddr <= bend; baddr++)
352 353 {
... ... @@ -356,12 +357,12 @@ static void screen_update(H3270 *session, int bstart, int bend)
356 357 fa_addr = baddr;
357 358 fa = ea_buf[baddr].fa;
358 359 a = calc_attrs(baddr, baddr, fa);
359   - addch(row,col,' ',(attr = COLOR_GREEN)|CHAR_ATTR_MARKER);
  360 + addch(session,baddr,' ',(attr = COLOR_GREEN)|CHAR_ATTR_MARKER);
360 361 }
361 362 else if (FA_IS_ZERO(fa))
362 363 {
363 364 // Blank.
364   - addch(row,col,' ',attr=a);
  365 + addch(session,baddr,' ',attr=a);
365 366 }
366 367 else
367 368 {
... ... @@ -384,27 +385,21 @@ static void screen_update(H3270 *session, int bstart, int bend)
384 385  
385 386 if (ea_buf[baddr].cs == CS_LINEDRAW)
386 387 {
387   - addch(row,col,ea_buf[baddr].cc,attr);
  388 + addch(session,baddr,ea_buf[baddr].cc,attr);
388 389 }
389 390 else if (ea_buf[baddr].cs == CS_APL || (ea_buf[baddr].cs & CS_GE))
390 391 {
391   - addch(row,col,ea_buf[baddr].cc,attr|CHAR_ATTR_CG);
  392 + addch(session,baddr,ea_buf[baddr].cc,attr|CHAR_ATTR_CG);
392 393 }
393 394 else
394 395 {
395 396 if (toggled(MONOCASE))
396   - addch(row,col,asc2uc[ebc2asc[ea_buf[baddr].cc]],attr);
  397 + addch(session,baddr,asc2uc[ebc2asc[ea_buf[baddr].cc]],attr);
397 398 else
398   - addch(row,col,ebc2asc[ea_buf[baddr].cc],attr);
  399 + addch(session,baddr,ebc2asc[ea_buf[baddr].cc],attr);
399 400 }
400 401 }
401 402  
402   - if(++col >= session->cols)
403   - {
404   - row++;
405   - col=0;
406   - }
407   -
408 403 }
409 404 }
410 405  
... ... @@ -598,8 +593,10 @@ static void status_connect(H3270 *session, int connected, void *dunno)
598 593 {
599 594 STATUS_CODE id = STATUS_CODE_USER;
600 595  
601   - if (connected) {
  596 + ctlr_erase(session,1);
602 597  
  598 + if (connected)
  599 + {
603 600 set_status(session,OIA_FLAG_BOXSOLID,IN_3270 && !IN_SSCP);
604 601  
605 602 if (kybdlock & KL_AWAITING_FIRST)
... ... @@ -611,7 +608,9 @@ static void status_connect(H3270 *session, int connected, void *dunno)
611 608 set_status(session,OIA_FLAG_SECURE,session->secure_connection);
612 609 #endif /*]*/
613 610  
614   - } else {
  611 + }
  612 + else
  613 + {
615 614 set_status(session,OIA_FLAG_BOXSOLID,False);
616 615 set_status(session,OIA_FLAG_SECURE,False);
617 616  
... ...
latest/src/lib/sf.c
... ... @@ -65,7 +65,7 @@
65 65 #include <lib3270/api.h>
66 66  
67 67 /* Externals: ctlr.c */
68   -extern Boolean screen_alt;
  68 +// extern Boolean screen_alt;
69 69 extern unsigned char reply_mode;
70 70 extern int crm_nattr;
71 71 extern unsigned char crm_attr[];
... ... @@ -380,11 +380,11 @@ sf_erase_reset(unsigned char buf[], int buflen)
380 380 switch (buf[3]) {
381 381 case SF_ER_DEFAULT:
382 382 trace_ds(" Default\n");
383   - ctlr_erase(False);
  383 + ctlr_erase(NULL,False);
384 384 break;
385 385 case SF_ER_ALT:
386 386 trace_ds(" Alternate\n");
387   - ctlr_erase(True);
  387 + ctlr_erase(NULL,True);
388 388 break;
389 389 default:
390 390 trace_ds(" unknown type 0x%02x\n", buf[3]);
... ... @@ -509,13 +509,13 @@ sf_create_partition(unsigned char buf[], int buflen)
509 509 GET16(h, &buf[6]);
510 510 trace_ds(",h=%d", h);
511 511 } else
512   - h = maxROWS;
  512 + h = h3270.maxROWS;
513 513  
514 514 if (buflen > 9) {
515 515 GET16(w, &buf[8]);
516 516 trace_ds(",w=%d", w);
517 517 } else
518   - w = maxCOLS;
  518 + w = h3270.maxCOLS;
519 519  
520 520 if (buflen > 11) {
521 521 GET16(rv, &buf[10]);
... ... @@ -533,13 +533,13 @@ sf_create_partition(unsigned char buf[], int buflen)
533 533 GET16(hv, &buf[14]);
534 534 trace_ds(",hv=%d", hv);
535 535 } else
536   - hv = (h > maxROWS)? maxROWS: h;
  536 + hv = (h > h3270.maxROWS)? h3270.maxROWS: h;
537 537  
538 538 if (buflen > 17) {
539 539 GET16(wv, &buf[16]);
540 540 trace_ds(",wv=%d", wv);
541 541 } else
542   - wv = (w > maxCOLS)? maxCOLS: w;
  542 + wv = (w > h3270.maxCOLS)? h3270.maxCOLS: w;
543 543  
544 544 if (buflen > 19) {
545 545 GET16(rw, &buf[18]);
... ... @@ -605,7 +605,7 @@ sf_outbound_ds(unsigned char buf[], int buflen)
605 605 break;
606 606 case SNA_CMD_EW:
607 607 trace_ds(" EraseWrite");
608   - ctlr_erase(screen_alt);
  608 + ctlr_erase(&h3270,h3270.screen_alt);
609 609 if (buflen > 5) {
610 610 if ((rv = ctlr_write(&buf[4], buflen-4, True)) < 0)
611 611 return rv;
... ... @@ -614,7 +614,7 @@ sf_outbound_ds(unsigned char buf[], int buflen)
614 614 break;
615 615 case SNA_CMD_EWA:
616 616 trace_ds(" EraseWriteAlternate");
617   - ctlr_erase(screen_alt);
  617 + ctlr_erase(&h3270,h3270.screen_alt);
618 618 if (buflen > 5) {
619 619 if ((rv = ctlr_write(&buf[4], buflen-4, True)) < 0)
620 620 return rv;
... ...
latest/src/lib/trace_ds.c
... ... @@ -447,7 +447,7 @@ create_tracefile_header(const char *mode)
447 447 * write to ensure that the display is in the right
448 448 * mode.
449 449 */
450   - if (formatted) {
  450 + if (h3270.formatted) {
451 451 wtrace(" Screen contents:\n");
452 452 obptr = obuf;
453 453 #if defined(X3270_TN3270E) /*[*/
... ...