Commit c9297c1affada8902df7b76329ebc9dc93d0591d

Authored by Perry Werneck
Committed by GitHub
2 parents 66f3ee00 dce20407

Merge pull request #8 from PerryWerneck/develop

Updating to latest develop code.
.github/auto_assign.yml 0 → 100644
@@ -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 +
@@ -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 + ```
@@ -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 &quot;&quot; @@ -16,7 +16,8 @@ msgstr &quot;&quot;
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 &quot;Erro 3270&quot; @@ -79,7 +80,7 @@ msgstr &quot;Erro 3270&quot;
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 &quot;&quot; @@ -91,7 +92,7 @@ msgstr &quot;&quot;
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 &quot;&quot; @@ -136,7 +137,7 @@ msgstr &quot;&quot;
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 &quot;Reconecta automaticamente caso o servidor desconecte&quot; @@ -178,11 +179,11 @@ msgstr &quot;Reconecta automaticamente caso o servidor desconecte&quot;
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 &quot;Cursor piscante&quot; @@ -202,7 +203,7 @@ msgstr &quot;Cursor piscante&quot;
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 &quot;Can&#39;t decode certificate revocation list&quot; @@ -258,7 +259,6 @@ msgid &quot;Can&#39;t decode certificate revocation list&quot;
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 &quot;Não foi possível setar o socket para o modo não blocante.&quot; @@ -316,7 +316,7 @@ msgstr &quot;Não foi possível setar o socket para o modo não blocante.&quot;
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 &quot;&quot; @@ -338,7 +338,7 @@ msgstr &quot;&quot;
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 &quot;Falha na assinatura do certificado&quot; @@ -374,15 +374,15 @@ msgstr &quot;Falha na assinatura do certificado&quot;
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 &quot;Conexão falhou&quot; @@ -407,7 +407,7 @@ msgstr &quot;Conexão falhou&quot;
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 &quot;Largura atua da tela em colunas&quot; @@ -427,37 +427,37 @@ msgstr &quot;Largura atua da tela em colunas&quot;
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 &quot;Erro na conversão de dados&quot; @@ -469,15 +469,15 @@ msgstr &quot;Erro na conversão de dados&quot;
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 &quot;Descrição do estado de segurança atual&quot; @@ -489,7 +489,7 @@ msgstr &quot;Descrição do estado de segurança atual&quot;
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 &quot;Tabela de caracteres para a tela&quot; @@ -505,11 +505,11 @@ msgstr &quot;Tabela de caracteres para a tela&quot;
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 &quot;Habilita trace da negociação de segurança&quot; @@ -533,31 +533,31 @@ msgstr &quot;Habilita trace da negociação de segurança&quot;
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 &quot;Error \&quot;%s\&quot; writing to local file (rc=%d)&quot; @@ -576,7 +576,6 @@ msgid &quot;Error \&quot;%s\&quot; writing to local file (rc=%d)&quot;
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 &quot;Erro ao ler ou gravar no host: Transferência cancelada&quot; @@ -596,11 +595,11 @@ msgstr &quot;Erro ao ler ou gravar no host: Transferência cancelada&quot;
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 &quot;Transferência completa com registros segmentados&quot; @@ -616,7 +615,7 @@ msgstr &quot;Transferência completa com registros segmentados&quot;
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 &quot;Erro de formato no campo \&quot;notAfter\&quot; do certificado&quot; @@ -636,7 +635,7 @@ msgstr &quot;Erro de formato no campo \&quot;notAfter\&quot; do certificado&quot;
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 &quot;Got a bad formatted certificate revocation list from LDAP server&quot; @@ -649,7 +648,7 @@ msgid &quot;Got a bad formatted certificate revocation list from LDAP server&quot;
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 &quot;IBM AS/400&quot; @@ -693,7 +692,15 @@ msgstr &quot;IBM AS/400&quot;
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 &quot;Opção xxxxxxxx inválida: Transferência cancelada&quot; @@ -814,23 +821,23 @@ msgstr &quot;Opção xxxxxxxx inválida: Transferência cancelada&quot;
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 &quot;Teclado está bloqueado&quot; @@ -850,15 +857,15 @@ msgstr &quot;Teclado está bloqueado&quot;
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 &quot;Nome do modelo&quot; @@ -882,11 +889,43 @@ msgstr &quot;Nome do modelo&quot;
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 &quot;Erro de rede&quot; @@ -899,15 +938,15 @@ msgstr &quot;Erro de rede&quot;
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 &quot;&quot; @@ -931,11 +970,11 @@ msgstr &quot;&quot;
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 &quot;Outro (VM/CMS)&quot; @@ -961,15 +1000,15 @@ msgstr &quot;Outro (VM/CMS)&quot;
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 &quot;Especificação de arquivo PC incorreta: Transferência cancelada&quot; @@ -989,11 +1028,11 @@ msgstr &quot;Especificação de arquivo PC incorreta: Transferência cancelada&quot;
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 &quot;RPQ: Não foi possível resolver &#39;%s&#39;: %s&quot; @@ -1073,11 +1112,11 @@ msgstr &quot;RPQ: Não foi possível resolver &#39;%s&#39;: %s&quot;
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 &quot;Requisição falhou&quot; @@ -1089,11 +1128,11 @@ msgstr &quot;Requisição falhou&quot;
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 &quot;Reset&quot; @@ -1101,7 +1140,7 @@ msgstr &quot;Reset&quot;
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 &quot;&quot; @@ -1113,7 +1152,7 @@ msgstr &quot;&quot;
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 &quot;Erro SSL&quot; @@ -1125,7 +1164,7 @@ msgstr &quot;Erro SSL&quot;
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 &quot;Pesquisa não produziu nenhum valor&quot; @@ -1158,8 +1197,8 @@ msgstr &quot;Pesquisa não produziu nenhum valor&quot;
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 &quot;Conexão segura efetuada com sucesso.&quot; @@ -1170,15 +1209,15 @@ msgstr &quot;Conexão segura efetuada com sucesso.&quot;
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 &quot;Selecionar tudo&quot; @@ -1186,10 +1225,14 @@ msgstr &quot;Selecionar tudo&quot;
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 &quot;Certificado auto assinado&quot; @@ -1202,7 +1245,7 @@ msgstr &quot;Certificado auto assinado&quot;
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 &quot;Erro ao enviar dados para a rede&quot; @@ -1246,11 +1289,11 @@ msgstr &quot;Erro ao enviar dados para a rede&quot;
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 &quot;Ainda existe texto para colar&quot; @@ -1258,7 +1301,7 @@ msgstr &quot;Ainda existe texto para colar&quot;
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 &quot;Sys Req&quot; @@ -1266,11 +1309,11 @@ msgstr &quot;Sys Req&quot;
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 &quot;Nome do terminal&quot; @@ -1286,7 +1329,7 @@ msgstr &quot;Nome do terminal&quot;
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 &quot;&quot; @@ -1341,7 +1384,7 @@ msgstr &quot;&quot;
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 &quot;&quot; @@ -1563,7 +1606,7 @@ msgstr &quot;&quot;
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 &quot;Erro inesperado&quot; @@ -1740,7 +1783,7 @@ msgstr &quot;Erro inesperado&quot;
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 &quot;Unsupported RPQ term&quot; @@ -1788,7 +1831,7 @@ msgstr &quot;Unsupported RPQ term&quot;
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 &quot;&quot; @@ -1896,11 +1939,11 @@ msgstr &quot;&quot;
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 &quot;Revisão da lib3270&quot; @@ -1928,7 +1971,7 @@ msgstr &quot;Revisão da lib3270&quot;
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