Commit 597d8ae92b130bcf24d65e4807f3d2724d1b2ea7

Authored by perry.werneck@gmail.com
1 parent 2347f103

Incluindo handle de sessão nas funções de carga de recursos

src/include/lib3270.h
@@ -867,7 +867,7 @@ @@ -867,7 +867,7 @@
867 * @return Resource string (Release with lib3270_free()) 867 * @return Resource string (Release with lib3270_free())
868 * 868 *
869 */ 869 */
870 - LIB3270_EXPORT char * lib3270_get_resource_string(const char *first_element, ...); 870 + LIB3270_EXPORT char * lib3270_get_resource_string(H3270 *hSession, const char *first_element, ...);
871 871
872 LIB3270_EXPORT const char * lib3270_get_version(void); 872 LIB3270_EXPORT const char * lib3270_get_version(void);
873 LIB3270_EXPORT const char * lib3270_get_revision(void); 873 LIB3270_EXPORT const char * lib3270_get_revision(void);
src/lib3270/ansi.c
@@ -482,7 +482,7 @@ static const char csnames[] = "0AB"; @@ -482,7 +482,7 @@ static const char csnames[] = "0AB";
482 #if defined(X3270_DBCS) /*[*/ 482 #if defined(X3270_DBCS) /*[*/
483 static unsigned char mb_pending = 0; 483 static unsigned char mb_pending = 0;
484 static char mb_buffer[LIB3270_MB_MAX]; 484 static char mb_buffer[LIB3270_MB_MAX];
485 -static int dbcs_process(int ch, unsigned char ebc[]); 485 +static int dbcs_process(H3270 *hSession, int ch, unsigned char ebc[]);
486 #endif /*]*/ 486 #endif /*]*/
487 // static int pmi = 0; 487 // static int pmi = 0;
488 // static char pending_mbs[LIB3270_MB_MAX]; 488 // static char pending_mbs[LIB3270_MB_MAX];
@@ -1107,7 +1107,7 @@ ansi_printing(H3270 *hSession, int ig1 unused, int ig2 unused) @@ -1107,7 +1107,7 @@ ansi_printing(H3270 *hSession, int ig1 unused, int ig2 unused)
1107 int len; 1107 int len;
1108 unsigned char ebc[2]; 1108 unsigned char ebc[2];
1109 1109
1110 - len = dbcs_process(ansi_ch, ebc); 1110 + len = dbcs_process(hSession, ansi_ch, ebc);
1111 switch (len) { 1111 switch (len) {
1112 default: 1112 default:
1113 case 0: 1113 case 0:
@@ -1148,7 +1148,7 @@ ansi_printing(H3270 *hSession, int ig1 unused, int ig2 unused) @@ -1148,7 +1148,7 @@ ansi_printing(H3270 *hSession, int ig1 unused, int ig2 unused)
1148 break; 1148 break;
1149 } 1149 }
1150 } else if (ansi_ch & 0x80) { 1150 } else if (ansi_ch & 0x80) {
1151 - (void) dbcs_process(ansi_ch, NULL); 1151 + (void) dbcs_process(hSession, ansi_ch, NULL);
1152 ebc_ch = EBC_space; 1152 ebc_ch = EBC_space;
1153 } 1153 }
1154 } 1154 }
@@ -1722,13 +1722,13 @@ void ansi_in3270(H3270 *session, int in3270, void *dunno) @@ -1722,13 +1722,13 @@ void ansi_in3270(H3270 *session, int in3270, void *dunno)
1722 } 1722 }
1723 1723
1724 #if defined(X3270_DBCS) /*[*/ 1724 #if defined(X3270_DBCS) /*[*/
1725 -static void trace_pending_mb(void) 1725 +static void trace_pending_mb(H3270 *hSession)
1726 { 1726 {
1727 int i; 1727 int i;
1728 1728
1729 for (i = 0; i < mb_pending; i++) 1729 for (i = 0; i < mb_pending; i++)
1730 { 1730 {
1731 - trace_ds(&h3270," %02x", mb_buffer[i] & 0xff); 1731 + trace_ds(hSession," %02x", mb_buffer[i] & 0xff);
1732 } 1732 }
1733 } 1733 }
1734 #endif /*]*/ 1734 #endif /*]*/
@@ -1758,7 +1758,7 @@ ansi_process(H3270 *hSession, unsigned int c) @@ -1758,7 +1758,7 @@ ansi_process(H3270 *hSession, unsigned int c)
1758 if (mb_pending && fn != &ansi_printing) 1758 if (mb_pending && fn != &ansi_printing)
1759 { 1759 {
1760 trace_ds(hSession,"Dropped incomplete multi-byte character"); 1760 trace_ds(hSession,"Dropped incomplete multi-byte character");
1761 - trace_pending_mb(); 1761 + trace_pending_mb(hSession);
1762 trace_ds(hSession,"\n"); 1762 trace_ds(hSession,"\n");
1763 mb_pending = 0; 1763 mb_pending = 0;
1764 } 1764 }
@@ -1863,30 +1863,29 @@ void toggle_lineWrap(H3270 *hSession, struct lib3270_toggle *t unused, LIB3270_T @@ -1863,30 +1863,29 @@ void toggle_lineWrap(H3270 *hSession, struct lib3270_toggle *t unused, LIB3270_T
1863 1863
1864 #if defined(X3270_DBCS) /*[*/ 1864 #if defined(X3270_DBCS) /*[*/
1865 /* Accumulate and process pending DBCS characters. */ 1865 /* Accumulate and process pending DBCS characters. */
1866 -static int  
1867 -dbcs_process(int ch, unsigned char ebc[]) 1866 +static int dbcs_process(H3270 *hSession, int ch, unsigned char ebc[])
1868 { 1867 {
1869 UChar Ubuf[2]; 1868 UChar Ubuf[2];
1870 UErrorCode err = U_ZERO_ERROR; 1869 UErrorCode err = U_ZERO_ERROR;
1871 1870
1872 - /* See if we have too many. */ 1871 + // See if we have too many.
1873 if (mb_pending >= MB_MAX) { 1872 if (mb_pending >= MB_MAX) {
1874 trace_ds(&h3270,"Multi-byte character "); 1873 trace_ds(&h3270,"Multi-byte character ");
1875 - trace_pending_mb(); 1874 + trace_pending_mb(hSession);
1876 trace_ds(&h3270," too long, dropping\n"); 1875 trace_ds(&h3270," too long, dropping\n");
1877 mb_pending = 0; 1876 mb_pending = 0;
1878 return 0; 1877 return 0;
1879 } 1878 }
1880 1879
1881 1880
1882 - /* Store it and see if we're done. */ 1881 + // Store it and see if we're done.
1883 mb_buffer[mb_pending++] = ch & 0xff; 1882 mb_buffer[mb_pending++] = ch & 0xff;
1884 - /* An interesting idea. */ 1883 + // An interesting idea.
1885 if (mb_pending == 1) 1884 if (mb_pending == 1)
1886 return 0; 1885 return 0;
1887 1886
1888 if (mb_to_unicode(mb_buffer, mb_pending, Ubuf, 2, &err) > 0) { 1887 if (mb_to_unicode(mb_buffer, mb_pending, Ubuf, 2, &err) > 0) {
1889 - /* It translated! */ 1888 + // It translated!
1890 if (dbcs_map8(Ubuf[0], ebc)) { 1889 if (dbcs_map8(Ubuf[0], ebc)) {
1891 mb_pending = 0; 1890 mb_pending = 0;
1892 return 1; 1891 return 1;
@@ -1895,7 +1894,7 @@ dbcs_process(int ch, unsigned char ebc[]) @@ -1895,7 +1894,7 @@ dbcs_process(int ch, unsigned char ebc[])
1895 return 2; 1894 return 2;
1896 } else { 1895 } else {
1897 trace_ds(&h3270,"Can't map multi-byte character"); 1896 trace_ds(&h3270,"Can't map multi-byte character");
1898 - trace_pending_mb(); 1897 + trace_pending_mb(&h3270);
1899 trace_ds(&h3270," -> U+%04x to SBCS or DBCS, dropping\n", 1898 trace_ds(&h3270," -> U+%04x to SBCS or DBCS, dropping\n",
1900 Ubuf[0] & 0xffff); 1899 Ubuf[0] & 0xffff);
1901 mb_pending = 0; 1900 mb_pending = 0;
@@ -1903,7 +1902,7 @@ dbcs_process(int ch, unsigned char ebc[]) @@ -1903,7 +1902,7 @@ dbcs_process(int ch, unsigned char ebc[])
1903 } 1902 }
1904 } 1903 }
1905 1904
1906 - /* It failed. See why. */ 1905 + // It failed. See why
1907 switch (err) { 1906 switch (err) {
1908 case U_TRUNCATED_CHAR_FOUND: 1907 case U_TRUNCATED_CHAR_FOUND:
1909 /* 'Cause we're not finished. */ 1908 /* 'Cause we're not finished. */
@@ -1911,12 +1910,12 @@ dbcs_process(int ch, unsigned char ebc[]) @@ -1911,12 +1910,12 @@ dbcs_process(int ch, unsigned char ebc[])
1911 case U_INVALID_CHAR_FOUND: 1910 case U_INVALID_CHAR_FOUND:
1912 case U_ILLEGAL_CHAR_FOUND: 1911 case U_ILLEGAL_CHAR_FOUND:
1913 trace_ds(&h3270,"Invalid multi-byte character"); 1912 trace_ds(&h3270,"Invalid multi-byte character");
1914 - trace_pending_mb(); 1913 + trace_pending_mb(&h3270);
1915 trace_ds(&h3270,", dropping\n"); 1914 trace_ds(&h3270,", dropping\n");
1916 break; 1915 break;
1917 default: 1916 default:
1918 trace_ds(&h3270,"Unexpected ICU error %d translating multi-type character", (int)err); 1917 trace_ds(&h3270,"Unexpected ICU error %d translating multi-type character", (int)err);
1919 - trace_pending_mb(); 1918 + trace_pending_mb(&h3270);
1920 trace_ds(&h3270,", dropping\n"); 1919 trace_ds(&h3270,", dropping\n");
1921 break; 1920 break;
1922 } 1921 }
src/lib3270/charset.c
@@ -95,7 +95,7 @@ unsigned char xk_selector = 0; @@ -95,7 +95,7 @@ unsigned char xk_selector = 0;
95 unsigned char auto_keymap = 0; 95 unsigned char auto_keymap = 0;
96 96
97 /* Statics. */ 97 /* Statics. */
98 -static enum cs_result resource_charset(const char *csname, char *cs, char *ftcs); 98 +static enum cs_result resource_charset(H3270 *hSession, const char *csname, char *cs, char *ftcs);
99 typedef enum { CS_ONLY, FT_ONLY, BOTH } remap_scope; 99 typedef enum { CS_ONLY, FT_ONLY, BOTH } remap_scope;
100 static enum cs_result remap_chars(const char *csname, char *spec, remap_scope scope, int *ne); 100 static enum cs_result remap_chars(const char *csname, char *spec, remap_scope scope, int *ne);
101 static void remap_one(unsigned char ebc, KeySym iso, remap_scope scope,Boolean one_way); 101 static void remap_one(unsigned char ebc, KeySym iso, remap_scope scope,Boolean one_way);
@@ -201,7 +201,7 @@ wide_resource_init(char *csname) @@ -201,7 +201,7 @@ wide_resource_init(char *csname)
201 /* 201 /*
202 * Change character sets. 202 * Change character sets.
203 */ 203 */
204 -enum cs_result charset_init(H3270 *session, const char *csname) 204 +enum cs_result charset_init(H3270 *hSession, const char *csname)
205 { 205 {
206 // char *cs; 206 // char *cs;
207 // const char *ftcs; 207 // const char *ftcs;
@@ -215,7 +215,7 @@ enum cs_result charset_init(H3270 *session, const char *csname) @@ -215,7 +215,7 @@ enum cs_result charset_init(H3270 *session, const char *csname)
215 { 215 {
216 charset_defaults(); 216 charset_defaults();
217 set_cgcsgids(CN); 217 set_cgcsgids(CN);
218 - set_display_charset(session, "ISO-8859-1"); 218 + set_display_charset(hSession, "ISO-8859-1");
219 return CS_OKAY; 219 return CS_OKAY;
220 } 220 }
221 221
@@ -223,7 +223,7 @@ enum cs_result charset_init(H3270 *session, const char *csname) @@ -223,7 +223,7 @@ enum cs_result charset_init(H3270 *session, const char *csname)
223 #ifdef ANDROID 223 #ifdef ANDROID
224 ccs = strdup("0xad: [ \n 0xba: Yacute \n0xbd: ] \n 0xbb: diaeresis \n"); 224 ccs = strdup("0xad: [ \n 0xba: Yacute \n0xbd: ] \n 0xbb: diaeresis \n");
225 #else 225 #else
226 - ccs = lib3270_get_resource_string("charset", csname, NULL); 226 + ccs = lib3270_get_resource_string(hSession,"charset", csname, NULL);
227 #endif 227 #endif
228 /* 228 /*
229 if (cs == CN && strlen(csname) > ES_SIZE && !strcasecmp(csname + strlen(csname) - ES_SIZE, EURO_SUFFIX)) 229 if (cs == CN && strlen(csname) > ES_SIZE && !strcasecmp(csname + strlen(csname) - ES_SIZE, EURO_SUFFIX))
@@ -241,21 +241,21 @@ enum cs_result charset_init(H3270 *session, const char *csname) @@ -241,21 +241,21 @@ enum cs_result charset_init(H3270 *session, const char *csname)
241 return CS_NOTFOUND; 241 return CS_NOTFOUND;
242 242
243 /* Grab the File Transfer character set. */ 243 /* Grab the File Transfer character set. */
244 - cftcs = lib3270_get_resource_string("ftCharset",csname,NULL); 244 + cftcs = lib3270_get_resource_string(hSession,"ftCharset",csname,NULL);
245 245
246 /* Save the current definitions, and start over with the defaults. */ 246 /* Save the current definitions, and start over with the defaults. */
247 save_charset(); 247 save_charset();
248 charset_defaults(); 248 charset_defaults();
249 249
250 /* Check for auto-keymap. */ 250 /* Check for auto-keymap. */
251 - ak = lib3270_get_resource_string("autoKeymap", csname, NULL); 251 + ak = lib3270_get_resource_string(hSession,"autoKeymap", csname, NULL);
252 if (ak != NULL) 252 if (ak != NULL)
253 auto_keymap = !strcasecmp(ak, "true"); 253 auto_keymap = !strcasecmp(ak, "true");
254 else 254 else
255 auto_keymap = 0; 255 auto_keymap = 0;
256 256
257 /* Interpret them. */ 257 /* Interpret them. */
258 - rc = resource_charset(csname, ccs, cftcs); 258 + rc = resource_charset(hSession,csname, ccs, cftcs);
259 259
260 /* Free them. */ 260 /* Free them. */
261 lib3270_free(ccs); 261 lib3270_free(ccs);
@@ -376,7 +376,7 @@ set_charset_name(char *csname) @@ -376,7 +376,7 @@ set_charset_name(char *csname)
376 */ 376 */
377 377
378 /* Define a charset from resources. */ 378 /* Define a charset from resources. */
379 -static enum cs_result resource_charset(const char *csname, char *cs, char *ftcs) 379 +static enum cs_result resource_charset(H3270 *hSession, const char *csname, char *cs, char *ftcs)
380 { 380 {
381 enum cs_result rc; 381 enum cs_result rc;
382 int ne = 0; 382 int ne = 0;
@@ -395,7 +395,7 @@ static enum cs_result resource_charset(const char *csname, char *cs, char *ftcs) @@ -395,7 +395,7 @@ static enum cs_result resource_charset(const char *csname, char *cs, char *ftcs)
395 } 395 }
396 396
397 // rcs = get_fresource("%s.%s", "displayCharset", csname); 397 // rcs = get_fresource("%s.%s", "displayCharset", csname);
398 - rcs = lib3270_get_resource_string("displayCharset", csname, NULL); 398 + rcs = lib3270_get_resource_string(hSession,"displayCharset", csname, NULL);
399 399
400 /* Isolate the pieces. */ 400 /* Isolate the pieces. */
401 if (rcs != CN) 401 if (rcs != CN)
@@ -448,18 +448,18 @@ static enum cs_result resource_charset(const char *csname, char *cs, char *ftcs) @@ -448,18 +448,18 @@ static enum cs_result resource_charset(const char *csname, char *cs, char *ftcs)
448 /* Set up the cgcsgid. */ 448 /* Set up the cgcsgid. */
449 // set_cgcsgids(get_fresource("%s.%s", "codepage", csname)); 449 // set_cgcsgids(get_fresource("%s.%s", "codepage", csname));
450 { 450 {
451 - char *ptr = lib3270_get_resource_string("codepage", csname, NULL); 451 + char *ptr = lib3270_get_resource_string(hSession,"codepage", csname, NULL);
452 set_cgcsgids(ptr); 452 set_cgcsgids(ptr);
453 lib3270_free(ptr); 453 lib3270_free(ptr);
454 } 454 }
455 455
456 // dcs = get_fresource("%s.%s", "displayCharset", csname); 456 // dcs = get_fresource("%s.%s", "displayCharset", csname);
457 - dcs = lib3270_get_resource_string("displayCharset", csname, NULL); 457 + dcs = lib3270_get_resource_string(hSession,"displayCharset", csname, NULL);
458 458
459 if (dcs != NULL) 459 if (dcs != NULL)
460 - set_display_charset(&h3270,dcs); 460 + set_display_charset(hSession,dcs);
461 else 461 else
462 - set_display_charset(&h3270,"ISO-8859-1"); 462 + set_display_charset(hSession,"ISO-8859-1");
463 463
464 lib3270_free(dcs); 464 lib3270_free(dcs);
465 465
src/lib3270/ctlr.c
@@ -1233,29 +1233,29 @@ enum pds ctlr_write(H3270 *hSession, unsigned char buf[], int buflen, Boolean er @@ -1233,29 +1233,29 @@ enum pds ctlr_write(H3270 *hSession, unsigned char buf[], int buflen, Boolean er
1233 else 1233 else
1234 { 1234 {
1235 if (ra_ge) 1235 if (ra_ge)
1236 - ctlr_add(hSession,h3270.buffer_addr, add_c1,CS_GE);  
1237 - else if (h3270.default_cs)  
1238 - ctlr_add(hSession,h3270.buffer_addr, add_c1,h3270.default_cs); 1236 + ctlr_add(hSession,hSession->buffer_addr, add_c1,CS_GE);
  1237 + else if (hSession->default_cs)
  1238 + ctlr_add(hSession,hSession->buffer_addr, add_c1,hSession->default_cs);
1239 else 1239 else
1240 - ctlr_add(hSession,h3270.buffer_addr, add_c1,0); 1240 + ctlr_add(hSession,hSession->buffer_addr, add_c1,0);
1241 } 1241 }
1242 - ctlr_add_fg(hSession,h3270.buffer_addr, h3270.default_fg);  
1243 - ctlr_add_gr(hSession,h3270.buffer_addr, h3270.default_gr);  
1244 - ctlr_add_ic(hSession,h3270.buffer_addr, h3270.default_ic); 1242 + ctlr_add_fg(hSession,hSession->buffer_addr, hSession->default_fg);
  1243 + ctlr_add_gr(hSession,hSession->buffer_addr, hSession->default_gr);
  1244 + ctlr_add_ic(hSession,hSession->buffer_addr, hSession->default_ic);
1245 1245
1246 INC_BA(hSession->buffer_addr); 1246 INC_BA(hSession->buffer_addr);
1247 if (add_dbcs) 1247 if (add_dbcs)
1248 { 1248 {
1249 - ctlr_add(hSession,h3270.buffer_addr, add_c2,h3270.default_cs);  
1250 - ctlr_add_fg(hSession,h3270.buffer_addr, h3270.default_fg);  
1251 - ctlr_add_bg(hSession,h3270.buffer_addr, h3270.default_bg);  
1252 - ctlr_add_gr(hSession,h3270.buffer_addr, h3270.default_gr);  
1253 - ctlr_add_ic(hSession,h3270.buffer_addr, h3270.default_ic); 1249 + ctlr_add(hSession,hSession->buffer_addr, add_c2,hSession->default_cs);
  1250 + ctlr_add_fg(hSession,hSession->buffer_addr, h3270.default_fg);
  1251 + ctlr_add_bg(hSession,hSession->buffer_addr, hSession->default_bg);
  1252 + ctlr_add_gr(hSession,hSession->buffer_addr, hSession->default_gr);
  1253 + ctlr_add_ic(hSession,hSession->buffer_addr, hSession->default_ic);
1254 INC_BA(hSession->buffer_addr); 1254 INC_BA(hSession->buffer_addr);
1255 } 1255 }
1256 - } while (h3270.buffer_addr != baddr); 1256 + } while (hSession->buffer_addr != baddr);
1257 1257
1258 - current_fa = get_field_attribute(&h3270,h3270.buffer_addr); 1258 + current_fa = get_field_attribute(hSession,hSession->buffer_addr);
1259 last_cmd = True; 1259 last_cmd = True;
1260 last_zpt = False; 1260 last_zpt = False;
1261 break; 1261 break;
src/lib3270/kybd.c
@@ -2062,19 +2062,19 @@ LIB3270_ACTION( eraseeof ) @@ -2062,19 +2062,19 @@ LIB3270_ACTION( eraseeof )
2062 #endif /*]*/ 2062 #endif /*]*/
2063 baddr = hSession->cursor_addr; 2063 baddr = hSession->cursor_addr;
2064 fa = get_field_attribute(hSession,baddr); 2064 fa = get_field_attribute(hSession,baddr);
2065 - if (FA_IS_PROTECTED(fa) || h3270.ea_buf[baddr].fa) {  
2066 - operator_error(&h3270,KL_OERR_PROTECTED); 2065 + if (FA_IS_PROTECTED(fa) || hSession->ea_buf[baddr].fa) {
  2066 + operator_error(hSession,KL_OERR_PROTECTED);
2067 return -1; 2067 return -1;
2068 } 2068 }
2069 if (hSession->formatted) { /* erase to next field attribute */ 2069 if (hSession->formatted) { /* erase to next field attribute */
2070 do { 2070 do {
2071 - ctlr_add(&h3270,baddr, EBC_null, 0); 2071 + ctlr_add(hSession,baddr, EBC_null, 0);
2072 INC_BA(baddr); 2072 INC_BA(baddr);
2073 - } while (!h3270.ea_buf[baddr].fa); 2073 + } while (!hSession->ea_buf[baddr].fa);
2074 mdt_set(hSession,hSession->cursor_addr); 2074 mdt_set(hSession,hSession->cursor_addr);
2075 } else { /* erase to end of screen */ 2075 } else { /* erase to end of screen */
2076 do { 2076 do {
2077 - ctlr_add(&h3270,baddr, EBC_null, 0); 2077 + ctlr_add(hSession,baddr, EBC_null, 0);
2078 INC_BA(baddr); 2078 INC_BA(baddr);
2079 } while (baddr != 0); 2079 } while (baddr != 0);
2080 } 2080 }
@@ -2085,9 +2085,9 @@ LIB3270_ACTION( eraseeof ) @@ -2085,9 +2085,9 @@ LIB3270_ACTION( eraseeof )
2085 if (d == DBCS_RIGHT) { 2085 if (d == DBCS_RIGHT) {
2086 baddr = hSession->cursor_addr; 2086 baddr = hSession->cursor_addr;
2087 DEC_BA(baddr); 2087 DEC_BA(baddr);
2088 - h3270.ea_buf[baddr].cc = EBC_si; 2088 + hSession->ea_buf[baddr].cc = EBC_si;
2089 } else 2089 } else
2090 - h3270.ea_buf[hSession->cursor_addr].cc = EBC_si; 2090 + hSession->ea_buf[hSession->cursor_addr].cc = EBC_si;
2091 } 2091 }
2092 (void) ctlr_dbcs_postprocess(hSession); 2092 (void) ctlr_dbcs_postprocess(hSession);
2093 hSession->display(hSession); 2093 hSession->display(hSession);
@@ -2183,7 +2183,7 @@ LIB3270_ACTION( deleteword ) @@ -2183,7 +2183,7 @@ LIB3270_ACTION( deleteword )
2183 2183
2184 /* Make sure we're on a modifiable field. */ 2184 /* Make sure we're on a modifiable field. */
2185 if (FA_IS_PROTECTED(fa) || hSession->ea_buf[baddr].fa) { 2185 if (FA_IS_PROTECTED(fa) || hSession->ea_buf[baddr].fa) {
2186 - operator_error(&h3270,KL_OERR_PROTECTED); 2186 + operator_error(hSession,KL_OERR_PROTECTED);
2187 return -1; 2187 return -1;
2188 } 2188 }
2189 2189
@@ -2377,28 +2377,33 @@ LIB3270_ACTION( fieldend ) @@ -2377,28 +2377,33 @@ LIB3270_ACTION( fieldend )
2377 return 0; 2377 return 0;
2378 } 2378 }
2379 2379
2380 -/* PA key action for String actions */  
2381 -static void  
2382 -do_pa(unsigned n) 2380 +/**
  2381 + * PA key action for String actions
  2382 + */
  2383 +static void do_pa(H3270 *hSession, unsigned n)
2383 { 2384 {
2384 - if (n < 1 || n > PA_SZ) {  
2385 - popup_an_error(NULL, _( "Unknown PA key %d" ), n); 2385 + if (n < 1 || n > PA_SZ)
  2386 + {
  2387 + popup_an_error(hSession, _( "Unknown PA key %d" ), n);
2386 return; 2388 return;
2387 } 2389 }
2388 2390
2389 - lib3270_pakey(&h3270,n); 2391 + lib3270_pakey(hSession,n);
2390 2392
2391 } 2393 }
2392 2394
2393 -/* PF key action for String actions */  
2394 -static void do_pf(unsigned n) 2395 +/**
  2396 + * PF key action for String actions
  2397 + */
  2398 +static void do_pf(H3270 *hSession, unsigned n)
2395 { 2399 {
2396 - if (n < 1 || n > PF_SZ) {  
2397 - popup_an_error(NULL, _( "Unknown PF key %d" ), n); 2400 + if (n < 1 || n > PF_SZ)
  2401 + {
  2402 + popup_an_error(hSession, _( "Unknown PF key %d" ), n);
2398 return; 2403 return;
2399 } 2404 }
2400 2405
2401 - lib3270_pfkey(&h3270,n); 2406 + lib3270_pfkey(hSession,n);
2402 } 2407 }
2403 2408
2404 /* 2409 /*
@@ -2747,7 +2752,7 @@ LIB3270_EXPORT int lib3270_emulate_input(H3270 *hSession, char *s, int len, int @@ -2747,7 +2752,7 @@ LIB3270_EXPORT int lib3270_emulate_input(H3270 *hSession, char *s, int len, int
2747 } 2752 }
2748 else 2753 else
2749 { 2754 {
2750 - do_pf(literal); 2755 + do_pf(hSession,literal);
2751 skipped = False; 2756 skipped = False;
2752 if (IN_3270) 2757 if (IN_3270)
2753 return len-1; 2758 return len-1;
@@ -2769,7 +2774,7 @@ LIB3270_EXPORT int lib3270_emulate_input(H3270 *hSession, char *s, int len, int @@ -2769,7 +2774,7 @@ LIB3270_EXPORT int lib3270_emulate_input(H3270 *hSession, char *s, int len, int
2769 } 2774 }
2770 else 2775 else
2771 { 2776 {
2772 - do_pa(literal); 2777 + do_pa(hSession, literal);
2773 skipped = False; 2778 skipped = False;
2774 if (IN_3270) 2779 if (IN_3270)
2775 return len-1; 2780 return len-1;
@@ -2866,7 +2871,7 @@ LIB3270_EXPORT int lib3270_emulate_input(H3270 *hSession, char *s, int len, int @@ -2866,7 +2871,7 @@ LIB3270_EXPORT int lib3270_emulate_input(H3270 *hSession, char *s, int len, int
2866 case BACKPF: 2871 case BACKPF:
2867 if (nc > 0) 2872 if (nc > 0)
2868 { 2873 {
2869 - do_pf(literal); 2874 + do_pf(hSession,literal);
2870 state = BASE; 2875 state = BASE;
2871 } 2876 }
2872 break; 2877 break;
@@ -2874,7 +2879,7 @@ LIB3270_EXPORT int lib3270_emulate_input(H3270 *hSession, char *s, int len, int @@ -2874,7 +2879,7 @@ LIB3270_EXPORT int lib3270_emulate_input(H3270 *hSession, char *s, int len, int
2874 case BACKPA: 2879 case BACKPA:
2875 if (nc > 0) 2880 if (nc > 0)
2876 { 2881 {
2877 - do_pa(literal); 2882 + do_pa(hSession,literal);
2878 state = BASE; 2883 state = BASE;
2879 } 2884 }
2880 break; 2885 break;
src/lib3270/resources.c
@@ -127,7 +127,7 @@ void add_resource(const char *name, const char *value) @@ -127,7 +127,7 @@ void add_resource(const char *name, const char *value)
127 } 127 }
128 128
129 129
130 -const char * get_resource(const char *name) 130 +const char * get_resource(H3270 *hSession, const char *name)
131 { 131 {
132 struct dresource *d; 132 struct dresource *d;
133 int i; 133 int i;
@@ -136,7 +136,7 @@ const char * get_resource(const char *name) @@ -136,7 +136,7 @@ const char * get_resource(const char *name)
136 { 136 {
137 if (!strcmp(d->name, name)) 137 if (!strcmp(d->name, name))
138 { 138 {
139 - lib3270_write_log(&h3270,"resource","%s=\"%s\"",name,d->value); 139 + lib3270_write_log(hSession,"resource","%s=\"%s\"",name,d->value);
140 return d->value; 140 return d->value;
141 } 141 }
142 } 142 }
@@ -146,7 +146,7 @@ const char * get_resource(const char *name) @@ -146,7 +146,7 @@ const char * get_resource(const char *name)
146 if (!strncmp(fallbacks[i], name, strlen(name)) && *(fallbacks[i] + strlen(name)) == ':') 146 if (!strncmp(fallbacks[i], name, strlen(name)) && *(fallbacks[i] + strlen(name)) == ':')
147 { 147 {
148 const char *ret = fallbacks[i] + strlen(name) + 2; 148 const char *ret = fallbacks[i] + strlen(name) + 2;
149 - lib3270_write_log(&h3270,"resource","%s=\"%s\"",name,ret); 149 + lib3270_write_log(hSession,"resource","%s=\"%s\"",name,ret);
150 return ret; 150 return ret;
151 } 151 }
152 } 152 }
@@ -156,7 +156,7 @@ const char * get_resource(const char *name) @@ -156,7 +156,7 @@ const char * get_resource(const char *name)
156 { 156 {
157 if (!strcmp(rdb[i].name, name)) 157 if (!strcmp(rdb[i].name, name))
158 { 158 {
159 - lib3270_write_log(&h3270,"resource","%s=\"%s\"",name,rdb[i].value); 159 + lib3270_write_log(hSession,"resource","%s=\"%s\"",name,rdb[i].value);
160 return rdb[i].value; 160 return rdb[i].value;
161 } 161 }
162 } 162 }
@@ -165,7 +165,7 @@ const char * get_resource(const char *name) @@ -165,7 +165,7 @@ const char * get_resource(const char *name)
165 } 165 }
166 166
167 /* A version of get_resource that accepts sprintf arguments. */ 167 /* A version of get_resource that accepts sprintf arguments. */
168 -const char * get_fresource(const char *fmt, ...) 168 +const char * get_fresource(H3270 *hSession, const char *fmt, ...)
169 { 169 {
170 va_list args; 170 va_list args;
171 char *name; 171 char *name;
@@ -174,7 +174,7 @@ const char * get_fresource(const char *fmt, ...) @@ -174,7 +174,7 @@ const char * get_fresource(const char *fmt, ...)
174 va_start(args, fmt); 174 va_start(args, fmt);
175 name = lib3270_vsprintf(fmt, args); 175 name = lib3270_vsprintf(fmt, args);
176 va_end(args); 176 va_end(args);
177 - r = get_resource(name); 177 + r = get_resource(hSession,name);
178 lib3270_free(name); 178 lib3270_free(name);
179 return r; 179 return r;
180 } 180 }
src/lib3270/util.c
@@ -943,7 +943,7 @@ void * Calloc(size_t nelem, size_t elsize) @@ -943,7 +943,7 @@ void * Calloc(size_t nelem, size_t elsize)
943 } 943 }
944 */ 944 */
945 945
946 -LIB3270_EXPORT char * lib3270_get_resource_string(const char *first_element, ...) 946 +LIB3270_EXPORT char * lib3270_get_resource_string(H3270 *hSession, const char *first_element, ...)
947 { 947 {
948 #ifdef ANDROID 948 #ifdef ANDROID
949 949
@@ -972,7 +972,7 @@ LIB3270_EXPORT char * lib3270_get_resource_string(const char *first_element, ... @@ -972,7 +972,7 @@ LIB3270_EXPORT char * lib3270_get_resource_string(const char *first_element, ...
972 972
973 *ptr = 0; 973 *ptr = 0;
974 974
975 - res = get_resource(str); 975 + res = get_resource(hSession,str);
976 976
977 trace("%s(%s)=%s",__FUNCTION__,str,res ? res : "NULL"); 977 trace("%s(%s)=%s",__FUNCTION__,str,res ? res : "NULL");
978 978
src/lib3270/utilc.h
@@ -23,8 +23,8 @@ LIB3270_INTERNAL char *ctl_see(int c); @@ -23,8 +23,8 @@ LIB3270_INTERNAL char *ctl_see(int c);
23 LIB3270_INTERNAL char *do_subst(const char *s, Boolean do_vars, Boolean do_tilde); 23 LIB3270_INTERNAL char *do_subst(const char *s, Boolean do_vars, Boolean do_tilde);
24 LIB3270_INTERNAL void fcatv(FILE *f, char *s); 24 LIB3270_INTERNAL void fcatv(FILE *f, char *s);
25 LIB3270_INTERNAL const char *get_message(const char *key); 25 LIB3270_INTERNAL const char *get_message(const char *key);
26 -LIB3270_INTERNAL const char *get_fresource(const char *fmt, ...) printflike(1, 2);  
27 -LIB3270_INTERNAL const char *get_resource(const char *name); 26 +LIB3270_INTERNAL const char *get_fresource(H3270 *hSession, const char *fmt, ...) printflike(2, 3);
  27 +LIB3270_INTERNAL const char *get_resource(H3270 *hSession, const char *name);
28 LIB3270_INTERNAL char *scatv(const char *s, char *buf, size_t len); 28 LIB3270_INTERNAL char *scatv(const char *s, char *buf, size_t len);
29 LIB3270_INTERNAL int split_dbcs_resource(const char *value, char sep, char **part1, 29 LIB3270_INTERNAL int split_dbcs_resource(const char *value, char sep, char **part1,
30 char **part2); 30 char **part2);