Commit c31c26495e081c2d25f48e6c2b72253563d48363
1 parent
105de2b0
Exists in
master
and in
5 other branches
Ajuste no tratamento de hostname para o novo formato de conexão
Showing
13 changed files
with
535 additions
and
277 deletions
Show diff stats
po/pt_BR.po
@@ -5,7 +5,7 @@ msgid "" | @@ -5,7 +5,7 @@ msgid "" | ||
5 | msgstr "" | 5 | msgstr "" |
6 | "Project-Id-Version: pw3270 5.0\n" | 6 | "Project-Id-Version: pw3270 5.0\n" |
7 | "Report-Msgid-Bugs-To: \n" | 7 | "Report-Msgid-Bugs-To: \n" |
8 | -"POT-Creation-Date: 2013-12-04 08:42-0200\n" | 8 | +"POT-Creation-Date: 2013-12-06 08:13-0200\n" |
9 | "PO-Revision-Date: 2013-12-03 13:26-0200\n" | 9 | "PO-Revision-Date: 2013-12-03 13:26-0200\n" |
10 | "Last-Translator: Perry Werneck <perry.werneck@gmail.com>\n" | 10 | "Last-Translator: Perry Werneck <perry.werneck@gmail.com>\n" |
11 | "Language-Team: Portugues <>\n" | 11 | "Language-Team: Portugues <>\n" |
@@ -19,6 +19,12 @@ msgstr "" | @@ -19,6 +19,12 @@ msgstr "" | ||
19 | "Plural-Forms: nplurals=2; plural=(n != 1);\n" | 19 | "Plural-Forms: nplurals=2; plural=(n != 1);\n" |
20 | "X-Generator: Gtranslator 2.91.6\n" | 20 | "X-Generator: Gtranslator 2.91.6\n" |
21 | 21 | ||
22 | +#: ssl.c:257 ssl.c:310 connect.c:91 connect.c:104 connect.c:106 connect.c:554 | ||
23 | +#: connect.c:571 | ||
24 | +#, c-format | ||
25 | +msgid "%s" | ||
26 | +msgstr "%s" | ||
27 | + | ||
22 | #: window.c:283 | 28 | #: window.c:283 |
23 | #, c-format | 29 | #, c-format |
24 | msgid "%s - Disconnected" | 30 | msgid "%s - Disconnected" |
@@ -49,32 +55,32 @@ msgstr "Ação %s precisa do atributo src" | @@ -49,32 +55,32 @@ msgstr "Ação %s precisa do atributo src" | ||
49 | msgid "%s requires GTK version %d.%d.%d" | 55 | msgid "%s requires GTK version %d.%d.%d" |
50 | msgstr "%s requer GTK versão %d.%d.%d" | 56 | msgstr "%s requer GTK versão %d.%d.%d" |
51 | 57 | ||
52 | -#: kybd.c:2694 | 58 | +#: kybd.c:2681 |
53 | #, c-format | 59 | #, c-format |
54 | msgid "%s: Bell not supported" | 60 | msgid "%s: Bell not supported" |
55 | msgstr "%s: Alerta sonoro não suportado" | 61 | msgstr "%s: Alerta sonoro não suportado" |
56 | 62 | ||
57 | -#: kybd.c:2853 | 63 | +#: kybd.c:2840 |
58 | #, c-format | 64 | #, c-format |
59 | msgid "%s: Missing hex digits after \\x" | 65 | msgid "%s: Missing hex digits after \\x" |
60 | msgstr "%s: Faltando dígitos hexadecimais após \\x" | 66 | msgstr "%s: Faltando dígitos hexadecimais após \\x" |
61 | 67 | ||
62 | -#: kybd.c:2793 | 68 | +#: kybd.c:2780 |
63 | #, c-format | 69 | #, c-format |
64 | msgid "%s: Unknown character after \\p" | 70 | msgid "%s: Unknown character after \\p" |
65 | msgstr "%s: Caractere desconhecido depois de \\p" | 71 | msgstr "%s: Caractere desconhecido depois de \\p" |
66 | 72 | ||
67 | -#: kybd.c:2829 | 73 | +#: kybd.c:2816 |
68 | #, c-format | 74 | #, c-format |
69 | msgid "%s: Unknown character after \\pa" | 75 | msgid "%s: Unknown character after \\pa" |
70 | msgstr "%s: Caractere desconhecido depois de \\pa" | 76 | msgstr "%s: Caractere desconhecido depois de \\pa" |
71 | 77 | ||
72 | -#: kybd.c:2807 | 78 | +#: kybd.c:2794 |
73 | #, c-format | 79 | #, c-format |
74 | msgid "%s: Unknown character after \\pf" | 80 | msgid "%s: Unknown character after \\pf" |
75 | msgstr "%s: Caractere desconhecido depois de \\pf" | 81 | msgstr "%s: Caractere desconhecido depois de \\pf" |
76 | 82 | ||
77 | -#: kybd.c:2745 | 83 | +#: kybd.c:2732 |
78 | #, c-format | 84 | #, c-format |
79 | msgid "%s: Vertical tab not supported" | 85 | msgid "%s: Vertical tab not supported" |
80 | msgstr "%s: Tabulação vertical não é suportada" | 86 | msgstr "%s: Tabulação vertical não é suportada" |
@@ -84,7 +90,7 @@ msgstr "%s: Tabulação vertical não é suportada" | @@ -84,7 +90,7 @@ msgstr "%s: Tabulação vertical não é suportada" | ||
84 | msgid "%s: unknown family %d" | 90 | msgid "%s: unknown family %d" |
85 | msgstr "%s: Familia %d é inválida" | 91 | msgstr "%s: Familia %d é inválida" |
86 | 92 | ||
87 | -#: telnet.c:1173 | 93 | +#: telnet.c:1039 |
88 | #, c-format | 94 | #, c-format |
89 | msgid "%s:%d" | 95 | msgid "%s:%d" |
90 | msgstr "%s:%d" | 96 | msgstr "%s:%d" |
@@ -194,7 +200,11 @@ msgstr "" | @@ -194,7 +200,11 @@ msgstr "" | ||
194 | "A CA certificate is invalid. Either it is not a CA or its extensions are not " | 200 | "A CA certificate is invalid. Either it is not a CA or its extensions are not " |
195 | "consistent with the supplied purpose." | 201 | "consistent with the supplied purpose." |
196 | 202 | ||
197 | -#: ft.c:525 | 203 | +#: ft.c:100 |
204 | +msgid "Abort sent; awaiting response" | ||
205 | +msgstr "Abort sent; awaiting response" | ||
206 | + | ||
207 | +#: ft.c:553 | ||
198 | msgid "Aborting..." | 208 | msgid "Aborting..." |
199 | msgstr "Abortando..." | 209 | msgstr "Abortando..." |
200 | 210 | ||
@@ -202,6 +212,10 @@ msgstr "Abortando..." | @@ -202,6 +212,10 @@ msgstr "Abortando..." | ||
202 | msgid "About security" | 212 | msgid "About security" |
203 | msgstr "Sobre a segurança" | 213 | msgstr "Sobre a segurança" |
204 | 214 | ||
215 | +#: ft.c:98 | ||
216 | +msgid "Ack received, data flowing" | ||
217 | +msgstr "Ack received, data flowing" | ||
218 | + | ||
205 | #: paste.c:300 | 219 | #: paste.c:300 |
206 | msgid "Action failed" | 220 | msgid "Action failed" |
207 | msgstr "Ação falhou" | 221 | msgstr "Ação falhou" |
@@ -252,11 +266,15 @@ msgstr "Reconectar automaticamente" | @@ -252,11 +266,15 @@ msgstr "Reconectar automaticamente" | ||
252 | msgid "Avblock" | 266 | msgid "Avblock" |
253 | msgstr "Avblock" | 267 | msgstr "Avblock" |
254 | 268 | ||
269 | +#: ft.c:99 | ||
270 | +msgid "Awaiting chance to send an abort" | ||
271 | +msgstr "Awaiting chance to send an abort" | ||
272 | + | ||
255 | #: colors.c:435 | 273 | #: colors.c:435 |
256 | msgid "Background" | 274 | msgid "Background" |
257 | msgstr "Fundo" | 275 | msgstr "Fundo" |
258 | 276 | ||
259 | -#: telnet.c:328 | 277 | +#: telnet.c:303 connect.c:169 |
260 | msgid "Bad winsock version" | 278 | msgid "Bad winsock version" |
261 | msgstr "Versão winsock inválida" | 279 | msgstr "Versão winsock inválida" |
262 | 280 | ||
@@ -292,7 +310,7 @@ msgstr "Portal do Software Público Brasileiro" | @@ -292,7 +310,7 @@ msgstr "Portal do Software Público Brasileiro" | ||
292 | msgid "Break" | 310 | msgid "Break" |
293 | msgstr "Break" | 311 | msgstr "Break" |
294 | 312 | ||
295 | -#: telnet.c:2114 | 313 | +#: telnet.c:2003 |
296 | msgid "Broken pipe" | 314 | msgid "Broken pipe" |
297 | msgstr "Conexão interrompida" | 315 | msgstr "Conexão interrompida" |
298 | 316 | ||
@@ -326,7 +344,7 @@ msgstr "C_odificação de caracteres:" | @@ -326,7 +344,7 @@ msgstr "C_odificação de caracteres:" | ||
326 | msgid "C_olor scheme:" | 344 | msgid "C_olor scheme:" |
327 | msgstr "Tema de c_ores:" | 345 | msgstr "Tema de c_ores:" |
328 | 346 | ||
329 | -#: toggles.c:177 telnet.c:670 | 347 | +#: toggles.c:177 telnet.c:645 connect.c:386 connect.c:438 |
330 | #, c-format | 348 | #, c-format |
331 | msgid "Can't %s network keep-alive" | 349 | msgid "Can't %s network keep-alive" |
332 | msgstr "Can't %s network keep-alive" | 350 | msgstr "Can't %s network keep-alive" |
@@ -336,11 +354,16 @@ msgstr "Can't %s network keep-alive" | @@ -336,11 +354,16 @@ msgstr "Can't %s network keep-alive" | ||
336 | msgid "Can't accept unnamed %s" | 354 | msgid "Can't accept unnamed %s" |
337 | msgstr "Não posso aceitar elemento %s sem nome" | 355 | msgstr "Não posso aceitar elemento %s sem nome" |
338 | 356 | ||
339 | -#: telnet.c:684 | 357 | +#: telnet.c:659 |
340 | #, c-format | 358 | #, c-format |
341 | msgid "Can't connect to %s:%d" | 359 | msgid "Can't connect to %s:%d" |
342 | msgstr "Não foi possível conectar a %s:%d" | 360 | msgstr "Não foi possível conectar a %s:%d" |
343 | 361 | ||
362 | +#: connect.c:242 connect.c:359 connect.c:410 | ||
363 | +#, fuzzy, c-format | ||
364 | +msgid "Can't connect to %s:%s" | ||
365 | +msgstr "Não foi possível conectar a %s:%d" | ||
366 | + | ||
344 | #: host.c:154 | 367 | #: host.c:154 |
345 | msgid "Can't connect to host" | 368 | msgid "Can't connect to host" |
346 | msgstr "Não foi possível conectar ao servidor" | 369 | msgstr "Não foi possível conectar ao servidor" |
@@ -354,7 +377,12 @@ msgstr "Não foi possível converter a linha %d de %s para %s" | @@ -354,7 +377,12 @@ msgstr "Não foi possível converter a linha %d de %s para %s" | ||
354 | msgid "Can't cut rectangular regions" | 377 | msgid "Can't cut rectangular regions" |
355 | msgstr "Recortar não permitido em seleção retangular" | 378 | msgstr "Recortar não permitido em seleção retangular" |
356 | 379 | ||
357 | -#: ft.c:308 | 380 | +#: connect.c:226 |
381 | +#, c-format | ||
382 | +msgid "Can't determine value for environment variable \"%s\" " | ||
383 | +msgstr "Can't determine value for environment variable \"%s\" " | ||
384 | + | ||
385 | +#: ft.c:331 | ||
358 | msgid "Can't get file size" | 386 | msgid "Can't get file size" |
359 | msgstr "Não foi possível obter o tamanho do arquivo" | 387 | msgstr "Não foi possível obter o tamanho do arquivo" |
360 | 388 | ||
@@ -371,7 +399,7 @@ msgstr "Não foi possível carregar arquivo" | @@ -371,7 +399,7 @@ msgstr "Não foi possível carregar arquivo" | ||
371 | msgid "Can't open file" | 399 | msgid "Can't open file" |
372 | msgstr "Não foi possível abrir arquivo" | 400 | msgstr "Não foi possível abrir arquivo" |
373 | 401 | ||
374 | -#: ft.c:216 | 402 | +#: ft.c:239 |
375 | msgid "Can't open local file." | 403 | msgid "Can't open local file." |
376 | msgstr "Não foi possível abrir arquivo local." | 404 | msgstr "Não foi possível abrir arquivo local." |
377 | 405 | ||
@@ -433,15 +461,25 @@ msgstr "Não foi possível salvar trace no arquivo %s" | @@ -433,15 +461,25 @@ msgstr "Não foi possível salvar trace no arquivo %s" | ||
433 | msgid "Can't set host charset" | 461 | msgid "Can't set host charset" |
434 | msgstr "Não foi possível definir o charset do host" | 462 | msgstr "Não foi possível definir o charset do host" |
435 | 463 | ||
436 | -#: v3270/iocallback.c:347 | 464 | +#: v3270/iocallback.c:359 |
437 | msgid "Can't set lib3270 I/O handlers" | 465 | msgid "Can't set lib3270 I/O handlers" |
438 | msgstr "Não foi possível registrar manipuladores de I/O 3270" | 466 | msgstr "Não foi possível registrar manipuladores de I/O 3270" |
439 | 467 | ||
468 | +#: connect.c:570 | ||
469 | +#, fuzzy | ||
470 | +msgid "Can't set socket to blocking mode." | ||
471 | +msgstr "Não foi possível definir o descritor de socket SSL" | ||
472 | + | ||
473 | +#: connect.c:570 | ||
474 | +#, fuzzy | ||
475 | +msgid "Can't set socket to non blocking mode" | ||
476 | +msgstr "Erro em fcntl(%s) ao ativar o modo não blocante" | ||
477 | + | ||
440 | #: filetransfer.c:294 | 478 | #: filetransfer.c:294 |
441 | msgid "Can't start download." | 479 | msgid "Can't start download." |
442 | msgstr "Não foi possível iniciar o download." | 480 | msgstr "Não foi possível iniciar o download." |
443 | 481 | ||
444 | -#: ft.c:171 ft.c:183 ft.c:197 | 482 | +#: ft.c:194 ft.c:206 ft.c:220 |
445 | msgid "Can't start file transfer." | 483 | msgid "Can't start file transfer." |
446 | msgstr "Não foi possível iniciar transferência de arquivo." | 484 | msgstr "Não foi possível iniciar transferência de arquivo." |
447 | 485 | ||
@@ -449,19 +487,45 @@ msgstr "Não foi possível iniciar transferência de arquivo." | @@ -449,19 +487,45 @@ msgstr "Não foi possível iniciar transferência de arquivo." | ||
449 | msgid "Can't start upload." | 487 | msgid "Can't start upload." |
450 | msgstr "Não foi possível iniciar upload." | 488 | msgstr "Não foi possível iniciar upload." |
451 | 489 | ||
452 | -#: telnet.c:329 | 490 | +#: telnet.c:304 connect.c:170 |
453 | #, c-format | 491 | #, c-format |
454 | msgid "Can't use winsock version %d.%d" | 492 | msgid "Can't use winsock version %d.%d" |
455 | msgstr "Não é possível usar a Winsock versão %d.%d" | 493 | msgstr "Não é possível usar a Winsock versão %d.%d" |
456 | 494 | ||
457 | -#: ft.c:124 | 495 | +#: ft.c:147 |
458 | msgid "Cancelled by user" | 496 | msgid "Cancelled by user" |
459 | msgstr "Cancelado pelo usuário" | 497 | msgstr "Cancelado pelo usuário" |
460 | 498 | ||
461 | -#: telnet.c:721 | 499 | +#: connect.c:324 |
500 | +#, fuzzy | ||
501 | +msgid "Cannot create socket event" | ||
502 | +msgstr "Não foi possível criar um manipulador de socket" | ||
503 | + | ||
504 | +#: telnet.c:696 | ||
462 | msgid "Cannot create socket handle" | 505 | msgid "Cannot create socket handle" |
463 | msgstr "Não foi possível criar um manipulador de socket" | 506 | msgstr "Não foi possível criar um manipulador de socket" |
464 | 507 | ||
508 | +#: ssl.c:309 | ||
509 | +msgid "Cant create a new SSL structure for current connection." | ||
510 | +msgstr "Cant create a new SSL structure for current connection." | ||
511 | + | ||
512 | +#: ssl.c:250 | ||
513 | +#, c-format | ||
514 | +msgid "" | ||
515 | +"Cant set default locations for trusted CA certificates to\n" | ||
516 | +"%s" | ||
517 | +msgstr "" | ||
518 | +"Cant set default locations for trusted CA certificates to\n" | ||
519 | +"%s" | ||
520 | + | ||
521 | +#: ssl.c:83 | ||
522 | +msgid "" | ||
523 | +"Cant set the file descriptor for the input/output facility for the TLS/SSL " | ||
524 | +"(encrypted) side of ssl." | ||
525 | +msgstr "" | ||
526 | +"Cant set the file descriptor for the input/output facility for the TLS/SSL " | ||
527 | +"(encrypted) side of ssl." | ||
528 | + | ||
465 | #: v3270/security.c:110 | 529 | #: v3270/security.c:110 |
466 | msgid "Certificate has expired" | 530 | msgid "Certificate has expired" |
467 | msgstr "O certificado expirou" | 531 | msgstr "O certificado expirou" |
@@ -518,7 +582,14 @@ msgstr "Command:" | @@ -518,7 +582,14 @@ msgstr "Command:" | ||
518 | msgid "Connect on startup" | 582 | msgid "Connect on startup" |
519 | msgstr "Conectar ao iniciar" | 583 | msgstr "Conectar ao iniciar" |
520 | 584 | ||
521 | -#: telnet.c:2118 | 585 | +#: connect.c:224 connect.c:263 connect.c:272 connect.c:348 connect.c:363 |
586 | +#: connect.c:375 connect.c:390 connect.c:414 connect.c:427 connect.c:442 | ||
587 | +#: connect.c:540 | ||
588 | +#, fuzzy | ||
589 | +msgid "Connection error" | ||
590 | +msgstr "Erro na conexão SSL" | ||
591 | + | ||
592 | +#: telnet.c:2007 | ||
522 | msgid "Connection reset by peer" | 593 | msgid "Connection reset by peer" |
523 | msgstr "Conexão foi cancelada pelo servidor" | 594 | msgstr "Conexão foi cancelada pelo servidor" |
524 | 595 | ||
@@ -608,11 +679,11 @@ msgstr "Padrão" | @@ -608,11 +679,11 @@ msgstr "Padrão" | ||
608 | msgid "Delete field" | 679 | msgid "Delete field" |
609 | msgstr "Apagar campo" | 680 | msgstr "Apagar campo" |
610 | 681 | ||
611 | -#: telnet.c:1789 | 682 | +#: telnet.c:1678 |
612 | msgid "Device type rejected" | 683 | msgid "Device type rejected" |
613 | msgstr "Tipo de dispositivo rejeitado" | 684 | msgstr "Tipo de dispositivo rejeitado" |
614 | 685 | ||
615 | -#: ft.c:173 | 686 | +#: ft.c:196 |
616 | msgid "Disconnected from host." | 687 | msgid "Disconnected from host." |
617 | msgstr "Desconectado do servidor." | 688 | msgstr "Desconectado do servidor." |
618 | 689 | ||
@@ -620,7 +691,7 @@ msgstr "Desconectado do servidor." | @@ -620,7 +691,7 @@ msgstr "Desconectado do servidor." | ||
620 | msgid "Display current charset" | 691 | msgid "Display current charset" |
621 | msgstr "Mostrar a tabela de caracteres ativa" | 692 | msgstr "Mostrar a tabela de caracteres ativa" |
622 | 693 | ||
623 | -#: telnet.c:1364 | 694 | +#: telnet.c:1230 |
624 | msgid "EOR received when not in 3270 mode, ignored." | 695 | msgid "EOR received when not in 3270 mode, ignored." |
625 | msgstr "EOR recebido fora do modo 3270, ignorado." | 696 | msgstr "EOR recebido fora do modo 3270, ignorado." |
626 | 697 | ||
@@ -668,7 +739,7 @@ msgstr "Apagar até o final do campo" | @@ -668,7 +739,7 @@ msgstr "Apagar até o final do campo" | ||
668 | msgid "Erase to end of line" | 739 | msgid "Erase to end of line" |
669 | msgstr "Apagar até o final da linha" | 740 | msgstr "Apagar até o final da linha" |
670 | 741 | ||
671 | -#: print.c:239 v3270/widget.c:215 util.c:1019 | 742 | +#: print.c:239 v3270/widget.c:215 util.c:1023 |
672 | msgid "Error" | 743 | msgid "Error" |
673 | msgstr "Erro" | 744 | msgstr "Erro" |
674 | 745 | ||
@@ -687,16 +758,6 @@ msgstr "Erro \"%s\" gravando arquivo local (rc=%d)" | @@ -687,16 +758,6 @@ msgstr "Erro \"%s\" gravando arquivo local (rc=%d)" | ||
687 | msgid "Error %d resolving %s" | 758 | msgid "Error %d resolving %s" |
688 | msgstr "Erro %d resolvendo %s" | 759 | msgstr "Erro %d resolvendo %s" |
689 | 760 | ||
690 | -#: telnet.c:3146 telnet.c:3157 | ||
691 | -#, c-format | ||
692 | -msgid "Error in fcntl(%s) when setting non blocking mode" | ||
693 | -msgstr "Erro em fcntl(%s) ao ativar o modo não blocante" | ||
694 | - | ||
695 | -#: telnet.c:3136 | ||
696 | -#, c-format | ||
697 | -msgid "Error in ioctl(%s) when setting no blocking mode" | ||
698 | -msgstr "Erro em ioctl(%s) ao ativar o modo não blocante" | ||
699 | - | ||
700 | #: dialog.c:377 | 761 | #: dialog.c:377 |
701 | #, c-format | 762 | #, c-format |
702 | msgid "Error loading %s" | 763 | msgid "Error loading %s" |
@@ -719,7 +780,7 @@ msgstr "Script rexx externo" | @@ -719,7 +780,7 @@ msgstr "Script rexx externo" | ||
719 | msgid "Field colors" | 780 | msgid "Field colors" |
720 | msgstr "Cor dos campos" | 781 | msgstr "Cor dos campos" |
721 | 782 | ||
722 | -#: ft.c:185 | 783 | +#: ft.c:208 |
723 | msgid "File transfer is already active in this session." | 784 | msgid "File transfer is already active in this session." |
724 | msgstr "Transferência de arquivos já está ativa nesta sessão." | 785 | msgstr "Transferência de arquivos já está ativa nesta sessão." |
725 | 786 | ||
@@ -812,11 +873,11 @@ msgstr "HTTP Proxy: Resposta desconhecida" | @@ -812,11 +873,11 @@ msgstr "HTTP Proxy: Resposta desconhecida" | ||
812 | msgid "Help" | 873 | msgid "Help" |
813 | msgstr "Ajuda" | 874 | msgstr "Ajuda" |
814 | 875 | ||
815 | -#: ft.c:534 | 876 | +#: ft.c:562 |
816 | msgid "Host disconnected, transfer cancelled" | 877 | msgid "Host disconnected, transfer cancelled" |
817 | msgstr "Servidor desconectou, transferência cancelada" | 878 | msgstr "Servidor desconectou, transferência cancelada" |
818 | 879 | ||
819 | -#: telnet.c:1847 | 880 | +#: telnet.c:1736 |
820 | msgid "Host illegally added function(s)" | 881 | msgid "Host illegally added function(s)" |
821 | msgstr "Host illegally added function(s)" | 882 | msgstr "Host illegally added function(s)" |
822 | 883 | ||
@@ -828,11 +889,11 @@ msgstr "Servidor é AS/400" | @@ -828,11 +889,11 @@ msgstr "Servidor é AS/400" | ||
828 | msgid "Host is TSO" | 889 | msgid "Host is TSO" |
829 | msgstr "Servidor é TSO" | 890 | msgstr "Servidor é TSO" |
830 | 891 | ||
831 | -#: telnet.c:1772 | 892 | +#: telnet.c:1661 |
832 | msgid "Host rejected device type or request type" | 893 | msgid "Host rejected device type or request type" |
833 | msgstr "Servidor rejeitou o tipo de dispositivo ou requisição" | 894 | msgstr "Servidor rejeitou o tipo de dispositivo ou requisição" |
834 | 895 | ||
835 | -#: telnet.c:1785 | 896 | +#: telnet.c:1674 |
836 | msgid "Host rejected resource(s)" | 897 | msgid "Host rejected resource(s)" |
837 | msgstr "Servidor rejeitou recurso(s)" | 898 | msgstr "Servidor rejeitou recurso(s)" |
838 | 899 | ||
@@ -979,7 +1040,8 @@ msgstr "Nome do arquivo destino." | @@ -979,7 +1040,8 @@ msgstr "Nome do arquivo destino." | ||
979 | msgid "Network Trace" | 1040 | msgid "Network Trace" |
980 | msgstr "Trace do tráfego de rede" | 1041 | msgstr "Trace do tráfego de rede" |
981 | 1042 | ||
982 | -#: telnet.c:360 telnet.c:688 | 1043 | +#: telnet.c:335 telnet.c:663 iocalls.c:428 iocalls.c:520 connect.c:86 |
1044 | +#: connect.c:101 | ||
983 | msgid "Network error" | 1045 | msgid "Network error" |
984 | msgstr "Erro de rede" | 1046 | msgstr "Erro de rede" |
985 | 1047 | ||
@@ -987,7 +1049,8 @@ msgstr "Erro de rede" | @@ -987,7 +1049,8 @@ msgstr "Erro de rede" | ||
987 | msgid "Network keep alive" | 1049 | msgid "Network keep alive" |
988 | msgstr "Network keep alive" | 1050 | msgstr "Network keep alive" |
989 | 1051 | ||
990 | -#: telnet.c:316 telnet.c:327 telnet.c:720 telnet.c:731 | 1052 | +#: telnet.c:291 telnet.c:302 telnet.c:695 telnet.c:706 connect.c:157 |
1053 | +#: connect.c:168 connect.c:323 connect.c:334 | ||
991 | msgid "Network startup error" | 1054 | msgid "Network startup error" |
992 | msgstr "Erro ao iniciar a rede" | 1055 | msgstr "Erro ao iniciar a rede" |
993 | 1056 | ||
@@ -1003,6 +1066,11 @@ msgstr "" | @@ -1003,6 +1066,11 @@ msgstr "" | ||
1003 | "Nenhuma assinatura pode ser verificada, porque a cadeia contém apenas um " | 1066 | "Nenhuma assinatura pode ser verificada, porque a cadeia contém apenas um " |
1004 | "certificado e não é auto assinado." | 1067 | "certificado e não é auto assinado." |
1005 | 1068 | ||
1069 | +#: ft.c:97 | ||
1070 | +#, fuzzy | ||
1071 | +msgid "No transfer in progress" | ||
1072 | +msgstr "Erro na transferência de arquivos" | ||
1073 | + | ||
1006 | #: colors.c:454 | 1074 | #: colors.c:454 |
1007 | msgid "Normal/Protected" | 1075 | msgid "Normal/Protected" |
1008 | msgstr "Normal/Protegido" | 1076 | msgstr "Normal/Protegido" |
@@ -1015,7 +1083,7 @@ msgstr "Normal/Desprotegido" | @@ -1015,7 +1083,7 @@ msgstr "Normal/Desprotegido" | ||
1015 | msgid "Not available" | 1083 | msgid "Not available" |
1016 | msgstr "Não disponível" | 1084 | msgstr "Não disponível" |
1017 | 1085 | ||
1018 | -#: ft.c:541 | 1086 | +#: ft.c:569 |
1019 | msgid "Not in 3270 mode, transfer cancelled" | 1087 | msgid "Not in 3270 mode, transfer cancelled" |
1020 | msgstr "Não está no modo 3270, transferência cancelada" | 1088 | msgstr "Não está no modo 3270, transferência cancelada" |
1021 | 1089 | ||
@@ -1402,7 +1470,7 @@ msgstr "" | @@ -1402,7 +1470,7 @@ msgstr "" | ||
1402 | msgid "Remove selection" | 1470 | msgid "Remove selection" |
1403 | msgstr "Remover seleção" | 1471 | msgstr "Remover seleção" |
1404 | 1472 | ||
1405 | -#: filetransfer.c:293 filetransfer.c:338 ft.c:170 ft.c:182 ft.c:196 ft.c:215 | 1473 | +#: filetransfer.c:293 filetransfer.c:338 ft.c:193 ft.c:205 ft.c:219 ft.c:238 |
1406 | msgid "Request failed" | 1474 | msgid "Request failed" |
1407 | msgstr "Requisição falhou" | 1475 | msgstr "Requisição falhou" |
1408 | 1476 | ||
@@ -1546,31 +1614,32 @@ msgstr "SOCKS5 Proxy: xmit version 5 nmethods 1 (no auth)\n" | @@ -1546,31 +1614,32 @@ msgstr "SOCKS5 Proxy: xmit version 5 nmethods 1 (no auth)\n" | ||
1546 | msgid "SOCKS5 proxy: %s/%u: %s" | 1614 | msgid "SOCKS5 proxy: %s/%u: %s" |
1547 | msgstr "SOCKS5 proxy: %s/%u: %s" | 1615 | msgstr "SOCKS5 proxy: %s/%u: %s" |
1548 | 1616 | ||
1549 | -#: telnet.c:1156 | 1617 | +#: ssl.c:107 |
1618 | +#, fuzzy | ||
1619 | +msgid "SSL Connect failed" | ||
1620 | +msgstr "Conexão SSL falhou" | ||
1621 | + | ||
1622 | +#: telnet.c:1022 | ||
1550 | msgid "SSL Error" | 1623 | msgid "SSL Error" |
1551 | msgstr "Erro SSL" | 1624 | msgstr "Erro SSL" |
1552 | 1625 | ||
1553 | -#: telnet.c:1156 | 1626 | +#: telnet.c:1022 |
1554 | msgid "SSL Read error" | 1627 | msgid "SSL Read error" |
1555 | msgstr "Erro de leitura SSL" | 1628 | msgstr "Erro de leitura SSL" |
1556 | 1629 | ||
1557 | -#: telnet.c:846 telnet.c:860 | ||
1558 | -msgid "SSL connect failed!" | ||
1559 | -msgstr "Conexão SSL falhou" | ||
1560 | - | ||
1561 | #: host.c:140 | 1630 | #: host.c:140 |
1562 | msgid "SSL error" | 1631 | msgid "SSL error" |
1563 | msgstr "Erro SSL" | 1632 | msgstr "Erro SSL" |
1564 | 1633 | ||
1565 | -#: telnet.c:819 | ||
1566 | -msgid "SSL init failed!" | ||
1567 | -msgstr "Inicialização SSL falhou" | 1634 | +#: ssl.c:82 |
1635 | +msgid "SSL negotiation failed" | ||
1636 | +msgstr "Negociação SSL falhou" | ||
1568 | 1637 | ||
1569 | -#: telnet.c:828 | ||
1570 | -msgid "SSL_set_fd failed!" | ||
1571 | -msgstr "SSL_set_fd falhou!" | 1638 | +#: ssl.c:217 |
1639 | +msgid "SSL_CTX_new() has failed" | ||
1640 | +msgstr "SSL_CTX_new() has failed" | ||
1572 | 1641 | ||
1573 | -#: telnet.c:2104 | 1642 | +#: telnet.c:1993 |
1574 | #, c-format | 1643 | #, c-format |
1575 | msgid "" | 1644 | msgid "" |
1576 | "SSL_write:\n" | 1645 | "SSL_write:\n" |
@@ -1635,6 +1704,11 @@ msgstr "Secondary space:" | @@ -1635,6 +1704,11 @@ msgstr "Secondary space:" | ||
1635 | msgid "Secure connection was successful." | 1704 | msgid "Secure connection was successful." |
1636 | msgstr "Conexão segura efetuada com sucesso." | 1705 | msgstr "Conexão segura efetuada com sucesso." |
1637 | 1706 | ||
1707 | +#: ssl.c:81 ssl.c:106 ssl.c:216 ssl.c:255 ssl.c:308 | ||
1708 | +#, fuzzy | ||
1709 | +msgid "Security error" | ||
1710 | +msgstr "Erro ao enviar dados para a rede" | ||
1711 | + | ||
1638 | #: ui/00default.xml:264 | 1712 | #: ui/00default.xml:264 |
1639 | msgid "Select Field" | 1713 | msgid "Select Field" |
1640 | msgstr "Selecionar campo" | 1714 | msgstr "Selecionar campo" |
@@ -1667,6 +1741,11 @@ msgstr "Selecione fonte" | @@ -1667,6 +1741,11 @@ msgstr "Selecione fonte" | ||
1667 | msgid "Select hostname" | 1741 | msgid "Select hostname" |
1668 | msgstr "Selecione host" | 1742 | msgstr "Selecione host" |
1669 | 1743 | ||
1744 | +#: iocalls.c:521 | ||
1745 | +#, fuzzy | ||
1746 | +msgid "Select() failed when processing for events." | ||
1747 | +msgstr "select() falhou ao processar eventos" | ||
1748 | + | ||
1670 | #: colors.c:457 | 1749 | #: colors.c:457 |
1671 | msgid "Selection background" | 1750 | msgid "Selection background" |
1672 | msgstr "Fundo da seleção" | 1751 | msgstr "Fundo da seleção" |
@@ -1747,11 +1826,16 @@ msgstr "Mostrar padrão de teste" | @@ -1747,11 +1826,16 @@ msgstr "Mostrar padrão de teste" | ||
1747 | msgid "Smart paste" | 1826 | msgid "Smart paste" |
1748 | msgstr "Colar inteligente" | 1827 | msgstr "Colar inteligente" |
1749 | 1828 | ||
1750 | -#: telnet.c:1177 | 1829 | +#: connect.c:552 connect.c:569 |
1830 | +#, fuzzy | ||
1831 | +msgid "Socket error" | ||
1832 | +msgstr "Erro ao ler dados da rede" | ||
1833 | + | ||
1834 | +#: telnet.c:1043 | ||
1751 | msgid "Socket read error" | 1835 | msgid "Socket read error" |
1752 | msgstr "Erro ao ler dados da rede" | 1836 | msgstr "Erro ao ler dados da rede" |
1753 | 1837 | ||
1754 | -#: telnet.c:2125 | 1838 | +#: telnet.c:2014 |
1755 | msgid "Socket write error" | 1839 | msgid "Socket write error" |
1756 | msgstr "Erro ao enviar dados para a rede" | 1840 | msgstr "Erro ao enviar dados para a rede" |
1757 | 1841 | ||
@@ -1821,7 +1905,7 @@ msgstr "Tipo de servidor:" | @@ -1821,7 +1905,7 @@ msgstr "Tipo de servidor:" | ||
1821 | msgid "TELNET Proxy: send error" | 1905 | msgid "TELNET Proxy: send error" |
1822 | msgstr "TELNET Proxy: Erro ao enviar" | 1906 | msgstr "TELNET Proxy: Erro ao enviar" |
1823 | 1907 | ||
1824 | -#: telnet.c:3343 | 1908 | +#: telnet.c:1503 |
1825 | msgid "TLS negotiation failure" | 1909 | msgid "TLS negotiation failure" |
1826 | msgstr "Negociação TLS falhou" | 1910 | msgstr "Negociação TLS falhou" |
1827 | 1911 | ||
@@ -1999,7 +2083,7 @@ msgid "" | @@ -1999,7 +2083,7 @@ msgid "" | ||
1999 | msgstr "" | 2083 | msgstr "" |
2000 | "The public key in the certificate SubjectPublicKeyInfo could not be read." | 2084 | "The public key in the certificate SubjectPublicKeyInfo could not be read." |
2001 | 2085 | ||
2002 | -#: ft.c:199 | 2086 | +#: ft.c:222 |
2003 | msgid "The remote file name is invalid." | 2087 | msgid "The remote file name is invalid." |
2004 | msgstr "O nome do arquivo remoto não é válido." | 2088 | msgstr "O nome do arquivo remoto não é válido." |
2005 | 2089 | ||
@@ -2101,7 +2185,7 @@ msgstr "Transferência cancelada pelo servidor" | @@ -2101,7 +2185,7 @@ msgstr "Transferência cancelada pelo servidor" | ||
2101 | msgid "Transfer cancelled by user" | 2185 | msgid "Transfer cancelled by user" |
2102 | msgstr "Transferência cancelada pelo usuário" | 2186 | msgstr "Transferência cancelada pelo usuário" |
2103 | 2187 | ||
2104 | -#: ft_cut.c:334 | 2188 | +#: ft.c:477 ft_cut.c:334 |
2105 | msgid "Transfer complete" | 2189 | msgid "Transfer complete" |
2106 | msgstr "Transferência completa" | 2190 | msgstr "Transferência completa" |
2107 | 2191 | ||
@@ -2125,6 +2209,11 @@ msgstr "UTF-8" | @@ -2125,6 +2209,11 @@ msgstr "UTF-8" | ||
2125 | msgid "Uknown DFT Open type from host" | 2209 | msgid "Uknown DFT Open type from host" |
2126 | msgstr "Host enviou código de abertura DFT desconhecido" | 2210 | msgstr "Host enviou código de abertura DFT desconhecido" |
2127 | 2211 | ||
2212 | +#: connect.c:102 | ||
2213 | +#, fuzzy | ||
2214 | +msgid "Unable to connect to host." | ||
2215 | +msgstr "Não é possível conectar em servidores seguros" | ||
2216 | + | ||
2128 | #: host.c:141 | 2217 | #: host.c:141 |
2129 | msgid "Unable to connect to secure hosts" | 2218 | msgid "Unable to connect to secure hosts" |
2130 | msgstr "Não é possível conectar em servidores seguros" | 2219 | msgstr "Não é possível conectar em servidores seguros" |
@@ -2142,10 +2231,20 @@ msgstr "" | @@ -2142,10 +2231,20 @@ msgstr "" | ||
2142 | msgid "Unable to decrypt certificate's signature" | 2231 | msgid "Unable to decrypt certificate's signature" |
2143 | msgstr "Incapaz de decifrar a assinatura do certificado" | 2232 | msgstr "Incapaz de decifrar a assinatura do certificado" |
2144 | 2233 | ||
2234 | +#: connect.c:225 | ||
2235 | +#, fuzzy | ||
2236 | +msgid "Unable to find selected hostname." | ||
2237 | +msgstr "Não é possível conectar em servidores seguros" | ||
2238 | + | ||
2145 | #: v3270/security.c:61 | 2239 | #: v3270/security.c:61 |
2146 | msgid "Unable to get certificate CRL" | 2240 | msgid "Unable to get certificate CRL" |
2147 | msgstr "Unable to get certificate CRL" | 2241 | msgstr "Unable to get certificate CRL" |
2148 | 2242 | ||
2243 | +#: connect.c:87 | ||
2244 | +#, fuzzy | ||
2245 | +msgid "Unable to get connection state." | ||
2246 | +msgstr "Unable to get certificate CRL" | ||
2247 | + | ||
2149 | #: v3270/security.c:54 | 2248 | #: v3270/security.c:54 |
2150 | msgid "Unable to get issuer certificate" | 2249 | msgid "Unable to get issuer certificate" |
2151 | msgstr "Não foi possível obter emissor do certificado" | 2250 | msgstr "Não foi possível obter emissor do certificado" |
@@ -2158,7 +2257,7 @@ msgstr "Unable to get local issuer certificate" | @@ -2158,7 +2257,7 @@ msgstr "Unable to get local issuer certificate" | ||
2158 | msgid "Unable to paste text" | 2257 | msgid "Unable to paste text" |
2159 | msgstr "Incapaz de colar texto" | 2258 | msgstr "Incapaz de colar texto" |
2160 | 2259 | ||
2161 | -#: ft.c:401 | 2260 | +#: ft.c:424 |
2162 | msgid "Unable to send file-transfer request" | 2261 | msgid "Unable to send file-transfer request" |
2163 | msgstr "Não foi possível enviar a requisição de transferência de arquivo" | 2262 | msgstr "Não foi possível enviar a requisição de transferência de arquivo" |
2164 | 2263 | ||
@@ -2248,12 +2347,12 @@ msgstr "Unknown 3270 Data Stream command: 0x%X" | @@ -2248,12 +2347,12 @@ msgstr "Unknown 3270 Data Stream command: 0x%X" | ||
2248 | msgid "Unknown FT control code from host" | 2347 | msgid "Unknown FT control code from host" |
2249 | msgstr "Servidor enviou código de controle FT desconhecido" | 2348 | msgstr "Servidor enviou código de controle FT desconhecido" |
2250 | 2349 | ||
2251 | -#: kybd.c:2443 | 2350 | +#: kybd.c:2430 |
2252 | #, c-format | 2351 | #, c-format |
2253 | msgid "Unknown PA key %d" | 2352 | msgid "Unknown PA key %d" |
2254 | msgstr "PA %d desconhecida" | 2353 | msgstr "PA %d desconhecida" |
2255 | 2354 | ||
2256 | -#: kybd.c:2458 | 2355 | +#: kybd.c:2445 |
2257 | #, c-format | 2356 | #, c-format |
2258 | msgid "Unknown PF key %d" | 2357 | msgid "Unknown PF key %d" |
2259 | msgstr "PF %d desconhecida" | 2358 | msgstr "PF %d desconhecida" |
@@ -2271,7 +2370,7 @@ msgstr "" | @@ -2271,7 +2370,7 @@ msgstr "" | ||
2271 | "Servidor desconhecido:\n" | 2370 | "Servidor desconhecido:\n" |
2272 | "%s" | 2371 | "%s" |
2273 | 2372 | ||
2274 | -#: telnet.c:551 | 2373 | +#: telnet.c:526 |
2275 | #, c-format | 2374 | #, c-format |
2276 | msgid "Unknown passthru host: %s" | 2375 | msgid "Unknown passthru host: %s" |
2277 | msgstr "Servidor \"passthru\" desconhecido: %s" | 2376 | msgstr "Servidor \"passthru\" desconhecido: %s" |
@@ -2281,7 +2380,7 @@ msgstr "Servidor \"passthru\" desconhecido: %s" | @@ -2281,7 +2380,7 @@ msgstr "Servidor \"passthru\" desconhecido: %s" | ||
2281 | msgid "Unknown popup type \"%s\"" | 2380 | msgid "Unknown popup type \"%s\"" |
2282 | msgstr "Tipo de popup \"%s\" não é conhecido" | 2381 | msgstr "Tipo de popup \"%s\" não é conhecido" |
2283 | 2382 | ||
2284 | -#: telnet.c:580 resolver.c:147 | 2383 | +#: telnet.c:555 resolver.c:147 |
2285 | #, c-format | 2384 | #, c-format |
2286 | msgid "Unknown port number or service: %s" | 2385 | msgid "Unknown port number or service: %s" |
2287 | msgstr "Número de porta ou serviço desconhecido: %s" | 2386 | msgstr "Número de porta ou serviço desconhecido: %s" |
@@ -2294,7 +2393,7 @@ msgstr "Unsupported RPQ term" | @@ -2294,7 +2393,7 @@ msgstr "Unsupported RPQ term" | ||
2294 | msgid "Unsupported certificate purpose" | 2393 | msgid "Unsupported certificate purpose" |
2295 | msgstr "Finalidade do certificado não é suportada" | 2394 | msgstr "Finalidade do certificado não é suportada" |
2296 | 2395 | ||
2297 | -#: telnet.c:536 | 2396 | +#: telnet.c:511 |
2298 | msgid "Unsupported passthru host session" | 2397 | msgid "Unsupported passthru host session" |
2299 | msgstr "Unsupported passthru host session" | 2398 | msgstr "Unsupported passthru host session" |
2300 | 2399 | ||
@@ -2323,19 +2422,24 @@ msgstr "Versão %s - Revisão %s" | @@ -2323,19 +2422,24 @@ msgstr "Versão %s - Revisão %s" | ||
2323 | msgid "View Field Delimiters" | 2422 | msgid "View Field Delimiters" |
2324 | msgstr "Mostrar delimitadores de campo" | 2423 | msgstr "Mostrar delimitadores de campo" |
2325 | 2424 | ||
2326 | -#: telnet.c:732 | 2425 | +#: telnet.c:707 connect.c:335 |
2327 | msgid "WSAEventSelect failed" | 2426 | msgid "WSAEventSelect failed" |
2328 | msgstr "WSAEventSelect falhou" | 2427 | msgstr "WSAEventSelect falhou" |
2329 | 2428 | ||
2330 | -#: telnet.c:317 | 2429 | +#: telnet.c:292 connect.c:158 |
2331 | msgid "WSAStartup failed" | 2430 | msgid "WSAStartup failed" |
2332 | msgstr "WSAStartup falhou" | 2431 | msgstr "WSAStartup falhou" |
2333 | 2432 | ||
2334 | -#: ft.c:410 | 2433 | +#: iocalls.c:429 |
2434 | +#, fuzzy | ||
2435 | +msgid "WaitForMultipleObjects() failed when processing for events." | ||
2436 | +msgstr "select() falhou ao processar eventos" | ||
2437 | + | ||
2438 | +#: ft.c:433 | ||
2335 | msgid "Waiting for GET response" | 2439 | msgid "Waiting for GET response" |
2336 | msgstr "Aguardando resposta do pedido de download" | 2440 | msgstr "Aguardando resposta do pedido de download" |
2337 | 2441 | ||
2338 | -#: ft.c:412 | 2442 | +#: ft.c:435 |
2339 | msgid "Waiting for PUT response" | 2443 | msgid "Waiting for PUT response" |
2340 | msgstr "Aguardando resposta do pedido de upload" | 2444 | msgstr "Aguardando resposta do pedido de upload" |
2341 | 2445 | ||
@@ -2359,6 +2463,11 @@ msgstr "Janela" | @@ -2359,6 +2463,11 @@ msgstr "Janela" | ||
2359 | msgid "Windows Western languages (CP1252)" | 2463 | msgid "Windows Western languages (CP1252)" |
2360 | msgstr "Windows ocidental (CP1252)" | 2464 | msgstr "Windows ocidental (CP1252)" |
2361 | 2465 | ||
2466 | +#: util.c:159 | ||
2467 | +#, fuzzy, c-format | ||
2468 | +msgid "Windows error %d" | ||
2469 | +msgstr "Erro desconhecido" | ||
2470 | + | ||
2362 | #: v3270/oia.c:424 v3270/oia.c:448 v3270/oia.c:452 | 2471 | #: v3270/oia.c:424 v3270/oia.c:448 v3270/oia.c:452 |
2363 | msgid "X" | 2472 | msgid "X" |
2364 | msgstr "X" | 2473 | msgstr "X" |
@@ -2520,24 +2629,32 @@ msgstr "um atributo \"action\"" | @@ -2520,24 +2629,32 @@ msgstr "um atributo \"action\"" | ||
2520 | msgid "bracket" | 2629 | msgid "bracket" |
2521 | msgstr "bracket" | 2630 | msgstr "bracket" |
2522 | 2631 | ||
2523 | -#: toggles.c:177 telnet.c:670 | 2632 | +#: toggles.c:177 telnet.c:645 connect.c:386 connect.c:438 |
2524 | msgid "disable" | 2633 | msgid "disable" |
2525 | msgstr "desabilitar" | 2634 | msgstr "desabilitar" |
2526 | 2635 | ||
2527 | -#: toggles.c:177 telnet.c:670 | 2636 | +#: toggles.c:177 telnet.c:645 connect.c:386 connect.c:438 |
2528 | msgid "enable" | 2637 | msgid "enable" |
2529 | msgstr "enable" | 2638 | msgstr "enable" |
2530 | 2639 | ||
2531 | -#: iocalls.c:450 | ||
2532 | -msgid "select() failed when dispatching events" | ||
2533 | -msgstr "select() falhou ao processar eventos" | 2640 | +#: connect.c:553 |
2641 | +msgid "fcntl() error when getting socket state." | ||
2642 | +msgstr "fcntl() error when getting socket state." | ||
2534 | 2643 | ||
2535 | -#: telnet.c:631 telnet.c:638 | 2644 | +#: connect.c:349 connect.c:541 |
2645 | +msgid "ioctlsocket(FIONBIO) failed." | ||
2646 | +msgstr "ioctlsocket(FIONBIO) failed." | ||
2647 | + | ||
2648 | +#: telnet.c:606 telnet.c:613 | ||
2536 | #, c-format | 2649 | #, c-format |
2537 | msgid "setsockopt(%s)" | 2650 | msgid "setsockopt(%s)" |
2538 | msgstr "setsockopt(%s)" | 2651 | msgstr "setsockopt(%s)" |
2539 | 2652 | ||
2540 | -#: telnet.c:624 | 2653 | +#: connect.c:376 connect.c:428 |
2654 | +msgid "setsockopt(SO_OOBINLINE) has failed" | ||
2655 | +msgstr "setsockopt(SO_OOBINLINE) has failed" | ||
2656 | + | ||
2657 | +#: telnet.c:599 | ||
2541 | msgid "socket" | 2658 | msgid "socket" |
2542 | msgstr "socket" | 2659 | msgstr "socket" |
2543 | 2660 | ||
@@ -2545,10 +2662,19 @@ msgstr "socket" | @@ -2545,10 +2662,19 @@ msgstr "socket" | ||
2545 | msgid "translator-credits" | 2662 | msgid "translator-credits" |
2546 | msgstr "translator-credits" | 2663 | msgstr "translator-credits" |
2547 | 2664 | ||
2548 | -#: telnet.c:1152 | 2665 | +#: telnet.c:1018 |
2549 | msgid "unknown error" | 2666 | msgid "unknown error" |
2550 | msgstr "Erro desconhecido" | 2667 | msgstr "Erro desconhecido" |
2551 | 2668 | ||
2669 | +#~ msgid "Error in ioctl(%s) when setting no blocking mode" | ||
2670 | +#~ msgstr "Erro em ioctl(%s) ao ativar o modo não blocante" | ||
2671 | + | ||
2672 | +#~ msgid "SSL init failed!" | ||
2673 | +#~ msgstr "Inicialização SSL falhou" | ||
2674 | + | ||
2675 | +#~ msgid "SSL_set_fd failed!" | ||
2676 | +#~ msgstr "SSL_set_fd falhou!" | ||
2677 | + | ||
2552 | #~ msgid "Add _CR at end of line." | 2678 | #~ msgid "Add _CR at end of line." |
2553 | #~ msgstr "Adicionar/Remover _CR no final da linha." | 2679 | #~ msgstr "Adicionar/Remover _CR no final da linha." |
2554 | 2680 | ||
@@ -2587,9 +2713,6 @@ msgstr "Erro desconhecido" | @@ -2587,9 +2713,6 @@ msgstr "Erro desconhecido" | ||
2587 | #~ msgid "File transfer" | 2713 | #~ msgid "File transfer" |
2588 | #~ msgstr "Transferência de arquivos" | 2714 | #~ msgstr "Transferência de arquivos" |
2589 | 2715 | ||
2590 | -#~ msgid "File transfer error" | ||
2591 | -#~ msgstr "Erro na transferência de arquivos" | ||
2592 | - | ||
2593 | #~ msgid "LRECL:" | 2716 | #~ msgid "LRECL:" |
2594 | #~ msgstr "LRECL:" | 2717 | #~ msgstr "LRECL:" |
2595 | 2718 | ||
@@ -2672,12 +2795,6 @@ msgstr "Erro desconhecido" | @@ -2672,12 +2795,6 @@ msgstr "Erro desconhecido" | ||
2672 | #~ "<b>Unexpected SSL status %ld</b>\n" | 2795 | #~ "<b>Unexpected SSL status %ld</b>\n" |
2673 | #~ "Security status is undefined" | 2796 | #~ "Security status is undefined" |
2674 | 2797 | ||
2675 | -#~ msgid "SSL Connect error" | ||
2676 | -#~ msgstr "Erro na conexão SSL" | ||
2677 | - | ||
2678 | -#~ msgid "Can't set SSL socket file descriptor" | ||
2679 | -#~ msgstr "Não foi possível definir o descritor de socket SSL" | ||
2680 | - | ||
2681 | #~ msgid "Connection failed" | 2798 | #~ msgid "Connection failed" |
2682 | #~ msgstr "Conexão falhou" | 2799 | #~ msgstr "Conexão falhou" |
2683 | 2800 | ||
@@ -2688,9 +2805,6 @@ msgstr "Erro desconhecido" | @@ -2688,9 +2805,6 @@ msgstr "Erro desconhecido" | ||
2688 | #~ "Quanto ativo o pw3270 response à uma consulta \"color\" com uma lista de " | 2805 | #~ "Quanto ativo o pw3270 response à uma consulta \"color\" com uma lista de " |
2689 | #~ "apenas 8 cores." | 2806 | #~ "apenas 8 cores." |
2690 | 2807 | ||
2691 | -#~ msgid "SSL negotiation failed" | ||
2692 | -#~ msgstr "Negociação SSL falhou" | ||
2693 | - | ||
2694 | #~ msgid "Copiar tudo" | 2808 | #~ msgid "Copiar tudo" |
2695 | #~ msgstr "Copiar tudo" | 2809 | #~ msgstr "Copiar tudo" |
2696 | 2810 |
src/include/lib3270.h
@@ -401,12 +401,12 @@ | @@ -401,12 +401,12 @@ | ||
401 | * Set host id for the connect/reconnect operations. | 401 | * Set host id for the connect/reconnect operations. |
402 | * | 402 | * |
403 | * @param h Session handle. | 403 | * @param h Session handle. |
404 | - * @param n Host ID to set. | 404 | + * @param url URL of host to set in the format tn3270://hostname:service ou tn3270s://hostname:service . |
405 | * | 405 | * |
406 | - * @return Pointer to host id set (internal data, do not change it) | 406 | + * @return Processed host url |
407 | * | 407 | * |
408 | */ | 408 | */ |
409 | - LIB3270_EXPORT const char * lib3270_set_host(H3270 *h, const char *n); | 409 | + LIB3270_EXPORT const char * lib3270_set_host(H3270 *h, const char *url); |
410 | 410 | ||
411 | /** | 411 | /** |
412 | * Get host id for the connect/reconnect operations. | 412 | * Get host id for the connect/reconnect operations. |
@@ -1040,6 +1040,7 @@ | @@ -1040,6 +1040,7 @@ | ||
1040 | LIB3270_EXPORT const char * lib3270_get_revision(void); | 1040 | LIB3270_EXPORT const char * lib3270_get_revision(void); |
1041 | 1041 | ||
1042 | LIB3270_EXPORT char * lib3270_vsprintf(const char *fmt, va_list args); | 1042 | LIB3270_EXPORT char * lib3270_vsprintf(const char *fmt, va_list args); |
1043 | + LIB3270_EXPORT char * lib3270_strdup_printf(const char *fmt, ...); | ||
1043 | 1044 | ||
1044 | LIB3270_EXPORT int lib3270_clear_operator_error(H3270 *hSession); | 1045 | LIB3270_EXPORT int lib3270_clear_operator_error(H3270 *hSession); |
1045 | 1046 |
src/include/lib3270/session.h
@@ -129,7 +129,7 @@ | @@ -129,7 +129,7 @@ | ||
129 | } toggle[LIB3270_TOGGLE_COUNT]; | 129 | } toggle[LIB3270_TOGGLE_COUNT]; |
130 | 130 | ||
131 | // Network & Termtype | 131 | // Network & Termtype |
132 | - char * hostname; | 132 | +// char * hostname; |
133 | char * connected_type; | 133 | char * connected_type; |
134 | char * connected_lu; | 134 | char * connected_lu; |
135 | char luname[LIB3270_LUNAME_LENGTH+1]; | 135 | char luname[LIB3270_LUNAME_LENGTH+1]; |
@@ -139,9 +139,15 @@ | @@ -139,9 +139,15 @@ | ||
139 | int model_num; | 139 | int model_num; |
140 | char * termtype; | 140 | char * termtype; |
141 | 141 | ||
142 | - char * current_host; /**< the hostname part, stripped of qualifiers, luname and port number */ | ||
143 | - char * full_current_host; /**< the entire string, for use in reconnecting */ | ||
144 | - char * qualified_host; | 142 | + struct |
143 | + { | ||
144 | + LIB3270_CONNECT_OPTION opt; /**< Connect options */ | ||
145 | + char * current; /**< The hostname part, stripped of qualifiers, luname and port number */ | ||
146 | + char * full; /**< The entire string, for use in reconnecting */ | ||
147 | + char * srvc; /**< The service name */ | ||
148 | + char * qualified; | ||
149 | + } host; | ||
150 | + | ||
145 | char * proxy; /**< Proxy server (type:host[:port]) */ | 151 | char * proxy; /**< Proxy server (type:host[:port]) */ |
146 | char * termname; | 152 | char * termname; |
147 | 153 |
src/include/pw3270.h
@@ -52,7 +52,7 @@ | @@ -52,7 +52,7 @@ | ||
52 | 52 | ||
53 | 53 | ||
54 | LIB3270_EXPORT GtkWidget * pw3270_new(const gchar *host, const gchar *systype, unsigned short colors); | 54 | LIB3270_EXPORT GtkWidget * pw3270_new(const gchar *host, const gchar *systype, unsigned short colors); |
55 | - LIB3270_EXPORT void pw3270_set_host(GtkWidget *widget, const gchar *uri); | 55 | + LIB3270_EXPORT const gchar * pw3270_set_host(GtkWidget *widget, const gchar *uri); |
56 | LIB3270_EXPORT const gchar * pw3270_get_host(GtkWidget *widget); | 56 | LIB3270_EXPORT const gchar * pw3270_get_host(GtkWidget *widget); |
57 | LIB3270_EXPORT void pw3270_connect_host(GtkWidget *widget, const gchar *uri); | 57 | LIB3270_EXPORT void pw3270_connect_host(GtkWidget *widget, const gchar *uri); |
58 | 58 |
src/include/pw3270/v3270.h
@@ -213,7 +213,7 @@ | @@ -213,7 +213,7 @@ | ||
213 | LIB3270_EXPORT void v3270_set_scaled_fonts(GtkWidget *widget, gboolean on); | 213 | LIB3270_EXPORT void v3270_set_scaled_fonts(GtkWidget *widget, gboolean on); |
214 | LIB3270_EXPORT void v3270_set_session_options(GtkWidget *widget, LIB3270_OPTION options); | 214 | LIB3270_EXPORT void v3270_set_session_options(GtkWidget *widget, LIB3270_OPTION options); |
215 | LIB3270_EXPORT int v3270_set_session_color_type(GtkWidget *widget, unsigned short colortype); | 215 | LIB3270_EXPORT int v3270_set_session_color_type(GtkWidget *widget, unsigned short colortype); |
216 | - LIB3270_EXPORT void v3270_set_host(GtkWidget *widget, const gchar *uri); | 216 | + LIB3270_EXPORT const gchar * v3270_set_host(GtkWidget *widget, const gchar *uri); |
217 | LIB3270_EXPORT const gchar * v3270_get_host(GtkWidget *widget); | 217 | LIB3270_EXPORT const gchar * v3270_get_host(GtkWidget *widget); |
218 | LIB3270_EXPORT GtkWidget * v3270_get_default_widget(void); | 218 | LIB3270_EXPORT GtkWidget * v3270_get_default_widget(void); |
219 | 219 |
src/lib3270/connect.c
@@ -201,6 +201,19 @@ static void net_connected(H3270 *hSession) | @@ -201,6 +201,19 @@ static void net_connected(H3270 *hSession) | ||
201 | sockstart(hSession); | 201 | sockstart(hSession); |
202 | #endif | 202 | #endif |
203 | 203 | ||
204 | + hSession->host.opt = opt; | ||
205 | + Replace(hSession->host.current,strdup(hostname)); | ||
206 | + | ||
207 | + Replace(hSession->host.full, | ||
208 | + lib3270_strdup_printf( | ||
209 | + "%s%s:%s", | ||
210 | + opt&LIB3270_CONNECT_OPTION_SSL ? "L:" : "", | ||
211 | + hostname, | ||
212 | + srvc )); | ||
213 | + | ||
214 | + trace("current_host=\"%s\"",hSession->host.current); | ||
215 | + | ||
216 | + | ||
204 | set_ssl_state(hSession,LIB3270_SSL_UNSECURE); | 217 | set_ssl_state(hSession,LIB3270_SSL_UNSECURE); |
205 | 218 | ||
206 | hSession->ever_3270 = False; | 219 | hSession->ever_3270 = False; |
@@ -231,7 +244,8 @@ static void net_connected(H3270 *hSession) | @@ -231,7 +244,8 @@ static void net_connected(H3270 *hSession) | ||
231 | hostname = name; | 244 | hostname = name; |
232 | } | 245 | } |
233 | 246 | ||
234 | - status_changed(hSession,LIB3270_STATUS_RESOLVING); | 247 | + hSession->cstate = LIB3270_RESOLVING; |
248 | + lib3270_st_changed(hSession, LIB3270_STATE_RESOLVING, True); | ||
235 | 249 | ||
236 | s = getaddrinfo(hostname, srvc, &hints, &result); | 250 | s = getaddrinfo(hostname, srvc, &hints, &result); |
237 | 251 | ||
@@ -286,15 +300,25 @@ static void net_connected(H3270 *hSession) | @@ -286,15 +300,25 @@ static void net_connected(H3270 *hSession) | ||
286 | (void) fcntl(hSession->sock, F_SETFD, 1); | 300 | (void) fcntl(hSession->sock, F_SETFD, 1); |
287 | #endif | 301 | #endif |
288 | 302 | ||
289 | - hSession->ssl_host = 0; | 303 | + hSession->ever_3270 = False; |
304 | + hSession->ssl_host = 0; | ||
290 | 305 | ||
291 | -#if defined(HAVE_LIBSSL) | ||
292 | if(opt&LIB3270_CONNECT_OPTION_SSL) | 306 | if(opt&LIB3270_CONNECT_OPTION_SSL) |
293 | { | 307 | { |
308 | +#if defined(HAVE_LIBSSL) | ||
294 | hSession->ssl_host = 1; | 309 | hSession->ssl_host = 1; |
295 | ssl_init(hSession); | 310 | ssl_init(hSession); |
311 | +#else | ||
312 | + lib3270_popup_dialog( hSession, | ||
313 | + LIB3270_NOTIFY_ERROR, | ||
314 | + _( "SSL error" ), | ||
315 | + _( "Unable to connect to secure hosts" ), | ||
316 | + _( "This version of %s was built without support for secure sockets layer (SSL)." ), | ||
317 | + PACKAGE_NAME)); | ||
318 | + | ||
319 | + return EINVAL; | ||
320 | +#endif // HAVE_LIBSSL | ||
296 | } | 321 | } |
297 | -#endif | ||
298 | 322 | ||
299 | /* connect */ | 323 | /* connect */ |
300 | status_connecting(hSession,1); | 324 | status_connecting(hSession,1); |
src/lib3270/host.c
@@ -38,6 +38,7 @@ | @@ -38,6 +38,7 @@ | ||
38 | * connection. | 38 | * connection. |
39 | */ | 39 | */ |
40 | 40 | ||
41 | +#include <malloc.h> | ||
41 | #include "globals.h" | 42 | #include "globals.h" |
42 | // #include "appres.h" | 43 | // #include "appres.h" |
43 | #include "resources.h" | 44 | #include "resources.h" |
@@ -64,7 +65,7 @@ static void try_reconnect(H3270 *session); | @@ -64,7 +65,7 @@ static void try_reconnect(H3270 *session); | ||
64 | * Returns the hostname part in a newly-malloc'd string. | 65 | * Returns the hostname part in a newly-malloc'd string. |
65 | * 'needed' is returned True if anything was actually stripped. | 66 | * 'needed' is returned True if anything was actually stripped. |
66 | * Returns NULL if there is a syntax error. | 67 | * Returns NULL if there is a syntax error. |
67 | - */ | 68 | + */ /* |
68 | static char * | 69 | static char * |
69 | split_host(H3270 *hSession, char *s, char *ansi, char *std_ds, char *passthru, | 70 | split_host(H3270 *hSession, char *s, char *ansi, char *std_ds, char *passthru, |
70 | char *non_e, char *secure, char *no_login, char *xluname, | 71 | char *non_e, char *secure, char *no_login, char *xluname, |
@@ -85,18 +86,18 @@ split_host(H3270 *hSession, char *s, char *ansi, char *std_ds, char *passthru, | @@ -85,18 +86,18 @@ split_host(H3270 *hSession, char *s, char *ansi, char *std_ds, char *passthru, | ||
85 | 86 | ||
86 | *needed = False; | 87 | *needed = False; |
87 | 88 | ||
88 | - /* | ||
89 | - * Hostname syntax is: | ||
90 | - * Zero or more optional prefixes (A:, S:, P:, N:, L:, C:). | ||
91 | - * An optional LU name separated by '@'. | ||
92 | - * A hostname optionally in square brackets (which quote any colons | ||
93 | - * in the name). | ||
94 | - * An optional port name or number separated from the hostname by a | ||
95 | - * space or colon. | ||
96 | - * No additional white space or colons are allowed. | ||
97 | - */ | ||
98 | - | ||
99 | - /* Strip leading whitespace. */ | 89 | + // |
90 | + // Hostname syntax is: | ||
91 | + // Zero or more optional prefixes (A:, S:, P:, N:, L:, C:). | ||
92 | + // An optional LU name separated by '@'. | ||
93 | + // A hostname optionally in square brackets (which quote any colons | ||
94 | + // in the name). | ||
95 | + // An optional port name or number separated from the hostname by a | ||
96 | + // space or colon. | ||
97 | + // No additional white space or colons are allowed. | ||
98 | + // | ||
99 | + | ||
100 | + // Strip leading whitespace. | ||
100 | while (*s && isspace(*s)) | 101 | while (*s && isspace(*s)) |
101 | s++; | 102 | s++; |
102 | 103 | ||
@@ -106,11 +107,11 @@ split_host(H3270 *hSession, char *s, char *ansi, char *std_ds, char *passthru, | @@ -106,11 +107,11 @@ split_host(H3270 *hSession, char *s, char *ansi, char *std_ds, char *passthru, | ||
106 | goto split_fail; | 107 | goto split_fail; |
107 | } | 108 | } |
108 | 109 | ||
109 | - /* Strip trailing whitespace. */ | 110 | + // Strip trailing whitespace. |
110 | while (isspace(*(s + strlen(s) - 1))) | 111 | while (isspace(*(s + strlen(s) - 1))) |
111 | *(s + strlen(s) - 1) = '\0'; | 112 | *(s + strlen(s) - 1) = '\0'; |
112 | 113 | ||
113 | - /* Start with the prefixes. */ | 114 | + // Start with the prefixes. |
114 | while (*s && *(s + 1) && isalpha(*s) && *(s + 1) == ':') { | 115 | while (*s && *(s + 1) && isalpha(*s) && *(s + 1) == ':') { |
115 | switch (*s) { | 116 | switch (*s) { |
116 | case 'a': | 117 | case 'a': |
@@ -160,12 +161,12 @@ split_host(H3270 *hSession, char *s, char *ansi, char *std_ds, char *passthru, | @@ -160,12 +161,12 @@ split_host(H3270 *hSession, char *s, char *ansi, char *std_ds, char *passthru, | ||
160 | *needed = True; | 161 | *needed = True; |
161 | s += 2; | 162 | s += 2; |
162 | 163 | ||
163 | - /* Allow whitespace around the prefixes. */ | 164 | + // Allow whitespace around the prefixes. |
164 | while (*s && isspace(*s)) | 165 | while (*s && isspace(*s)) |
165 | s++; | 166 | s++; |
166 | } | 167 | } |
167 | 168 | ||
168 | - /* Process the LU name. */ | 169 | + // Process the LU name. |
169 | lbracket = strchr(s, '['); | 170 | lbracket = strchr(s, '['); |
170 | at = strchr(s, '@'); | 171 | at = strchr(s, '@'); |
171 | if (at != CN && lbracket != CN && at > lbracket) | 172 | if (at != CN && lbracket != CN && at > lbracket) |
@@ -203,15 +204,15 @@ split_host(H3270 *hSession, char *s, char *ansi, char *std_ds, char *passthru, | @@ -203,15 +204,15 @@ split_host(H3270 *hSession, char *s, char *ansi, char *std_ds, char *passthru, | ||
203 | *needed = True; | 204 | *needed = True; |
204 | } | 205 | } |
205 | 206 | ||
206 | - /* | ||
207 | - * Isolate the hostname. | ||
208 | - * At this point, we've found its start, so we can malloc the buffer | ||
209 | - * that will hold the copy. | ||
210 | - */ | 207 | + // |
208 | + // Isolate the hostname. | ||
209 | + // At this point, we've found its start, so we can malloc the buffer | ||
210 | + // that will hold the copy. | ||
211 | + /// | ||
211 | if (lbracket != CN) { | 212 | if (lbracket != CN) { |
212 | char *rbracket; | 213 | char *rbracket; |
213 | 214 | ||
214 | - /* Check for junk before the '['. */ | 215 | + // Check for junk before the '['. |
215 | if (lbracket != s) { | 216 | if (lbracket != s) { |
216 | popup_system_error(hSession,NULL,_("Hostname syntax error"),"%s",_("Text before '['")); | 217 | popup_system_error(hSession,NULL,_("Hostname syntax error"),"%s",_("Text before '['")); |
217 | goto split_fail; | 218 | goto split_fail; |
@@ -219,10 +220,10 @@ split_host(H3270 *hSession, char *s, char *ansi, char *std_ds, char *passthru, | @@ -219,10 +220,10 @@ split_host(H3270 *hSession, char *s, char *ansi, char *std_ds, char *passthru, | ||
219 | 220 | ||
220 | s = r = NewString(lbracket + 1); | 221 | s = r = NewString(lbracket + 1); |
221 | 222 | ||
222 | - /* | ||
223 | - * Take whatever is inside square brackets, including | ||
224 | - * whitespace, unmodified -- except for empty strings. | ||
225 | - */ | 223 | + // |
224 | + // Take whatever is inside square brackets, including | ||
225 | + // whitespace, unmodified -- except for empty strings. | ||
226 | + // | ||
226 | rbracket = strchr(s, ']'); | 227 | rbracket = strchr(s, ']'); |
227 | if (rbracket == CN) { | 228 | if (rbracket == CN) { |
228 | popup_system_error(hSession,NULL,_("Hostname syntax error"),"%s",_("Missing ']'")); | 229 | popup_system_error(hSession,NULL,_("Hostname syntax error"),"%s",_("Missing ']'")); |
@@ -234,7 +235,7 @@ split_host(H3270 *hSession, char *s, char *ansi, char *std_ds, char *passthru, | @@ -234,7 +235,7 @@ split_host(H3270 *hSession, char *s, char *ansi, char *std_ds, char *passthru, | ||
234 | } | 235 | } |
235 | *rbracket = '\0'; | 236 | *rbracket = '\0'; |
236 | 237 | ||
237 | - /* Skip over any whitespace after the bracketed name. */ | 238 | + // Skip over any whitespace after the bracketed name. |
238 | s = rbracket + 1; | 239 | s = rbracket + 1; |
239 | while (*s && isspace(*s)) | 240 | while (*s && isspace(*s)) |
240 | s++; | 241 | s++; |
@@ -244,7 +245,7 @@ split_host(H3270 *hSession, char *s, char *ansi, char *std_ds, char *passthru, | @@ -244,7 +245,7 @@ split_host(H3270 *hSession, char *s, char *ansi, char *std_ds, char *passthru, | ||
244 | } else { | 245 | } else { |
245 | char *name_end; | 246 | char *name_end; |
246 | 247 | ||
247 | - /* Check for an empty string. */ | 248 | + // Check for an empty string. |
248 | if (!*s || *s == ':') { | 249 | if (!*s || *s == ':') { |
249 | popup_an_error(hSession,"Empty hostname"); | 250 | popup_an_error(hSession,"Empty hostname"); |
250 | goto split_fail; | 251 | goto split_fail; |
@@ -252,19 +253,19 @@ split_host(H3270 *hSession, char *s, char *ansi, char *std_ds, char *passthru, | @@ -252,19 +253,19 @@ split_host(H3270 *hSession, char *s, char *ansi, char *std_ds, char *passthru, | ||
252 | 253 | ||
253 | s = r = NewString(s); | 254 | s = r = NewString(s); |
254 | 255 | ||
255 | - /* Find the end of the hostname. */ | 256 | + // Find the end of the hostname. |
256 | while (*s && !isspace(*s) && *s != ':') | 257 | while (*s && !isspace(*s) && *s != ':') |
257 | s++; | 258 | s++; |
258 | name_end = s; | 259 | name_end = s; |
259 | 260 | ||
260 | - /* If the terminator is whitespace, skip the rest of it. */ | 261 | + // If the terminator is whitespace, skip the rest of it. |
261 | while (*s && isspace(*s)) | 262 | while (*s && isspace(*s)) |
262 | s++; | 263 | s++; |
263 | 264 | ||
264 | - /* | ||
265 | - * If there's nothing but whitespace (or nothing) after the | ||
266 | - * name, we're done. | ||
267 | - */ | 265 | + // |
266 | + // If there's nothing but whitespace (or nothing) after the | ||
267 | + // name, we're done. | ||
268 | + // | ||
268 | if (*s == '\0') { | 269 | if (*s == '\0') { |
269 | *name_end = '\0'; | 270 | *name_end = '\0'; |
270 | goto split_success; | 271 | goto split_success; |
@@ -273,10 +274,10 @@ split_host(H3270 *hSession, char *s, char *ansi, char *std_ds, char *passthru, | @@ -273,10 +274,10 @@ split_host(H3270 *hSession, char *s, char *ansi, char *std_ds, char *passthru, | ||
273 | *name_end = '\0'; | 274 | *name_end = '\0'; |
274 | } | 275 | } |
275 | 276 | ||
276 | - /* | ||
277 | - * If 'colon' is set, 's' points at it (or where it was). Skip | ||
278 | - * it and any whitespace that follows. | ||
279 | - */ | 277 | + // |
278 | + // If 'colon' is set, 's' points at it (or where it was). Skip | ||
279 | + // it and any whitespace that follows. | ||
280 | + // | ||
280 | if (colon) { | 281 | if (colon) { |
281 | s++; | 282 | s++; |
282 | while (*s && isspace(*s)) | 283 | while (*s && isspace(*s)) |
@@ -287,11 +288,11 @@ split_host(H3270 *hSession, char *s, char *ansi, char *std_ds, char *passthru, | @@ -287,11 +288,11 @@ split_host(H3270 *hSession, char *s, char *ansi, char *std_ds, char *passthru, | ||
287 | } | 288 | } |
288 | } | 289 | } |
289 | 290 | ||
290 | - /* | ||
291 | - * Set the portname and find its end. | ||
292 | - * Note that trailing spaces were already stripped, so the end of the | ||
293 | - * portname must be a NULL. | ||
294 | - */ | 291 | + // |
292 | + // Set the portname and find its end. | ||
293 | + // Note that trailing spaces were already stripped, so the end of the | ||
294 | + // portname must be a NULL. | ||
295 | + // | ||
295 | *port = s; | 296 | *port = s; |
296 | *needed = True; | 297 | *needed = True; |
297 | while (*s && !isspace(*s) && *s != ':') | 298 | while (*s && !isspace(*s) && *s != ':') |
@@ -309,23 +310,25 @@ split_fail: | @@ -309,23 +310,25 @@ split_fail: | ||
309 | split_success: | 310 | split_success: |
310 | return r; | 311 | return r; |
311 | } | 312 | } |
313 | +*/ | ||
312 | 314 | ||
313 | -static int do_connect(H3270 *hSession, const char *n) | 315 | +static int do_connect(H3270 *hSession) |
314 | { | 316 | { |
315 | - char nb[2048]; /* name buffer */ | ||
316 | - char *s; /* temporary */ | ||
317 | - char *chost = NULL; /* to whom we will connect */ | 317 | +// char nb[2048]; // name buffer |
318 | +// char *s; // temporary | ||
319 | + char *chost = NULL; // to whom we will connect | ||
318 | // char *ps = CN; | 320 | // char *ps = CN; |
319 | - char *port = CN; | 321 | +// char *port = CN; |
320 | Boolean resolving; | 322 | Boolean resolving; |
321 | Boolean pending; | 323 | Boolean pending; |
322 | - static Boolean ansi_host; | ||
323 | - Boolean has_colons = False; | 324 | +// static Boolean ansi_host; |
325 | +// Boolean has_colons = False; | ||
324 | 326 | ||
325 | if (lib3270_connected(hSession) || hSession->auto_reconnect_inprogress) | 327 | if (lib3270_connected(hSession) || hSession->auto_reconnect_inprogress) |
326 | return EBUSY; | 328 | return EBUSY; |
327 | 329 | ||
328 | - /* Skip leading blanks. */ | 330 | + /* |
331 | + // Skip leading blanks. | ||
329 | while (*n == ' ') | 332 | while (*n == ' ') |
330 | n++; | 333 | n++; |
331 | 334 | ||
@@ -334,22 +337,26 @@ static int do_connect(H3270 *hSession, const char *n) | @@ -334,22 +337,26 @@ static int do_connect(H3270 *hSession, const char *n) | ||
334 | popup_an_error(hSession,_( "Invalid (empty) hostname" )); | 337 | popup_an_error(hSession,_( "Invalid (empty) hostname" )); |
335 | return -1; | 338 | return -1; |
336 | } | 339 | } |
340 | + */ | ||
337 | 341 | ||
338 | - /* Save in a modifiable buffer. */ | 342 | + /* |
343 | + // Save in a modifiable buffer. | ||
339 | (void) strncpy(nb, n, 2047); | 344 | (void) strncpy(nb, n, 2047); |
340 | 345 | ||
341 | - /* Strip trailing blanks. */ | 346 | + // Strip trailing blanks. |
342 | s = nb + strlen(nb) - 1; | 347 | s = nb + strlen(nb) - 1; |
343 | while (*s == ' ') | 348 | while (*s == ' ') |
344 | *s-- = '\0'; | 349 | *s-- = '\0'; |
350 | + */ | ||
345 | 351 | ||
346 | /* Remember this hostname, as the last hostname we connected to. */ | 352 | /* Remember this hostname, as the last hostname we connected to. */ |
347 | - lib3270_set_host(hSession,nb); | 353 | + // lib3270_set_host(hSession,nb); |
348 | 354 | ||
355 | + /* | ||
349 | { | 356 | { |
350 | Boolean needed; | 357 | Boolean needed; |
351 | 358 | ||
352 | - /* Strip off and remember leading qualifiers. */ | 359 | + // Strip off and remember leading qualifiers. |
353 | if ((s = split_host(hSession, nb, &ansi_host, &hSession->std_ds_host, | 360 | if ((s = split_host(hSession, nb, &ansi_host, &hSession->std_ds_host, |
354 | &hSession->passthru_host, &hSession->non_tn3270e_host, &hSession->ssl_host, | 361 | &hSession->passthru_host, &hSession->non_tn3270e_host, &hSession->ssl_host, |
355 | &hSession->no_login_host, hSession->luname, &port, | 362 | &hSession->no_login_host, hSession->luname, &port, |
@@ -358,35 +365,52 @@ static int do_connect(H3270 *hSession, const char *n) | @@ -358,35 +365,52 @@ static int do_connect(H3270 *hSession, const char *n) | ||
358 | 365 | ||
359 | chost = s; | 366 | chost = s; |
360 | 367 | ||
361 | - /* Default the port. */ | 368 | + // Default the port. |
362 | if (port == CN) | 369 | if (port == CN) |
363 | port = "telnet"; | 370 | port = "telnet"; |
364 | } | 371 | } |
365 | 372 | ||
366 | - /* | ||
367 | - * Store the original name in globals, even if we fail the connect | ||
368 | - * later: | ||
369 | - * current_host is the hostname part, stripped of qualifiers, luname | ||
370 | - * and port number | ||
371 | - * full_current_host is the entire string, for use in reconnecting | ||
372 | - */ | ||
373 | - Replace(hSession->current_host, CN); | 373 | + // |
374 | + // Store the original name in globals, even if we fail the connect | ||
375 | + // later: | ||
376 | + // current_host is the hostname part, stripped of qualifiers, luname | ||
377 | + // and port number | ||
378 | + // full_current_host is the entire string, for use in reconnecting | ||
379 | + // | ||
380 | + // | ||
381 | + // Replace(hSession->current_host, CN); | ||
374 | 382 | ||
375 | has_colons = (strchr(chost, ':') != NULL); | 383 | has_colons = (strchr(chost, ':') != NULL); |
376 | 384 | ||
377 | - Replace(hSession->qualified_host, | 385 | + Replace(hSession->host.qualified, |
378 | xs_buffer("%s%s%s%s:%s", | 386 | xs_buffer("%s%s%s%s:%s", |
379 | hSession->ssl_host? "L:": "", | 387 | hSession->ssl_host? "L:": "", |
380 | has_colons? "[": "", | 388 | has_colons? "[": "", |
381 | chost, | 389 | chost, |
382 | has_colons? "]": "", | 390 | has_colons? "]": "", |
383 | port)); | 391 | port)); |
384 | - | 392 | + */ |
385 | 393 | ||
386 | /* Attempt contact. */ | 394 | /* Attempt contact. */ |
387 | hSession->ever_3270 = False; | 395 | hSession->ever_3270 = False; |
396 | + hSession->ssl_host = 0; | ||
388 | 397 | ||
389 | - if(net_connect(hSession, chost, port, 0, &resolving,&pending) != 0 && !resolving) | 398 | + if(hSession->host.opt&LIB3270_CONNECT_OPTION_SSL) |
399 | + { | ||
400 | +#if defined(HAVE_LIBSSL) | ||
401 | + hSession->ssl_host = 1; | ||
402 | + ssl_init(hSession); | ||
403 | +#else | ||
404 | + popup_system_error(hSession, _( "SSL error" ), | ||
405 | + _( "Unable to connect to secure hosts" ), | ||
406 | + _( "This version of %s was built without support for secure sockets layer (SSL)." ), | ||
407 | + PACKAGE_NAME | ||
408 | + ); | ||
409 | +#endif | ||
410 | + } | ||
411 | + | ||
412 | + trace("Conneting to hostname=[%s] service=[%s]",hSession->host.current, hSession->host.srvc); | ||
413 | + if(net_connect(hSession, hSession->host.current, hSession->host.srvc, 0, &resolving,&pending) != 0 && !resolving) | ||
390 | { | 414 | { |
391 | /* Redundantly signal a disconnect. */ | 415 | /* Redundantly signal a disconnect. */ |
392 | lib3270_set_disconnected(hSession); | 416 | lib3270_set_disconnected(hSession); |
@@ -457,14 +481,13 @@ int lib3270_connect(H3270 *hSession, const char *n, int wait) | @@ -457,14 +481,13 @@ int lib3270_connect(H3270 *hSession, const char *n, int wait) | ||
457 | if(PCONNECTED) | 481 | if(PCONNECTED) |
458 | return EBUSY; | 482 | return EBUSY; |
459 | 483 | ||
460 | - if(!n) | ||
461 | - { | ||
462 | - n = hSession->full_current_host; | ||
463 | - if(!n) | ||
464 | - return EINVAL; | ||
465 | - } | 484 | + if(n) |
485 | + lib3270_set_host(hSession,n); | ||
466 | 486 | ||
467 | - rc = do_connect(hSession,n); | 487 | + if(!hSession->host.full) |
488 | + return EINVAL; | ||
489 | + | ||
490 | + rc = do_connect(hSession); | ||
468 | if(rc) | 491 | if(rc) |
469 | return rc; | 492 | return rc; |
470 | 493 | ||
@@ -489,7 +512,7 @@ int lib3270_connect(H3270 *hSession, const char *n, int wait) | @@ -489,7 +512,7 @@ int lib3270_connect(H3270 *hSession, const char *n, int wait) | ||
489 | */ | 512 | */ |
490 | static void try_reconnect(H3270 *session) | 513 | static void try_reconnect(H3270 *session) |
491 | { | 514 | { |
492 | - lib3270_write_log(session,"3270","Starting auto-reconnect (Host: %s)",session->full_current_host ? session->full_current_host : "-"); | 515 | + lib3270_write_log(session,"3270","Starting auto-reconnect (Host: %s)",session->host.full ? session->host.full : "-"); |
493 | session->auto_reconnect_inprogress = 0; | 516 | session->auto_reconnect_inprogress = 0; |
494 | lib3270_reconnect(session,0); | 517 | lib3270_reconnect(session,0); |
495 | } | 518 | } |
@@ -626,26 +649,88 @@ LIB3270_EXPORT const char * lib3270_set_host(H3270 *h, const char *n) | @@ -626,26 +649,88 @@ LIB3270_EXPORT const char * lib3270_set_host(H3270 *h, const char *n) | ||
626 | { | 649 | { |
627 | CHECK_SESSION_HANDLE(h); | 650 | CHECK_SESSION_HANDLE(h); |
628 | 651 | ||
629 | - if(n && n != h->full_current_host) | 652 | + if(n && n != h->host.full) |
630 | { | 653 | { |
631 | - char *new_hostname = strdup(n); | 654 | + static const struct _sch |
655 | + { | ||
656 | + LIB3270_CONNECT_OPTION opt; | ||
657 | + const char * text; | ||
658 | + const char * srvc; | ||
659 | + } sch[] = | ||
660 | + { | ||
661 | + { LIB3270_CONNECT_OPTION_DEFAULTS, "tn3270://", "telnet" }, | ||
662 | + { LIB3270_CONNECT_OPTION_SSL, "tn3270s://", "telnets" }, | ||
663 | + { LIB3270_CONNECT_OPTION_DEFAULTS, "telnet://", "telnet" }, | ||
664 | + { LIB3270_CONNECT_OPTION_DEFAULTS, "telnets://", "telnets" }, | ||
665 | + { LIB3270_CONNECT_OPTION_SSL, "L://", "telnets" }, | ||
666 | + | ||
667 | + { LIB3270_CONNECT_OPTION_SSL, "L:", "telnets" } // The compatibility should be the last option | ||
668 | + }; | ||
669 | + | ||
670 | + char * str = strdup(n); | ||
671 | + char * hostname = str; | ||
672 | + const char * srvc = "telnet"; | ||
673 | + char * ptr; | ||
674 | + char * query = ""; | ||
675 | + int f; | ||
676 | + | ||
677 | + trace("%s(%s)",__FUNCTION__,str); | ||
678 | + h->host.opt = LIB3270_CONNECT_OPTION_DEFAULTS; | ||
679 | + | ||
680 | + for(f=0;f < sizeof(sch)/sizeof(sch[0]);f++) | ||
681 | + { | ||
682 | + size_t sz = strlen(sch[f].text); | ||
683 | + if(!strncasecmp(hostname,sch[f].text,sz)) | ||
684 | + { | ||
685 | + h->host.opt = sch[f].opt; | ||
686 | + srvc = sch[f].srvc; | ||
687 | + hostname += sz; | ||
688 | + break; | ||
689 | + } | ||
690 | + } | ||
632 | 691 | ||
633 | - trace("new hostname is \"%s\"",new_hostname); | 692 | + trace("SRVC=[%s]",srvc); |
634 | 693 | ||
635 | - if(h->full_current_host) | ||
636 | - lib3270_free(h->full_current_host); | 694 | + if(!*hostname) |
695 | + return h->host.current; | ||
637 | 696 | ||
638 | - h->full_current_host = new_hostname; | 697 | + ptr = strchr(hostname,':'); |
698 | + if(ptr) | ||
699 | + { | ||
700 | + *(ptr++) = 0; | ||
701 | + srvc = ptr; | ||
702 | + query = strchr(ptr,'?'); | ||
703 | + | ||
704 | + trace("QUERY=[%s]",query); | ||
705 | + | ||
706 | + if(query) | ||
707 | + *(query++) = 0; | ||
708 | + else | ||
709 | + query = ""; | ||
710 | + } | ||
639 | 711 | ||
712 | + Replace(h->host.current,strdup(hostname)); | ||
713 | + Replace(h->host.srvc,strdup(srvc)); | ||
714 | + Replace(h->host.full, | ||
715 | + lib3270_strdup_printf( | ||
716 | + "%s%s:%s%s%s", | ||
717 | + h->host.opt&LIB3270_CONNECT_OPTION_SSL ? "L:" : "", | ||
718 | + hostname, | ||
719 | + srvc, | ||
720 | + *query ? "?" : "", | ||
721 | + query | ||
722 | + )); | ||
723 | + | ||
724 | + free(str); | ||
640 | } | 725 | } |
641 | 726 | ||
642 | - return h->full_current_host; | 727 | + return h->host.current; |
643 | } | 728 | } |
644 | 729 | ||
645 | LIB3270_EXPORT const char * lib3270_get_host(H3270 *h) | 730 | LIB3270_EXPORT const char * lib3270_get_host(H3270 *h) |
646 | { | 731 | { |
647 | CHECK_SESSION_HANDLE(h); | 732 | CHECK_SESSION_HANDLE(h); |
648 | - return h->full_current_host; | 733 | + return h->host.full; |
649 | } | 734 | } |
650 | 735 | ||
651 | LIB3270_EXPORT int lib3270_reconnect(H3270 *hSession,int wait) | 736 | LIB3270_EXPORT int lib3270_reconnect(H3270 *hSession,int wait) |
@@ -657,13 +742,13 @@ LIB3270_EXPORT int lib3270_reconnect(H3270 *hSession,int wait) | @@ -657,13 +742,13 @@ LIB3270_EXPORT int lib3270_reconnect(H3270 *hSession,int wait) | ||
657 | if (CONNECTED || HALF_CONNECTED) | 742 | if (CONNECTED || HALF_CONNECTED) |
658 | return EBUSY; | 743 | return EBUSY; |
659 | 744 | ||
660 | - if (hSession->full_current_host == CN) | 745 | + if (hSession->host.full == CN) |
661 | return EINVAL; | 746 | return EINVAL; |
662 | 747 | ||
663 | if (hSession->auto_reconnect_inprogress) | 748 | if (hSession->auto_reconnect_inprogress) |
664 | return EBUSY; | 749 | return EBUSY; |
665 | 750 | ||
666 | - rc = lib3270_connect(hSession,hSession->full_current_host,wait); | 751 | + rc = lib3270_connect(hSession,hSession->host.full,wait); |
667 | 752 | ||
668 | if(rc) | 753 | if(rc) |
669 | { | 754 | { |
src/lib3270/session.c
@@ -99,6 +99,13 @@ void lib3270_session_free(H3270 *h) | @@ -99,6 +99,13 @@ void lib3270_session_free(H3270 *h) | ||
99 | if(h == default_session) | 99 | if(h == default_session) |
100 | default_session = NULL; | 100 | default_session = NULL; |
101 | 101 | ||
102 | + | ||
103 | + // Release hostname info | ||
104 | + release_pointer(h->host.current); | ||
105 | + release_pointer(h->host.full); | ||
106 | + release_pointer(h->host.srvc); | ||
107 | + release_pointer(h->host.qualified); | ||
108 | + | ||
102 | lib3270_free(h); | 109 | lib3270_free(h); |
103 | 110 | ||
104 | } | 111 | } |
src/lib3270/telnet.c
@@ -501,7 +501,7 @@ int net_connect(H3270 *session, const char *host, char *portname, Boolean ls, Bo | @@ -501,7 +501,7 @@ int net_connect(H3270 *session, const char *host, char *portname, Boolean ls, Bo | ||
501 | *resolving = False; | 501 | *resolving = False; |
502 | *pending = False; | 502 | *pending = False; |
503 | 503 | ||
504 | - Replace(session->hostname, NewString(host)); | 504 | +// Replace(session->hostname, NewString(host)); |
505 | 505 | ||
506 | /* get the passthru host and port number */ | 506 | /* get the passthru host and port number */ |
507 | if (session->passthru_host) | 507 | if (session->passthru_host) |
@@ -656,7 +656,7 @@ int net_connect(H3270 *session, const char *host, char *portname, Boolean ls, Bo | @@ -656,7 +656,7 @@ int net_connect(H3270 *session, const char *host, char *portname, Boolean ls, Bo | ||
656 | } | 656 | } |
657 | else | 657 | else |
658 | { | 658 | { |
659 | - char *msg = xs_buffer( _( "Can't connect to %s:%d" ), session->hostname, session->current_port); | 659 | + char *msg = xs_buffer( _( "Can't connect to %s" ), session->host.current); |
660 | 660 | ||
661 | lib3270_popup_dialog( session, | 661 | lib3270_popup_dialog( session, |
662 | LIB3270_NOTIFY_ERROR, | 662 | LIB3270_NOTIFY_ERROR, |
@@ -778,9 +778,10 @@ static void setup_lus(H3270 *hSession) | @@ -778,9 +778,10 @@ static void setup_lus(H3270 *hSession) | ||
778 | 778 | ||
779 | static int net_connected(H3270 *hSession) | 779 | static int net_connected(H3270 *hSession) |
780 | { | 780 | { |
781 | + /* | ||
781 | if(hSession->proxy_type > 0) | 782 | if(hSession->proxy_type > 0) |
782 | { | 783 | { |
783 | - /* Negotiate with the proxy. */ | 784 | + // Negotiate with the proxy. |
784 | trace_dsn(hSession,"Connected to proxy server %s, port %u.\n",hSession->proxy_host, hSession->proxy_port); | 785 | trace_dsn(hSession,"Connected to proxy server %s, port %u.\n",hSession->proxy_host, hSession->proxy_port); |
785 | 786 | ||
786 | if (proxy_negotiate(hSession, hSession->proxy_type, hSession->sock, hSession->hostname,hSession->current_port) < 0) | 787 | if (proxy_negotiate(hSession, hSession->proxy_type, hSession->sock, hSession->hostname,hSession->current_port) < 0) |
@@ -789,8 +790,9 @@ static int net_connected(H3270 *hSession) | @@ -789,8 +790,9 @@ static int net_connected(H3270 *hSession) | ||
789 | return -1; | 790 | return -1; |
790 | } | 791 | } |
791 | } | 792 | } |
793 | + */ | ||
792 | 794 | ||
793 | - trace_dsn(hSession,"Connected to %s, port %u%s.\n", hSession->hostname, hSession->current_port,hSession->ssl_host? " via SSL": ""); | 795 | + trace_dsn(hSession,"Connected to %s%s.\n", hSession->host.current,hSession->ssl_host? " using SSL": ""); |
794 | 796 | ||
795 | #if defined(HAVE_LIBSSL) | 797 | #if defined(HAVE_LIBSSL) |
796 | /* Set up SSL. */ | 798 | /* Set up SSL. */ |
@@ -847,6 +849,7 @@ LIB3270_EXPORT void lib3270_setup_session(H3270 *hSession) | @@ -847,6 +849,7 @@ LIB3270_EXPORT void lib3270_setup_session(H3270 *hSession) | ||
847 | check_linemode(hSession,True); | 849 | check_linemode(hSession,True); |
848 | 850 | ||
849 | /* write out the passthru hostname and port nubmer */ | 851 | /* write out the passthru hostname and port nubmer */ |
852 | + /* | ||
850 | if (hSession->passthru_host) | 853 | if (hSession->passthru_host) |
851 | { | 854 | { |
852 | unsigned char *buffer = (unsigned char *) xs_buffer("%s %d\r\n", hSession->hostname, hSession->current_port); | 855 | unsigned char *buffer = (unsigned char *) xs_buffer("%s %d\r\n", hSession->hostname, hSession->current_port); |
@@ -854,6 +857,7 @@ LIB3270_EXPORT void lib3270_setup_session(H3270 *hSession) | @@ -854,6 +857,7 @@ LIB3270_EXPORT void lib3270_setup_session(H3270 *hSession) | ||
854 | lib3270_free(buffer); | 857 | lib3270_free(buffer); |
855 | trace_ds(hSession,"SENT HOSTNAME %s:%d\n", hSession->hostname, hSession->current_port); | 858 | trace_ds(hSession,"SENT HOSTNAME %s:%d\n", hSession->hostname, hSession->current_port); |
856 | } | 859 | } |
860 | + */ | ||
857 | } | 861 | } |
858 | 862 | ||
859 | /** | 863 | /** |
@@ -1036,7 +1040,7 @@ void net_input(H3270 *hSession) | @@ -1036,7 +1040,7 @@ void net_input(H3270 *hSession) | ||
1036 | 1040 | ||
1037 | if (HALF_CONNECTED) | 1041 | if (HALF_CONNECTED) |
1038 | { | 1042 | { |
1039 | - popup_a_sockerr(hSession, N_( "%s:%d" ),hSession->hostname, hSession->current_port); | 1043 | + popup_a_sockerr(hSession, N_( "%s" ),hSession->host.current); |
1040 | } | 1044 | } |
1041 | else if (socket_errno() != SE_ECONNRESET) | 1045 | else if (socket_errno() != SE_ECONNRESET) |
1042 | { | 1046 | { |
src/lib3270/testprogram.c
@@ -22,7 +22,7 @@ static void * mainloop(void *dunno) | @@ -22,7 +22,7 @@ static void * mainloop(void *dunno) | ||
22 | int main(int numpar, char *param[]) | 22 | int main(int numpar, char *param[]) |
23 | { | 23 | { |
24 | H3270 * h; | 24 | H3270 * h; |
25 | - int rc; | 25 | + int rc = 0; |
26 | // char line[4096]; | 26 | // char line[4096]; |
27 | // pthread_t thread; | 27 | // pthread_t thread; |
28 | 28 | ||
@@ -37,7 +37,10 @@ int main(int numpar, char *param[]) | @@ -37,7 +37,10 @@ int main(int numpar, char *param[]) | ||
37 | // pthread_detach(thread); | 37 | // pthread_detach(thread); |
38 | 38 | ||
39 | // rc = lib3270_connect_host(h, "fandezhi.efglobe.com", "telnet", LIB3270_CONNECT_OPTION_WAIT); | 39 | // rc = lib3270_connect_host(h, "fandezhi.efglobe.com", "telnet", LIB3270_CONNECT_OPTION_WAIT); |
40 | - rc = lib3270_connect_host(h, "127.0.0.1", "9090", LIB3270_CONNECT_OPTION_WAIT); | 40 | +// rc = lib3270_connect_host(h, "127.0.0.1", "9090", LIB3270_CONNECT_OPTION_WAIT); |
41 | + | ||
42 | +// lib3270_set_host_url(h,"tn3270://fandezhi.efglobe.com:9090?lu=default"); | ||
43 | + lib3270_set_host(h,"tn3270://fandezhi.efglobe.com"); | ||
41 | 44 | ||
42 | printf("\nConnect exits with rc=%d\n",rc); | 45 | printf("\nConnect exits with rc=%d\n",rc); |
43 | 46 |
src/lib3270/util.c
@@ -237,6 +237,17 @@ char * lib3270_vsprintf(const char *fmt, va_list args) | @@ -237,6 +237,17 @@ char * lib3270_vsprintf(const char *fmt, va_list args) | ||
237 | #endif /*]*/ | 237 | #endif /*]*/ |
238 | } | 238 | } |
239 | 239 | ||
240 | +LIB3270_EXPORT char * lib3270_strdup_printf(const char *fmt, ...) | ||
241 | +{ | ||
242 | + va_list args; | ||
243 | + char *r; | ||
244 | + | ||
245 | + va_start(args, fmt); | ||
246 | + r = lib3270_vsprintf(fmt, args); | ||
247 | + va_end(args); | ||
248 | + return r; | ||
249 | +} | ||
250 | + | ||
240 | /* | 251 | /* |
241 | * Common helper functions to insert strings, through a template, into a new | 252 | * Common helper functions to insert strings, through a template, into a new |
242 | * buffer. | 253 | * buffer. |
@@ -280,77 +291,6 @@ xs_error(const char *fmt, ...) | @@ -280,77 +291,6 @@ xs_error(const char *fmt, ...) | ||
280 | lib3270_free(r); | 291 | lib3270_free(r); |
281 | } | 292 | } |
282 | 293 | ||
283 | -/* Prettyprinter for strings with unprintable data. */ /* | ||
284 | -void | ||
285 | -fcatv(FILE *f, char *s) | ||
286 | -{ | ||
287 | - char c; | ||
288 | - | ||
289 | - while ((c = *s++)) { | ||
290 | - switch (c) { | ||
291 | - case '\n': | ||
292 | - (void) fprintf(f, "\\n"); | ||
293 | - break; | ||
294 | - case '\t': | ||
295 | - (void) fprintf(f, "\\t"); | ||
296 | - break; | ||
297 | - case '\b': | ||
298 | - (void) fprintf(f, "\\b"); | ||
299 | - break; | ||
300 | - default: | ||
301 | - if ((c & 0x7f) < ' ') | ||
302 | - (void) fprintf(f, "\\%03o", c & 0xff); | ||
303 | - else | ||
304 | - fputc(c, f); | ||
305 | - break; | ||
306 | - } | ||
307 | - } | ||
308 | -} | ||
309 | -*/ | ||
310 | - | ||
311 | -/* String version of fcatv. */ /* | ||
312 | -char * | ||
313 | -scatv(const char *s, char *buf, size_t len) | ||
314 | -{ | ||
315 | - char c; | ||
316 | - char *dst = buf; | ||
317 | - | ||
318 | - while ((c = *s++) && len > 0) { | ||
319 | - char cbuf[5]; | ||
320 | - char *t = cbuf; | ||
321 | - | ||
322 | - // Expand this character. | ||
323 | - switch (c) { | ||
324 | - case '\n': | ||
325 | - (void) strcpy(cbuf, "\\n"); | ||
326 | - break; | ||
327 | - case '\t': | ||
328 | - (void) strcpy(cbuf, "\\t"); | ||
329 | - break; | ||
330 | - case '\b': | ||
331 | - (void) strcpy(cbuf, "\\b"); | ||
332 | - break; | ||
333 | - default: | ||
334 | - if ((c & 0x7f) < ' ') | ||
335 | - (void) sprintf(cbuf, "\\%03o", c & 0xff); | ||
336 | - else { | ||
337 | - cbuf[0] = c; | ||
338 | - cbuf[1] = '\0'; | ||
339 | - } | ||
340 | - break; | ||
341 | - } | ||
342 | - // Copy as much as will fit. | ||
343 | - while ((c = *t++) && len > 0) { | ||
344 | - *dst++ = c; | ||
345 | - len--; | ||
346 | - } | ||
347 | - } | ||
348 | - if (len > 0) | ||
349 | - *dst = '\0'; | ||
350 | - | ||
351 | - return buf; | ||
352 | -} | ||
353 | -*/ | ||
354 | 294 | ||
355 | /* | 295 | /* |
356 | * Definition resource splitter, for resources of the repeating form: | 296 | * Definition resource splitter, for resources of the repeating form: |
src/pw3270/v3270/widget.c
@@ -57,6 +57,15 @@ | @@ -57,6 +57,15 @@ | ||
57 | #define CONTENTS_WIDTH(terminal) (cols * terminal->metrics.width) | 57 | #define CONTENTS_WIDTH(terminal) (cols * terminal->metrics.width) |
58 | #define CONTENTS_HEIGHT(terminal) (((rows+1) * terminal->metrics.spacing)+OIA_TOP_MARGIN+2) | 58 | #define CONTENTS_HEIGHT(terminal) (((rows+1) * terminal->metrics.spacing)+OIA_TOP_MARGIN+2) |
59 | 59 | ||
60 | +/** | ||
61 | + * SECTION: v3270 | ||
62 | + * @title: Virtual 3270 widget | ||
63 | + * @short_description: The virtual 3270 terminal widget. | ||
64 | + * | ||
65 | + * Common functions for interact with the 3270 virtual terminal widget. | ||
66 | + * | ||
67 | + */ | ||
68 | + | ||
60 | /*--[ Widget definition ]----------------------------------------------------------------------------*/ | 69 | /*--[ Widget definition ]----------------------------------------------------------------------------*/ |
61 | 70 | ||
62 | G_DEFINE_TYPE(v3270, v3270, GTK_TYPE_WIDGET); | 71 | G_DEFINE_TYPE(v3270, v3270, GTK_TYPE_WIDGET); |
@@ -721,7 +730,7 @@ static void update_connect(H3270 *session, unsigned char connected) | @@ -721,7 +730,7 @@ static void update_connect(H3270 *session, unsigned char connected) | ||
721 | if(connected) | 730 | if(connected) |
722 | { | 731 | { |
723 | widget->cursor.show |= 2; | 732 | widget->cursor.show |= 2; |
724 | - g_signal_emit(GTK_WIDGET(widget), v3270_widget_signal[SIGNAL_CONNECTED], 0, session->full_current_host); | 733 | + g_signal_emit(GTK_WIDGET(widget), v3270_widget_signal[SIGNAL_CONNECTED], 0, session->host.full); |
725 | } | 734 | } |
726 | else | 735 | else |
727 | { | 736 | { |
@@ -1380,18 +1389,71 @@ H3270 * v3270_get_session(GtkWidget *widget) | @@ -1380,18 +1389,71 @@ H3270 * v3270_get_session(GtkWidget *widget) | ||
1380 | return GTK_V3270(widget)->host; | 1389 | return GTK_V3270(widget)->host; |
1381 | } | 1390 | } |
1382 | 1391 | ||
1383 | -int v3270_connect(GtkWidget *widget, const gchar *host) | 1392 | +int v3270_connect(GtkWidget *widget, const gchar *uri) |
1384 | { | 1393 | { |
1385 | v3270 * terminal; | 1394 | v3270 * terminal; |
1386 | int rc = -1; | 1395 | int rc = -1; |
1387 | 1396 | ||
1388 | - trace("%s widget=%p host=%p",__FUNCTION__,widget,host); | 1397 | + trace("%s widget=%p host=%p",__FUNCTION__,widget,uri); |
1389 | 1398 | ||
1390 | g_return_val_if_fail(GTK_IS_V3270(widget),EINVAL); | 1399 | g_return_val_if_fail(GTK_IS_V3270(widget),EINVAL); |
1391 | 1400 | ||
1392 | terminal = GTK_V3270(widget); | 1401 | terminal = GTK_V3270(widget); |
1393 | 1402 | ||
1394 | - rc = lib3270_connect(terminal->host,host,0); | 1403 | +#ifdef DEBUG |
1404 | + if(uri) | ||
1405 | + { | ||
1406 | + LIB3270_CONNECT_OPTION opt = LIB3270_CONNECT_OPTION_DEFAULTS; | ||
1407 | + gchar * scheme = g_uri_unescape_string(uri,NULL); | ||
1408 | + gchar * hostname = strchr(scheme,':'); | ||
1409 | + gchar * srvc; | ||
1410 | + gchar * query; | ||
1411 | + | ||
1412 | + if(hostname) | ||
1413 | + { | ||
1414 | + *(hostname++) = 0; | ||
1415 | + | ||
1416 | + while(*hostname && !g_ascii_isalnum(*hostname)) | ||
1417 | + hostname++; | ||
1418 | + | ||
1419 | + if(*hostname) | ||
1420 | + { | ||
1421 | + if( ! (g_ascii_strcasecmp(scheme,"l") && g_ascii_strcasecmp(scheme,"ssl")) ) | ||
1422 | + opt |= LIB3270_CONNECT_OPTION_SSL; | ||
1423 | + | ||
1424 | + srvc = strchr(hostname,':'); | ||
1425 | + if(srvc) | ||
1426 | + { | ||
1427 | + *(srvc++) = 0; | ||
1428 | + query = strchr(srvc,'?'); | ||
1429 | + if(query) | ||
1430 | + *(query++) = 0; | ||
1431 | + else | ||
1432 | + query = ""; | ||
1433 | + } | ||
1434 | + else | ||
1435 | + { | ||
1436 | + srvc = "telnet"; | ||
1437 | + } | ||
1438 | + | ||
1439 | + rc = lib3270_connect_host(terminal->host,hostname,srvc,opt); | ||
1440 | + | ||
1441 | + } | ||
1442 | + | ||
1443 | + } | ||
1444 | + | ||
1445 | + | ||
1446 | + g_free(scheme); | ||
1447 | + | ||
1448 | + } | ||
1449 | + else | ||
1450 | + { | ||
1451 | + rc = lib3270_connect(terminal->host,uri,0); | ||
1452 | + } | ||
1453 | + | ||
1454 | +#else | ||
1455 | + rc = lib3270_connect(terminal->host,uri,0); | ||
1456 | +#endif // DEBUG | ||
1395 | 1457 | ||
1396 | trace("%s exits with rc=%d (%s)",__FUNCTION__,rc,strerror(rc)); | 1458 | trace("%s exits with rc=%d (%s)",__FUNCTION__,rc,strerror(rc)); |
1397 | 1459 | ||
@@ -1476,11 +1538,23 @@ gboolean v3270_get_toggle(GtkWidget *widget, LIB3270_TOGGLE ix) | @@ -1476,11 +1538,23 @@ gboolean v3270_get_toggle(GtkWidget *widget, LIB3270_TOGGLE ix) | ||
1476 | return FALSE; | 1538 | return FALSE; |
1477 | } | 1539 | } |
1478 | 1540 | ||
1479 | -void v3270_set_host(GtkWidget *widget, const gchar *uri) | 1541 | +/** |
1542 | + * v3270_set_host: | ||
1543 | + * | ||
1544 | + * @widget: V3270 widget. | ||
1545 | + * @uri: a valid tn3270 URL. | ||
1546 | + * | ||
1547 | + * Set the default URL for the tn3270e host. | ||
1548 | + * | ||
1549 | + * Returns: The lib3270 processed string as an internal constant. | ||
1550 | + * | ||
1551 | + * Since: 5.0 | ||
1552 | + **/ | ||
1553 | +const gchar * v3270_set_host(GtkWidget *widget, const gchar *uri) | ||
1480 | { | 1554 | { |
1481 | g_return_if_fail(GTK_IS_V3270(widget)); | 1555 | g_return_if_fail(GTK_IS_V3270(widget)); |
1482 | g_return_if_fail(uri != NULL); | 1556 | g_return_if_fail(uri != NULL); |
1483 | - lib3270_set_host(GTK_V3270(widget)->host,uri); | 1557 | + return lib3270_set_host(GTK_V3270(widget)->host,uri); |
1484 | } | 1558 | } |
1485 | 1559 | ||
1486 | const gchar * v3270_get_host(GtkWidget *widget) | 1560 | const gchar * v3270_get_host(GtkWidget *widget) |
src/pw3270/window.c
@@ -233,10 +233,10 @@ | @@ -233,10 +233,10 @@ | ||
233 | v3270_connect(GTK_PW3270(widget)->terminal,uri); | 233 | v3270_connect(GTK_PW3270(widget)->terminal,uri); |
234 | } | 234 | } |
235 | 235 | ||
236 | - void pw3270_set_host(GtkWidget *widget, const gchar *uri) | 236 | + const gchar * pw3270_set_host(GtkWidget *widget, const gchar *uri) |
237 | { | 237 | { |
238 | g_return_if_fail(GTK_IS_PW3270(widget)); | 238 | g_return_if_fail(GTK_IS_PW3270(widget)); |
239 | - v3270_set_host(GTK_PW3270(widget)->terminal,uri); | 239 | + return v3270_set_host(GTK_PW3270(widget)->terminal,uri); |
240 | } | 240 | } |
241 | 241 | ||
242 | const gchar * pw3270_get_host(GtkWidget *widget) | 242 | const gchar * pw3270_get_host(GtkWidget *widget) |