Commit c9297c1affada8902df7b76329ebc9dc93d0591d
Committed by
GitHub
Exists in
master
and in
3 other branches
Merge pull request #8 from PerryWerneck/develop
Updating to latest develop code.
Showing
23 changed files
with
733 additions
and
266 deletions
Show diff stats
| ... | ... | @@ -0,0 +1,18 @@ |
| 1 | +# Set to true to add reviewers to pull requests | |
| 2 | +addReviewers: true | |
| 3 | + | |
| 4 | +# Set to true to add assignees to pull requests | |
| 5 | +addAssignees: true | |
| 6 | + | |
| 7 | +# A list of reviewers to be added to pull requests (GitHub user name) | |
| 8 | +reviewers: | |
| 9 | + | |
| 10 | +# A list of keywords to be skipped the process that add reviewers if pull requests include it | |
| 11 | +skipKeywords: | |
| 12 | + - wip | |
| 13 | + - work in progress | |
| 14 | + | |
| 15 | +# A number of reviewers added to the pull request | |
| 16 | +# Set 0 to add all the reviewers (default: 0) | |
| 17 | +numberOfReviewers: 0 | |
| 18 | + | ... | ... |
README.md
| ... | ... | @@ -19,7 +19,9 @@ Building for Linux |
| 19 | 19 | |
| 20 | 20 | 1. Get lib3270 sources from git |
| 21 | 21 | |
| 22 | - * git clone http://softwarepublico.gov.br/gitlab/pw3270/lib3270.git ./lib3270 | |
| 22 | + ```shell | |
| 23 | + git clone http://softwarepublico.gov.br/gitlab/pw3270/lib3270.git ./lib3270 | |
| 24 | + ``` | |
| 23 | 25 | |
| 24 | 26 | 2. Install the required libraries |
| 25 | 27 | |
| ... | ... | @@ -39,9 +41,11 @@ Building for Linux |
| 39 | 41 | |
| 40 | 42 | 3. Configure and build |
| 41 | 43 | |
| 42 | - * ./autogen.sh | |
| 43 | - * make clean | |
| 44 | - * make Debug | |
| 44 | + ```shell | |
| 45 | + ./autogen.sh | |
| 46 | + make clean | |
| 47 | + make all | |
| 48 | + ``` | |
| 45 | 49 | |
| 46 | 50 | |
| 47 | 51 | Cross-compiling for Windows |
| ... | ... | @@ -52,29 +56,37 @@ Cross-compiling on SuSE Linux (Native or WSL) |
| 52 | 56 | |
| 53 | 57 | 1. First add the MinGW Repositories for your SuSE version from: |
| 54 | 58 | |
| 55 | - * 32 bits: https://build.opensuse.org/project/show/windows:mingw:win32 | |
| 56 | - * 64 bits: https://build.opensuse.org/project/show/windows:mingw:win64 | |
| 59 | + ```shell | |
| 60 | + sudo zypper ar obs://windows:mingw:win32 mingw32 | |
| 61 | + sudo zypper ar obs://windows:mingw:win64 mingw64 | |
| 62 | + sudo zypper ref | |
| 63 | + ``` | |
| 57 | 64 | |
| 58 | 65 | 2. Get lib3270 sources from git |
| 59 | 66 | |
| 60 | - * git clone https://github.com/PerryWerneck/lib3270.git ./lib3270 | |
| 67 | + ```shell | |
| 68 | + git clone https://github.com/PerryWerneck/lib3270.git ./lib3270 | |
| 69 | + ``` | |
| 61 | 70 | |
| 62 | 71 | 3. Install cross compilers |
| 63 | 72 | |
| 64 | - * ./lib3270/win/install-cross.sh --32 (for 32 bits) | |
| 65 | - * ./lib3270/win/install-cross.sh --64 (for 64 bits) | |
| 66 | - * ./lib3270/win/install-cross.sh --all (for 32 and 64 bits) | |
| 73 | + ```shell | |
| 74 | + ./lib3270/win/install-cross.sh --all (for 32 and 64 bits) | |
| 75 | + ``` | |
| 67 | 76 | |
| 68 | 77 | 3. Configure build |
| 69 | 78 | |
| 70 | - * ./lib3270/win/win-configure.sh --32 (for 32 bits) | |
| 71 | - * ./lib3270/win/win-configure.sh --64 (for 64 bits) | |
| 79 | + ```shell | |
| 80 | + ./lib3270/win/win-configure.sh --64 (for 64 bits) | |
| 81 | + ``` | |
| 72 | 82 | |
| 73 | 83 | 4. Build |
| 74 | 84 | |
| 75 | - * cd lib3270 | |
| 76 | - * make clean | |
| 77 | - * make all | |
| 85 | + ```shell | |
| 86 | + cd lib3270 | |
| 87 | + make clean | |
| 88 | + make all | |
| 89 | + ``` | |
| 78 | 90 | |
| 79 | 91 | Compiling for Windows (With MSYS2) |
| 80 | 92 | ---------------------------------- |
| ... | ... | @@ -87,20 +99,62 @@ Compiling for Windows (With MSYS2) |
| 87 | 99 | |
| 88 | 100 | 2. Install devel packages |
| 89 | 101 | |
| 90 | - * pacman -S --needed mingw-w64-x86_64-gcc automake autoconf make git openssl pkg-config | |
| 102 | + ```shell | |
| 103 | + pacman -S --needed mingw-w64-x86_64-gcc automake autoconf make git openssl pkg-config | |
| 104 | + ``` | |
| 91 | 105 | |
| 92 | 106 | 3. Get lib3270 sources from git using the mingw shell |
| 93 | 107 | |
| 94 | - * git clone https://github.com/PerryWerneck/lib3270.git ./lib3270 | |
| 108 | + ```shell | |
| 109 | + git clone https://github.com/PerryWerneck/lib3270.git ./lib3270 | |
| 110 | + ``` | |
| 95 | 111 | |
| 96 | 112 | 4. Build library using the mingw shell |
| 97 | 113 | |
| 98 | - * cd lib3270 | |
| 99 | - * ./autogen.sh | |
| 100 | - * make all | |
| 114 | + ```shell | |
| 115 | + cd lib3270 | |
| 116 | + ./autogen.sh | |
| 117 | + make all | |
| 118 | + ``` | |
| 101 | 119 | |
| 102 | 120 | 5. Install |
| 103 | 121 | |
| 104 | - * make install | |
| 122 | + ```shell | |
| 123 | + make install | |
| 124 | + ``` | |
| 105 | 125 | |
| 106 | 126 | |
| 127 | +Building for macOS (using homebrew) | |
| 128 | +=================================== | |
| 129 | + | |
| 130 | +1. Install [homebrew](https://brew.sh/) | |
| 131 | + | |
| 132 | +2. Install dependencies | |
| 133 | + | |
| 134 | + ```shell | |
| 135 | + $ brew install automake binutils coreutils curl gettext libtool openldap openssl pkgconfig | |
| 136 | + ``` | |
| 137 | + | |
| 138 | +3. Use [open-keg](https://gist.github.com/andrebreves/5f36e78575e20162ed0a62bd27c4bcea) to make keg-only dependencies available during build process | |
| 139 | + | |
| 140 | + ```shell | |
| 141 | + $ open-keg curl openldap openssl | |
| 142 | + ``` | |
| 143 | + | |
| 144 | +4. Configure, build and install (inside the [open-keg](https://gist.github.com/andrebreves/5f36e78575e20162ed0a62bd27c4bcea) shell opened above) | |
| 145 | + | |
| 146 | + ```shell | |
| 147 | + $ ./autogen.sh --prefix="$(brew --cellar)/lib3270/5.3" | |
| 148 | + $ make all && make install | |
| 149 | + $ brew link lib3270 | |
| 150 | + ``` | |
| 151 | + | |
| 152 | +Uninstalling | |
| 153 | +------------ | |
| 154 | + | |
| 155 | +1. To uninstall | |
| 156 | + | |
| 157 | + ```shell | |
| 158 | + $ brew unlink lib3270 | |
| 159 | + $ rm -fr "$(brew --cellar)/lib3270" | |
| 160 | + ``` | ... | ... |
configure.ac
| ... | ... | @@ -187,9 +187,9 @@ app_rls_minor=$(echo $app_cv_release.0.0 | cut -d. -f2) |
| 187 | 187 | |
| 188 | 188 | AC_DEFINE_UNQUOTED(PACKAGE_MAJOR_RELEASE, $app_rls_major) |
| 189 | 189 | AC_DEFINE_UNQUOTED(PACKAGE_MINOR_RELEASE, $app_rls_minor) |
| 190 | -AC_DEFINE_UNQUOTED(PACKAGE_RELEASE, `date +%y%j`) | |
| 190 | +AC_DEFINE_UNQUOTED(PACKAGE_RELEASE, "$app_cv_release") | |
| 191 | 191 | |
| 192 | -AC_SUBST(PACKAGE_RELEASE,$app_cv_release) | |
| 192 | +AC_SUBST(PACKAGE_RELEASE,"$app_cv_release") | |
| 193 | 193 | AC_SUBST(PACKAGE_MAJOR_RELEASE,$app_rls_major) |
| 194 | 194 | AC_SUBST(PACKAGE_MINOR_RELEASE,$app_rls_minor) |
| 195 | 195 | |
| ... | ... | @@ -201,12 +201,12 @@ rpq_revision=`$date +"%Y%m%d"` |
| 201 | 201 | sccs_date=`$date +%Y/%m/%d` |
| 202 | 202 | sccs_user=$USER |
| 203 | 203 | |
| 204 | -AC_SUBST(RPQ_BUILD_DATE,$rpq_build_date) | |
| 205 | -AC_SUBST(RPQ_TIMESTAMP,$rpq_timestamp) | |
| 206 | -AC_SUBST(RPQ_REVISION,$rpq_revision) | |
| 204 | +AC_DEFINE_UNQUOTED(RPQ_BUILD_DATE,"$rpq_build_date") | |
| 205 | +AC_DEFINE_UNQUOTED(RPQ_TIMESTAMP_VALUE,"$rpq_timestamp") | |
| 206 | +AC_DEFINE_UNQUOTED(RPQ_REVISION,"$rpq_revision") | |
| 207 | 207 | |
| 208 | -AC_SUBST(SCCS_USER,$USER) | |
| 209 | -AC_SUBST(SCCS_DATE,$sccs_date) | |
| 208 | +AC_DEFINE_UNQUOTED(SCCS_USER,"$USER") | |
| 209 | +AC_DEFINE_UNQUOTED(SCCS_DATE,"$sccs_date") | |
| 210 | 210 | |
| 211 | 211 | dnl --------------------------------------------------------------------------- |
| 212 | 212 | dnl Check for libintl |
| ... | ... | @@ -665,8 +665,6 @@ AC_SUBST(INSTALL_PACKAGES) |
| 665 | 665 | AC_CONFIG_FILES(Makefile) |
| 666 | 666 | AC_CONFIG_FILES(locale/Makefile) |
| 667 | 667 | |
| 668 | -AC_CONFIG_FILES(src/core/version.c) | |
| 669 | - | |
| 670 | 668 | AC_CONFIG_FILES(sdk/lib3270.pc) |
| 671 | 669 | AC_CONFIG_FILES(sdk/lib3270-static.pc) |
| 672 | 670 | ... | ... |
locale/pt_BR.po
| ... | ... | @@ -5,8 +5,8 @@ msgid "" |
| 5 | 5 | msgstr "" |
| 6 | 6 | "Project-Id-Version: pw3270 5.0\n" |
| 7 | 7 | "Report-Msgid-Bugs-To: \n" |
| 8 | -"POT-Creation-Date: 2020-04-04 01:39-0300\n" | |
| 9 | -"PO-Revision-Date: 2020-02-11 09:49-0300\n" | |
| 8 | +"POT-Creation-Date: 2020-05-08 00:49-0300\n" | |
| 9 | +"PO-Revision-Date: 2020-05-08 00:52-0300\n" | |
| 10 | 10 | "Last-Translator: Perry Werneck <perry.werneck@gmail.com>\n" |
| 11 | 11 | "Language-Team: Português <>\n" |
| 12 | 12 | "Language: pt_BR\n" |
| ... | ... | @@ -16,7 +16,8 @@ msgstr "" |
| 16 | 16 | "X-Poedit-Language: Portuguese\n" |
| 17 | 17 | "X-Poedit-Country: BRAZIL\n" |
| 18 | 18 | "X-Poedit-SourceCharset: utf-8\n" |
| 19 | -"Plural-Forms: nplurals=2; plural=(n > 1);\n" | |
| 19 | +"Plural-Forms: nplurals=4; plural= (n==1) ? 0 : (n==2) ? 1 : (n != 8 && n != " | |
| 20 | +"11) ? 2 : 3;\n" | |
| 20 | 21 | "X-Generator: Gtranslator 2.91.7\n" |
| 21 | 22 | |
| 22 | 23 | #: src/core/ctlr.c:187 |
| ... | ... | @@ -79,7 +80,7 @@ msgstr "Erro 3270" |
| 79 | 80 | msgid "3270 Warning" |
| 80 | 81 | msgstr "Alerta 3270" |
| 81 | 82 | |
| 82 | -#: src/core/actions/table.c:512 | |
| 83 | +#: src/core/actions/table.c:678 | |
| 83 | 84 | msgid "3270-style backspace" |
| 84 | 85 | msgstr "Backspace no estilo 3270" |
| 85 | 86 | |
| ... | ... | @@ -91,7 +92,7 @@ msgstr "" |
| 91 | 92 | "A CA certificate is invalid. Either it is not a CA or its extensions are not " |
| 92 | 93 | "consistent with the supplied purpose." |
| 93 | 94 | |
| 94 | -#: src/core/actions/table.c:526 | |
| 95 | +#: src/core/actions/table.c:692 | |
| 95 | 96 | msgid "ATTN key, per RFC 2355. Sends IP, regardless" |
| 96 | 97 | msgstr "Tecla ATTN, pela RFC 2355" |
| 97 | 98 | |
| ... | ... | @@ -136,7 +137,7 @@ msgstr "" |
| 136 | 137 | msgid "An invalid SEND or RECEIVE parameter was sent to the host." |
| 137 | 138 | msgstr "Um parametro de ENVIO/RECEBIMENTO inválido foi enviado para o host." |
| 138 | 139 | |
| 139 | -#: src/core/actions/table.c:525 | |
| 140 | +#: src/core/actions/table.c:691 | |
| 140 | 141 | msgid "Attn" |
| 141 | 142 | msgstr "Attn" |
| 142 | 143 | |
| ... | ... | @@ -178,11 +179,11 @@ msgstr "Reconecta automaticamente caso o servidor desconecte" |
| 178 | 179 | msgid "Awaiting chance to send an abort" |
| 179 | 180 | msgstr "Aguardando para enviar pedido de cancelamento" |
| 180 | 181 | |
| 181 | -#: src/core/actions/table.c:511 | |
| 182 | +#: src/core/actions/table.c:677 | |
| 182 | 183 | msgid "Back space" |
| 183 | 184 | msgstr "Back space" |
| 184 | 185 | |
| 185 | -#: src/core/actions/table.c:338 | |
| 186 | +#: src/core/actions/table.c:504 | |
| 186 | 187 | msgid "Backspaces the cursor until it hits the front of a word" |
| 187 | 188 | msgstr "Volta o cursor até que atinga o início de uma palavra" |
| 188 | 189 | |
| ... | ... | @@ -202,7 +203,7 @@ msgstr "Cursor piscante" |
| 202 | 203 | msgid "Bold" |
| 203 | 204 | msgstr "Negrito" |
| 204 | 205 | |
| 205 | -#: src/core/actions/table.c:539 | |
| 206 | +#: src/core/actions/table.c:705 | |
| 206 | 207 | msgid "Break" |
| 207 | 208 | msgstr "Break" |
| 208 | 209 | |
| ... | ... | @@ -258,7 +259,6 @@ msgid "Can't decode certificate revocation list" |
| 258 | 259 | msgstr "Não foi possível decodificar a lista de certificados revogados" |
| 259 | 260 | |
| 260 | 261 | #: src/ssl/linux/url.c:99 |
| 261 | -#, fuzzy | |
| 262 | 262 | msgid "Can't decode certificate revocation list got from LDAP server" |
| 263 | 263 | msgstr "" |
| 264 | 264 | "Não foi possível decodificar a lista de certificados revogados obtida na " |
| ... | ... | @@ -316,7 +316,7 @@ msgstr "Não foi possível setar o socket para o modo não blocante." |
| 316 | 316 | msgid "Can't start file transfer." |
| 317 | 317 | msgstr "Não foi possível iniciar transferência de arquivo." |
| 318 | 318 | |
| 319 | -#: src/ssl/negotiate.c:286 src/ssl/crl.c:165 | |
| 319 | +#: src/ssl/negotiate.c:298 src/ssl/crl.c:165 | |
| 320 | 320 | msgid "Can't verify." |
| 321 | 321 | msgstr "Não foi possível verificar" |
| 322 | 322 | |
| ... | ... | @@ -338,7 +338,7 @@ msgstr "" |
| 338 | 338 | msgid "Cant initialize the SSL context." |
| 339 | 339 | msgstr "Erro ao inicializar contexto de segurança" |
| 340 | 340 | |
| 341 | -#: src/ssl/negotiate.c:159 | |
| 341 | +#: src/ssl/negotiate.c:171 | |
| 342 | 342 | msgid "" |
| 343 | 343 | "Cant set the file descriptor for the input/output facility for the TLS/SSL " |
| 344 | 344 | "(encrypted) side of ssl." |
| ... | ... | @@ -374,15 +374,15 @@ msgstr "Falha na assinatura do certificado" |
| 374 | 374 | msgid "Change screen size on alternative screen" |
| 375 | 375 | msgstr "Mudar tamanho do terminal em tela alternativa" |
| 376 | 376 | |
| 377 | -#: src/core/actions/table.c:599 | |
| 377 | +#: src/core/actions/table.c:765 | |
| 378 | 378 | msgid "Charset table" |
| 379 | 379 | msgstr "Tabela de caracteres" |
| 380 | 380 | |
| 381 | -#: src/core/actions/table.c:422 | |
| 381 | +#: src/core/actions/table.c:588 | |
| 382 | 382 | msgid "Clear" |
| 383 | 383 | msgstr "Limpar" |
| 384 | 384 | |
| 385 | -#: src/core/actions/table.c:423 | |
| 385 | +#: src/core/actions/table.c:589 | |
| 386 | 386 | msgid "Clear AID key" |
| 387 | 387 | msgstr "Clear AID" |
| 388 | 388 | |
| ... | ... | @@ -407,7 +407,7 @@ msgstr "Conexão falhou" |
| 407 | 407 | msgid "Connection reset by peer" |
| 408 | 408 | msgstr "Conexão foi cancelada pelo servidor" |
| 409 | 409 | |
| 410 | -#: src/core/properties/signed.c:59 | |
| 410 | +#: src/core/properties/signed.c:101 | |
| 411 | 411 | msgid "Connection state" |
| 412 | 412 | msgstr "Estado da conexão" |
| 413 | 413 | |
| ... | ... | @@ -427,37 +427,37 @@ msgstr "Largura atua da tela em colunas" |
| 427 | 427 | msgid "Cursor address" |
| 428 | 428 | msgstr "Endereço do cursor" |
| 429 | 429 | |
| 430 | -#: src/core/actions/table.c:117 | |
| 430 | +#: src/core/actions/table.c:158 | |
| 431 | 431 | msgid "Cursor down 1 position" |
| 432 | 432 | msgstr "Move cursor uma posição para baixo" |
| 433 | 433 | |
| 434 | -#: src/core/actions/table.c:131 | |
| 434 | +#: src/core/actions/table.c:172 | |
| 435 | 435 | msgid "Cursor left 1 position" |
| 436 | 436 | msgstr "Move o cursor 1 posição para a esquerda" |
| 437 | 437 | |
| 438 | -#: src/core/actions/table.c:145 | |
| 438 | +#: src/core/actions/table.c:186 | |
| 439 | 439 | msgid "Cursor right 1 position" |
| 440 | 440 | msgstr "Move o cursor uma posição para a direita" |
| 441 | 441 | |
| 442 | -#: src/core/actions/table.c:159 | |
| 442 | +#: src/core/actions/table.c:200 | |
| 443 | 443 | msgid "Cursor to first field on next line or any lines after that" |
| 444 | 444 | msgstr "" |
| 445 | 445 | "Move o cursor para o primeiro campo da próxima linha ou qualquer linhas " |
| 446 | 446 | "depois dela" |
| 447 | 447 | |
| 448 | -#: src/core/actions/table.c:187 | |
| 448 | +#: src/core/actions/table.c:228 | |
| 449 | 449 | msgid "Cursor to next unprotected word" |
| 450 | 450 | msgstr "Move o cursor para a próxima palavra desprotegida" |
| 451 | 451 | |
| 452 | -#: src/core/actions/table.c:173 | |
| 452 | +#: src/core/actions/table.c:214 | |
| 453 | 453 | msgid "Cursor to previous word" |
| 454 | 454 | msgstr "Move o cursor para a palavra anterior" |
| 455 | 455 | |
| 456 | -#: src/core/actions/table.c:103 | |
| 456 | +#: src/core/actions/table.c:144 | |
| 457 | 457 | msgid "Cursor up 1 position" |
| 458 | 458 | msgstr "Cursor para cima 1 posição" |
| 459 | 459 | |
| 460 | -#: src/core/actions/table.c:484 | |
| 460 | +#: src/core/actions/table.c:650 | |
| 461 | 461 | msgid "DUP key" |
| 462 | 462 | msgstr "Tecla \"DUP\"" |
| 463 | 463 | |
| ... | ... | @@ -469,15 +469,15 @@ msgstr "Erro na conversão de dados" |
| 469 | 469 | msgid "Default host URL" |
| 470 | 470 | msgstr "URL parão para acesso ao host" |
| 471 | 471 | |
| 472 | -#: src/core/actions/table.c:469 | |
| 472 | +#: src/core/actions/table.c:635 | |
| 473 | 473 | msgid "Delete" |
| 474 | 474 | msgstr "Apagar" |
| 475 | 475 | |
| 476 | -#: src/core/actions/table.c:351 src/core/actions/table.c:352 | |
| 476 | +#: src/core/actions/table.c:517 src/core/actions/table.c:518 | |
| 477 | 477 | msgid "Delete field" |
| 478 | 478 | msgstr "Apagar campo" |
| 479 | 479 | |
| 480 | -#: src/core/actions/table.c:337 | |
| 480 | +#: src/core/actions/table.c:503 | |
| 481 | 481 | msgid "Delete word" |
| 482 | 482 | msgstr "Apaga palavra" |
| 483 | 483 | |
| ... | ... | @@ -489,7 +489,7 @@ msgstr "Descrição do estado de segurança atual" |
| 489 | 489 | msgid "Device type rejected" |
| 490 | 490 | msgstr "Tipo de dispositivo rejeitado" |
| 491 | 491 | |
| 492 | -#: src/core/actions/table.c:86 | |
| 492 | +#: src/core/actions/table.c:127 | |
| 493 | 493 | msgid "Disconnect from host" |
| 494 | 494 | msgstr "Desconecta do servidor" |
| 495 | 495 | |
| ... | ... | @@ -505,11 +505,11 @@ msgstr "Tabela de caracteres para a tela" |
| 505 | 505 | msgid "Display the cursor location in the OIA (the status line)" |
| 506 | 506 | msgstr "Mostra posição do cursor na lista de informações ao operador" |
| 507 | 507 | |
| 508 | -#: src/core/actions/table.c:116 | |
| 508 | +#: src/core/actions/table.c:157 | |
| 509 | 509 | msgid "Down" |
| 510 | 510 | msgstr "Descer" |
| 511 | 511 | |
| 512 | -#: src/core/actions/table.c:483 | |
| 512 | +#: src/core/actions/table.c:649 | |
| 513 | 513 | msgid "Dup" |
| 514 | 514 | msgstr "Dup" |
| 515 | 515 | |
| ... | ... | @@ -533,31 +533,31 @@ msgstr "Habilita trace da negociação de segurança" |
| 533 | 533 | msgid "Enable use of network keep alive" |
| 534 | 534 | msgstr "Habilita opção \"keep-alive\"" |
| 535 | 535 | |
| 536 | -#: src/core/actions/table.c:439 | |
| 536 | +#: src/core/actions/table.c:605 | |
| 537 | 537 | msgid "Enter" |
| 538 | 538 | msgstr "Enter" |
| 539 | 539 | |
| 540 | -#: src/core/actions/table.c:408 | |
| 540 | +#: src/core/actions/table.c:574 | |
| 541 | 541 | msgid "Erase" |
| 542 | 542 | msgstr "Apagar" |
| 543 | 543 | |
| 544 | -#: src/core/actions/table.c:380 | |
| 544 | +#: src/core/actions/table.c:546 | |
| 545 | 545 | msgid "Erase EOF" |
| 546 | 546 | msgstr "Erase EOF" |
| 547 | 547 | |
| 548 | -#: src/core/actions/table.c:394 | |
| 548 | +#: src/core/actions/table.c:560 | |
| 549 | 549 | msgid "Erase EOL" |
| 550 | 550 | msgstr "Erase EOL" |
| 551 | 551 | |
| 552 | -#: src/core/actions/table.c:381 | |
| 552 | +#: src/core/actions/table.c:547 | |
| 553 | 553 | msgid "Erase End Of Field" |
| 554 | 554 | msgstr "Apaga até o final do campo" |
| 555 | 555 | |
| 556 | -#: src/core/actions/table.c:395 | |
| 556 | +#: src/core/actions/table.c:561 | |
| 557 | 557 | msgid "Erase End Of Line" |
| 558 | 558 | msgstr "Apaga até o final da linha" |
| 559 | 559 | |
| 560 | -#: src/core/actions/table.c:366 | |
| 560 | +#: src/core/actions/table.c:532 | |
| 561 | 561 | msgid "Erase input" |
| 562 | 562 | msgstr "Apagar campos" |
| 563 | 563 | |
| ... | ... | @@ -576,7 +576,6 @@ msgid "Error \"%s\" writing to local file (rc=%d)" |
| 576 | 576 | msgstr "Erro \"%s\" gravando arquivo local (rc=%d)" |
| 577 | 577 | |
| 578 | 578 | #: src/ssl/linux/url.c:66 |
| 579 | -#, fuzzy | |
| 580 | 579 | msgid "Error getting certificate revocation list" |
| 581 | 580 | msgstr "Erro ao obter a lista de certificados revogados" |
| 582 | 581 | |
| ... | ... | @@ -596,11 +595,11 @@ msgstr "Erro ao ler ou gravar no host: Transferência cancelada" |
| 596 | 595 | msgid "Error writing file to host: file transfer canceled" |
| 597 | 596 | msgstr "Erro ao gravar arquivo no host, transferência cancelada" |
| 598 | 597 | |
| 599 | -#: src/core/actions/table.c:497 src/core/actions/table.c:498 | |
| 598 | +#: src/core/actions/table.c:663 src/core/actions/table.c:664 | |
| 600 | 599 | msgid "FM key" |
| 601 | 600 | msgstr "Tecla \"FM\"" |
| 602 | 601 | |
| 603 | -#: src/core/actions/table.c:277 | |
| 602 | +#: src/core/actions/table.c:443 | |
| 604 | 603 | msgid "Field end" |
| 605 | 604 | msgstr "Final do campo" |
| 606 | 605 | |
| ... | ... | @@ -616,7 +615,7 @@ msgstr "Transferência completa com registros segmentados" |
| 616 | 615 | msgid "File transfer is already active in this session." |
| 617 | 616 | msgstr "Transferência de arquivos já está ativa nesta sessão." |
| 618 | 617 | |
| 619 | -#: src/core/actions/table.c:291 | |
| 618 | +#: src/core/actions/table.c:457 | |
| 620 | 619 | msgid "First field" |
| 621 | 620 | msgstr "Primeiro campo" |
| 622 | 621 | |
| ... | ... | @@ -636,7 +635,7 @@ msgstr "Erro de formato no campo \"notAfter\" do certificado" |
| 636 | 635 | msgid "Format error in certificate's notBefore field" |
| 637 | 636 | msgstr "Erro de formato no campo \"notBefore\" do certificado" |
| 638 | 637 | |
| 639 | -#: src/core/properties/boolean.c:168 | |
| 638 | +#: src/core/properties/boolean.c:175 | |
| 640 | 639 | msgid "Formatted screen" |
| 641 | 640 | msgstr "Tela formatada" |
| 642 | 641 | |
| ... | ... | @@ -649,7 +648,7 @@ msgid "Got a bad formatted certificate revocation list from LDAP server" |
| 649 | 648 | msgstr "" |
| 650 | 649 | "Obtive lista de certificados revogados com formato inválido do servidor LDAP" |
| 651 | 650 | |
| 652 | -#: src/core/properties/boolean.c:147 | |
| 651 | +#: src/core/properties/boolean.c:154 | |
| 653 | 652 | msgid "Has selected area" |
| 654 | 653 | msgstr "Tem área selecionada" |
| 655 | 654 | |
| ... | ... | @@ -693,7 +692,15 @@ msgstr "IBM AS/400" |
| 693 | 692 | msgid "IBM S/390" |
| 694 | 693 | msgstr "IBM S/390" |
| 695 | 694 | |
| 696 | -#: src/core/properties/signed.c:73 | |
| 695 | +#: src/core/properties/signed.c:130 | |
| 696 | +msgid "ID of the maximum supported SSL protocol version" | |
| 697 | +msgstr "Identificador da maior versão de protocolo SSL suportada" | |
| 698 | + | |
| 699 | +#: src/core/properties/signed.c:122 | |
| 700 | +msgid "ID of the minimum supported SSL protocol version" | |
| 701 | +msgstr "Identificador da menor versão de protocolo SSL suportada" | |
| 702 | + | |
| 703 | +#: src/core/properties/signed.c:115 | |
| 697 | 704 | msgid "ID of the session security state" |
| 698 | 705 | msgstr "Identificação do estado de segurança da sessão" |
| 699 | 706 | |
| ... | ... | @@ -814,23 +821,23 @@ msgstr "Opção xxxxxxxx inválida: Transferência cancelada" |
| 814 | 821 | msgid "Invalid oversize" |
| 815 | 822 | msgstr "Valor inválido para 'oversize'" |
| 816 | 823 | |
| 817 | -#: src/core/properties/boolean.c:68 | |
| 824 | +#: src/core/properties/boolean.c:75 | |
| 818 | 825 | msgid "Is connection secure" |
| 819 | 826 | msgstr "A conexão é segura ?" |
| 820 | 827 | |
| 821 | -#: src/core/properties/boolean.c:161 | |
| 828 | +#: src/core/properties/boolean.c:168 | |
| 822 | 829 | msgid "Is starting (no first screen)?" |
| 823 | 830 | msgstr "Está iniciando (não recebeu a primeira tela)?" |
| 824 | 831 | |
| 825 | -#: src/core/properties/boolean.c:61 | |
| 832 | +#: src/core/properties/boolean.c:68 | |
| 826 | 833 | msgid "Is terminal connected" |
| 827 | 834 | msgstr "O terminal está conectado" |
| 828 | 835 | |
| 829 | -#: src/core/properties/boolean.c:140 | |
| 836 | +#: src/core/properties/boolean.c:147 | |
| 830 | 837 | msgid "Is terminal in the INITIAL_E state?" |
| 831 | 838 | msgstr "O terminal está no estad INITIAL_E?" |
| 832 | 839 | |
| 833 | -#: src/core/properties/boolean.c:54 | |
| 840 | +#: src/core/properties/boolean.c:61 | |
| 834 | 841 | msgid "Is terminal ready" |
| 835 | 842 | msgstr "O terminal está pronto" |
| 836 | 843 | |
| ... | ... | @@ -850,15 +857,15 @@ msgstr "Teclado está bloqueado" |
| 850 | 857 | msgid "Keyboard lock status" |
| 851 | 858 | msgstr "Estado de bloqueio do teclado" |
| 852 | 859 | |
| 853 | -#: src/core/properties/signed.c:66 | |
| 860 | +#: src/core/properties/signed.c:108 | |
| 854 | 861 | msgid "Latest program message" |
| 855 | 862 | msgstr "Última mensagem de programa" |
| 856 | 863 | |
| 857 | -#: src/core/actions/table.c:130 | |
| 864 | +#: src/core/actions/table.c:171 | |
| 858 | 865 | msgid "Left" |
| 859 | 866 | msgstr "Esquerda" |
| 860 | 867 | |
| 861 | -#: src/core/properties/boolean.c:175 | |
| 868 | +#: src/core/properties/boolean.c:182 | |
| 862 | 869 | msgid "Lock keyboard on operator error" |
| 863 | 870 | msgstr "Bloqueia teclado em caso de erro do operador" |
| 864 | 871 | |
| ... | ... | @@ -882,11 +889,43 @@ msgstr "Nome do modelo" |
| 882 | 889 | msgid "Monocase" |
| 883 | 890 | msgstr "Só Maiúsculas" |
| 884 | 891 | |
| 885 | -#: src/core/actions/table.c:278 | |
| 892 | +#: src/core/actions/table.c:328 | |
| 893 | +msgid "Move cursor down and select" | |
| 894 | +msgstr "Move cursor para baixo selecionando" | |
| 895 | + | |
| 896 | +#: src/core/actions/table.c:342 | |
| 897 | +msgid "Move cursor left and select" | |
| 898 | +msgstr "Move cursor para a esquerda selecionando" | |
| 899 | + | |
| 900 | +#: src/core/actions/table.c:356 | |
| 901 | +msgid "Move cursor rigth and select" | |
| 902 | +msgstr "Move cursor para a direita selecionando" | |
| 903 | + | |
| 904 | +#: src/core/actions/table.c:314 | |
| 905 | +msgid "Move cursor up and select" | |
| 906 | +msgstr "Move cursor para cima selecionando" | |
| 907 | + | |
| 908 | +#: src/core/actions/table.c:384 | |
| 909 | +msgid "Move selection down" | |
| 910 | +msgstr "Move seleção para baixo" | |
| 911 | + | |
| 912 | +#: src/core/actions/table.c:398 | |
| 913 | +msgid "Move selection left" | |
| 914 | +msgstr "Move seleção para a esquerda" | |
| 915 | + | |
| 916 | +#: src/core/actions/table.c:412 | |
| 917 | +msgid "Move selection right" | |
| 918 | +msgstr "Move seleção para a direita" | |
| 919 | + | |
| 920 | +#: src/core/actions/table.c:370 | |
| 921 | +msgid "Move selection up" | |
| 922 | +msgstr "Move seleção para cima" | |
| 923 | + | |
| 924 | +#: src/core/actions/table.c:444 | |
| 886 | 925 | msgid "Move the cursor to the first blank after the last nonblank in the field" |
| 887 | 926 | msgstr "Move o cursor para o primeiro branco após o último não branco no campo" |
| 888 | 927 | |
| 889 | -#: src/core/actions/table.c:292 | |
| 928 | +#: src/core/actions/table.c:458 | |
| 890 | 929 | msgid "Move to first unprotected field on screen" |
| 891 | 930 | msgstr "Move para o primeiro campo desprotegido" |
| 892 | 931 | |
| ... | ... | @@ -899,15 +938,15 @@ msgstr "Erro de rede" |
| 899 | 938 | msgid "Network keep alive" |
| 900 | 939 | msgstr "Manter rede ativa" |
| 901 | 940 | |
| 902 | -#: src/core/actions/table.c:158 | |
| 941 | +#: src/core/actions/table.c:199 | |
| 903 | 942 | msgid "New line" |
| 904 | 943 | msgstr "Nova linha" |
| 905 | 944 | |
| 906 | -#: src/core/actions/table.c:305 | |
| 945 | +#: src/core/actions/table.c:471 | |
| 907 | 946 | msgid "Next field" |
| 908 | 947 | msgstr "Próximo campo" |
| 909 | 948 | |
| 910 | -#: src/core/actions/table.c:186 | |
| 949 | +#: src/core/actions/table.c:227 | |
| 911 | 950 | msgid "Next word" |
| 912 | 951 | msgstr "Próxima palavra" |
| 913 | 952 | |
| ... | ... | @@ -931,11 +970,11 @@ msgstr "" |
| 931 | 970 | msgid "No transfer in progress" |
| 932 | 971 | msgstr "Nenhuma transferência em andamento" |
| 933 | 972 | |
| 934 | -#: src/core/properties/boolean.c:84 | |
| 973 | +#: src/core/properties/boolean.c:91 | |
| 935 | 974 | msgid "Non zero if the host is AS400." |
| 936 | 975 | msgstr "Diferente de zero se o host é AS400" |
| 937 | 976 | |
| 938 | -#: src/core/properties/boolean.c:76 | |
| 977 | +#: src/core/properties/boolean.c:83 | |
| 939 | 978 | msgid "Non zero if the host is TSO." |
| 940 | 979 | msgstr "Diferente de zero se o host é TSO" |
| 941 | 980 | |
| ... | ... | @@ -961,15 +1000,15 @@ msgstr "Outro (VM/CMS)" |
| 961 | 1000 | msgid "Out of memory" |
| 962 | 1001 | msgstr "Memória insuficiente" |
| 963 | 1002 | |
| 964 | -#: src/core/actions/table.c:200 | |
| 1003 | +#: src/core/actions/table.c:241 | |
| 965 | 1004 | msgid "Paste from file" |
| 966 | 1005 | msgstr "Colar de um arquivo" |
| 967 | 1006 | |
| 968 | -#: src/core/actions/table.c:201 | |
| 1007 | +#: src/core/actions/table.c:242 | |
| 969 | 1008 | msgid "Paste from text file" |
| 970 | 1009 | msgstr "Colar de um arquivo texto" |
| 971 | 1010 | |
| 972 | -#: src/core/actions/table.c:553 | |
| 1011 | +#: src/core/actions/table.c:719 | |
| 973 | 1012 | msgid "Paste next" |
| 974 | 1013 | msgstr "Colar próximo" |
| 975 | 1014 | |
| ... | ... | @@ -989,11 +1028,11 @@ msgstr "Especificação de arquivo PC incorreta: Transferência cancelada" |
| 989 | 1028 | msgid "Preferred protocol for CRL download" |
| 990 | 1029 | msgstr "Protocolo preferido para download da CRL" |
| 991 | 1030 | |
| 992 | -#: src/core/actions/table.c:319 | |
| 1031 | +#: src/core/actions/table.c:485 | |
| 993 | 1032 | msgid "Previous field" |
| 994 | 1033 | msgstr "Campo anterior" |
| 995 | 1034 | |
| 996 | -#: src/core/actions/table.c:172 | |
| 1035 | +#: src/core/actions/table.c:213 | |
| 997 | 1036 | msgid "Previous word" |
| 998 | 1037 | msgstr "Palavra anterior" |
| 999 | 1038 | |
| ... | ... | @@ -1073,11 +1112,11 @@ msgstr "RPQ: Não foi possível resolver '%s': %s" |
| 1073 | 1112 | msgid "RPQ: gethostbyname error" |
| 1074 | 1113 | msgstr "RPQ: Erro em gethostbyname" |
| 1075 | 1114 | |
| 1076 | -#: src/core/actions/table.c:72 | |
| 1115 | +#: src/core/actions/table.c:113 | |
| 1077 | 1116 | msgid "Reconnect to the same host" |
| 1078 | 1117 | msgstr "Reconecta ao mesmo servidor" |
| 1079 | 1118 | |
| 1080 | -#: src/core/actions/table.c:231 src/core/actions/table.c:232 | |
| 1119 | +#: src/core/actions/table.c:272 src/core/actions/table.c:273 | |
| 1081 | 1120 | msgid "Remove selection" |
| 1082 | 1121 | msgstr "Remover seleção" |
| 1083 | 1122 | |
| ... | ... | @@ -1089,11 +1128,11 @@ msgstr "Requisição falhou" |
| 1089 | 1128 | msgid "Required host storage unavailable: file transfer canceled" |
| 1090 | 1129 | msgstr "Armazenamento necessário indisponível: Transferência cancelada" |
| 1091 | 1130 | |
| 1092 | -#: src/core/actions/table.c:245 src/core/actions/table.c:246 | |
| 1131 | +#: src/core/actions/table.c:286 src/core/actions/table.c:287 | |
| 1093 | 1132 | msgid "Reselect" |
| 1094 | 1133 | msgstr "Reselecionar" |
| 1095 | 1134 | |
| 1096 | -#: src/core/actions/table.c:454 | |
| 1135 | +#: src/core/actions/table.c:620 | |
| 1097 | 1136 | msgid "Reset" |
| 1098 | 1137 | msgstr "Reset" |
| 1099 | 1138 | |
| ... | ... | @@ -1101,7 +1140,7 @@ msgstr "Reset" |
| 1101 | 1140 | msgid "Resize on alternate screen" |
| 1102 | 1141 | msgstr "Mudar tamanho do terminal em tela alternativa" |
| 1103 | 1142 | |
| 1104 | -#: src/core/actions/table.c:144 | |
| 1143 | +#: src/core/actions/table.c:185 | |
| 1105 | 1144 | msgid "Right" |
| 1106 | 1145 | msgstr "Direita" |
| 1107 | 1146 | |
| ... | ... | @@ -1113,7 +1152,7 @@ msgstr "" |
| 1113 | 1152 | "SPACE can be specified in units of TRACKS, CYLINDERS, or AVBLOCK, and only " |
| 1114 | 1153 | "one option can be used." |
| 1115 | 1154 | |
| 1116 | -#: src/ssl/negotiate.c:192 | |
| 1155 | +#: src/ssl/negotiate.c:204 | |
| 1117 | 1156 | msgid "SSL Connect failed" |
| 1118 | 1157 | msgstr "Conexão SSL falhou" |
| 1119 | 1158 | |
| ... | ... | @@ -1125,7 +1164,7 @@ msgstr "Erro SSL" |
| 1125 | 1164 | msgid "SSL Read error" |
| 1126 | 1165 | msgstr "Erro de leitura SSL" |
| 1127 | 1166 | |
| 1128 | -#: src/ssl/negotiate.c:158 | |
| 1167 | +#: src/ssl/negotiate.c:170 | |
| 1129 | 1168 | msgid "SSL negotiation failed" |
| 1130 | 1169 | msgstr "Negociação SSL falhou" |
| 1131 | 1170 | |
| ... | ... | @@ -1158,8 +1197,8 @@ msgstr "Pesquisa não produziu nenhum valor" |
| 1158 | 1197 | msgid "Secure connection was successful." |
| 1159 | 1198 | msgstr "Conexão segura efetuada com sucesso." |
| 1160 | 1199 | |
| 1161 | -#: src/ssl/negotiate.c:107 src/ssl/negotiate.c:157 src/ssl/negotiate.c:191 | |
| 1162 | -#: src/ssl/negotiate.c:285 src/ssl/negotiate.c:307 src/ssl/negotiate.c:328 | |
| 1200 | +#: src/ssl/negotiate.c:107 src/ssl/negotiate.c:169 src/ssl/negotiate.c:203 | |
| 1201 | +#: src/ssl/negotiate.c:297 src/ssl/negotiate.c:319 src/ssl/negotiate.c:340 | |
| 1163 | 1202 | #: src/ssl/crl.c:164 src/ssl/linux/url.c:65 src/ssl/linux/url.c:80 |
| 1164 | 1203 | #: src/ssl/linux/url.c:98 src/ssl/linux/url.c:115 src/ssl/linux/ldap.c:100 |
| 1165 | 1204 | #: src/ssl/linux/ldap.c:113 src/ssl/linux/ldap.c:134 src/ssl/linux/ldap.c:145 |
| ... | ... | @@ -1170,15 +1209,15 @@ msgstr "Conexão segura efetuada com sucesso." |
| 1170 | 1209 | msgid "Security error" |
| 1171 | 1210 | msgstr "Erro de segurança" |
| 1172 | 1211 | |
| 1173 | -#: src/ssl/negotiate.c:332 | |
| 1212 | +#: src/ssl/negotiate.c:344 | |
| 1174 | 1213 | msgid "Security warning" |
| 1175 | 1214 | msgstr "Alerta de segurança" |
| 1176 | 1215 | |
| 1177 | -#: src/core/actions/table.c:263 | |
| 1216 | +#: src/core/actions/table.c:429 | |
| 1178 | 1217 | msgid "Select Field" |
| 1179 | 1218 | msgstr "Selecionar campo" |
| 1180 | 1219 | |
| 1181 | -#: src/core/actions/table.c:217 | |
| 1220 | +#: src/core/actions/table.c:258 | |
| 1182 | 1221 | msgid "Select all" |
| 1183 | 1222 | msgstr "Selecionar tudo" |
| 1184 | 1223 | |
| ... | ... | @@ -1186,10 +1225,14 @@ msgstr "Selecionar tudo" |
| 1186 | 1225 | msgid "Select by rectangles" |
| 1187 | 1226 | msgstr "Seleção retangular" |
| 1188 | 1227 | |
| 1189 | -#: src/core/actions/table.c:262 | |
| 1228 | +#: src/core/actions/table.c:428 | |
| 1190 | 1229 | msgid "Select field" |
| 1191 | 1230 | msgstr "Seleciona campo" |
| 1192 | 1231 | |
| 1232 | +#: src/core/actions/table.c:300 src/core/actions/table.c:301 | |
| 1233 | +msgid "Select word" | |
| 1234 | +msgstr "Seleciona palavra" | |
| 1235 | + | |
| 1193 | 1236 | #: src/core/linux/event_dispatcher.c:144 |
| 1194 | 1237 | msgid "Select() failed when processing for events." |
| 1195 | 1238 | msgstr "Select() falhou ao processar eventos." |
| ... | ... | @@ -1202,7 +1245,7 @@ msgstr "Certificado auto assinado" |
| 1202 | 1245 | msgid "Self signed certificate in certificate chain" |
| 1203 | 1246 | msgstr "Certificado auto assinado na cadeia de certificados" |
| 1204 | 1247 | |
| 1205 | -#: src/core/actions/table.c:440 | |
| 1248 | +#: src/core/actions/table.c:606 | |
| 1206 | 1249 | msgid "Send an \"Enter\" action" |
| 1207 | 1250 | msgstr "Envia um \"Enter\"" |
| 1208 | 1251 | |
| ... | ... | @@ -1246,11 +1289,11 @@ msgstr "Erro ao enviar dados para a rede" |
| 1246 | 1289 | msgid "Sound" |
| 1247 | 1290 | msgstr "Som" |
| 1248 | 1291 | |
| 1249 | -#: src/core/properties/boolean.c:119 | |
| 1292 | +#: src/core/properties/boolean.c:126 | |
| 1250 | 1293 | msgid "State is 3270, TN3270e or SSCP" |
| 1251 | 1294 | msgstr "Estado do terminal é 3270, TN3270e or SSCP" |
| 1252 | 1295 | |
| 1253 | -#: src/core/properties/boolean.c:154 | |
| 1296 | +#: src/core/properties/boolean.c:161 | |
| 1254 | 1297 | msgid "Still have text to paste" |
| 1255 | 1298 | msgstr "Ainda existe texto para colar" |
| 1256 | 1299 | |
| ... | ... | @@ -1258,7 +1301,7 @@ msgstr "Ainda existe texto para colar" |
| 1258 | 1301 | msgid "Subject issuer mismatch" |
| 1259 | 1302 | msgstr "Divergência na identidade do emissor" |
| 1260 | 1303 | |
| 1261 | -#: src/core/actions/table.c:567 | |
| 1304 | +#: src/core/actions/table.c:733 | |
| 1262 | 1305 | msgid "Sys Req" |
| 1263 | 1306 | msgstr "Sys Req" |
| 1264 | 1307 | |
| ... | ... | @@ -1266,11 +1309,11 @@ msgstr "Sys Req" |
| 1266 | 1309 | msgid "TLS negotiation failure" |
| 1267 | 1310 | msgstr "Negociação TLS falhou" |
| 1268 | 1311 | |
| 1269 | -#: src/core/actions/table.c:320 | |
| 1312 | +#: src/core/actions/table.c:486 | |
| 1270 | 1313 | msgid "Tab backward to previous field" |
| 1271 | 1314 | msgstr "Move para o campo anterior" |
| 1272 | 1315 | |
| 1273 | -#: src/core/actions/table.c:306 | |
| 1316 | +#: src/core/actions/table.c:472 | |
| 1274 | 1317 | msgid "Tab forward to next field" |
| 1275 | 1318 | msgstr "Move para o próximo campo" |
| 1276 | 1319 | |
| ... | ... | @@ -1286,7 +1329,7 @@ msgstr "Nome do terminal" |
| 1286 | 1329 | msgid "Terminal type" |
| 1287 | 1330 | msgstr "Tipo do terminal" |
| 1288 | 1331 | |
| 1289 | -#: src/core/actions/table.c:585 | |
| 1332 | +#: src/core/actions/table.c:751 | |
| 1290 | 1333 | msgid "Test pattern" |
| 1291 | 1334 | msgstr "Padrão de teste" |
| 1292 | 1335 | |
| ... | ... | @@ -1341,7 +1384,7 @@ msgstr "" |
| 1341 | 1384 | "A lista de revogação de certificados (CRL) de um certificado não pôde ser " |
| 1342 | 1385 | "encontrada." |
| 1343 | 1386 | |
| 1344 | -#: src/ssl/negotiate.c:308 | |
| 1387 | +#: src/ssl/negotiate.c:320 | |
| 1345 | 1388 | msgid "The SSL certificate for this host is not trusted." |
| 1346 | 1389 | msgstr "O certificado SSL deste servidor não é confiável" |
| 1347 | 1390 | |
| ... | ... | @@ -1563,7 +1606,7 @@ msgstr "" |
| 1563 | 1606 | "O Certificado raiz não está marcado como confiável para os fins " |
| 1564 | 1607 | "especificados." |
| 1565 | 1608 | |
| 1566 | -#: src/ssl/negotiate.c:309 | |
| 1609 | +#: src/ssl/negotiate.c:321 | |
| 1567 | 1610 | msgid "" |
| 1568 | 1611 | "The security certificate presented by this host was not issued by a trusted " |
| 1569 | 1612 | "certificate authority." |
| ... | ... | @@ -1740,7 +1783,7 @@ msgstr "Erro inesperado" |
| 1740 | 1783 | msgid "Unexpected or invalid CRL URL" |
| 1741 | 1784 | msgstr "URL do CRL é inesperada ou inválida" |
| 1742 | 1785 | |
| 1743 | -#: src/ssl/negotiate.c:287 | |
| 1786 | +#: src/ssl/negotiate.c:299 | |
| 1744 | 1787 | msgid "Unexpected or invalid TLS/SSL verify result" |
| 1745 | 1788 | msgstr "O resultado da verificação TLS/SSL foi inesperado" |
| 1746 | 1789 | |
| ... | ... | @@ -1788,7 +1831,7 @@ msgstr "Unsupported RPQ term" |
| 1788 | 1831 | msgid "Unsupported certificate purpose" |
| 1789 | 1832 | msgstr "Finalidade do certificado não é suportada" |
| 1790 | 1833 | |
| 1791 | -#: src/core/actions/table.c:102 | |
| 1834 | +#: src/core/actions/table.c:143 | |
| 1792 | 1835 | msgid "Up" |
| 1793 | 1836 | msgstr "Subir" |
| 1794 | 1837 | |
| ... | ... | @@ -1896,11 +1939,11 @@ msgstr "" |
| 1896 | 1939 | msgid "You specified an option that is invalid." |
| 1897 | 1940 | msgstr "Você especificou uma opção inválida." |
| 1898 | 1941 | |
| 1899 | -#: src/core/actions/table.c:85 | |
| 1942 | +#: src/core/actions/table.c:126 | |
| 1900 | 1943 | msgid "_Disconnect" |
| 1901 | 1944 | msgstr "_Desconectar" |
| 1902 | 1945 | |
| 1903 | -#: src/core/actions/table.c:71 | |
| 1946 | +#: src/core/actions/table.c:112 | |
| 1904 | 1947 | msgid "_Reconnect" |
| 1905 | 1948 | msgstr "_Reconectar" |
| 1906 | 1949 | |
| ... | ... | @@ -1928,7 +1971,7 @@ msgstr "Revisão da lib3270" |
| 1928 | 1971 | msgid "lib3270 version" |
| 1929 | 1972 | msgstr "Versão da lib3270" |
| 1930 | 1973 | |
| 1931 | -#: src/core/properties/boolean.c:182 | |
| 1974 | +#: src/core/properties/boolean.c:189 | |
| 1932 | 1975 | msgid "numeric lock" |
| 1933 | 1976 | msgstr "numeric lock" |
| 1934 | 1977 | ... | ... |
src/core/actions/table.c
| ... | ... | @@ -51,6 +51,46 @@ |
| 51 | 51 | return lib3270_reconnect(hSession,0); |
| 52 | 52 | } |
| 53 | 53 | |
| 54 | + static int select_up(H3270 *hSession) | |
| 55 | + { | |
| 56 | + return lib3270_move_cursor(hSession,LIB3270_DIR_UP,1); | |
| 57 | + } | |
| 58 | + | |
| 59 | + static int select_down(H3270 *hSession) | |
| 60 | + { | |
| 61 | + return lib3270_move_cursor(hSession,LIB3270_DIR_DOWN,1); | |
| 62 | + } | |
| 63 | + | |
| 64 | + static int select_left(H3270 *hSession) | |
| 65 | + { | |
| 66 | + return lib3270_move_cursor(hSession,LIB3270_DIR_LEFT,1); | |
| 67 | + } | |
| 68 | + | |
| 69 | + static int select_right(H3270 *hSession) | |
| 70 | + { | |
| 71 | + return lib3270_move_cursor(hSession,LIB3270_DIR_RIGHT,1); | |
| 72 | + } | |
| 73 | + | |
| 74 | + static int selection_up(H3270 *hSession) | |
| 75 | + { | |
| 76 | + return lib3270_move_selection(hSession,LIB3270_DIR_UP); | |
| 77 | + } | |
| 78 | + | |
| 79 | + static int selection_down(H3270 *hSession) | |
| 80 | + { | |
| 81 | + return lib3270_move_selection(hSession,LIB3270_DIR_DOWN); | |
| 82 | + } | |
| 83 | + | |
| 84 | + static int selection_left(H3270 *hSession) | |
| 85 | + { | |
| 86 | + return lib3270_move_selection(hSession,LIB3270_DIR_LEFT); | |
| 87 | + } | |
| 88 | + | |
| 89 | + static int selection_right(H3270 *hSession) | |
| 90 | + { | |
| 91 | + return lib3270_move_selection(hSession,LIB3270_DIR_RIGHT); | |
| 92 | + } | |
| 93 | + | |
| 54 | 94 | /** |
| 55 | 95 | * @brief Get LIB3270 action table; |
| 56 | 96 | * |
| ... | ... | @@ -213,7 +253,7 @@ |
| 213 | 253 | .name = "select-all", |
| 214 | 254 | .type = LIB3270_ACTION_TYPE_SELECTION, |
| 215 | 255 | |
| 216 | - .keys = "<ctrl>a", | |
| 256 | + .keys = "<Primary>a", | |
| 217 | 257 | .icon = "edit-select-all", |
| 218 | 258 | .label = N_( "Select all" ), |
| 219 | 259 | .summary = NULL, |
| ... | ... | @@ -241,7 +281,7 @@ |
| 241 | 281 | .name = "reselect", |
| 242 | 282 | .type = LIB3270_ACTION_TYPE_SELECTION, |
| 243 | 283 | |
| 244 | - .keys = "<Ctrl>r", | |
| 284 | + .keys = "<Primary>r", | |
| 245 | 285 | .icon = NULL, |
| 246 | 286 | .label = N_( "Reselect" ), |
| 247 | 287 | .summary = N_( "Reselect"), |
| ... | ... | @@ -265,6 +305,117 @@ |
| 265 | 305 | .activatable = lib3270_is_connected |
| 266 | 306 | }, |
| 267 | 307 | |
| 308 | + { | |
| 309 | + .name = "select-up", | |
| 310 | + .type = LIB3270_ACTION_TYPE_SELECTION, | |
| 311 | + | |
| 312 | + .keys = "<Shift>Up", | |
| 313 | + .icon = NULL, | |
| 314 | + .label = N_( "Move cursor up and select" ), | |
| 315 | + .summary = NULL, | |
| 316 | + .activate = select_up, | |
| 317 | + | |
| 318 | + .group = LIB3270_ACTION_GROUP_ONLINE, | |
| 319 | + .activatable = lib3270_is_connected | |
| 320 | + }, | |
| 321 | + | |
| 322 | + { | |
| 323 | + .name = "select-down", | |
| 324 | + .type = LIB3270_ACTION_TYPE_SELECTION, | |
| 325 | + | |
| 326 | + .keys = "<Shift>Down", | |
| 327 | + .icon = NULL, | |
| 328 | + .label = N_( "Move cursor down and select" ), | |
| 329 | + .summary = NULL, | |
| 330 | + .activate = select_down, | |
| 331 | + | |
| 332 | + .group = LIB3270_ACTION_GROUP_ONLINE, | |
| 333 | + .activatable = lib3270_is_connected | |
| 334 | + }, | |
| 335 | + | |
| 336 | + { | |
| 337 | + .name = "select-left", | |
| 338 | + .type = LIB3270_ACTION_TYPE_SELECTION, | |
| 339 | + | |
| 340 | + .keys = "<Shift>Left", | |
| 341 | + .icon = NULL, | |
| 342 | + .label = N_( "Move cursor left and select" ), | |
| 343 | + .summary = NULL, | |
| 344 | + .activate = select_left, | |
| 345 | + | |
| 346 | + .group = LIB3270_ACTION_GROUP_ONLINE, | |
| 347 | + .activatable = lib3270_is_connected | |
| 348 | + }, | |
| 349 | + | |
| 350 | + { | |
| 351 | + .name = "select-right", | |
| 352 | + .type = LIB3270_ACTION_TYPE_SELECTION, | |
| 353 | + | |
| 354 | + .keys = "<Shift>Right", | |
| 355 | + .icon = NULL, | |
| 356 | + .label = N_( "Move cursor rigth and select" ), | |
| 357 | + .summary = NULL, | |
| 358 | + .activate = select_right, | |
| 359 | + | |
| 360 | + .group = LIB3270_ACTION_GROUP_ONLINE, | |
| 361 | + .activatable = lib3270_is_connected | |
| 362 | + }, | |
| 363 | + | |
| 364 | + { | |
| 365 | + .name = "selection-up", | |
| 366 | + .type = LIB3270_ACTION_TYPE_SELECTION, | |
| 367 | + | |
| 368 | + .keys = "<Alt>Up", | |
| 369 | + .icon = NULL, | |
| 370 | + .label = N_( "Move selection up" ), | |
| 371 | + .summary = NULL, | |
| 372 | + .activate = selection_up, | |
| 373 | + | |
| 374 | + .group = LIB3270_ACTION_GROUP_SELECTION, | |
| 375 | + .activatable = lib3270_get_has_selection | |
| 376 | + }, | |
| 377 | + | |
| 378 | + { | |
| 379 | + .name = "selection-down", | |
| 380 | + .type = LIB3270_ACTION_TYPE_SELECTION, | |
| 381 | + | |
| 382 | + .keys = "<Alt>Down", | |
| 383 | + .icon = NULL, | |
| 384 | + .label = N_( "Move selection down" ), | |
| 385 | + .summary = NULL, | |
| 386 | + .activate = selection_down, | |
| 387 | + | |
| 388 | + .group = LIB3270_ACTION_GROUP_SELECTION, | |
| 389 | + .activatable = lib3270_get_has_selection | |
| 390 | + }, | |
| 391 | + | |
| 392 | + { | |
| 393 | + .name = "selection-left", | |
| 394 | + .type = LIB3270_ACTION_TYPE_SELECTION, | |
| 395 | + | |
| 396 | + .keys = "<Alt>Left", | |
| 397 | + .icon = NULL, | |
| 398 | + .label = N_( "Move selection left" ), | |
| 399 | + .summary = NULL, | |
| 400 | + .activate = selection_left, | |
| 401 | + | |
| 402 | + .group = LIB3270_ACTION_GROUP_SELECTION, | |
| 403 | + .activatable = lib3270_get_has_selection | |
| 404 | + }, | |
| 405 | + | |
| 406 | + { | |
| 407 | + .name = "selection-right", | |
| 408 | + .type = LIB3270_ACTION_TYPE_SELECTION, | |
| 409 | + | |
| 410 | + .keys = "<Alt>Right", | |
| 411 | + .icon = NULL, | |
| 412 | + .label = N_( "Move selection right" ), | |
| 413 | + .summary = NULL, | |
| 414 | + .activate = selection_right, | |
| 415 | + .activatable = lib3270_get_has_selection | |
| 416 | + | |
| 417 | + }, | |
| 418 | + | |
| 268 | 419 | // |
| 269 | 420 | // Field actions. |
| 270 | 421 | // |
| ... | ... | @@ -272,7 +423,7 @@ |
| 272 | 423 | .name = "select-field", |
| 273 | 424 | .type = LIB3270_ACTION_TYPE_SELECTION, |
| 274 | 425 | |
| 275 | - .keys = "<Ctrl>f", | |
| 426 | + .keys = "<Primary>f", | |
| 276 | 427 | .icon = NULL, |
| 277 | 428 | .label = N_( "Select field" ), |
| 278 | 429 | .summary = N_( "Select Field" ), |
| ... | ... | @@ -347,7 +498,7 @@ |
| 347 | 498 | .name = "delete-word", |
| 348 | 499 | .type = LIB3270_ACTION_TYPE_NAVIGATION, |
| 349 | 500 | |
| 350 | - .keys = "<Ctrl>w", | |
| 501 | + .keys = "<Primary>w", | |
| 351 | 502 | .icon = NULL, |
| 352 | 503 | .label = N_("Delete word"), |
| 353 | 504 | .summary = N_( "Backspaces the cursor until it hits the front of a word" ), |
| ... | ... | @@ -361,7 +512,7 @@ |
| 361 | 512 | .name = "delete-field", |
| 362 | 513 | .type = LIB3270_ACTION_TYPE_NAVIGATION, |
| 363 | 514 | |
| 364 | - .keys = "<Ctrl>u", | |
| 515 | + .keys = "<Primary>u", | |
| 365 | 516 | .icon = NULL, |
| 366 | 517 | .label = N_( "Delete field" ), |
| 367 | 518 | .summary = N_( "Delete field" ), | ... | ... |
src/core/bounds.c
| ... | ... | @@ -79,7 +79,7 @@ LIB3270_EXPORT int lib3270_get_word_bounds(H3270 *session, int baddr, int *start |
| 79 | 79 | if(baddr < 0) |
| 80 | 80 | baddr = lib3270_get_cursor_address(session); |
| 81 | 81 | |
| 82 | - if(baddr > lib3270_get_length(session)) { | |
| 82 | + if(baddr > (int) lib3270_get_length(session)) { | |
| 83 | 83 | return errno = EINVAL; |
| 84 | 84 | } |
| 85 | 85 | ... | ... |
src/core/connect.c
src/core/cursor.c
| ... | ... | @@ -79,8 +79,6 @@ static int cursor_end(H3270 *hSession); |
| 79 | 79 | */ |
| 80 | 80 | LIB3270_EXPORT int lib3270_move_cursor(H3270 *hSession, LIB3270_DIRECTION dir, unsigned char sel) |
| 81 | 81 | { |
| 82 | - int select_from = -1; | |
| 83 | - | |
| 84 | 82 | FAIL_IF_NOT_ONLINE(hSession); |
| 85 | 83 | |
| 86 | 84 | if(dir < 0 || dir >= LIB3270_DIR_COUNT) |
| ... | ... | @@ -106,18 +104,40 @@ LIB3270_EXPORT int lib3270_move_cursor(H3270 *hSession, LIB3270_DIRECTION dir, u |
| 106 | 104 | } |
| 107 | 105 | } |
| 108 | 106 | |
| 109 | - if(sel) { | |
| 110 | - select_from = (hSession->selected ? hSession->select.start : hSession->cursor_addr); | |
| 111 | - } | |
| 107 | + // Save last cursor position | |
| 108 | + int saved_cursor = hSession->cursor_addr; | |
| 112 | 109 | |
| 113 | 110 | int rc = calls[dir].exec(hSession); |
| 114 | 111 | if(rc) |
| 115 | 112 | return rc; |
| 116 | 113 | |
| 117 | 114 | if(sel) |
| 118 | - lib3270_select_region(hSession, select_from, hSession->cursor_addr); | |
| 115 | + { | |
| 116 | + if(hSession->cursor_addr < saved_cursor) | |
| 117 | + { | |
| 118 | + // Moved back | |
| 119 | + lib3270_select_region( | |
| 120 | + hSession, | |
| 121 | + hSession->cursor_addr, | |
| 122 | + ((hSession->selected ? hSession->select.end : saved_cursor)) | |
| 123 | + ); | |
| 124 | + | |
| 125 | + } | |
| 126 | + else | |
| 127 | + { | |
| 128 | + // Moved forward | |
| 129 | + lib3270_select_region( | |
| 130 | + hSession, | |
| 131 | + ((hSession->selected ? hSession->select.start : saved_cursor)), | |
| 132 | + hSession->cursor_addr | |
| 133 | + ); | |
| 134 | + } | |
| 135 | + | |
| 136 | + } | |
| 119 | 137 | else if(hSession->selected && !lib3270_get_toggle(hSession,LIB3270_TOGGLE_KEEP_SELECTED)) |
| 138 | + { | |
| 120 | 139 | lib3270_unselect(hSession); |
| 140 | + } | |
| 121 | 141 | |
| 122 | 142 | return 0; |
| 123 | 143 | } | ... | ... |
src/core/properties/signed.c
| ... | ... | @@ -49,6 +49,48 @@ |
| 49 | 49 | return (int) lib3270_get_ssl_state(hSession); |
| 50 | 50 | } |
| 51 | 51 | |
| 52 | + static int lib3270_set_ssl_minimum_protocol_version(H3270 *hSession, int value) | |
| 53 | + { | |
| 54 | +#ifdef HAVE_LIBSSL | |
| 55 | + FAIL_IF_ONLINE(hSession); | |
| 56 | + hSession->ssl.protocol.min_version = value; | |
| 57 | + return 0; | |
| 58 | +#else | |
| 59 | + return ENOTSUP; | |
| 60 | +#endif // HAVE_LIBSSL | |
| 61 | + } | |
| 62 | + | |
| 63 | + static int lib3270_set_ssl_maximum_protocol_version(H3270 *hSession, int value) | |
| 64 | + { | |
| 65 | +#ifdef HAVE_LIBSSL | |
| 66 | + FAIL_IF_ONLINE(hSession); | |
| 67 | + hSession->ssl.protocol.max_version = value; | |
| 68 | + return 0; | |
| 69 | +#else | |
| 70 | + return ENOTSUP; | |
| 71 | +#endif // HAVE_LIBSSL | |
| 72 | + } | |
| 73 | + | |
| 74 | + static int lib3270_get_ssl_minimum_protocol_version(const H3270 *hSession) | |
| 75 | + { | |
| 76 | +#ifdef HAVE_LIBSSL | |
| 77 | + return hSession->ssl.protocol.min_version; | |
| 78 | +#else | |
| 79 | + errno = ENOTSUP; | |
| 80 | + return 0; | |
| 81 | +#endif // HAVE_LIBSSL | |
| 82 | + } | |
| 83 | + | |
| 84 | + static int lib3270_get_ssl_maximum_protocol_version(const H3270 *hSession) | |
| 85 | + { | |
| 86 | +#ifdef HAVE_LIBSSL | |
| 87 | + return hSession->ssl.protocol.max_version; | |
| 88 | +#else | |
| 89 | + errno = ENOTSUP; | |
| 90 | + return 0; | |
| 91 | +#endif // HAVE_LIBSSL | |
| 92 | + } | |
| 93 | + | |
| 52 | 94 | const LIB3270_INT_PROPERTY * lib3270_get_int_properties_list(void) |
| 53 | 95 | { |
| 54 | 96 | |
| ... | ... | @@ -75,6 +117,22 @@ |
| 75 | 117 | .set = NULL // Set value. |
| 76 | 118 | }, |
| 77 | 119 | |
| 120 | + { | |
| 121 | + .name = "ssl_min_protocol_version", // Property name. | |
| 122 | + .description = N_( "ID of the minimum supported SSL protocol version" ), // Property description. | |
| 123 | + .default_value = 0, | |
| 124 | + .get = lib3270_get_ssl_minimum_protocol_version, // Get value. | |
| 125 | + .set = lib3270_set_ssl_minimum_protocol_version // Set value. | |
| 126 | + }, | |
| 127 | + | |
| 128 | + { | |
| 129 | + .name = "ssl_max_protocol_version", // Property name. | |
| 130 | + .description = N_( "ID of the maximum supported SSL protocol version" ), // Property description. | |
| 131 | + .default_value = 0, | |
| 132 | + .get = lib3270_get_ssl_maximum_protocol_version, // Get value. | |
| 133 | + .set = lib3270_set_ssl_maximum_protocol_version // Set value. | |
| 134 | + }, | |
| 135 | + | |
| 78 | 136 | { |
| 79 | 137 | .name = NULL, |
| 80 | 138 | .description = NULL, | ... | ... |
src/core/rpq.c
| ... | ... | @@ -199,26 +199,26 @@ void do_qr_rpqnames(H3270 *hSession) |
| 199 | 199 | break; |
| 200 | 200 | |
| 201 | 201 | case RPQ_VERSION: /* program version */ |
| 202 | - x = strlen(build_rpq_version); | |
| 202 | + x = strlen(PACKAGE_VERSION); | |
| 203 | 203 | omit_due_space_limit = (x > remaining); |
| 204 | 204 | if (!omit_due_space_limit) |
| 205 | 205 | { |
| 206 | 206 | for (i = 0; i < x; i++) |
| 207 | 207 | { |
| 208 | - *hSession->output.ptr++ = hSession->charset.asc2ebc[(int)(*(build_rpq_version+i) & 0xff)]; | |
| 208 | + *hSession->output.ptr++ = hSession->charset.asc2ebc[(int)(*(PACKAGE_VERSION+i) & 0xff)]; | |
| 209 | 209 | } |
| 210 | 210 | } |
| 211 | 211 | break; |
| 212 | 212 | |
| 213 | 213 | case RPQ_TIMESTAMP: /* program build time (yyyymmddhhmmss bcd) */ |
| 214 | - x = strlen(build_rpq_timestamp); | |
| 214 | + x = strlen(RPQ_TIMESTAMP_VALUE); | |
| 215 | 215 | omit_due_space_limit = ((x+1)/2 > remaining) ? 1 : 0; |
| 216 | 216 | if (!omit_due_space_limit) |
| 217 | 217 | { |
| 218 | 218 | for (i=0; i < x; i+=2) |
| 219 | 219 | { |
| 220 | - *hSession->output.ptr++ = ((*(build_rpq_timestamp+i) - '0') << 4) | |
| 221 | - + (*(build_rpq_timestamp+i+1) - '0'); | |
| 220 | + *hSession->output.ptr++ = ((*(RPQ_TIMESTAMP_VALUE+i) - '0') << 4) | |
| 221 | + + (*(RPQ_TIMESTAMP_VALUE+i+1) - '0'); | |
| 222 | 222 | } |
| 223 | 223 | } |
| 224 | 224 | break; | ... | ... |
src/core/session.c
| ... | ... | @@ -410,6 +410,11 @@ H3270 * lib3270_session_new(const char *model) |
| 410 | 410 | hSession = lib3270_malloc(sizeof(H3270)); |
| 411 | 411 | hSession->id = 0; |
| 412 | 412 | |
| 413 | +#ifdef HAVE_LIBSSL | |
| 414 | + hSession->ssl.protocol.min_version = 0; | |
| 415 | + hSession->ssl.protocol.max_version = 0; | |
| 416 | +#endif // HAVE_LIBSSL | |
| 417 | + | |
| 413 | 418 | #ifdef SSL_ENABLE_CRL_CHECK |
| 414 | 419 | hSession->ssl.crl.download = 1; |
| 415 | 420 | #endif // SSL_ENABLE_CRL_CHECK | ... | ... |
src/core/util.c
| ... | ... | @@ -40,6 +40,10 @@ |
| 40 | 40 | #include <lib3270/selection.h> |
| 41 | 41 | #include <lib3270/log.h> |
| 42 | 42 | |
| 43 | +#if defined(HAVE_LIBSSL) | |
| 44 | + #include <openssl/opensslv.h> | |
| 45 | +#endif // HAVE_LIBSSL | |
| 46 | + | |
| 43 | 47 | #define my_isspace(c) isspace((unsigned char)c) |
| 44 | 48 | |
| 45 | 49 | /** |
| ... | ... | @@ -357,12 +361,28 @@ LIB3270_EXPORT void * lib3270_strdup(const char *str) |
| 357 | 361 | |
| 358 | 362 | LIB3270_EXPORT const char * lib3270_get_version(void) |
| 359 | 363 | { |
| 360 | - return build_rpq_version; | |
| 364 | + return PACKAGE_VERSION; | |
| 361 | 365 | } |
| 362 | 366 | |
| 363 | 367 | LIB3270_EXPORT const char * lib3270_get_revision(void) |
| 364 | 368 | { |
| 365 | - return build_rpq_revision; | |
| 369 | + return RPQ_REVISION; | |
| 370 | +} | |
| 371 | + | |
| 372 | +LIB3270_EXPORT char * lib3270_get_version_info(void) | |
| 373 | +{ | |
| 374 | +#if defined(HAVE_LIBSSL) | |
| 375 | + return lib3270_strdup_printf( | |
| 376 | + "%s version %s-%s build %s (%s)", | |
| 377 | + PACKAGE_NAME, | |
| 378 | + PACKAGE_VERSION, | |
| 379 | + PACKAGE_RELEASE, | |
| 380 | + RPQ_TIMESTAMP_VALUE, | |
| 381 | + OPENSSL_VERSION_TEXT | |
| 382 | + ); | |
| 383 | +#else | |
| 384 | + return lib3270_strdup_printf("%s version %s-%s build %s",PACKAGE_NAME,PACKAGE_VERSION,PACKAGE_RELEASE,RPQ_TIMESTAMP_VALUE); | |
| 385 | +#endif // HAVE_LIBSSL | |
| 366 | 386 | } |
| 367 | 387 | |
| 368 | 388 | void lib3270_popup_an_errno(H3270 *hSession, int errn, const char *fmt, ...) | ... | ... |
src/core/version.c.in
| ... | ... | @@ -1,8 +0,0 @@ |
| 1 | -char *build = "@PACKAGE_TARNAME@ v@PACKAGE_VERSION@ @RPQ_BUILD_DATE@ @SCCS_USER@"; | |
| 2 | -char *app_defaults_version = "@PACKAGE_VERSION@"; | |
| 3 | -char *sccsid = "@(#)@PACKAGE_TARNAME@ v@PACKAGE_VERSION@ @SCCS_DATE@ @SCCS_USER@"; | |
| 4 | - | |
| 5 | -const char *build_rpq_timestamp = "@RPQ_TIMESTAMP@"; | |
| 6 | -const char *build_rpq_version = "@PACKAGE_VERSION@"; | |
| 7 | -const char *build_rpq_revision = "@RPQ_REVISION@"; | |
| 8 | - |
src/include/config.h.in
| ... | ... | @@ -39,6 +39,12 @@ |
| 39 | 39 | #undef LIB3270_NAME |
| 40 | 40 | #undef GETTEXT_PACKAGE |
| 41 | 41 | |
| 42 | + #undef RPQ_BUILD_DATE | |
| 43 | + #undef RPQ_TIMESTAMP_VALUE | |
| 44 | + #undef RPQ_REVISION | |
| 45 | + #undef SCCS_USER | |
| 46 | + #undef SCCS_DATE | |
| 47 | + | |
| 42 | 48 | /* Default settings */ |
| 43 | 49 | |
| 44 | 50 | /** @brief The lib3270's default host URL */ | ... | ... |
src/include/internals.h
| ... | ... | @@ -136,12 +136,14 @@ enum iaction { |
| 136 | 136 | }; |
| 137 | 137 | |
| 138 | 138 | // Version strings |
| 139 | +/* | |
| 139 | 140 | LIB3270_INTERNAL const char * build; |
| 140 | 141 | LIB3270_INTERNAL const char * app_defaults_version; |
| 141 | 142 | LIB3270_INTERNAL const char * sccsid; |
| 142 | 143 | LIB3270_INTERNAL const char * build_rpq_timestamp; |
| 143 | 144 | LIB3270_INTERNAL const char * build_rpq_version; |
| 144 | 145 | LIB3270_INTERNAL const char * build_rpq_revision; |
| 146 | +*/ | |
| 145 | 147 | |
| 146 | 148 | #if defined(X3270_DBCS) /*[*/ |
| 147 | 149 | LIB3270_INTERNAL Boolean dbcs; |
| ... | ... | @@ -662,6 +664,13 @@ struct _h3270 |
| 662 | 664 | char host; |
| 663 | 665 | LIB3270_SSL_STATE state; |
| 664 | 666 | unsigned long error; |
| 667 | + | |
| 668 | + struct | |
| 669 | + { | |
| 670 | + int min_version; ///< @brief The minimum supported protocol version. | |
| 671 | + int max_version; ///< @brief The maximum supported protocol version. | |
| 672 | + } protocol; | |
| 673 | + | |
| 665 | 674 | #ifdef SSL_ENABLE_CRL_CHECK |
| 666 | 675 | struct |
| 667 | 676 | { |
| ... | ... | @@ -741,7 +750,7 @@ LIB3270_INTERNAL void lib3270_sock_disconnect(H3270 *hSession); |
| 741 | 750 | |
| 742 | 751 | LIB3270_INTERNAL int lib3270_default_event_dispatcher(H3270 *hSession, int block); |
| 743 | 752 | |
| 744 | -LIB3270_INTERNAL void do_select(H3270 *h, unsigned int start, unsigned int end, unsigned int rect); | |
| 753 | +LIB3270_INTERNAL int do_select(H3270 *h, unsigned int start, unsigned int end, unsigned int rect); | |
| 745 | 754 | |
| 746 | 755 | |
| 747 | 756 | /** | ... | ... |
src/include/lib3270/properties.h
| ... | ... | @@ -220,6 +220,14 @@ |
| 220 | 220 | */ |
| 221 | 221 | LIB3270_EXPORT void lib3270_disable_crl_download(H3270 *hSession); |
| 222 | 222 | |
| 223 | + /** | |
| 224 | + * @brief Get lib3270 version info. | |
| 225 | + * | |
| 226 | + * @return String with lib3270 version info (release it with lib3270_free). | |
| 227 | + */ | |
| 228 | + LIB3270_EXPORT char * lib3270_get_version_info(void); | |
| 229 | + | |
| 230 | + | |
| 223 | 231 | #ifdef __cplusplus |
| 224 | 232 | } |
| 225 | 233 | #endif | ... | ... |
src/selection/actions.c
| ... | ... | @@ -100,11 +100,10 @@ LIB3270_EXPORT int lib3270_select_region(H3270 *h, int start, int end) |
| 100 | 100 | maxlen = (h->view.rows * h->view.cols); |
| 101 | 101 | |
| 102 | 102 | // Check bounds |
| 103 | - if(start < 0 || start > maxlen || end < 0 || end > maxlen || start > end) | |
| 103 | + if(start < 0 || start > maxlen || end < 0 || end > maxlen) | |
| 104 | 104 | return EINVAL; |
| 105 | 105 | |
| 106 | 106 | do_select(h,start,end,lib3270_get_toggle(h,LIB3270_TOGGLE_RECTANGLE_SELECT)); |
| 107 | - cursor_move(h,h->select.end); | |
| 108 | 107 | |
| 109 | 108 | return 0; |
| 110 | 109 | } | ... | ... |
src/selection/selection.c
| ... | ... | @@ -167,14 +167,16 @@ void toggle_rectselect(H3270 *hSession, const struct lib3270_toggle *t, LIB3270_ |
| 167 | 167 | update_selected_region(hSession); |
| 168 | 168 | } |
| 169 | 169 | |
| 170 | -void do_select(H3270 *hSession, unsigned int start, unsigned int end, unsigned int rect) | |
| 170 | +int do_select(H3270 *hSession, unsigned int start, unsigned int end, unsigned int rect) | |
| 171 | 171 | { |
| 172 | - if(end > (hSession->view.rows * hSession->view.cols)) | |
| 173 | - return; | |
| 172 | + unsigned int length = (hSession->view.rows * hSession->view.cols); | |
| 173 | + | |
| 174 | + if(end > length || start > length) | |
| 175 | + return errno = EINVAL; | |
| 174 | 176 | |
| 175 | 177 | // Do we really need to change selection? |
| 176 | 178 | if( ((int) start) == hSession->select.start && ((int) end) == hSession->select.end && hSession->selected) |
| 177 | - return; | |
| 179 | + return 0; | |
| 178 | 180 | |
| 179 | 181 | // Start address is inside the screen? |
| 180 | 182 | hSession->select.start = start; |
| ... | ... | @@ -200,6 +202,7 @@ void do_select(H3270 *hSession, unsigned int start, unsigned int end, unsigned i |
| 200 | 202 | |
| 201 | 203 | hSession->cbk.update_selection(hSession,start,end); |
| 202 | 204 | |
| 205 | + return 0; | |
| 203 | 206 | } |
| 204 | 207 | |
| 205 | 208 | LIB3270_EXPORT unsigned char lib3270_get_selection_flags(H3270 *hSession, int baddr) | ... | ... |
src/ssl/linux/init.c
src/ssl/negotiate.c
| ... | ... | @@ -137,6 +137,52 @@ int x509_store_ctx_error_callback(int ok, X509_STORE_CTX GNUC_UNUSED(*ctx)) |
| 137 | 137 | } |
| 138 | 138 | #endif // SSL_ENABLE_CRL_CHECK |
| 139 | 139 | |
| 140 | +static const struct ssl_protocol { | |
| 141 | + int id; | |
| 142 | + const char * description; | |
| 143 | +} ssl_protocols[] = { | |
| 144 | + | |
| 145 | + { | |
| 146 | + .id = SSL3_VERSION, | |
| 147 | + .description = SSL_TXT_SSLV3 | |
| 148 | + }, | |
| 149 | + { | |
| 150 | + .id = TLS1_VERSION, | |
| 151 | + .description = SSL_TXT_TLSV1 | |
| 152 | + }, | |
| 153 | + { | |
| 154 | + .id = TLS1_1_VERSION, | |
| 155 | + .description = SSL_TXT_TLSV1_1 | |
| 156 | + }, | |
| 157 | + { | |
| 158 | + .id = TLS1_2_VERSION, | |
| 159 | + .description = SSL_TXT_TLSV1_2 | |
| 160 | + }, | |
| 161 | + { | |
| 162 | + .id = DTLS1_VERSION, | |
| 163 | + .description = "DTLSv1" | |
| 164 | + }, | |
| 165 | + { | |
| 166 | + .id = DTLS1_2_VERSION, | |
| 167 | + .description = "DTLSv2" | |
| 168 | + } | |
| 169 | + | |
| 170 | +}; | |
| 171 | + | |
| 172 | +static const struct ssl_protocol * get_protocol_from_id(int id) { | |
| 173 | + | |
| 174 | + if(id < 1) | |
| 175 | + return NULL; | |
| 176 | + | |
| 177 | + id--; | |
| 178 | + | |
| 179 | + if( ((size_t) id) > (sizeof(ssl_protocols)/sizeof(ssl_protocols[0]))) | |
| 180 | + return NULL; | |
| 181 | + | |
| 182 | + return ssl_protocols + id; | |
| 183 | + | |
| 184 | +} | |
| 185 | + | |
| 140 | 186 | static int background_ssl_negotiation(H3270 *hSession, void *message) |
| 141 | 187 | { |
| 142 | 188 | int rv; |
| ... | ... | @@ -150,6 +196,40 @@ static int background_ssl_negotiation(H3270 *hSession, void *message) |
| 150 | 196 | } |
| 151 | 197 | |
| 152 | 198 | /* Set up the TLS/SSL connection. */ |
| 199 | + const struct ssl_protocol * protocol; | |
| 200 | + | |
| 201 | + if( (protocol = get_protocol_from_id(hSession->ssl.protocol.min_version)) != NULL ) | |
| 202 | + { | |
| 203 | +#if (OPENSSL_VERSION_NUMBER >= 0x1010009fL) | |
| 204 | + if(SSL_set_min_proto_version(hSession->ssl.con,protocol->id) == 1) | |
| 205 | + { | |
| 206 | + trace_ssl(hSession,"Minimum protocol version set to %s\n",protocol->description); | |
| 207 | + } | |
| 208 | + else | |
| 209 | + { | |
| 210 | + lib3270_write_log(hSession,"ssl","Can't set minimum protocol version to %s",protocol->description); | |
| 211 | + } | |
| 212 | +#else | |
| 213 | + trace_ssl(hSession,"Can't set minimum protocol version to %s\n",protocol->description); | |
| 214 | +#endif // OPENSSL_VERSION_NUMBER | |
| 215 | + } | |
| 216 | + | |
| 217 | + if( (protocol = get_protocol_from_id(hSession->ssl.protocol.max_version)) != NULL ) | |
| 218 | + { | |
| 219 | +#if (OPENSSL_VERSION_NUMBER >= 0x1010009fL) | |
| 220 | + if(SSL_set_max_proto_version(hSession->ssl.con,protocol->id) == 1) | |
| 221 | + { | |
| 222 | + trace_ssl(hSession,"Maximum protocol version set to %s\n",protocol->description); | |
| 223 | + } | |
| 224 | + else | |
| 225 | + { | |
| 226 | + lib3270_write_log(hSession,"ssl","Can't set maximum protocol version to %s",protocol->description); | |
| 227 | + } | |
| 228 | +#else | |
| 229 | + trace_ssl(hSession,"Can't set maximum protocol version to %s\n",protocol->description); | |
| 230 | +#endif // OPENSSL_VERSION_NUMBER | |
| 231 | + } | |
| 232 | + | |
| 153 | 233 | if(SSL_set_fd(hSession->ssl.con, hSession->connection.sock) != 1) |
| 154 | 234 | { |
| 155 | 235 | trace_ssl(hSession,"%s","SSL_set_fd failed!\n"); | ... | ... |
src/testprogram/testprogram.c
| ... | ... | @@ -40,7 +40,7 @@ int main(int argc, char *argv[]) |
| 40 | 40 | setlocale( LC_ALL, "" ); |
| 41 | 41 | #endif |
| 42 | 42 | |
| 43 | - textdomain("pw3270"); | |
| 43 | + textdomain("lib3270"); | |
| 44 | 44 | |
| 45 | 45 | // #pragma GCC diagnostic push |
| 46 | 46 | // #pragma GCC diagnostic ignored "-Wzero-as-null-pointer-constant" |
| ... | ... | @@ -57,7 +57,8 @@ int main(int argc, char *argv[]) |
| 57 | 57 | H3270 * h = lib3270_session_new(""); |
| 58 | 58 | int rc = 0; |
| 59 | 59 | |
| 60 | - printf("3270 session %p created\n]",h); | |
| 60 | + lib3270_autoptr(char) version_info = lib3270_get_version_info(); | |
| 61 | + printf("3270 session %p created\n%s\n]",h,version_info); | |
| 61 | 62 | |
| 62 | 63 | #ifdef HAVE_LDAP |
| 63 | 64 | lib3270_crl_set_preferred_protocol(h,"ldap"); | ... | ... |
win/x86_32/mingw32-lib3270.spec
| 1 | 1 | # |
| 2 | -# spec file for package mingw32-lib3270 | |
| 2 | +# spec file for package mingw32-%{_libname} | |
| 3 | 3 | # |
| 4 | -# Copyright (c) 2014 SUSE LINUX Products GmbH, Nuernberg, Germany. | |
| 4 | +# Copyright (c) 2015 SUSE LINUX GmbH, Nuernberg, Germany. | |
| 5 | 5 | # Copyright (C) <2008> <Banco do Brasil S.A.> |
| 6 | 6 | # |
| 7 | 7 | # All modifications and additions to the file contributed by third parties |
| ... | ... | @@ -16,6 +16,9 @@ |
| 16 | 16 | # Please submit bugfixes or comments via http://bugs.opensuse.org/ |
| 17 | 17 | # |
| 18 | 18 | |
| 19 | +%define _libname lib3270 | |
| 20 | +%define _product pw3270 | |
| 21 | + | |
| 19 | 22 | %define __strip %{_mingw32_strip} |
| 20 | 23 | %define __objdump %{_mingw32_objdump} |
| 21 | 24 | %define _use_internal_dependency_generator 0 |
| ... | ... | @@ -23,32 +26,27 @@ |
| 23 | 26 | %define __find_provides %{_mingw32_findprovides} |
| 24 | 27 | %define __os_install_post %{_mingw32_debug_install_post} \ |
| 25 | 28 | %{_mingw32_install_post} |
| 29 | + | |
| 30 | +#---[ Package header ]------------------------------------------------------------------------------------------------ | |
| 26 | 31 | |
| 27 | -#---[ Main package ]-------------------------------------------------------------------------------------------------- | |
| 28 | - | |
| 29 | -Summary: TN3270 Access library | |
| 30 | -Name: mingw32-lib3270 | |
| 32 | +Summary: TN3270 access library for 32 bits Windows | |
| 33 | +Name: mingw32-%{_libname} | |
| 31 | 34 | Version: 5.2 |
| 32 | - | |
| 33 | -%define MAJOR_VERSION %(echo %{version} | cut -d. -f1) | |
| 34 | -%define MINOR_VERSION %(echo %{version} | cut -d. -f2) | |
| 35 | -%define _libvrs %{MAJOR_VERSION}_%{MINOR_VERSION} | |
| 36 | - | |
| 37 | 35 | Release: 0 |
| 38 | -License: GPL-2.0 | |
| 36 | +License: LGPL-3.0 | |
| 39 | 37 | |
| 40 | 38 | Source: lib3270-%{version}.tar.xz |
| 41 | 39 | |
| 42 | -Url: https://portal.softwarepublico.gov.br/social/pw3270/ | |
| 40 | +URL: https://github.com/PerryWerneck/lib3270 | |
| 43 | 41 | |
| 44 | -Group: Development/Libraries/C and C++ | |
| 42 | +Group: System/Libraries | |
| 45 | 43 | BuildRoot: /var/tmp/%{name}-%{version} |
| 46 | 44 | |
| 47 | -Provides: mingw32(lib:3270) = %{version} | |
| 48 | - | |
| 49 | -BuildRequires: autoconf | |
| 45 | +BuildRequires: autoconf >= 2.61 | |
| 50 | 46 | BuildRequires: automake |
| 51 | -BuildRequires: gettext-tools | |
| 47 | +BuildRequires: gettext-devel | |
| 48 | +BuildRequires: xz | |
| 49 | +BuildRequires: fdupes | |
| 52 | 50 | |
| 53 | 51 | BuildRequires: mingw32-cross-binutils |
| 54 | 52 | BuildRequires: mingw32-cross-gcc |
| ... | ... | @@ -61,77 +59,82 @@ BuildRequires: mingw32(lib:iconv) |
| 61 | 59 | BuildRequires: mingw32(lib:intl) |
| 62 | 60 | |
| 63 | 61 | %description |
| 62 | +TN3270 access library, originally designed as part of the %{_product} application. | |
| 64 | 63 | |
| 65 | -TN3270 access library originally designed as part of the pw3270 application. | |
| 64 | +For more details, see https://softwarepublico.gov.br/social/pw3270/ . | |
| 66 | 65 | |
| 67 | -See more details at https://softwarepublico.gov.br/social/pw3270/ | |
| 66 | +#---[ Library ]------------------------------------------------------------------------------------------------------- | |
| 68 | 67 | |
| 69 | -#---[ Development ]--------------------------------------------------------------------------------------------------- | |
| 68 | +%define MAJOR_VERSION %(echo %{version} | cut -d. -f1) | |
| 69 | +%define MINOR_VERSION %(echo %{version} | cut -d. -f2) | |
| 70 | +%define _libvrs %{MAJOR_VERSION}_%{MINOR_VERSION} | |
| 70 | 71 | |
| 71 | -%package devel | |
| 72 | +%package -n %{name}-%{_libvrs} | |
| 73 | +Summary: TN3270 Access library | |
| 74 | +Group: Development/Libraries/C and C++ | |
| 72 | 75 | |
| 73 | -Summary: TN3270 Access library development files | |
| 74 | -Group: Development/Libraries/C and C++ | |
| 75 | -Requires: %{name} = %{version} | |
| 76 | +%description -n %{name}-%{_libvrs} | |
| 77 | +TN3270 access library, originally designed as part of the %{_product} application. | |
| 76 | 78 | |
| 77 | -%description devel | |
| 79 | +For more details, see https://softwarepublico.gov.br/social/pw3270/ . | |
| 78 | 80 | |
| 79 | -TN3270 access library for C development files. | |
| 81 | +%package devel | |
| 80 | 82 | |
| 81 | -Originally designed as part of the pw3270 application. | |
| 83 | +Summary: TN3270 Access library development files | |
| 84 | +Group: Development/Libraries/C and C++ | |
| 85 | +Requires: %{name}-%{_libvrs} = %{version} | |
| 82 | 86 | |
| 83 | -See more details at https://softwarepublico.gov.br/social/pw3270/ | |
| 87 | +%description devel | |
| 88 | +Header files for the TN3270 access library. | |
| 84 | 89 | |
| 85 | 90 | #---[ Build & Install ]----------------------------------------------------------------------------------------------- |
| 86 | 91 | |
| 87 | 92 | %prep |
| 88 | 93 | %setup -n lib3270-%{version} |
| 89 | 94 | |
| 90 | -NOCONFIGURE=1 ./autogen.sh | |
| 95 | +NOCONFIGURE=1 \ | |
| 96 | + ./autogen.sh | |
| 91 | 97 | |
| 92 | 98 | %{_mingw32_configure} |
| 93 | 99 | |
| 94 | 100 | %build |
| 95 | -make clean | |
| 96 | -make all | |
| 101 | +make all %{?_smp_mflags} | |
| 97 | 102 | |
| 98 | 103 | %{_mingw32_strip} \ |
| 99 | 104 | --strip-all \ |
| 100 | 105 | .bin/Release/*.dll |
| 101 | 106 | |
| 107 | + | |
| 102 | 108 | %install |
| 103 | 109 | %{_mingw32_makeinstall} |
| 110 | +%_mingw32_find_lang %{_libname} langfiles | |
| 111 | +%fdupes %{buildroot} | |
| 104 | 112 | |
| 105 | -%clean | |
| 106 | -rm -rf %{buildroot} | |
| 107 | - | |
| 108 | -#---[ Files ]--------------------------------------------------------------------------------------------------------- | |
| 109 | - | |
| 110 | -%files | |
| 113 | +%files -n %{name}-%{_libvrs} -f langfiles | |
| 111 | 114 | %defattr(-,root,root) |
| 112 | -%doc AUTHORS LICENSE README.md | |
| 113 | 115 | |
| 114 | -%{_mingw32_libdir}/lib3270.dll | |
| 115 | -%{_mingw32_libdir}/lib3270.dll.%{MAJOR_VERSION} | |
| 116 | -%{_mingw32_libdir}/lib3270.dll.%{MAJOR_VERSION}.%{MINOR_VERSION} | |
| 116 | +%doc AUTHORS README.md | |
| 117 | +%license LICENSE | |
| 117 | 118 | |
| 118 | -%dir %{_mingw32_datadir}/pw3270 | |
| 119 | +%dir %{_mingw32_datadir}/%{_product} | |
| 120 | + | |
| 121 | +%{_mingw32_bindir}/*.dll | |
| 119 | 122 | |
| 120 | 123 | %files devel |
| 121 | 124 | %defattr(-,root,root) |
| 122 | 125 | |
| 123 | -%{_mingw32_includedir}/lib3270 | |
| 126 | +%{_mingw32_libdir}/*.a | |
| 124 | 127 | |
| 125 | 128 | %{_mingw32_includedir}/*.h |
| 129 | +%{_mingw32_includedir}/lib3270 | |
| 130 | + | |
| 126 | 131 | %{_mingw32_libdir}/pkgconfig/*.pc |
| 127 | -%{_mingw32_libdir}/*.a | |
| 128 | -%{_mingw32_libdir}/*.lib | |
| 129 | 132 | |
| 130 | -%dir %{_mingw32_datadir}/pw3270/def | |
| 131 | -%{_mingw32_datadir}/pw3270/def/*.def | |
| 133 | +%dir %{_mingw32_datadir}/%{_product}/def | |
| 134 | +%{_mingw32_datadir}/%{_product}/def/*.def | |
| 135 | +%{_mingw32_datadir}/%{_product}/def/*.mak | |
| 132 | 136 | |
| 133 | -%dir %{_mingw32_datadir}/pw3270/pot | |
| 134 | -%{_mingw32_datadir}/pw3270/pot/*.pot | |
| 137 | +%dir %{_mingw32_datadir}/%{_product}/pot | |
| 138 | +%{_mingw32_datadir}/%{_product}/pot/*.pot | |
| 135 | 139 | |
| 136 | 140 | %changelog |
| 137 | - | ... | ... |
win/x86_64/mingw64-lib3270.spec
| 1 | 1 | # |
| 2 | -# spec file for package mingw64-lib3279 | |
| 2 | +# spec file for package mingw64-%{_libname} | |
| 3 | 3 | # |
| 4 | -# Copyright (c) 2014 SUSE LINUX Products GmbH, Nuernberg, Germany. | |
| 4 | +# Copyright (c) 2015 SUSE LINUX GmbH, Nuernberg, Germany. | |
| 5 | 5 | # Copyright (C) <2008> <Banco do Brasil S.A.> |
| 6 | 6 | # |
| 7 | 7 | # All modifications and additions to the file contributed by third parties |
| ... | ... | @@ -16,6 +16,9 @@ |
| 16 | 16 | # Please submit bugfixes or comments via http://bugs.opensuse.org/ |
| 17 | 17 | # |
| 18 | 18 | |
| 19 | +%define _libname lib3270 | |
| 20 | +%define _product pw3270 | |
| 21 | + | |
| 19 | 22 | %define __strip %{_mingw64_strip} |
| 20 | 23 | %define __objdump %{_mingw64_objdump} |
| 21 | 24 | %define _use_internal_dependency_generator 0 |
| ... | ... | @@ -23,34 +26,27 @@ |
| 23 | 26 | %define __find_provides %{_mingw64_findprovides} |
| 24 | 27 | %define __os_install_post %{_mingw64_debug_install_post} \ |
| 25 | 28 | %{_mingw64_install_post} |
| 29 | + | |
| 30 | +#---[ Package header ]------------------------------------------------------------------------------------------------ | |
| 26 | 31 | |
| 27 | -#---[ Main package ]-------------------------------------------------------------------------------------------------- | |
| 28 | - | |
| 29 | -Summary: TN3270 Access library | |
| 30 | -Name: mingw64-lib3270 | |
| 32 | +Summary: TN3270 access library for 64 bits Windows | |
| 33 | +Name: mingw64-%{_libname} | |
| 31 | 34 | Version: 5.2 |
| 32 | - | |
| 33 | -%define MAJOR_VERSION %(echo %{version} | cut -d. -f1) | |
| 34 | -%define MINOR_VERSION %(echo %{version} | cut -d. -f2) | |
| 35 | -%define _libvrs %{MAJOR_VERSION}_%{MINOR_VERSION} | |
| 36 | - | |
| 37 | - | |
| 38 | 35 | Release: 0 |
| 39 | -License: GPL-2.0 | |
| 36 | +License: LGPL-3.0 | |
| 40 | 37 | |
| 41 | 38 | Source: lib3270-%{version}.tar.xz |
| 42 | 39 | |
| 43 | -Url: https://portal.softwarepublico.gov.br/social/pw3270/ | |
| 40 | +URL: https://github.com/PerryWerneck/lib3270 | |
| 44 | 41 | |
| 45 | -Group: Development/Libraries/C and C++ | |
| 42 | +Group: System/Libraries | |
| 46 | 43 | BuildRoot: /var/tmp/%{name}-%{version} |
| 47 | 44 | |
| 48 | -Provides: mingw64(lib:3270) = %{version} | |
| 49 | -Provides: mingw64(lib:3270-%{_libvrs}) = %{version} | |
| 50 | - | |
| 51 | -BuildRequires: autoconf | |
| 45 | +BuildRequires: autoconf >= 2.61 | |
| 52 | 46 | BuildRequires: automake |
| 53 | -BuildRequires: gettext-tools | |
| 47 | +BuildRequires: gettext-devel | |
| 48 | +BuildRequires: xz | |
| 49 | +BuildRequires: fdupes | |
| 54 | 50 | |
| 55 | 51 | BuildRequires: mingw64-cross-binutils |
| 56 | 52 | BuildRequires: mingw64-cross-gcc |
| ... | ... | @@ -63,80 +59,82 @@ BuildRequires: mingw64(lib:iconv) |
| 63 | 59 | BuildRequires: mingw64(lib:intl) |
| 64 | 60 | |
| 65 | 61 | %description |
| 62 | +TN3270 access library, originally designed as part of the %{_product} application. | |
| 66 | 63 | |
| 67 | -TN3270 access library originally designed as part of the pw3270 application. | |
| 68 | - | |
| 69 | -See more details at https://softwarepublico.gov.br/social/pw3270/ | |
| 64 | +For more details, see https://softwarepublico.gov.br/social/pw3270/ . | |
| 70 | 65 | |
| 71 | -#---[ Development ]--------------------------------------------------------------------------------------------------- | |
| 66 | +#---[ Library ]------------------------------------------------------------------------------------------------------- | |
| 72 | 67 | |
| 73 | -%package devel | |
| 68 | +%define MAJOR_VERSION %(echo %{version} | cut -d. -f1) | |
| 69 | +%define MINOR_VERSION %(echo %{version} | cut -d. -f2) | |
| 70 | +%define _libvrs %{MAJOR_VERSION}_%{MINOR_VERSION} | |
| 74 | 71 | |
| 75 | -Summary: TN3270 Access library development files | |
| 76 | -Group: Development/Libraries/C and C++ | |
| 77 | -Requires: %{name} = %{version} | |
| 72 | +%package -n %{name}-%{_libvrs} | |
| 73 | +Summary: TN3270 Access library | |
| 74 | +Group: Development/Libraries/C and C++ | |
| 78 | 75 | |
| 79 | -Provides: mingw64-lib3270-devel = %{version} | |
| 80 | -Conflicts: otherproviders(mingw64-lib3270-devel) | |
| 76 | +%description -n %{name}-%{_libvrs} | |
| 77 | +TN3270 access library, originally designed as part of the %{_product} application. | |
| 81 | 78 | |
| 82 | -%description devel | |
| 79 | +For more details, see https://softwarepublico.gov.br/social/pw3270/ . | |
| 83 | 80 | |
| 84 | -TN3270 access library for C development files. | |
| 81 | +%package devel | |
| 85 | 82 | |
| 86 | -Originally designed as part of the pw3270 application. | |
| 83 | +Summary: TN3270 Access library development files | |
| 84 | +Group: Development/Libraries/C and C++ | |
| 85 | +Requires: %{name}-%{_libvrs} = %{version} | |
| 87 | 86 | |
| 88 | -See more details at https://softwarepublico.gov.br/social/pw3270/ | |
| 87 | +%description devel | |
| 88 | +Header files for the TN3270 access library. | |
| 89 | 89 | |
| 90 | 90 | #---[ Build & Install ]----------------------------------------------------------------------------------------------- |
| 91 | 91 | |
| 92 | 92 | %prep |
| 93 | 93 | %setup -n lib3270-%{version} |
| 94 | 94 | |
| 95 | -NOCONFIGURE=1 ./autogen.sh | |
| 95 | +NOCONFIGURE=1 \ | |
| 96 | + ./autogen.sh | |
| 96 | 97 | |
| 97 | -%{_mingw64_configure} \ | |
| 98 | - --with-sdk-version=%{version} | |
| 98 | +%{_mingw64_configure} | |
| 99 | 99 | |
| 100 | 100 | %build |
| 101 | -make clean | |
| 102 | -make all | |
| 101 | +make all %{?_smp_mflags} | |
| 103 | 102 | |
| 104 | 103 | %{_mingw64_strip} \ |
| 105 | 104 | --strip-all \ |
| 106 | 105 | .bin/Release/*.dll |
| 107 | 106 | |
| 107 | + | |
| 108 | 108 | %install |
| 109 | 109 | %{_mingw64_makeinstall} |
| 110 | +%_mingw64_find_lang %{_libname} langfiles | |
| 111 | +%fdupes %{buildroot} | |
| 110 | 112 | |
| 111 | -%clean | |
| 112 | -rm -rf %{buildroot} | |
| 113 | - | |
| 114 | -#---[ Files ]--------------------------------------------------------------------------------------------------------- | |
| 115 | - | |
| 116 | -%files | |
| 113 | +%files -n %{name}-%{_libvrs} -f langfiles | |
| 117 | 114 | %defattr(-,root,root) |
| 118 | -%doc AUTHORS LICENSE README.md | |
| 119 | 115 | |
| 120 | -%{_mingw64_libdir}/lib3270.dll | |
| 121 | -%{_mingw64_libdir}/lib3270.dll.%{MAJOR_VERSION} | |
| 122 | -%{_mingw64_libdir}/lib3270.dll.%{MAJOR_VERSION}.%{MINOR_VERSION} | |
| 116 | +%doc AUTHORS README.md | |
| 117 | +%license LICENSE | |
| 118 | + | |
| 119 | +%dir %{_mingw64_datadir}/%{_product} | |
| 123 | 120 | |
| 124 | -%dir %{_mingw64_datadir}/pw3270 | |
| 121 | +%{_mingw64_bindir}/*.dll | |
| 125 | 122 | |
| 126 | 123 | %files devel |
| 127 | 124 | %defattr(-,root,root) |
| 128 | 125 | |
| 129 | -%{_mingw64_includedir}/lib3270 | |
| 126 | +%{_mingw64_libdir}/*.a | |
| 130 | 127 | |
| 131 | 128 | %{_mingw64_includedir}/*.h |
| 129 | +%{_mingw64_includedir}/lib3270 | |
| 130 | + | |
| 132 | 131 | %{_mingw64_libdir}/pkgconfig/*.pc |
| 133 | -%{_mingw64_libdir}/*.a | |
| 134 | -%{_mingw64_libdir}/*.lib | |
| 135 | 132 | |
| 136 | -%dir %{_mingw64_datadir}/pw3270/def | |
| 137 | -%{_mingw64_datadir}/pw3270/def/*.def | |
| 133 | +%dir %{_mingw64_datadir}/%{_product}/def | |
| 134 | +%{_mingw64_datadir}/%{_product}/def/*.def | |
| 135 | +%{_mingw64_datadir}/%{_product}/def/*.mak | |
| 138 | 136 | |
| 139 | -%dir %{_mingw64_datadir}/pw3270/pot | |
| 140 | -%{_mingw64_datadir}/pw3270/pot/*.pot | |
| 137 | +%dir %{_mingw64_datadir}/%{_product}/pot | |
| 138 | +%{_mingw64_datadir}/%{_product}/pot/*.pot | |
| 141 | 139 | |
| 142 | 140 | %changelog | ... | ... |