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 @@ | @@ -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,7 +19,9 @@ Building for Linux | ||
| 19 | 19 | ||
| 20 | 1. Get lib3270 sources from git | 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 | 2. Install the required libraries | 26 | 2. Install the required libraries |
| 25 | 27 | ||
| @@ -39,9 +41,11 @@ Building for Linux | @@ -39,9 +41,11 @@ Building for Linux | ||
| 39 | 41 | ||
| 40 | 3. Configure and build | 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 | Cross-compiling for Windows | 51 | Cross-compiling for Windows |
| @@ -52,29 +56,37 @@ Cross-compiling on SuSE Linux (Native or WSL) | @@ -52,29 +56,37 @@ Cross-compiling on SuSE Linux (Native or WSL) | ||
| 52 | 56 | ||
| 53 | 1. First add the MinGW Repositories for your SuSE version from: | 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 | 2. Get lib3270 sources from git | 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 | 3. Install cross compilers | 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 | 3. Configure build | 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 | 4. Build | 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 | Compiling for Windows (With MSYS2) | 91 | Compiling for Windows (With MSYS2) |
| 80 | ---------------------------------- | 92 | ---------------------------------- |
| @@ -87,20 +99,62 @@ Compiling for Windows (With MSYS2) | @@ -87,20 +99,62 @@ Compiling for Windows (With MSYS2) | ||
| 87 | 99 | ||
| 88 | 2. Install devel packages | 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 | 3. Get lib3270 sources from git using the mingw shell | 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 | 4. Build library using the mingw shell | 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 | 5. Install | 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,9 +187,9 @@ app_rls_minor=$(echo $app_cv_release.0.0 | cut -d. -f2) | ||
| 187 | 187 | ||
| 188 | AC_DEFINE_UNQUOTED(PACKAGE_MAJOR_RELEASE, $app_rls_major) | 188 | AC_DEFINE_UNQUOTED(PACKAGE_MAJOR_RELEASE, $app_rls_major) |
| 189 | AC_DEFINE_UNQUOTED(PACKAGE_MINOR_RELEASE, $app_rls_minor) | 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 | AC_SUBST(PACKAGE_MAJOR_RELEASE,$app_rls_major) | 193 | AC_SUBST(PACKAGE_MAJOR_RELEASE,$app_rls_major) |
| 194 | AC_SUBST(PACKAGE_MINOR_RELEASE,$app_rls_minor) | 194 | AC_SUBST(PACKAGE_MINOR_RELEASE,$app_rls_minor) |
| 195 | 195 | ||
| @@ -201,12 +201,12 @@ rpq_revision=`$date +"%Y%m%d"` | @@ -201,12 +201,12 @@ rpq_revision=`$date +"%Y%m%d"` | ||
| 201 | sccs_date=`$date +%Y/%m/%d` | 201 | sccs_date=`$date +%Y/%m/%d` |
| 202 | sccs_user=$USER | 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 | dnl --------------------------------------------------------------------------- | 211 | dnl --------------------------------------------------------------------------- |
| 212 | dnl Check for libintl | 212 | dnl Check for libintl |
| @@ -665,8 +665,6 @@ AC_SUBST(INSTALL_PACKAGES) | @@ -665,8 +665,6 @@ AC_SUBST(INSTALL_PACKAGES) | ||
| 665 | AC_CONFIG_FILES(Makefile) | 665 | AC_CONFIG_FILES(Makefile) |
| 666 | AC_CONFIG_FILES(locale/Makefile) | 666 | AC_CONFIG_FILES(locale/Makefile) |
| 667 | 667 | ||
| 668 | -AC_CONFIG_FILES(src/core/version.c) | ||
| 669 | - | ||
| 670 | AC_CONFIG_FILES(sdk/lib3270.pc) | 668 | AC_CONFIG_FILES(sdk/lib3270.pc) |
| 671 | AC_CONFIG_FILES(sdk/lib3270-static.pc) | 669 | AC_CONFIG_FILES(sdk/lib3270-static.pc) |
| 672 | 670 |
locale/pt_BR.po
| @@ -5,8 +5,8 @@ msgid "" | @@ -5,8 +5,8 @@ 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: 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 | "Last-Translator: Perry Werneck <perry.werneck@gmail.com>\n" | 10 | "Last-Translator: Perry Werneck <perry.werneck@gmail.com>\n" |
| 11 | "Language-Team: Português <>\n" | 11 | "Language-Team: Português <>\n" |
| 12 | "Language: pt_BR\n" | 12 | "Language: pt_BR\n" |
| @@ -16,7 +16,8 @@ msgstr "" | @@ -16,7 +16,8 @@ msgstr "" | ||
| 16 | "X-Poedit-Language: Portuguese\n" | 16 | "X-Poedit-Language: Portuguese\n" |
| 17 | "X-Poedit-Country: BRAZIL\n" | 17 | "X-Poedit-Country: BRAZIL\n" |
| 18 | "X-Poedit-SourceCharset: utf-8\n" | 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 | "X-Generator: Gtranslator 2.91.7\n" | 21 | "X-Generator: Gtranslator 2.91.7\n" |
| 21 | 22 | ||
| 22 | #: src/core/ctlr.c:187 | 23 | #: src/core/ctlr.c:187 |
| @@ -79,7 +80,7 @@ msgstr "Erro 3270" | @@ -79,7 +80,7 @@ msgstr "Erro 3270" | ||
| 79 | msgid "3270 Warning" | 80 | msgid "3270 Warning" |
| 80 | msgstr "Alerta 3270" | 81 | msgstr "Alerta 3270" |
| 81 | 82 | ||
| 82 | -#: src/core/actions/table.c:512 | 83 | +#: src/core/actions/table.c:678 |
| 83 | msgid "3270-style backspace" | 84 | msgid "3270-style backspace" |
| 84 | msgstr "Backspace no estilo 3270" | 85 | msgstr "Backspace no estilo 3270" |
| 85 | 86 | ||
| @@ -91,7 +92,7 @@ msgstr "" | @@ -91,7 +92,7 @@ msgstr "" | ||
| 91 | "A CA certificate is invalid. Either it is not a CA or its extensions are not " | 92 | "A CA certificate is invalid. Either it is not a CA or its extensions are not " |
| 92 | "consistent with the supplied purpose." | 93 | "consistent with the supplied purpose." |
| 93 | 94 | ||
| 94 | -#: src/core/actions/table.c:526 | 95 | +#: src/core/actions/table.c:692 |
| 95 | msgid "ATTN key, per RFC 2355. Sends IP, regardless" | 96 | msgid "ATTN key, per RFC 2355. Sends IP, regardless" |
| 96 | msgstr "Tecla ATTN, pela RFC 2355" | 97 | msgstr "Tecla ATTN, pela RFC 2355" |
| 97 | 98 | ||
| @@ -136,7 +137,7 @@ msgstr "" | @@ -136,7 +137,7 @@ msgstr "" | ||
| 136 | msgid "An invalid SEND or RECEIVE parameter was sent to the host." | 137 | msgid "An invalid SEND or RECEIVE parameter was sent to the host." |
| 137 | msgstr "Um parametro de ENVIO/RECEBIMENTO inválido foi enviado para o host." | 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 | msgid "Attn" | 141 | msgid "Attn" |
| 141 | msgstr "Attn" | 142 | msgstr "Attn" |
| 142 | 143 | ||
| @@ -178,11 +179,11 @@ msgstr "Reconecta automaticamente caso o servidor desconecte" | @@ -178,11 +179,11 @@ msgstr "Reconecta automaticamente caso o servidor desconecte" | ||
| 178 | msgid "Awaiting chance to send an abort" | 179 | msgid "Awaiting chance to send an abort" |
| 179 | msgstr "Aguardando para enviar pedido de cancelamento" | 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 | msgid "Back space" | 183 | msgid "Back space" |
| 183 | msgstr "Back space" | 184 | msgstr "Back space" |
| 184 | 185 | ||
| 185 | -#: src/core/actions/table.c:338 | 186 | +#: src/core/actions/table.c:504 |
| 186 | msgid "Backspaces the cursor until it hits the front of a word" | 187 | msgid "Backspaces the cursor until it hits the front of a word" |
| 187 | msgstr "Volta o cursor até que atinga o início de uma palavra" | 188 | msgstr "Volta o cursor até que atinga o início de uma palavra" |
| 188 | 189 | ||
| @@ -202,7 +203,7 @@ msgstr "Cursor piscante" | @@ -202,7 +203,7 @@ msgstr "Cursor piscante" | ||
| 202 | msgid "Bold" | 203 | msgid "Bold" |
| 203 | msgstr "Negrito" | 204 | msgstr "Negrito" |
| 204 | 205 | ||
| 205 | -#: src/core/actions/table.c:539 | 206 | +#: src/core/actions/table.c:705 |
| 206 | msgid "Break" | 207 | msgid "Break" |
| 207 | msgstr "Break" | 208 | msgstr "Break" |
| 208 | 209 | ||
| @@ -258,7 +259,6 @@ msgid "Can't decode certificate revocation list" | @@ -258,7 +259,6 @@ msgid "Can't decode certificate revocation list" | ||
| 258 | msgstr "Não foi possível decodificar a lista de certificados revogados" | 259 | msgstr "Não foi possível decodificar a lista de certificados revogados" |
| 259 | 260 | ||
| 260 | #: src/ssl/linux/url.c:99 | 261 | #: src/ssl/linux/url.c:99 |
| 261 | -#, fuzzy | ||
| 262 | msgid "Can't decode certificate revocation list got from LDAP server" | 262 | msgid "Can't decode certificate revocation list got from LDAP server" |
| 263 | msgstr "" | 263 | msgstr "" |
| 264 | "Não foi possível decodificar a lista de certificados revogados obtida na " | 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,7 +316,7 @@ msgstr "Não foi possível setar o socket para o modo não blocante." | ||
| 316 | msgid "Can't start file transfer." | 316 | msgid "Can't start file transfer." |
| 317 | msgstr "Não foi possível iniciar transferência de arquivo." | 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 | msgid "Can't verify." | 320 | msgid "Can't verify." |
| 321 | msgstr "Não foi possível verificar" | 321 | msgstr "Não foi possível verificar" |
| 322 | 322 | ||
| @@ -338,7 +338,7 @@ msgstr "" | @@ -338,7 +338,7 @@ msgstr "" | ||
| 338 | msgid "Cant initialize the SSL context." | 338 | msgid "Cant initialize the SSL context." |
| 339 | msgstr "Erro ao inicializar contexto de segurança" | 339 | msgstr "Erro ao inicializar contexto de segurança" |
| 340 | 340 | ||
| 341 | -#: src/ssl/negotiate.c:159 | 341 | +#: src/ssl/negotiate.c:171 |
| 342 | msgid "" | 342 | msgid "" |
| 343 | "Cant set the file descriptor for the input/output facility for the TLS/SSL " | 343 | "Cant set the file descriptor for the input/output facility for the TLS/SSL " |
| 344 | "(encrypted) side of ssl." | 344 | "(encrypted) side of ssl." |
| @@ -374,15 +374,15 @@ msgstr "Falha na assinatura do certificado" | @@ -374,15 +374,15 @@ msgstr "Falha na assinatura do certificado" | ||
| 374 | msgid "Change screen size on alternative screen" | 374 | msgid "Change screen size on alternative screen" |
| 375 | msgstr "Mudar tamanho do terminal em tela alternativa" | 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 | msgid "Charset table" | 378 | msgid "Charset table" |
| 379 | msgstr "Tabela de caracteres" | 379 | msgstr "Tabela de caracteres" |
| 380 | 380 | ||
| 381 | -#: src/core/actions/table.c:422 | 381 | +#: src/core/actions/table.c:588 |
| 382 | msgid "Clear" | 382 | msgid "Clear" |
| 383 | msgstr "Limpar" | 383 | msgstr "Limpar" |
| 384 | 384 | ||
| 385 | -#: src/core/actions/table.c:423 | 385 | +#: src/core/actions/table.c:589 |
| 386 | msgid "Clear AID key" | 386 | msgid "Clear AID key" |
| 387 | msgstr "Clear AID" | 387 | msgstr "Clear AID" |
| 388 | 388 | ||
| @@ -407,7 +407,7 @@ msgstr "Conexão falhou" | @@ -407,7 +407,7 @@ msgstr "Conexão falhou" | ||
| 407 | msgid "Connection reset by peer" | 407 | msgid "Connection reset by peer" |
| 408 | msgstr "Conexão foi cancelada pelo servidor" | 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 | msgid "Connection state" | 411 | msgid "Connection state" |
| 412 | msgstr "Estado da conexão" | 412 | msgstr "Estado da conexão" |
| 413 | 413 | ||
| @@ -427,37 +427,37 @@ msgstr "Largura atua da tela em colunas" | @@ -427,37 +427,37 @@ msgstr "Largura atua da tela em colunas" | ||
| 427 | msgid "Cursor address" | 427 | msgid "Cursor address" |
| 428 | msgstr "Endereço do cursor" | 428 | msgstr "Endereço do cursor" |
| 429 | 429 | ||
| 430 | -#: src/core/actions/table.c:117 | 430 | +#: src/core/actions/table.c:158 |
| 431 | msgid "Cursor down 1 position" | 431 | msgid "Cursor down 1 position" |
| 432 | msgstr "Move cursor uma posição para baixo" | 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 | msgid "Cursor left 1 position" | 435 | msgid "Cursor left 1 position" |
| 436 | msgstr "Move o cursor 1 posição para a esquerda" | 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 | msgid "Cursor right 1 position" | 439 | msgid "Cursor right 1 position" |
| 440 | msgstr "Move o cursor uma posição para a direita" | 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 | msgid "Cursor to first field on next line or any lines after that" | 443 | msgid "Cursor to first field on next line or any lines after that" |
| 444 | msgstr "" | 444 | msgstr "" |
| 445 | "Move o cursor para o primeiro campo da próxima linha ou qualquer linhas " | 445 | "Move o cursor para o primeiro campo da próxima linha ou qualquer linhas " |
| 446 | "depois dela" | 446 | "depois dela" |
| 447 | 447 | ||
| 448 | -#: src/core/actions/table.c:187 | 448 | +#: src/core/actions/table.c:228 |
| 449 | msgid "Cursor to next unprotected word" | 449 | msgid "Cursor to next unprotected word" |
| 450 | msgstr "Move o cursor para a próxima palavra desprotegida" | 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 | msgid "Cursor to previous word" | 453 | msgid "Cursor to previous word" |
| 454 | msgstr "Move o cursor para a palavra anterior" | 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 | msgid "Cursor up 1 position" | 457 | msgid "Cursor up 1 position" |
| 458 | msgstr "Cursor para cima 1 posição" | 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 | msgid "DUP key" | 461 | msgid "DUP key" |
| 462 | msgstr "Tecla \"DUP\"" | 462 | msgstr "Tecla \"DUP\"" |
| 463 | 463 | ||
| @@ -469,15 +469,15 @@ msgstr "Erro na conversão de dados" | @@ -469,15 +469,15 @@ msgstr "Erro na conversão de dados" | ||
| 469 | msgid "Default host URL" | 469 | msgid "Default host URL" |
| 470 | msgstr "URL parão para acesso ao host" | 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 | msgid "Delete" | 473 | msgid "Delete" |
| 474 | msgstr "Apagar" | 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 | msgid "Delete field" | 477 | msgid "Delete field" |
| 478 | msgstr "Apagar campo" | 478 | msgstr "Apagar campo" |
| 479 | 479 | ||
| 480 | -#: src/core/actions/table.c:337 | 480 | +#: src/core/actions/table.c:503 |
| 481 | msgid "Delete word" | 481 | msgid "Delete word" |
| 482 | msgstr "Apaga palavra" | 482 | msgstr "Apaga palavra" |
| 483 | 483 | ||
| @@ -489,7 +489,7 @@ msgstr "Descrição do estado de segurança atual" | @@ -489,7 +489,7 @@ msgstr "Descrição do estado de segurança atual" | ||
| 489 | msgid "Device type rejected" | 489 | msgid "Device type rejected" |
| 490 | msgstr "Tipo de dispositivo rejeitado" | 490 | msgstr "Tipo de dispositivo rejeitado" |
| 491 | 491 | ||
| 492 | -#: src/core/actions/table.c:86 | 492 | +#: src/core/actions/table.c:127 |
| 493 | msgid "Disconnect from host" | 493 | msgid "Disconnect from host" |
| 494 | msgstr "Desconecta do servidor" | 494 | msgstr "Desconecta do servidor" |
| 495 | 495 | ||
| @@ -505,11 +505,11 @@ msgstr "Tabela de caracteres para a tela" | @@ -505,11 +505,11 @@ msgstr "Tabela de caracteres para a tela" | ||
| 505 | msgid "Display the cursor location in the OIA (the status line)" | 505 | msgid "Display the cursor location in the OIA (the status line)" |
| 506 | msgstr "Mostra posição do cursor na lista de informações ao operador" | 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 | msgid "Down" | 509 | msgid "Down" |
| 510 | msgstr "Descer" | 510 | msgstr "Descer" |
| 511 | 511 | ||
| 512 | -#: src/core/actions/table.c:483 | 512 | +#: src/core/actions/table.c:649 |
| 513 | msgid "Dup" | 513 | msgid "Dup" |
| 514 | msgstr "Dup" | 514 | msgstr "Dup" |
| 515 | 515 | ||
| @@ -533,31 +533,31 @@ msgstr "Habilita trace da negociação de segurança" | @@ -533,31 +533,31 @@ msgstr "Habilita trace da negociação de segurança" | ||
| 533 | msgid "Enable use of network keep alive" | 533 | msgid "Enable use of network keep alive" |
| 534 | msgstr "Habilita opção \"keep-alive\"" | 534 | msgstr "Habilita opção \"keep-alive\"" |
| 535 | 535 | ||
| 536 | -#: src/core/actions/table.c:439 | 536 | +#: src/core/actions/table.c:605 |
| 537 | msgid "Enter" | 537 | msgid "Enter" |
| 538 | msgstr "Enter" | 538 | msgstr "Enter" |
| 539 | 539 | ||
| 540 | -#: src/core/actions/table.c:408 | 540 | +#: src/core/actions/table.c:574 |
| 541 | msgid "Erase" | 541 | msgid "Erase" |
| 542 | msgstr "Apagar" | 542 | msgstr "Apagar" |
| 543 | 543 | ||
| 544 | -#: src/core/actions/table.c:380 | 544 | +#: src/core/actions/table.c:546 |
| 545 | msgid "Erase EOF" | 545 | msgid "Erase EOF" |
| 546 | msgstr "Erase EOF" | 546 | msgstr "Erase EOF" |
| 547 | 547 | ||
| 548 | -#: src/core/actions/table.c:394 | 548 | +#: src/core/actions/table.c:560 |
| 549 | msgid "Erase EOL" | 549 | msgid "Erase EOL" |
| 550 | msgstr "Erase EOL" | 550 | msgstr "Erase EOL" |
| 551 | 551 | ||
| 552 | -#: src/core/actions/table.c:381 | 552 | +#: src/core/actions/table.c:547 |
| 553 | msgid "Erase End Of Field" | 553 | msgid "Erase End Of Field" |
| 554 | msgstr "Apaga até o final do campo" | 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 | msgid "Erase End Of Line" | 557 | msgid "Erase End Of Line" |
| 558 | msgstr "Apaga até o final da linha" | 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 | msgid "Erase input" | 561 | msgid "Erase input" |
| 562 | msgstr "Apagar campos" | 562 | msgstr "Apagar campos" |
| 563 | 563 | ||
| @@ -576,7 +576,6 @@ msgid "Error \"%s\" writing to local file (rc=%d)" | @@ -576,7 +576,6 @@ msgid "Error \"%s\" writing to local file (rc=%d)" | ||
| 576 | msgstr "Erro \"%s\" gravando arquivo local (rc=%d)" | 576 | msgstr "Erro \"%s\" gravando arquivo local (rc=%d)" |
| 577 | 577 | ||
| 578 | #: src/ssl/linux/url.c:66 | 578 | #: src/ssl/linux/url.c:66 |
| 579 | -#, fuzzy | ||
| 580 | msgid "Error getting certificate revocation list" | 579 | msgid "Error getting certificate revocation list" |
| 581 | msgstr "Erro ao obter a lista de certificados revogados" | 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,11 +595,11 @@ msgstr "Erro ao ler ou gravar no host: Transferência cancelada" | ||
| 596 | msgid "Error writing file to host: file transfer canceled" | 595 | msgid "Error writing file to host: file transfer canceled" |
| 597 | msgstr "Erro ao gravar arquivo no host, transferência cancelada" | 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 | msgid "FM key" | 599 | msgid "FM key" |
| 601 | msgstr "Tecla \"FM\"" | 600 | msgstr "Tecla \"FM\"" |
| 602 | 601 | ||
| 603 | -#: src/core/actions/table.c:277 | 602 | +#: src/core/actions/table.c:443 |
| 604 | msgid "Field end" | 603 | msgid "Field end" |
| 605 | msgstr "Final do campo" | 604 | msgstr "Final do campo" |
| 606 | 605 | ||
| @@ -616,7 +615,7 @@ msgstr "Transferência completa com registros segmentados" | @@ -616,7 +615,7 @@ msgstr "Transferência completa com registros segmentados" | ||
| 616 | msgid "File transfer is already active in this session." | 615 | msgid "File transfer is already active in this session." |
| 617 | msgstr "Transferência de arquivos já está ativa nesta sessão." | 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 | msgid "First field" | 619 | msgid "First field" |
| 621 | msgstr "Primeiro campo" | 620 | msgstr "Primeiro campo" |
| 622 | 621 | ||
| @@ -636,7 +635,7 @@ msgstr "Erro de formato no campo \"notAfter\" do certificado" | @@ -636,7 +635,7 @@ msgstr "Erro de formato no campo \"notAfter\" do certificado" | ||
| 636 | msgid "Format error in certificate's notBefore field" | 635 | msgid "Format error in certificate's notBefore field" |
| 637 | msgstr "Erro de formato no campo \"notBefore\" do certificado" | 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 | msgid "Formatted screen" | 639 | msgid "Formatted screen" |
| 641 | msgstr "Tela formatada" | 640 | msgstr "Tela formatada" |
| 642 | 641 | ||
| @@ -649,7 +648,7 @@ msgid "Got a bad formatted certificate revocation list from LDAP server" | @@ -649,7 +648,7 @@ msgid "Got a bad formatted certificate revocation list from LDAP server" | ||
| 649 | msgstr "" | 648 | msgstr "" |
| 650 | "Obtive lista de certificados revogados com formato inválido do servidor LDAP" | 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 | msgid "Has selected area" | 652 | msgid "Has selected area" |
| 654 | msgstr "Tem área selecionada" | 653 | msgstr "Tem área selecionada" |
| 655 | 654 | ||
| @@ -693,7 +692,15 @@ msgstr "IBM AS/400" | @@ -693,7 +692,15 @@ msgstr "IBM AS/400" | ||
| 693 | msgid "IBM S/390" | 692 | msgid "IBM S/390" |
| 694 | msgstr "IBM S/390" | 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 | msgid "ID of the session security state" | 704 | msgid "ID of the session security state" |
| 698 | msgstr "Identificação do estado de segurança da sessão" | 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,23 +821,23 @@ msgstr "Opção xxxxxxxx inválida: Transferência cancelada" | ||
| 814 | msgid "Invalid oversize" | 821 | msgid "Invalid oversize" |
| 815 | msgstr "Valor inválido para 'oversize'" | 822 | msgstr "Valor inválido para 'oversize'" |
| 816 | 823 | ||
| 817 | -#: src/core/properties/boolean.c:68 | 824 | +#: src/core/properties/boolean.c:75 |
| 818 | msgid "Is connection secure" | 825 | msgid "Is connection secure" |
| 819 | msgstr "A conexão é segura ?" | 826 | msgstr "A conexão é segura ?" |
| 820 | 827 | ||
| 821 | -#: src/core/properties/boolean.c:161 | 828 | +#: src/core/properties/boolean.c:168 |
| 822 | msgid "Is starting (no first screen)?" | 829 | msgid "Is starting (no first screen)?" |
| 823 | msgstr "Está iniciando (não recebeu a primeira tela)?" | 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 | msgid "Is terminal connected" | 833 | msgid "Is terminal connected" |
| 827 | msgstr "O terminal está conectado" | 834 | msgstr "O terminal está conectado" |
| 828 | 835 | ||
| 829 | -#: src/core/properties/boolean.c:140 | 836 | +#: src/core/properties/boolean.c:147 |
| 830 | msgid "Is terminal in the INITIAL_E state?" | 837 | msgid "Is terminal in the INITIAL_E state?" |
| 831 | msgstr "O terminal está no estad INITIAL_E?" | 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 | msgid "Is terminal ready" | 841 | msgid "Is terminal ready" |
| 835 | msgstr "O terminal está pronto" | 842 | msgstr "O terminal está pronto" |
| 836 | 843 | ||
| @@ -850,15 +857,15 @@ msgstr "Teclado está bloqueado" | @@ -850,15 +857,15 @@ msgstr "Teclado está bloqueado" | ||
| 850 | msgid "Keyboard lock status" | 857 | msgid "Keyboard lock status" |
| 851 | msgstr "Estado de bloqueio do teclado" | 858 | msgstr "Estado de bloqueio do teclado" |
| 852 | 859 | ||
| 853 | -#: src/core/properties/signed.c:66 | 860 | +#: src/core/properties/signed.c:108 |
| 854 | msgid "Latest program message" | 861 | msgid "Latest program message" |
| 855 | msgstr "Última mensagem de programa" | 862 | msgstr "Última mensagem de programa" |
| 856 | 863 | ||
| 857 | -#: src/core/actions/table.c:130 | 864 | +#: src/core/actions/table.c:171 |
| 858 | msgid "Left" | 865 | msgid "Left" |
| 859 | msgstr "Esquerda" | 866 | msgstr "Esquerda" |
| 860 | 867 | ||
| 861 | -#: src/core/properties/boolean.c:175 | 868 | +#: src/core/properties/boolean.c:182 |
| 862 | msgid "Lock keyboard on operator error" | 869 | msgid "Lock keyboard on operator error" |
| 863 | msgstr "Bloqueia teclado em caso de erro do operador" | 870 | msgstr "Bloqueia teclado em caso de erro do operador" |
| 864 | 871 | ||
| @@ -882,11 +889,43 @@ msgstr "Nome do modelo" | @@ -882,11 +889,43 @@ msgstr "Nome do modelo" | ||
| 882 | msgid "Monocase" | 889 | msgid "Monocase" |
| 883 | msgstr "Só Maiúsculas" | 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 | msgid "Move the cursor to the first blank after the last nonblank in the field" | 925 | msgid "Move the cursor to the first blank after the last nonblank in the field" |
| 887 | msgstr "Move o cursor para o primeiro branco após o último não branco no campo" | 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 | msgid "Move to first unprotected field on screen" | 929 | msgid "Move to first unprotected field on screen" |
| 891 | msgstr "Move para o primeiro campo desprotegido" | 930 | msgstr "Move para o primeiro campo desprotegido" |
| 892 | 931 | ||
| @@ -899,15 +938,15 @@ msgstr "Erro de rede" | @@ -899,15 +938,15 @@ msgstr "Erro de rede" | ||
| 899 | msgid "Network keep alive" | 938 | msgid "Network keep alive" |
| 900 | msgstr "Manter rede ativa" | 939 | msgstr "Manter rede ativa" |
| 901 | 940 | ||
| 902 | -#: src/core/actions/table.c:158 | 941 | +#: src/core/actions/table.c:199 |
| 903 | msgid "New line" | 942 | msgid "New line" |
| 904 | msgstr "Nova linha" | 943 | msgstr "Nova linha" |
| 905 | 944 | ||
| 906 | -#: src/core/actions/table.c:305 | 945 | +#: src/core/actions/table.c:471 |
| 907 | msgid "Next field" | 946 | msgid "Next field" |
| 908 | msgstr "Próximo campo" | 947 | msgstr "Próximo campo" |
| 909 | 948 | ||
| 910 | -#: src/core/actions/table.c:186 | 949 | +#: src/core/actions/table.c:227 |
| 911 | msgid "Next word" | 950 | msgid "Next word" |
| 912 | msgstr "Próxima palavra" | 951 | msgstr "Próxima palavra" |
| 913 | 952 | ||
| @@ -931,11 +970,11 @@ msgstr "" | @@ -931,11 +970,11 @@ msgstr "" | ||
| 931 | msgid "No transfer in progress" | 970 | msgid "No transfer in progress" |
| 932 | msgstr "Nenhuma transferência em andamento" | 971 | msgstr "Nenhuma transferência em andamento" |
| 933 | 972 | ||
| 934 | -#: src/core/properties/boolean.c:84 | 973 | +#: src/core/properties/boolean.c:91 |
| 935 | msgid "Non zero if the host is AS400." | 974 | msgid "Non zero if the host is AS400." |
| 936 | msgstr "Diferente de zero se o host é AS400" | 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 | msgid "Non zero if the host is TSO." | 978 | msgid "Non zero if the host is TSO." |
| 940 | msgstr "Diferente de zero se o host é TSO" | 979 | msgstr "Diferente de zero se o host é TSO" |
| 941 | 980 | ||
| @@ -961,15 +1000,15 @@ msgstr "Outro (VM/CMS)" | @@ -961,15 +1000,15 @@ msgstr "Outro (VM/CMS)" | ||
| 961 | msgid "Out of memory" | 1000 | msgid "Out of memory" |
| 962 | msgstr "Memória insuficiente" | 1001 | msgstr "Memória insuficiente" |
| 963 | 1002 | ||
| 964 | -#: src/core/actions/table.c:200 | 1003 | +#: src/core/actions/table.c:241 |
| 965 | msgid "Paste from file" | 1004 | msgid "Paste from file" |
| 966 | msgstr "Colar de um arquivo" | 1005 | msgstr "Colar de um arquivo" |
| 967 | 1006 | ||
| 968 | -#: src/core/actions/table.c:201 | 1007 | +#: src/core/actions/table.c:242 |
| 969 | msgid "Paste from text file" | 1008 | msgid "Paste from text file" |
| 970 | msgstr "Colar de um arquivo texto" | 1009 | msgstr "Colar de um arquivo texto" |
| 971 | 1010 | ||
| 972 | -#: src/core/actions/table.c:553 | 1011 | +#: src/core/actions/table.c:719 |
| 973 | msgid "Paste next" | 1012 | msgid "Paste next" |
| 974 | msgstr "Colar próximo" | 1013 | msgstr "Colar próximo" |
| 975 | 1014 | ||
| @@ -989,11 +1028,11 @@ msgstr "Especificação de arquivo PC incorreta: Transferência cancelada" | @@ -989,11 +1028,11 @@ msgstr "Especificação de arquivo PC incorreta: Transferência cancelada" | ||
| 989 | msgid "Preferred protocol for CRL download" | 1028 | msgid "Preferred protocol for CRL download" |
| 990 | msgstr "Protocolo preferido para download da CRL" | 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 | msgid "Previous field" | 1032 | msgid "Previous field" |
| 994 | msgstr "Campo anterior" | 1033 | msgstr "Campo anterior" |
| 995 | 1034 | ||
| 996 | -#: src/core/actions/table.c:172 | 1035 | +#: src/core/actions/table.c:213 |
| 997 | msgid "Previous word" | 1036 | msgid "Previous word" |
| 998 | msgstr "Palavra anterior" | 1037 | msgstr "Palavra anterior" |
| 999 | 1038 | ||
| @@ -1073,11 +1112,11 @@ msgstr "RPQ: Não foi possível resolver '%s': %s" | @@ -1073,11 +1112,11 @@ msgstr "RPQ: Não foi possível resolver '%s': %s" | ||
| 1073 | msgid "RPQ: gethostbyname error" | 1112 | msgid "RPQ: gethostbyname error" |
| 1074 | msgstr "RPQ: Erro em gethostbyname" | 1113 | msgstr "RPQ: Erro em gethostbyname" |
| 1075 | 1114 | ||
| 1076 | -#: src/core/actions/table.c:72 | 1115 | +#: src/core/actions/table.c:113 |
| 1077 | msgid "Reconnect to the same host" | 1116 | msgid "Reconnect to the same host" |
| 1078 | msgstr "Reconecta ao mesmo servidor" | 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 | msgid "Remove selection" | 1120 | msgid "Remove selection" |
| 1082 | msgstr "Remover seleção" | 1121 | msgstr "Remover seleção" |
| 1083 | 1122 | ||
| @@ -1089,11 +1128,11 @@ msgstr "Requisição falhou" | @@ -1089,11 +1128,11 @@ msgstr "Requisição falhou" | ||
| 1089 | msgid "Required host storage unavailable: file transfer canceled" | 1128 | msgid "Required host storage unavailable: file transfer canceled" |
| 1090 | msgstr "Armazenamento necessário indisponível: Transferência cancelada" | 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 | msgid "Reselect" | 1132 | msgid "Reselect" |
| 1094 | msgstr "Reselecionar" | 1133 | msgstr "Reselecionar" |
| 1095 | 1134 | ||
| 1096 | -#: src/core/actions/table.c:454 | 1135 | +#: src/core/actions/table.c:620 |
| 1097 | msgid "Reset" | 1136 | msgid "Reset" |
| 1098 | msgstr "Reset" | 1137 | msgstr "Reset" |
| 1099 | 1138 | ||
| @@ -1101,7 +1140,7 @@ msgstr "Reset" | @@ -1101,7 +1140,7 @@ msgstr "Reset" | ||
| 1101 | msgid "Resize on alternate screen" | 1140 | msgid "Resize on alternate screen" |
| 1102 | msgstr "Mudar tamanho do terminal em tela alternativa" | 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 | msgid "Right" | 1144 | msgid "Right" |
| 1106 | msgstr "Direita" | 1145 | msgstr "Direita" |
| 1107 | 1146 | ||
| @@ -1113,7 +1152,7 @@ msgstr "" | @@ -1113,7 +1152,7 @@ msgstr "" | ||
| 1113 | "SPACE can be specified in units of TRACKS, CYLINDERS, or AVBLOCK, and only " | 1152 | "SPACE can be specified in units of TRACKS, CYLINDERS, or AVBLOCK, and only " |
| 1114 | "one option can be used." | 1153 | "one option can be used." |
| 1115 | 1154 | ||
| 1116 | -#: src/ssl/negotiate.c:192 | 1155 | +#: src/ssl/negotiate.c:204 |
| 1117 | msgid "SSL Connect failed" | 1156 | msgid "SSL Connect failed" |
| 1118 | msgstr "Conexão SSL falhou" | 1157 | msgstr "Conexão SSL falhou" |
| 1119 | 1158 | ||
| @@ -1125,7 +1164,7 @@ msgstr "Erro SSL" | @@ -1125,7 +1164,7 @@ msgstr "Erro SSL" | ||
| 1125 | msgid "SSL Read error" | 1164 | msgid "SSL Read error" |
| 1126 | msgstr "Erro de leitura SSL" | 1165 | msgstr "Erro de leitura SSL" |
| 1127 | 1166 | ||
| 1128 | -#: src/ssl/negotiate.c:158 | 1167 | +#: src/ssl/negotiate.c:170 |
| 1129 | msgid "SSL negotiation failed" | 1168 | msgid "SSL negotiation failed" |
| 1130 | msgstr "Negociação SSL falhou" | 1169 | msgstr "Negociação SSL falhou" |
| 1131 | 1170 | ||
| @@ -1158,8 +1197,8 @@ msgstr "Pesquisa não produziu nenhum valor" | @@ -1158,8 +1197,8 @@ msgstr "Pesquisa não produziu nenhum valor" | ||
| 1158 | msgid "Secure connection was successful." | 1197 | msgid "Secure connection was successful." |
| 1159 | msgstr "Conexão segura efetuada com sucesso." | 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 | #: src/ssl/crl.c:164 src/ssl/linux/url.c:65 src/ssl/linux/url.c:80 | 1202 | #: src/ssl/crl.c:164 src/ssl/linux/url.c:65 src/ssl/linux/url.c:80 |
| 1164 | #: src/ssl/linux/url.c:98 src/ssl/linux/url.c:115 src/ssl/linux/ldap.c:100 | 1203 | #: src/ssl/linux/url.c:98 src/ssl/linux/url.c:115 src/ssl/linux/ldap.c:100 |
| 1165 | #: src/ssl/linux/ldap.c:113 src/ssl/linux/ldap.c:134 src/ssl/linux/ldap.c:145 | 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,15 +1209,15 @@ msgstr "Conexão segura efetuada com sucesso." | ||
| 1170 | msgid "Security error" | 1209 | msgid "Security error" |
| 1171 | msgstr "Erro de segurança" | 1210 | msgstr "Erro de segurança" |
| 1172 | 1211 | ||
| 1173 | -#: src/ssl/negotiate.c:332 | 1212 | +#: src/ssl/negotiate.c:344 |
| 1174 | msgid "Security warning" | 1213 | msgid "Security warning" |
| 1175 | msgstr "Alerta de segurança" | 1214 | msgstr "Alerta de segurança" |
| 1176 | 1215 | ||
| 1177 | -#: src/core/actions/table.c:263 | 1216 | +#: src/core/actions/table.c:429 |
| 1178 | msgid "Select Field" | 1217 | msgid "Select Field" |
| 1179 | msgstr "Selecionar campo" | 1218 | msgstr "Selecionar campo" |
| 1180 | 1219 | ||
| 1181 | -#: src/core/actions/table.c:217 | 1220 | +#: src/core/actions/table.c:258 |
| 1182 | msgid "Select all" | 1221 | msgid "Select all" |
| 1183 | msgstr "Selecionar tudo" | 1222 | msgstr "Selecionar tudo" |
| 1184 | 1223 | ||
| @@ -1186,10 +1225,14 @@ msgstr "Selecionar tudo" | @@ -1186,10 +1225,14 @@ msgstr "Selecionar tudo" | ||
| 1186 | msgid "Select by rectangles" | 1225 | msgid "Select by rectangles" |
| 1187 | msgstr "Seleção retangular" | 1226 | msgstr "Seleção retangular" |
| 1188 | 1227 | ||
| 1189 | -#: src/core/actions/table.c:262 | 1228 | +#: src/core/actions/table.c:428 |
| 1190 | msgid "Select field" | 1229 | msgid "Select field" |
| 1191 | msgstr "Seleciona campo" | 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 | #: src/core/linux/event_dispatcher.c:144 | 1236 | #: src/core/linux/event_dispatcher.c:144 |
| 1194 | msgid "Select() failed when processing for events." | 1237 | msgid "Select() failed when processing for events." |
| 1195 | msgstr "Select() falhou ao processar eventos." | 1238 | msgstr "Select() falhou ao processar eventos." |
| @@ -1202,7 +1245,7 @@ msgstr "Certificado auto assinado" | @@ -1202,7 +1245,7 @@ msgstr "Certificado auto assinado" | ||
| 1202 | msgid "Self signed certificate in certificate chain" | 1245 | msgid "Self signed certificate in certificate chain" |
| 1203 | msgstr "Certificado auto assinado na cadeia de certificados" | 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 | msgid "Send an \"Enter\" action" | 1249 | msgid "Send an \"Enter\" action" |
| 1207 | msgstr "Envia um \"Enter\"" | 1250 | msgstr "Envia um \"Enter\"" |
| 1208 | 1251 | ||
| @@ -1246,11 +1289,11 @@ msgstr "Erro ao enviar dados para a rede" | @@ -1246,11 +1289,11 @@ msgstr "Erro ao enviar dados para a rede" | ||
| 1246 | msgid "Sound" | 1289 | msgid "Sound" |
| 1247 | msgstr "Som" | 1290 | msgstr "Som" |
| 1248 | 1291 | ||
| 1249 | -#: src/core/properties/boolean.c:119 | 1292 | +#: src/core/properties/boolean.c:126 |
| 1250 | msgid "State is 3270, TN3270e or SSCP" | 1293 | msgid "State is 3270, TN3270e or SSCP" |
| 1251 | msgstr "Estado do terminal é 3270, TN3270e or SSCP" | 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 | msgid "Still have text to paste" | 1297 | msgid "Still have text to paste" |
| 1255 | msgstr "Ainda existe texto para colar" | 1298 | msgstr "Ainda existe texto para colar" |
| 1256 | 1299 | ||
| @@ -1258,7 +1301,7 @@ msgstr "Ainda existe texto para colar" | @@ -1258,7 +1301,7 @@ msgstr "Ainda existe texto para colar" | ||
| 1258 | msgid "Subject issuer mismatch" | 1301 | msgid "Subject issuer mismatch" |
| 1259 | msgstr "Divergência na identidade do emissor" | 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 | msgid "Sys Req" | 1305 | msgid "Sys Req" |
| 1263 | msgstr "Sys Req" | 1306 | msgstr "Sys Req" |
| 1264 | 1307 | ||
| @@ -1266,11 +1309,11 @@ msgstr "Sys Req" | @@ -1266,11 +1309,11 @@ msgstr "Sys Req" | ||
| 1266 | msgid "TLS negotiation failure" | 1309 | msgid "TLS negotiation failure" |
| 1267 | msgstr "Negociação TLS falhou" | 1310 | msgstr "Negociação TLS falhou" |
| 1268 | 1311 | ||
| 1269 | -#: src/core/actions/table.c:320 | 1312 | +#: src/core/actions/table.c:486 |
| 1270 | msgid "Tab backward to previous field" | 1313 | msgid "Tab backward to previous field" |
| 1271 | msgstr "Move para o campo anterior" | 1314 | msgstr "Move para o campo anterior" |
| 1272 | 1315 | ||
| 1273 | -#: src/core/actions/table.c:306 | 1316 | +#: src/core/actions/table.c:472 |
| 1274 | msgid "Tab forward to next field" | 1317 | msgid "Tab forward to next field" |
| 1275 | msgstr "Move para o próximo campo" | 1318 | msgstr "Move para o próximo campo" |
| 1276 | 1319 | ||
| @@ -1286,7 +1329,7 @@ msgstr "Nome do terminal" | @@ -1286,7 +1329,7 @@ msgstr "Nome do terminal" | ||
| 1286 | msgid "Terminal type" | 1329 | msgid "Terminal type" |
| 1287 | msgstr "Tipo do terminal" | 1330 | msgstr "Tipo do terminal" |
| 1288 | 1331 | ||
| 1289 | -#: src/core/actions/table.c:585 | 1332 | +#: src/core/actions/table.c:751 |
| 1290 | msgid "Test pattern" | 1333 | msgid "Test pattern" |
| 1291 | msgstr "Padrão de teste" | 1334 | msgstr "Padrão de teste" |
| 1292 | 1335 | ||
| @@ -1341,7 +1384,7 @@ msgstr "" | @@ -1341,7 +1384,7 @@ msgstr "" | ||
| 1341 | "A lista de revogação de certificados (CRL) de um certificado não pôde ser " | 1384 | "A lista de revogação de certificados (CRL) de um certificado não pôde ser " |
| 1342 | "encontrada." | 1385 | "encontrada." |
| 1343 | 1386 | ||
| 1344 | -#: src/ssl/negotiate.c:308 | 1387 | +#: src/ssl/negotiate.c:320 |
| 1345 | msgid "The SSL certificate for this host is not trusted." | 1388 | msgid "The SSL certificate for this host is not trusted." |
| 1346 | msgstr "O certificado SSL deste servidor não é confiável" | 1389 | msgstr "O certificado SSL deste servidor não é confiável" |
| 1347 | 1390 | ||
| @@ -1563,7 +1606,7 @@ msgstr "" | @@ -1563,7 +1606,7 @@ msgstr "" | ||
| 1563 | "O Certificado raiz não está marcado como confiável para os fins " | 1606 | "O Certificado raiz não está marcado como confiável para os fins " |
| 1564 | "especificados." | 1607 | "especificados." |
| 1565 | 1608 | ||
| 1566 | -#: src/ssl/negotiate.c:309 | 1609 | +#: src/ssl/negotiate.c:321 |
| 1567 | msgid "" | 1610 | msgid "" |
| 1568 | "The security certificate presented by this host was not issued by a trusted " | 1611 | "The security certificate presented by this host was not issued by a trusted " |
| 1569 | "certificate authority." | 1612 | "certificate authority." |
| @@ -1740,7 +1783,7 @@ msgstr "Erro inesperado" | @@ -1740,7 +1783,7 @@ msgstr "Erro inesperado" | ||
| 1740 | msgid "Unexpected or invalid CRL URL" | 1783 | msgid "Unexpected or invalid CRL URL" |
| 1741 | msgstr "URL do CRL é inesperada ou inválida" | 1784 | msgstr "URL do CRL é inesperada ou inválida" |
| 1742 | 1785 | ||
| 1743 | -#: src/ssl/negotiate.c:287 | 1786 | +#: src/ssl/negotiate.c:299 |
| 1744 | msgid "Unexpected or invalid TLS/SSL verify result" | 1787 | msgid "Unexpected or invalid TLS/SSL verify result" |
| 1745 | msgstr "O resultado da verificação TLS/SSL foi inesperado" | 1788 | msgstr "O resultado da verificação TLS/SSL foi inesperado" |
| 1746 | 1789 | ||
| @@ -1788,7 +1831,7 @@ msgstr "Unsupported RPQ term" | @@ -1788,7 +1831,7 @@ msgstr "Unsupported RPQ term" | ||
| 1788 | msgid "Unsupported certificate purpose" | 1831 | msgid "Unsupported certificate purpose" |
| 1789 | msgstr "Finalidade do certificado não é suportada" | 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 | msgid "Up" | 1835 | msgid "Up" |
| 1793 | msgstr "Subir" | 1836 | msgstr "Subir" |
| 1794 | 1837 | ||
| @@ -1896,11 +1939,11 @@ msgstr "" | @@ -1896,11 +1939,11 @@ msgstr "" | ||
| 1896 | msgid "You specified an option that is invalid." | 1939 | msgid "You specified an option that is invalid." |
| 1897 | msgstr "Você especificou uma opção inválida." | 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 | msgid "_Disconnect" | 1943 | msgid "_Disconnect" |
| 1901 | msgstr "_Desconectar" | 1944 | msgstr "_Desconectar" |
| 1902 | 1945 | ||
| 1903 | -#: src/core/actions/table.c:71 | 1946 | +#: src/core/actions/table.c:112 |
| 1904 | msgid "_Reconnect" | 1947 | msgid "_Reconnect" |
| 1905 | msgstr "_Reconectar" | 1948 | msgstr "_Reconectar" |
| 1906 | 1949 | ||
| @@ -1928,7 +1971,7 @@ msgstr "Revisão da lib3270" | @@ -1928,7 +1971,7 @@ msgstr "Revisão da lib3270" | ||
| 1928 | msgid "lib3270 version" | 1971 | msgid "lib3270 version" |
| 1929 | msgstr "Versão da lib3270" | 1972 | msgstr "Versão da lib3270" |
| 1930 | 1973 | ||
| 1931 | -#: src/core/properties/boolean.c:182 | 1974 | +#: src/core/properties/boolean.c:189 |
| 1932 | msgid "numeric lock" | 1975 | msgid "numeric lock" |
| 1933 | msgstr "numeric lock" | 1976 | msgstr "numeric lock" |
| 1934 | 1977 |
src/core/actions/table.c
| @@ -51,6 +51,46 @@ | @@ -51,6 +51,46 @@ | ||
| 51 | return lib3270_reconnect(hSession,0); | 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 | * @brief Get LIB3270 action table; | 95 | * @brief Get LIB3270 action table; |
| 56 | * | 96 | * |
| @@ -213,7 +253,7 @@ | @@ -213,7 +253,7 @@ | ||
| 213 | .name = "select-all", | 253 | .name = "select-all", |
| 214 | .type = LIB3270_ACTION_TYPE_SELECTION, | 254 | .type = LIB3270_ACTION_TYPE_SELECTION, |
| 215 | 255 | ||
| 216 | - .keys = "<ctrl>a", | 256 | + .keys = "<Primary>a", |
| 217 | .icon = "edit-select-all", | 257 | .icon = "edit-select-all", |
| 218 | .label = N_( "Select all" ), | 258 | .label = N_( "Select all" ), |
| 219 | .summary = NULL, | 259 | .summary = NULL, |
| @@ -241,7 +281,7 @@ | @@ -241,7 +281,7 @@ | ||
| 241 | .name = "reselect", | 281 | .name = "reselect", |
| 242 | .type = LIB3270_ACTION_TYPE_SELECTION, | 282 | .type = LIB3270_ACTION_TYPE_SELECTION, |
| 243 | 283 | ||
| 244 | - .keys = "<Ctrl>r", | 284 | + .keys = "<Primary>r", |
| 245 | .icon = NULL, | 285 | .icon = NULL, |
| 246 | .label = N_( "Reselect" ), | 286 | .label = N_( "Reselect" ), |
| 247 | .summary = N_( "Reselect"), | 287 | .summary = N_( "Reselect"), |
| @@ -265,6 +305,117 @@ | @@ -265,6 +305,117 @@ | ||
| 265 | .activatable = lib3270_is_connected | 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 | // Field actions. | 420 | // Field actions. |
| 270 | // | 421 | // |
| @@ -272,7 +423,7 @@ | @@ -272,7 +423,7 @@ | ||
| 272 | .name = "select-field", | 423 | .name = "select-field", |
| 273 | .type = LIB3270_ACTION_TYPE_SELECTION, | 424 | .type = LIB3270_ACTION_TYPE_SELECTION, |
| 274 | 425 | ||
| 275 | - .keys = "<Ctrl>f", | 426 | + .keys = "<Primary>f", |
| 276 | .icon = NULL, | 427 | .icon = NULL, |
| 277 | .label = N_( "Select field" ), | 428 | .label = N_( "Select field" ), |
| 278 | .summary = N_( "Select Field" ), | 429 | .summary = N_( "Select Field" ), |
| @@ -347,7 +498,7 @@ | @@ -347,7 +498,7 @@ | ||
| 347 | .name = "delete-word", | 498 | .name = "delete-word", |
| 348 | .type = LIB3270_ACTION_TYPE_NAVIGATION, | 499 | .type = LIB3270_ACTION_TYPE_NAVIGATION, |
| 349 | 500 | ||
| 350 | - .keys = "<Ctrl>w", | 501 | + .keys = "<Primary>w", |
| 351 | .icon = NULL, | 502 | .icon = NULL, |
| 352 | .label = N_("Delete word"), | 503 | .label = N_("Delete word"), |
| 353 | .summary = N_( "Backspaces the cursor until it hits the front of a word" ), | 504 | .summary = N_( "Backspaces the cursor until it hits the front of a word" ), |
| @@ -361,7 +512,7 @@ | @@ -361,7 +512,7 @@ | ||
| 361 | .name = "delete-field", | 512 | .name = "delete-field", |
| 362 | .type = LIB3270_ACTION_TYPE_NAVIGATION, | 513 | .type = LIB3270_ACTION_TYPE_NAVIGATION, |
| 363 | 514 | ||
| 364 | - .keys = "<Ctrl>u", | 515 | + .keys = "<Primary>u", |
| 365 | .icon = NULL, | 516 | .icon = NULL, |
| 366 | .label = N_( "Delete field" ), | 517 | .label = N_( "Delete field" ), |
| 367 | .summary = N_( "Delete field" ), | 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,7 +79,7 @@ LIB3270_EXPORT int lib3270_get_word_bounds(H3270 *session, int baddr, int *start | ||
| 79 | if(baddr < 0) | 79 | if(baddr < 0) |
| 80 | baddr = lib3270_get_cursor_address(session); | 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 | return errno = EINVAL; | 83 | return errno = EINVAL; |
| 84 | } | 84 | } |
| 85 | 85 |
src/core/connect.c
| @@ -90,7 +90,7 @@ | @@ -90,7 +90,7 @@ | ||
| 90 | } | 90 | } |
| 91 | 91 | ||
| 92 | // Do I have a defined host? | 92 | // Do I have a defined host? |
| 93 | - if(!(hSession->host.current && hSession->host.srvc)) | 93 | + if(!(hSession->host.current && hSession->host.srvc && *hSession->host.current && *hSession->host.srvc)) |
| 94 | { | 94 | { |
| 95 | errno = EINVAL; | 95 | errno = EINVAL; |
| 96 | return 0; | 96 | return 0; |
src/core/cursor.c
| @@ -79,8 +79,6 @@ static int cursor_end(H3270 *hSession); | @@ -79,8 +79,6 @@ static int cursor_end(H3270 *hSession); | ||
| 79 | */ | 79 | */ |
| 80 | LIB3270_EXPORT int lib3270_move_cursor(H3270 *hSession, LIB3270_DIRECTION dir, unsigned char sel) | 80 | LIB3270_EXPORT int lib3270_move_cursor(H3270 *hSession, LIB3270_DIRECTION dir, unsigned char sel) |
| 81 | { | 81 | { |
| 82 | - int select_from = -1; | ||
| 83 | - | ||
| 84 | FAIL_IF_NOT_ONLINE(hSession); | 82 | FAIL_IF_NOT_ONLINE(hSession); |
| 85 | 83 | ||
| 86 | if(dir < 0 || dir >= LIB3270_DIR_COUNT) | 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,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 | int rc = calls[dir].exec(hSession); | 110 | int rc = calls[dir].exec(hSession); |
| 114 | if(rc) | 111 | if(rc) |
| 115 | return rc; | 112 | return rc; |
| 116 | 113 | ||
| 117 | if(sel) | 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 | else if(hSession->selected && !lib3270_get_toggle(hSession,LIB3270_TOGGLE_KEEP_SELECTED)) | 137 | else if(hSession->selected && !lib3270_get_toggle(hSession,LIB3270_TOGGLE_KEEP_SELECTED)) |
| 138 | + { | ||
| 120 | lib3270_unselect(hSession); | 139 | lib3270_unselect(hSession); |
| 140 | + } | ||
| 121 | 141 | ||
| 122 | return 0; | 142 | return 0; |
| 123 | } | 143 | } |
src/core/properties/signed.c
| @@ -49,6 +49,48 @@ | @@ -49,6 +49,48 @@ | ||
| 49 | return (int) lib3270_get_ssl_state(hSession); | 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 | const LIB3270_INT_PROPERTY * lib3270_get_int_properties_list(void) | 94 | const LIB3270_INT_PROPERTY * lib3270_get_int_properties_list(void) |
| 53 | { | 95 | { |
| 54 | 96 | ||
| @@ -75,6 +117,22 @@ | @@ -75,6 +117,22 @@ | ||
| 75 | .set = NULL // Set value. | 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 | .name = NULL, | 137 | .name = NULL, |
| 80 | .description = NULL, | 138 | .description = NULL, |
src/core/rpq.c
| @@ -199,26 +199,26 @@ void do_qr_rpqnames(H3270 *hSession) | @@ -199,26 +199,26 @@ void do_qr_rpqnames(H3270 *hSession) | ||
| 199 | break; | 199 | break; |
| 200 | 200 | ||
| 201 | case RPQ_VERSION: /* program version */ | 201 | case RPQ_VERSION: /* program version */ |
| 202 | - x = strlen(build_rpq_version); | 202 | + x = strlen(PACKAGE_VERSION); |
| 203 | omit_due_space_limit = (x > remaining); | 203 | omit_due_space_limit = (x > remaining); |
| 204 | if (!omit_due_space_limit) | 204 | if (!omit_due_space_limit) |
| 205 | { | 205 | { |
| 206 | for (i = 0; i < x; i++) | 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 | break; | 211 | break; |
| 212 | 212 | ||
| 213 | case RPQ_TIMESTAMP: /* program build time (yyyymmddhhmmss bcd) */ | 213 | case RPQ_TIMESTAMP: /* program build time (yyyymmddhhmmss bcd) */ |
| 214 | - x = strlen(build_rpq_timestamp); | 214 | + x = strlen(RPQ_TIMESTAMP_VALUE); |
| 215 | omit_due_space_limit = ((x+1)/2 > remaining) ? 1 : 0; | 215 | omit_due_space_limit = ((x+1)/2 > remaining) ? 1 : 0; |
| 216 | if (!omit_due_space_limit) | 216 | if (!omit_due_space_limit) |
| 217 | { | 217 | { |
| 218 | for (i=0; i < x; i+=2) | 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 | break; | 224 | break; |
src/core/session.c
| @@ -410,6 +410,11 @@ H3270 * lib3270_session_new(const char *model) | @@ -410,6 +410,11 @@ H3270 * lib3270_session_new(const char *model) | ||
| 410 | hSession = lib3270_malloc(sizeof(H3270)); | 410 | hSession = lib3270_malloc(sizeof(H3270)); |
| 411 | hSession->id = 0; | 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 | #ifdef SSL_ENABLE_CRL_CHECK | 418 | #ifdef SSL_ENABLE_CRL_CHECK |
| 414 | hSession->ssl.crl.download = 1; | 419 | hSession->ssl.crl.download = 1; |
| 415 | #endif // SSL_ENABLE_CRL_CHECK | 420 | #endif // SSL_ENABLE_CRL_CHECK |
src/core/util.c
| @@ -40,6 +40,10 @@ | @@ -40,6 +40,10 @@ | ||
| 40 | #include <lib3270/selection.h> | 40 | #include <lib3270/selection.h> |
| 41 | #include <lib3270/log.h> | 41 | #include <lib3270/log.h> |
| 42 | 42 | ||
| 43 | +#if defined(HAVE_LIBSSL) | ||
| 44 | + #include <openssl/opensslv.h> | ||
| 45 | +#endif // HAVE_LIBSSL | ||
| 46 | + | ||
| 43 | #define my_isspace(c) isspace((unsigned char)c) | 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,12 +361,28 @@ LIB3270_EXPORT void * lib3270_strdup(const char *str) | ||
| 357 | 361 | ||
| 358 | LIB3270_EXPORT const char * lib3270_get_version(void) | 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 | LIB3270_EXPORT const char * lib3270_get_revision(void) | 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 | void lib3270_popup_an_errno(H3270 *hSession, int errn, const char *fmt, ...) | 388 | void lib3270_popup_an_errno(H3270 *hSession, int errn, const char *fmt, ...) |
src/core/version.c.in
| @@ -1,8 +0,0 @@ | @@ -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,6 +39,12 @@ | ||
| 39 | #undef LIB3270_NAME | 39 | #undef LIB3270_NAME |
| 40 | #undef GETTEXT_PACKAGE | 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 | /* Default settings */ | 48 | /* Default settings */ |
| 43 | 49 | ||
| 44 | /** @brief The lib3270's default host URL */ | 50 | /** @brief The lib3270's default host URL */ |
src/include/internals.h
| @@ -136,12 +136,14 @@ enum iaction { | @@ -136,12 +136,14 @@ enum iaction { | ||
| 136 | }; | 136 | }; |
| 137 | 137 | ||
| 138 | // Version strings | 138 | // Version strings |
| 139 | +/* | ||
| 139 | LIB3270_INTERNAL const char * build; | 140 | LIB3270_INTERNAL const char * build; |
| 140 | LIB3270_INTERNAL const char * app_defaults_version; | 141 | LIB3270_INTERNAL const char * app_defaults_version; |
| 141 | LIB3270_INTERNAL const char * sccsid; | 142 | LIB3270_INTERNAL const char * sccsid; |
| 142 | LIB3270_INTERNAL const char * build_rpq_timestamp; | 143 | LIB3270_INTERNAL const char * build_rpq_timestamp; |
| 143 | LIB3270_INTERNAL const char * build_rpq_version; | 144 | LIB3270_INTERNAL const char * build_rpq_version; |
| 144 | LIB3270_INTERNAL const char * build_rpq_revision; | 145 | LIB3270_INTERNAL const char * build_rpq_revision; |
| 146 | +*/ | ||
| 145 | 147 | ||
| 146 | #if defined(X3270_DBCS) /*[*/ | 148 | #if defined(X3270_DBCS) /*[*/ |
| 147 | LIB3270_INTERNAL Boolean dbcs; | 149 | LIB3270_INTERNAL Boolean dbcs; |
| @@ -662,6 +664,13 @@ struct _h3270 | @@ -662,6 +664,13 @@ struct _h3270 | ||
| 662 | char host; | 664 | char host; |
| 663 | LIB3270_SSL_STATE state; | 665 | LIB3270_SSL_STATE state; |
| 664 | unsigned long error; | 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 | #ifdef SSL_ENABLE_CRL_CHECK | 674 | #ifdef SSL_ENABLE_CRL_CHECK |
| 666 | struct | 675 | struct |
| 667 | { | 676 | { |
| @@ -741,7 +750,7 @@ LIB3270_INTERNAL void lib3270_sock_disconnect(H3270 *hSession); | @@ -741,7 +750,7 @@ LIB3270_INTERNAL void lib3270_sock_disconnect(H3270 *hSession); | ||
| 741 | 750 | ||
| 742 | LIB3270_INTERNAL int lib3270_default_event_dispatcher(H3270 *hSession, int block); | 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,6 +220,14 @@ | ||
| 220 | */ | 220 | */ |
| 221 | LIB3270_EXPORT void lib3270_disable_crl_download(H3270 *hSession); | 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 | #ifdef __cplusplus | 231 | #ifdef __cplusplus |
| 224 | } | 232 | } |
| 225 | #endif | 233 | #endif |
src/selection/actions.c
| @@ -100,11 +100,10 @@ LIB3270_EXPORT int lib3270_select_region(H3270 *h, int start, int end) | @@ -100,11 +100,10 @@ LIB3270_EXPORT int lib3270_select_region(H3270 *h, int start, int end) | ||
| 100 | maxlen = (h->view.rows * h->view.cols); | 100 | maxlen = (h->view.rows * h->view.cols); |
| 101 | 101 | ||
| 102 | // Check bounds | 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 | return EINVAL; | 104 | return EINVAL; |
| 105 | 105 | ||
| 106 | do_select(h,start,end,lib3270_get_toggle(h,LIB3270_TOGGLE_RECTANGLE_SELECT)); | 106 | do_select(h,start,end,lib3270_get_toggle(h,LIB3270_TOGGLE_RECTANGLE_SELECT)); |
| 107 | - cursor_move(h,h->select.end); | ||
| 108 | 107 | ||
| 109 | return 0; | 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,14 +167,16 @@ void toggle_rectselect(H3270 *hSession, const struct lib3270_toggle *t, LIB3270_ | ||
| 167 | update_selected_region(hSession); | 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 | // Do we really need to change selection? | 177 | // Do we really need to change selection? |
| 176 | if( ((int) start) == hSession->select.start && ((int) end) == hSession->select.end && hSession->selected) | 178 | if( ((int) start) == hSession->select.start && ((int) end) == hSession->select.end && hSession->selected) |
| 177 | - return; | 179 | + return 0; |
| 178 | 180 | ||
| 179 | // Start address is inside the screen? | 181 | // Start address is inside the screen? |
| 180 | hSession->select.start = start; | 182 | hSession->select.start = start; |
| @@ -200,6 +202,7 @@ void do_select(H3270 *hSession, unsigned int start, unsigned int end, unsigned i | @@ -200,6 +202,7 @@ void do_select(H3270 *hSession, unsigned int start, unsigned int end, unsigned i | ||
| 200 | 202 | ||
| 201 | hSession->cbk.update_selection(hSession,start,end); | 203 | hSession->cbk.update_selection(hSession,start,end); |
| 202 | 204 | ||
| 205 | + return 0; | ||
| 203 | } | 206 | } |
| 204 | 207 | ||
| 205 | LIB3270_EXPORT unsigned char lib3270_get_selection_flags(H3270 *hSession, int baddr) | 208 | LIB3270_EXPORT unsigned char lib3270_get_selection_flags(H3270 *hSession, int baddr) |
src/ssl/linux/init.c
| @@ -98,6 +98,7 @@ int ssl_ctx_init(H3270 *hSession, SSL_ERROR_MESSAGE * message) | @@ -98,6 +98,7 @@ int ssl_ctx_init(H3270 *hSession, SSL_ERROR_MESSAGE * message) | ||
| 98 | 98 | ||
| 99 | ssl_3270_ex_index = SSL_get_ex_new_index(0,NULL,NULL,NULL,NULL); | 99 | ssl_3270_ex_index = SSL_get_ex_new_index(0,NULL,NULL,NULL,NULL); |
| 100 | 100 | ||
| 101 | + | ||
| 101 | #ifdef SSL_ENABLE_CRL_CHECK | 102 | #ifdef SSL_ENABLE_CRL_CHECK |
| 102 | 103 | ||
| 103 | // Enable CRL check | 104 | // Enable CRL check |
src/ssl/negotiate.c
| @@ -137,6 +137,52 @@ int x509_store_ctx_error_callback(int ok, X509_STORE_CTX GNUC_UNUSED(*ctx)) | @@ -137,6 +137,52 @@ int x509_store_ctx_error_callback(int ok, X509_STORE_CTX GNUC_UNUSED(*ctx)) | ||
| 137 | } | 137 | } |
| 138 | #endif // SSL_ENABLE_CRL_CHECK | 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 | static int background_ssl_negotiation(H3270 *hSession, void *message) | 186 | static int background_ssl_negotiation(H3270 *hSession, void *message) |
| 141 | { | 187 | { |
| 142 | int rv; | 188 | int rv; |
| @@ -150,6 +196,40 @@ static int background_ssl_negotiation(H3270 *hSession, void *message) | @@ -150,6 +196,40 @@ static int background_ssl_negotiation(H3270 *hSession, void *message) | ||
| 150 | } | 196 | } |
| 151 | 197 | ||
| 152 | /* Set up the TLS/SSL connection. */ | 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 | if(SSL_set_fd(hSession->ssl.con, hSession->connection.sock) != 1) | 233 | if(SSL_set_fd(hSession->ssl.con, hSession->connection.sock) != 1) |
| 154 | { | 234 | { |
| 155 | trace_ssl(hSession,"%s","SSL_set_fd failed!\n"); | 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,7 +40,7 @@ int main(int argc, char *argv[]) | ||
| 40 | setlocale( LC_ALL, "" ); | 40 | setlocale( LC_ALL, "" ); |
| 41 | #endif | 41 | #endif |
| 42 | 42 | ||
| 43 | - textdomain("pw3270"); | 43 | + textdomain("lib3270"); |
| 44 | 44 | ||
| 45 | // #pragma GCC diagnostic push | 45 | // #pragma GCC diagnostic push |
| 46 | // #pragma GCC diagnostic ignored "-Wzero-as-null-pointer-constant" | 46 | // #pragma GCC diagnostic ignored "-Wzero-as-null-pointer-constant" |
| @@ -57,7 +57,8 @@ int main(int argc, char *argv[]) | @@ -57,7 +57,8 @@ int main(int argc, char *argv[]) | ||
| 57 | H3270 * h = lib3270_session_new(""); | 57 | H3270 * h = lib3270_session_new(""); |
| 58 | int rc = 0; | 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 | #ifdef HAVE_LDAP | 63 | #ifdef HAVE_LDAP |
| 63 | lib3270_crl_set_preferred_protocol(h,"ldap"); | 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 | # Copyright (C) <2008> <Banco do Brasil S.A.> | 5 | # Copyright (C) <2008> <Banco do Brasil S.A.> |
| 6 | # | 6 | # |
| 7 | # All modifications and additions to the file contributed by third parties | 7 | # All modifications and additions to the file contributed by third parties |
| @@ -16,6 +16,9 @@ | @@ -16,6 +16,9 @@ | ||
| 16 | # Please submit bugfixes or comments via http://bugs.opensuse.org/ | 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 | %define __strip %{_mingw32_strip} | 22 | %define __strip %{_mingw32_strip} |
| 20 | %define __objdump %{_mingw32_objdump} | 23 | %define __objdump %{_mingw32_objdump} |
| 21 | %define _use_internal_dependency_generator 0 | 24 | %define _use_internal_dependency_generator 0 |
| @@ -23,32 +26,27 @@ | @@ -23,32 +26,27 @@ | ||
| 23 | %define __find_provides %{_mingw32_findprovides} | 26 | %define __find_provides %{_mingw32_findprovides} |
| 24 | %define __os_install_post %{_mingw32_debug_install_post} \ | 27 | %define __os_install_post %{_mingw32_debug_install_post} \ |
| 25 | %{_mingw32_install_post} | 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 | Version: 5.2 | 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 | Release: 0 | 35 | Release: 0 |
| 38 | -License: GPL-2.0 | 36 | +License: LGPL-3.0 |
| 39 | 37 | ||
| 40 | Source: lib3270-%{version}.tar.xz | 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 | BuildRoot: /var/tmp/%{name}-%{version} | 43 | BuildRoot: /var/tmp/%{name}-%{version} |
| 46 | 44 | ||
| 47 | -Provides: mingw32(lib:3270) = %{version} | ||
| 48 | - | ||
| 49 | -BuildRequires: autoconf | 45 | +BuildRequires: autoconf >= 2.61 |
| 50 | BuildRequires: automake | 46 | BuildRequires: automake |
| 51 | -BuildRequires: gettext-tools | 47 | +BuildRequires: gettext-devel |
| 48 | +BuildRequires: xz | ||
| 49 | +BuildRequires: fdupes | ||
| 52 | 50 | ||
| 53 | BuildRequires: mingw32-cross-binutils | 51 | BuildRequires: mingw32-cross-binutils |
| 54 | BuildRequires: mingw32-cross-gcc | 52 | BuildRequires: mingw32-cross-gcc |
| @@ -61,77 +59,82 @@ BuildRequires: mingw32(lib:iconv) | @@ -61,77 +59,82 @@ BuildRequires: mingw32(lib:iconv) | ||
| 61 | BuildRequires: mingw32(lib:intl) | 59 | BuildRequires: mingw32(lib:intl) |
| 62 | 60 | ||
| 63 | %description | 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 | #---[ Build & Install ]----------------------------------------------------------------------------------------------- | 90 | #---[ Build & Install ]----------------------------------------------------------------------------------------------- |
| 86 | 91 | ||
| 87 | %prep | 92 | %prep |
| 88 | %setup -n lib3270-%{version} | 93 | %setup -n lib3270-%{version} |
| 89 | 94 | ||
| 90 | -NOCONFIGURE=1 ./autogen.sh | 95 | +NOCONFIGURE=1 \ |
| 96 | + ./autogen.sh | ||
| 91 | 97 | ||
| 92 | %{_mingw32_configure} | 98 | %{_mingw32_configure} |
| 93 | 99 | ||
| 94 | %build | 100 | %build |
| 95 | -make clean | ||
| 96 | -make all | 101 | +make all %{?_smp_mflags} |
| 97 | 102 | ||
| 98 | %{_mingw32_strip} \ | 103 | %{_mingw32_strip} \ |
| 99 | --strip-all \ | 104 | --strip-all \ |
| 100 | .bin/Release/*.dll | 105 | .bin/Release/*.dll |
| 101 | 106 | ||
| 107 | + | ||
| 102 | %install | 108 | %install |
| 103 | %{_mingw32_makeinstall} | 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 | %defattr(-,root,root) | 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 | %files devel | 123 | %files devel |
| 121 | %defattr(-,root,root) | 124 | %defattr(-,root,root) |
| 122 | 125 | ||
| 123 | -%{_mingw32_includedir}/lib3270 | 126 | +%{_mingw32_libdir}/*.a |
| 124 | 127 | ||
| 125 | %{_mingw32_includedir}/*.h | 128 | %{_mingw32_includedir}/*.h |
| 129 | +%{_mingw32_includedir}/lib3270 | ||
| 130 | + | ||
| 126 | %{_mingw32_libdir}/pkgconfig/*.pc | 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 | %changelog | 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 | # Copyright (C) <2008> <Banco do Brasil S.A.> | 5 | # Copyright (C) <2008> <Banco do Brasil S.A.> |
| 6 | # | 6 | # |
| 7 | # All modifications and additions to the file contributed by third parties | 7 | # All modifications and additions to the file contributed by third parties |
| @@ -16,6 +16,9 @@ | @@ -16,6 +16,9 @@ | ||
| 16 | # Please submit bugfixes or comments via http://bugs.opensuse.org/ | 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 | %define __strip %{_mingw64_strip} | 22 | %define __strip %{_mingw64_strip} |
| 20 | %define __objdump %{_mingw64_objdump} | 23 | %define __objdump %{_mingw64_objdump} |
| 21 | %define _use_internal_dependency_generator 0 | 24 | %define _use_internal_dependency_generator 0 |
| @@ -23,34 +26,27 @@ | @@ -23,34 +26,27 @@ | ||
| 23 | %define __find_provides %{_mingw64_findprovides} | 26 | %define __find_provides %{_mingw64_findprovides} |
| 24 | %define __os_install_post %{_mingw64_debug_install_post} \ | 27 | %define __os_install_post %{_mingw64_debug_install_post} \ |
| 25 | %{_mingw64_install_post} | 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 | Version: 5.2 | 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 | Release: 0 | 35 | Release: 0 |
| 39 | -License: GPL-2.0 | 36 | +License: LGPL-3.0 |
| 40 | 37 | ||
| 41 | Source: lib3270-%{version}.tar.xz | 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 | BuildRoot: /var/tmp/%{name}-%{version} | 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 | BuildRequires: automake | 46 | BuildRequires: automake |
| 53 | -BuildRequires: gettext-tools | 47 | +BuildRequires: gettext-devel |
| 48 | +BuildRequires: xz | ||
| 49 | +BuildRequires: fdupes | ||
| 54 | 50 | ||
| 55 | BuildRequires: mingw64-cross-binutils | 51 | BuildRequires: mingw64-cross-binutils |
| 56 | BuildRequires: mingw64-cross-gcc | 52 | BuildRequires: mingw64-cross-gcc |
| @@ -63,80 +59,82 @@ BuildRequires: mingw64(lib:iconv) | @@ -63,80 +59,82 @@ BuildRequires: mingw64(lib:iconv) | ||
| 63 | BuildRequires: mingw64(lib:intl) | 59 | BuildRequires: mingw64(lib:intl) |
| 64 | 60 | ||
| 65 | %description | 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 | #---[ Build & Install ]----------------------------------------------------------------------------------------------- | 90 | #---[ Build & Install ]----------------------------------------------------------------------------------------------- |
| 91 | 91 | ||
| 92 | %prep | 92 | %prep |
| 93 | %setup -n lib3270-%{version} | 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 | %build | 100 | %build |
| 101 | -make clean | ||
| 102 | -make all | 101 | +make all %{?_smp_mflags} |
| 103 | 102 | ||
| 104 | %{_mingw64_strip} \ | 103 | %{_mingw64_strip} \ |
| 105 | --strip-all \ | 104 | --strip-all \ |
| 106 | .bin/Release/*.dll | 105 | .bin/Release/*.dll |
| 107 | 106 | ||
| 107 | + | ||
| 108 | %install | 108 | %install |
| 109 | %{_mingw64_makeinstall} | 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 | %defattr(-,root,root) | 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 | %files devel | 123 | %files devel |
| 127 | %defattr(-,root,root) | 124 | %defattr(-,root,root) |
| 128 | 125 | ||
| 129 | -%{_mingw64_includedir}/lib3270 | 126 | +%{_mingw64_libdir}/*.a |
| 130 | 127 | ||
| 131 | %{_mingw64_includedir}/*.h | 128 | %{_mingw64_includedir}/*.h |
| 129 | +%{_mingw64_includedir}/lib3270 | ||
| 130 | + | ||
| 132 | %{_mingw64_libdir}/pkgconfig/*.pc | 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 | %changelog | 140 | %changelog |