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 |