Commit 5051b86e20704d11944c13db39059b68fcaf1bd2
1 parent
9ca78548
Exists in
master
and in
5 other branches
Melhorando o funcionamendo do mecanismo de acesso ao registry windows
Showing
2 changed files
with
69 additions
and
43 deletions
Show diff stats
po/pt_BR.po
... | ... | @@ -5,7 +5,7 @@ msgid "" |
5 | 5 | msgstr "" |
6 | 6 | "Project-Id-Version: pw3270 5.0\n" |
7 | 7 | "Report-Msgid-Bugs-To: \n" |
8 | -"POT-Creation-Date: 2013-05-02 08:31-0300\n" | |
8 | +"POT-Creation-Date: 2013-05-03 15:59-0300\n" | |
9 | 9 | "PO-Revision-Date: 2013-04-23 10:22-0300\n" |
10 | 10 | "Last-Translator: Perry Werneck <perry.werneck@gmail.com>\n" |
11 | 11 | "Language-Team: Português <>\n" |
... | ... | @@ -103,7 +103,7 @@ msgstr "Alerta 3270" |
103 | 103 | msgid "3270 screen" |
104 | 104 | msgstr "Tela 3270" |
105 | 105 | |
106 | -#: dialog.c:482 | |
106 | +#: dialog.c:492 | |
107 | 107 | #, c-format |
108 | 108 | msgid "3270 terminal emulator for GTK %d.%d" |
109 | 109 | msgstr "Emulador 3270 para GTK+ %d.%d" |
... | ... | @@ -129,7 +129,7 @@ msgstr "<%s> exige %s" |
129 | 129 | msgid "<%s> requires a %s attribute" |
130 | 130 | msgstr "<%s> precisa do atributo %s" |
131 | 131 | |
132 | -#: uiparser/accelerator.c:41 uiparser/menubar.c:42 uiparser/toolbar.c:58 | |
132 | +#: uiparser/accelerator.c:41 uiparser/menubar.c:42 uiparser/toolbar.c:59 | |
133 | 133 | #: uiparser/popup.c:45 uiparser/scroll.c:43 uiparser/keypad.c:152 |
134 | 134 | #, c-format |
135 | 135 | msgid "<%s> should be on toplevel" |
... | ... | @@ -278,7 +278,7 @@ msgstr "Azul" |
278 | 278 | msgid "Bold" |
279 | 279 | msgstr "Negrito" |
280 | 280 | |
281 | -#: dialog.c:489 | |
281 | +#: dialog.c:499 | |
282 | 282 | msgid "Brazilian Public Software Portal" |
283 | 283 | msgstr "Portal do Software Público Brasileiro" |
284 | 284 | |
... | ... | @@ -346,7 +346,7 @@ msgstr "Não foi possível obter o tamanho do arquivo" |
346 | 346 | msgid "Can't load %s" |
347 | 347 | msgstr "Não foi possível carregar %s" |
348 | 348 | |
349 | -#: dialog.c:361 | |
349 | +#: dialog.c:367 | |
350 | 350 | msgid "Can't load file" |
351 | 351 | msgstr "Não foi possível carregar arquivo" |
352 | 352 | |
... | ... | @@ -367,7 +367,7 @@ msgstr "Incapaz de processar arquivos de descrição de UI em %s" |
367 | 367 | msgid "Can't parse unnamed element" |
368 | 368 | msgstr "Incapaz de processar elemento sem nome" |
369 | 369 | |
370 | -#: dialog.c:339 | |
370 | +#: dialog.c:345 | |
371 | 371 | #, c-format |
372 | 372 | msgid "" |
373 | 373 | "Can't save copy to file\n" |
... | ... | @@ -380,7 +380,7 @@ msgstr "" |
380 | 380 | msgid "Can't save file" |
381 | 381 | msgstr "Não foi possível salvar arquivo" |
382 | 382 | |
383 | -#: dialog.c:314 | |
383 | +#: dialog.c:320 | |
384 | 384 | #, c-format |
385 | 385 | msgid "" |
386 | 386 | "Can't save screen to file\n" |
... | ... | @@ -389,7 +389,7 @@ msgstr "" |
389 | 389 | "Não foi possível salvar a tela no arquivo\n" |
390 | 390 | "%s" |
391 | 391 | |
392 | -#: dialog.c:328 | |
392 | +#: dialog.c:334 | |
393 | 393 | #, c-format |
394 | 394 | msgid "" |
395 | 395 | "Can't save selection to file\n" |
... | ... | @@ -656,7 +656,7 @@ msgstr "Erro em fcntl(%s) ao ativar o modo não blocante" |
656 | 656 | msgid "Error in ioctl(%s) when setting no blocking mode" |
657 | 657 | msgstr "Erro em ioctl(%s) ao ativar o modo não blocante" |
658 | 658 | |
659 | -#: dialog.c:359 | |
659 | +#: dialog.c:365 | |
660 | 660 | #, c-format |
661 | 661 | msgid "Error loading %s" |
662 | 662 | msgstr "Erro lendo %s" |
... | ... | @@ -1154,7 +1154,7 @@ msgstr "Colar próximo" |
1154 | 1154 | msgid "Paste text file" |
1155 | 1155 | msgstr "Colar arquivo texto" |
1156 | 1156 | |
1157 | -#: dialog.c:396 | |
1157 | +#: dialog.c:402 | |
1158 | 1158 | msgid "Paste text file contents" |
1159 | 1159 | msgstr "Colar conteúdo de arquivo texto" |
1160 | 1160 | |
... | ... | @@ -1491,7 +1491,7 @@ msgstr "" |
1491 | 1491 | msgid "Save copy" |
1492 | 1492 | msgstr "Salvar cópia" |
1493 | 1493 | |
1494 | -#: dialog.c:338 | |
1494 | +#: dialog.c:344 | |
1495 | 1495 | msgid "Save copy to file" |
1496 | 1496 | msgstr "Salvar cópia para arquivo" |
1497 | 1497 | |
... | ... | @@ -1499,7 +1499,7 @@ msgstr "Salvar cópia para arquivo" |
1499 | 1499 | msgid "Save screen" |
1500 | 1500 | msgstr "Salvar tela" |
1501 | 1501 | |
1502 | -#: dialog.c:313 | |
1502 | +#: dialog.c:319 | |
1503 | 1503 | msgid "Save screen to file" |
1504 | 1504 | msgstr "Salvar tela para arquivo" |
1505 | 1505 | |
... | ... | @@ -1507,7 +1507,7 @@ msgstr "Salvar tela para arquivo" |
1507 | 1507 | msgid "Save selected" |
1508 | 1508 | msgstr "Salvar seleção" |
1509 | 1509 | |
1510 | -#: dialog.c:327 | |
1510 | +#: dialog.c:333 | |
1511 | 1511 | msgid "Save selection to file" |
1512 | 1512 | msgstr "Salvar seleção para arquivo" |
1513 | 1513 | |
... | ... | @@ -1862,7 +1862,7 @@ msgstr "" |
1862 | 1862 | "O certificado fornecido não pode ser utilizado para a finalidade " |
1863 | 1863 | "especificada." |
1864 | 1864 | |
1865 | -#: dialog.c:436 | |
1865 | +#: dialog.c:446 | |
1866 | 1866 | msgid "" |
1867 | 1867 | "This program is free software; you can redistribute it and/or modify it " |
1868 | 1868 | "under the terms of the GNU General Public License as published by the Free " |
... | ... | @@ -2000,7 +2000,7 @@ msgstr "Erro SSL inesperado" |
2000 | 2000 | msgid "Unexpected SSL error <b>%ld</b>" |
2001 | 2001 | msgstr "Erro SSL <b>%ld</b> inesperado" |
2002 | 2002 | |
2003 | -#: uiparser/menubar.c:48 uiparser/toolbar.c:64 uiparser/popup.c:51 | |
2003 | +#: uiparser/menubar.c:48 uiparser/toolbar.c:65 uiparser/popup.c:51 | |
2004 | 2004 | #, c-format |
2005 | 2005 | msgid "Unexpected action attribute in <%s>" |
2006 | 2006 | msgstr "Atributo inesperado \"action\" em <%s>" |
... | ... | @@ -2131,7 +2131,7 @@ msgstr "Usar teclas +/- para navegar por campos" |
2131 | 2131 | msgid "Variable" |
2132 | 2132 | msgstr "Variável" |
2133 | 2133 | |
2134 | -#: dialog.c:476 | |
2134 | +#: dialog.c:486 | |
2135 | 2135 | #, c-format |
2136 | 2136 | msgid "Version %s - Revision %s" |
2137 | 2137 | msgstr "Versão %s - Revisão %s" |
... | ... | @@ -2342,7 +2342,7 @@ msgstr "setsockopt(%s)" |
2342 | 2342 | msgid "socket" |
2343 | 2343 | msgstr "socket" |
2344 | 2344 | |
2345 | -#: dialog.c:492 | |
2345 | +#: dialog.c:502 | |
2346 | 2346 | msgid "translator-credits" |
2347 | 2347 | msgstr "translator-credits" |
2348 | 2348 | ... | ... |
src/pw3270/common/config.c
... | ... | @@ -64,37 +64,40 @@ |
64 | 64 | |
65 | 65 | /*--[ Implement ]------------------------------------------------------------------------------------*/ |
66 | 66 | |
67 | -/* | |
68 | -#ifdef WIN32 | |
69 | - | |
70 | -gchar * get_last_error_msg(void) | |
71 | -{ | |
72 | - LPVOID lpMsgBuf; | |
73 | - DWORD dw = GetLastError(); | |
74 | - gchar * ptr; | |
75 | - gsize bytes_written; | |
76 | - | |
77 | - FormatMessage( FORMAT_MESSAGE_ALLOCATE_BUFFER|FORMAT_MESSAGE_FROM_SYSTEM|FORMAT_MESSAGE_IGNORE_INSERTS, | |
78 | - NULL, | |
79 | - dw, | |
80 | - MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), | |
81 | - (LPTSTR) &lpMsgBuf, | |
82 | - 0, NULL ); | |
83 | - | |
84 | - for(ptr=lpMsgBuf;*ptr != '\n';ptr++); | |
85 | - *ptr = 0; | |
67 | +#ifdef HAVE_WIN_REGISTRY | |
86 | 68 | |
87 | - ptr = g_locale_to_utf8(lpMsgBuf,strlen(lpMsgBuf)-1,NULL,&bytes_written,NULL); | |
69 | + enum REG_KEY | |
70 | + { | |
71 | + REG_KEY_USER, | |
72 | + REG_KEY_SYSTEM, | |
73 | + REG_KEY_INEXISTENT | |
74 | + }; | |
88 | 75 | |
89 | - LocalFree(lpMsgBuf); | |
76 | + static enum REG_KEY registry_query(const gchar *group, const gchar *key, HKEY *hKey) | |
77 | + { | |
78 | + static HKEY predefined[] = { HKEY_CURRENT_USER, HKEY_LOCAL_MACHINE }; | |
79 | + gchar * path = g_strdup_printf("%s\\%s\\%s",registry_path,g_get_application_name(),group); | |
80 | + int f; | |
90 | 81 | |
91 | - return ptr; | |
92 | -} | |
82 | + for(f=0;f<G_N_ELEMENTS(predefined);f++) | |
83 | + { | |
84 | + if(RegOpenKeyEx(predefined[f],path,0,KEY_READ,hKey) == ERROR_SUCCESS) | |
85 | + { | |
86 | + if(RegQueryValueExA(*hKey,key,NULL,NULL,NULL,NULL) == ERROR_SUCCESS) | |
87 | + { | |
88 | + trace("Key[%s\%s] found at id %d",path,key,f); | |
89 | + g_free(path); | |
90 | + return f; | |
91 | + } | |
92 | + RegCloseKey(*hKey); | |
93 | + } | |
94 | + } | |
93 | 95 | |
94 | -#endif // WIN32 | |
95 | -*/ | |
96 | + trace("Key[%s\%s] not found",path,key,f); | |
97 | + g_free(path); | |
96 | 98 | |
97 | -#ifdef HAVE_WIN_REGISTRY | |
99 | + return -1; | |
100 | + } | |
98 | 101 | |
99 | 102 | static BOOL registry_open_key(const gchar *group, const gchar *key, REGSAM samDesired, HKEY *hKey) |
100 | 103 | { |
... | ... | @@ -240,7 +243,29 @@ gchar * get_last_error_msg(void) |
240 | 243 | gboolean get_boolean_from_config(const gchar *group, const gchar *key, gboolean def) |
241 | 244 | { |
242 | 245 | #ifdef HAVE_WIN_REGISTRY |
246 | + gboolean ret = def; | |
247 | + HKEY hKey; | |
248 | + | |
249 | + if(registry_query(group,key,&hKey) != REG_KEY_INEXISTENT) | |
250 | + { | |
251 | + DWORD data; | |
252 | + unsigned long datalen = sizeof(data); | |
253 | + unsigned long datatype; | |
254 | + | |
255 | + if(RegQueryValueExA(hKey,key,NULL,&datatype,(BYTE *) &data,&datalen) == ERROR_SUCCESS) | |
256 | + { | |
257 | + if(datatype == REG_DWORD) | |
258 | + ret = data ? TRUE : FALSE; | |
259 | + else | |
260 | + g_warning("Unexpected registry data type in %s\\%s\\%s\\%s",registry_path,g_get_application_name(),group,key); | |
261 | + } | |
243 | 262 | |
263 | + RegCloseKey(hKey); | |
264 | + } | |
265 | + | |
266 | + return ret; | |
267 | + | |
268 | +/* | |
244 | 269 | HKEY key_handle; |
245 | 270 | |
246 | 271 | if(registry_open_key(group,key,KEY_READ,&key_handle)) |
... | ... | @@ -263,6 +288,7 @@ gchar * get_last_error_msg(void) |
263 | 288 | return ret; |
264 | 289 | |
265 | 290 | } |
291 | +*/ | |
266 | 292 | |
267 | 293 | #else |
268 | 294 | ... | ... |