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) |