Commit d99b30f2c0ef4d70266ce8d7ffac82198d0fd51a
1 parent
c7915bdf
Exists in
master
and in
5 other branches
Mais ajustes para multi-sessao
Showing
1 changed file
with
48 additions
and
44 deletions
Show diff stats
src/lib3270/telnet.c
... | ... | @@ -183,7 +183,7 @@ Boolean local_process = False; |
183 | 183 | // static unsigned char *lbptr; |
184 | 184 | // static int lnext = 0; |
185 | 185 | // static int backslashed = 0; |
186 | -static int t_valid = 0; | |
186 | +//static int t_valid = 0; | |
187 | 187 | static char vintr; |
188 | 188 | static char vquit; |
189 | 189 | static char verase; |
... | ... | @@ -230,12 +230,12 @@ static void tn3270e_nak(enum pds); |
230 | 230 | |
231 | 231 | #if defined(X3270_ANSI) /*[*/ |
232 | 232 | static void do_data(char c); |
233 | -static void do_intr(char c); | |
234 | -static void do_quit(char c); | |
235 | -static void do_cerase(char c); | |
236 | -static void do_werase(char c); | |
237 | -static void do_kill(char c); | |
238 | -static void do_rprnt(char c); | |
233 | +static void do_intr(H3270 *hSession, char c); | |
234 | +static void do_quit(H3270 *hSession, char c); | |
235 | +static void do_cerase(H3270 *hSession, char c); | |
236 | +static void do_werase(H3270 *hSession, char c); | |
237 | +static void do_kill(H3270 *hSession, char c); | |
238 | +static void do_rprnt(H3270 *hSession, char c); | |
239 | 239 | static void do_eof(char c); |
240 | 240 | static void do_eol(char c); |
241 | 241 | static void do_lnext(char c); |
... | ... | @@ -496,6 +496,11 @@ int net_connect(H3270 *session, const char *host, char *portname, Boolean ls, Bo |
496 | 496 | { |
497 | 497 | // struct servent * sp; |
498 | 498 | // struct hostent * hp; |
499 | + | |
500 | +#if defined(X3270_ANSI) | |
501 | + static int t_valid = 0; | |
502 | +#endif // X3270_ANSI | |
503 | + | |
499 | 504 | char passthru_haddr[8]; |
500 | 505 | int passthru_len = 0; |
501 | 506 | unsigned short passthru_port = 0; |
... | ... | @@ -2163,23 +2168,23 @@ static void net_cookout(H3270 *hSession, const char *buf, int len) |
2163 | 2168 | if (c == '\n') |
2164 | 2169 | do_eol(c); |
2165 | 2170 | else if (c == vintr) |
2166 | - do_intr(c); | |
2171 | + do_intr(hSession, c); | |
2167 | 2172 | else if (c == vquit) |
2168 | - do_quit(c); | |
2173 | + do_quit(hSession,c); | |
2169 | 2174 | else if (c == verase) |
2170 | - do_cerase(c); | |
2175 | + do_cerase(hSession,c); | |
2171 | 2176 | else if (c == vkill) |
2172 | - do_kill(c); | |
2177 | + do_kill(hSession,c); | |
2173 | 2178 | else if (c == vwerase) |
2174 | - do_werase(c); | |
2179 | + do_werase(hSession,c); | |
2175 | 2180 | else if (c == vrprnt) |
2176 | - do_rprnt(c); | |
2181 | + do_rprnt(hSession,c); | |
2177 | 2182 | else if (c == veof) |
2178 | 2183 | do_eof(c); |
2179 | 2184 | else if (c == vlnext) |
2180 | 2185 | do_lnext(c); |
2181 | 2186 | else if (c == 0x08 || c == 0x7f) /* Yes, a hack. */ |
2182 | - do_cerase(c); | |
2187 | + do_cerase(hSession,c); | |
2183 | 2188 | else |
2184 | 2189 | do_data(c); |
2185 | 2190 | } |
... | ... | @@ -2234,10 +2239,10 @@ do_data(char c) |
2234 | 2239 | h3270.backslashed = 0; |
2235 | 2240 | } |
2236 | 2241 | |
2237 | -static void | |
2238 | -do_intr(char c) | |
2242 | +static void do_intr(H3270 *hSession, char c) | |
2239 | 2243 | { |
2240 | - if (h3270.lnext) { | |
2244 | + if (hSession->lnext) | |
2245 | + { | |
2241 | 2246 | do_data(c); |
2242 | 2247 | return; |
2243 | 2248 | } |
... | ... | @@ -2246,10 +2251,10 @@ do_intr(char c) |
2246 | 2251 | net_interrupt(); |
2247 | 2252 | } |
2248 | 2253 | |
2249 | -static void | |
2250 | -do_quit(char c) | |
2254 | +static void do_quit(H3270 *hSession, char c) | |
2251 | 2255 | { |
2252 | - if (h3270.lnext) { | |
2256 | + if (hSession->lnext) | |
2257 | + { | |
2253 | 2258 | do_data(c); |
2254 | 2259 | return; |
2255 | 2260 | } |
... | ... | @@ -2258,47 +2263,48 @@ do_quit(char c) |
2258 | 2263 | net_break(); |
2259 | 2264 | } |
2260 | 2265 | |
2261 | -static void | |
2262 | -do_cerase(char c) | |
2266 | +static void do_cerase(H3270 *hSession, char c) | |
2263 | 2267 | { |
2264 | 2268 | int len; |
2265 | 2269 | |
2266 | - if (h3270.backslashed) { | |
2267 | - h3270.lbptr--; | |
2270 | + if (hSession->backslashed) | |
2271 | + { | |
2272 | + hSession->lbptr--; | |
2268 | 2273 | ansi_process_s("\b"); |
2269 | 2274 | do_data(c); |
2270 | 2275 | return; |
2271 | 2276 | } |
2272 | - if (h3270.lnext) { | |
2277 | + if (hSession->lnext) | |
2278 | + { | |
2273 | 2279 | do_data(c); |
2274 | 2280 | return; |
2275 | 2281 | } |
2276 | - if (h3270.lbptr > h3270.lbuf) { | |
2277 | - len = strlen(ctl_see((int) *--h3270.lbptr)); | |
2282 | + if (hSession->lbptr > hSession->lbuf) | |
2283 | + { | |
2284 | + len = strlen(ctl_see((int) *--hSession->lbptr)); | |
2278 | 2285 | |
2279 | 2286 | while (len--) |
2280 | 2287 | ansi_process_s("\b \b"); |
2281 | 2288 | } |
2282 | 2289 | } |
2283 | 2290 | |
2284 | -static void | |
2285 | -do_werase(char c) | |
2291 | +static void do_werase(H3270 *hSession, char c) | |
2286 | 2292 | { |
2287 | 2293 | int any = 0; |
2288 | 2294 | int len; |
2289 | 2295 | |
2290 | - if (h3270.lnext) { | |
2296 | + if (hSession->lnext) { | |
2291 | 2297 | do_data(c); |
2292 | 2298 | return; |
2293 | 2299 | } |
2294 | - while (h3270.lbptr > h3270.lbuf) { | |
2300 | + while (hSession->lbptr > hSession->lbuf) { | |
2295 | 2301 | char ch; |
2296 | 2302 | |
2297 | - ch = *--h3270.lbptr; | |
2303 | + ch = *--hSession->lbptr; | |
2298 | 2304 | |
2299 | 2305 | if (ch == ' ' || ch == '\t') { |
2300 | 2306 | if (any) { |
2301 | - ++h3270.lbptr; | |
2307 | + ++hSession->lbptr; | |
2302 | 2308 | break; |
2303 | 2309 | } |
2304 | 2310 | } else |
... | ... | @@ -2310,41 +2316,39 @@ do_werase(char c) |
2310 | 2316 | } |
2311 | 2317 | } |
2312 | 2318 | |
2313 | -static void | |
2314 | -do_kill(char c) | |
2319 | +static void do_kill(H3270 *hSession, char c) | |
2315 | 2320 | { |
2316 | 2321 | int i, len; |
2317 | 2322 | |
2318 | - if (h3270.backslashed) { | |
2319 | - h3270.lbptr--; | |
2323 | + if (hSession->backslashed) { | |
2324 | + hSession->lbptr--; | |
2320 | 2325 | ansi_process_s("\b"); |
2321 | 2326 | do_data(c); |
2322 | 2327 | return; |
2323 | 2328 | } |
2324 | - if (h3270.lnext) { | |
2329 | + if (hSession->lnext) { | |
2325 | 2330 | do_data(c); |
2326 | 2331 | return; |
2327 | 2332 | } |
2328 | - while (h3270.lbptr > h3270.lbuf) { | |
2329 | - len = strlen(ctl_see((int) *--h3270.lbptr)); | |
2333 | + while (hSession->lbptr > hSession->lbuf) { | |
2334 | + len = strlen(ctl_see((int) *--hSession->lbptr)); | |
2330 | 2335 | |
2331 | 2336 | for (i = 0; i < len; i++) |
2332 | 2337 | ansi_process_s("\b \b"); |
2333 | 2338 | } |
2334 | 2339 | } |
2335 | 2340 | |
2336 | -static void | |
2337 | -do_rprnt(char c) | |
2341 | +static void do_rprnt(H3270 *hSession, char c) | |
2338 | 2342 | { |
2339 | 2343 | unsigned char *p; |
2340 | 2344 | |
2341 | - if (h3270.lnext) { | |
2345 | + if (hSession->lnext) { | |
2342 | 2346 | do_data(c); |
2343 | 2347 | return; |
2344 | 2348 | } |
2345 | 2349 | ansi_process_s(ctl_see((int) c)); |
2346 | 2350 | ansi_process_s("\r\n"); |
2347 | - for (p = h3270.lbuf; p < h3270.lbptr; p++) | |
2351 | + for (p = hSession->lbuf; p < hSession->lbptr; p++) | |
2348 | 2352 | ansi_process_s(ctl_see((int) *p)); |
2349 | 2353 | } |
2350 | 2354 | ... | ... |