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,7 +5,7 @@ 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: 2013-05-02 08:31-0300\n" | 8 | +"POT-Creation-Date: 2013-05-03 15:59-0300\n" |
9 | "PO-Revision-Date: 2013-04-23 10:22-0300\n" | 9 | "PO-Revision-Date: 2013-04-23 10:22-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" |
@@ -103,7 +103,7 @@ msgstr "Alerta 3270" | @@ -103,7 +103,7 @@ msgstr "Alerta 3270" | ||
103 | msgid "3270 screen" | 103 | msgid "3270 screen" |
104 | msgstr "Tela 3270" | 104 | msgstr "Tela 3270" |
105 | 105 | ||
106 | -#: dialog.c:482 | 106 | +#: dialog.c:492 |
107 | #, c-format | 107 | #, c-format |
108 | msgid "3270 terminal emulator for GTK %d.%d" | 108 | msgid "3270 terminal emulator for GTK %d.%d" |
109 | msgstr "Emulador 3270 para GTK+ %d.%d" | 109 | msgstr "Emulador 3270 para GTK+ %d.%d" |
@@ -129,7 +129,7 @@ msgstr "<%s> exige %s" | @@ -129,7 +129,7 @@ msgstr "<%s> exige %s" | ||
129 | msgid "<%s> requires a %s attribute" | 129 | msgid "<%s> requires a %s attribute" |
130 | msgstr "<%s> precisa do atributo %s" | 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 | #: uiparser/popup.c:45 uiparser/scroll.c:43 uiparser/keypad.c:152 | 133 | #: uiparser/popup.c:45 uiparser/scroll.c:43 uiparser/keypad.c:152 |
134 | #, c-format | 134 | #, c-format |
135 | msgid "<%s> should be on toplevel" | 135 | msgid "<%s> should be on toplevel" |
@@ -278,7 +278,7 @@ msgstr "Azul" | @@ -278,7 +278,7 @@ msgstr "Azul" | ||
278 | msgid "Bold" | 278 | msgid "Bold" |
279 | msgstr "Negrito" | 279 | msgstr "Negrito" |
280 | 280 | ||
281 | -#: dialog.c:489 | 281 | +#: dialog.c:499 |
282 | msgid "Brazilian Public Software Portal" | 282 | msgid "Brazilian Public Software Portal" |
283 | msgstr "Portal do Software Público Brasileiro" | 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,7 +346,7 @@ msgstr "Não foi possível obter o tamanho do arquivo" | ||
346 | msgid "Can't load %s" | 346 | msgid "Can't load %s" |
347 | msgstr "Não foi possível carregar %s" | 347 | msgstr "Não foi possível carregar %s" |
348 | 348 | ||
349 | -#: dialog.c:361 | 349 | +#: dialog.c:367 |
350 | msgid "Can't load file" | 350 | msgid "Can't load file" |
351 | msgstr "Não foi possível carregar arquivo" | 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,7 +367,7 @@ msgstr "Incapaz de processar arquivos de descrição de UI em %s" | ||
367 | msgid "Can't parse unnamed element" | 367 | msgid "Can't parse unnamed element" |
368 | msgstr "Incapaz de processar elemento sem nome" | 368 | msgstr "Incapaz de processar elemento sem nome" |
369 | 369 | ||
370 | -#: dialog.c:339 | 370 | +#: dialog.c:345 |
371 | #, c-format | 371 | #, c-format |
372 | msgid "" | 372 | msgid "" |
373 | "Can't save copy to file\n" | 373 | "Can't save copy to file\n" |
@@ -380,7 +380,7 @@ msgstr "" | @@ -380,7 +380,7 @@ msgstr "" | ||
380 | msgid "Can't save file" | 380 | msgid "Can't save file" |
381 | msgstr "Não foi possível salvar arquivo" | 381 | msgstr "Não foi possível salvar arquivo" |
382 | 382 | ||
383 | -#: dialog.c:314 | 383 | +#: dialog.c:320 |
384 | #, c-format | 384 | #, c-format |
385 | msgid "" | 385 | msgid "" |
386 | "Can't save screen to file\n" | 386 | "Can't save screen to file\n" |
@@ -389,7 +389,7 @@ msgstr "" | @@ -389,7 +389,7 @@ msgstr "" | ||
389 | "Não foi possível salvar a tela no arquivo\n" | 389 | "Não foi possível salvar a tela no arquivo\n" |
390 | "%s" | 390 | "%s" |
391 | 391 | ||
392 | -#: dialog.c:328 | 392 | +#: dialog.c:334 |
393 | #, c-format | 393 | #, c-format |
394 | msgid "" | 394 | msgid "" |
395 | "Can't save selection to file\n" | 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,7 +656,7 @@ msgstr "Erro em fcntl(%s) ao ativar o modo não blocante" | ||
656 | msgid "Error in ioctl(%s) when setting no blocking mode" | 656 | msgid "Error in ioctl(%s) when setting no blocking mode" |
657 | msgstr "Erro em ioctl(%s) ao ativar o modo não blocante" | 657 | msgstr "Erro em ioctl(%s) ao ativar o modo não blocante" |
658 | 658 | ||
659 | -#: dialog.c:359 | 659 | +#: dialog.c:365 |
660 | #, c-format | 660 | #, c-format |
661 | msgid "Error loading %s" | 661 | msgid "Error loading %s" |
662 | msgstr "Erro lendo %s" | 662 | msgstr "Erro lendo %s" |
@@ -1154,7 +1154,7 @@ msgstr "Colar próximo" | @@ -1154,7 +1154,7 @@ msgstr "Colar próximo" | ||
1154 | msgid "Paste text file" | 1154 | msgid "Paste text file" |
1155 | msgstr "Colar arquivo texto" | 1155 | msgstr "Colar arquivo texto" |
1156 | 1156 | ||
1157 | -#: dialog.c:396 | 1157 | +#: dialog.c:402 |
1158 | msgid "Paste text file contents" | 1158 | msgid "Paste text file contents" |
1159 | msgstr "Colar conteúdo de arquivo texto" | 1159 | msgstr "Colar conteúdo de arquivo texto" |
1160 | 1160 | ||
@@ -1491,7 +1491,7 @@ msgstr "" | @@ -1491,7 +1491,7 @@ msgstr "" | ||
1491 | msgid "Save copy" | 1491 | msgid "Save copy" |
1492 | msgstr "Salvar cópia" | 1492 | msgstr "Salvar cópia" |
1493 | 1493 | ||
1494 | -#: dialog.c:338 | 1494 | +#: dialog.c:344 |
1495 | msgid "Save copy to file" | 1495 | msgid "Save copy to file" |
1496 | msgstr "Salvar cópia para arquivo" | 1496 | msgstr "Salvar cópia para arquivo" |
1497 | 1497 | ||
@@ -1499,7 +1499,7 @@ msgstr "Salvar cópia para arquivo" | @@ -1499,7 +1499,7 @@ msgstr "Salvar cópia para arquivo" | ||
1499 | msgid "Save screen" | 1499 | msgid "Save screen" |
1500 | msgstr "Salvar tela" | 1500 | msgstr "Salvar tela" |
1501 | 1501 | ||
1502 | -#: dialog.c:313 | 1502 | +#: dialog.c:319 |
1503 | msgid "Save screen to file" | 1503 | msgid "Save screen to file" |
1504 | msgstr "Salvar tela para arquivo" | 1504 | msgstr "Salvar tela para arquivo" |
1505 | 1505 | ||
@@ -1507,7 +1507,7 @@ msgstr "Salvar tela para arquivo" | @@ -1507,7 +1507,7 @@ msgstr "Salvar tela para arquivo" | ||
1507 | msgid "Save selected" | 1507 | msgid "Save selected" |
1508 | msgstr "Salvar seleção" | 1508 | msgstr "Salvar seleção" |
1509 | 1509 | ||
1510 | -#: dialog.c:327 | 1510 | +#: dialog.c:333 |
1511 | msgid "Save selection to file" | 1511 | msgid "Save selection to file" |
1512 | msgstr "Salvar seleção para arquivo" | 1512 | msgstr "Salvar seleção para arquivo" |
1513 | 1513 | ||
@@ -1862,7 +1862,7 @@ msgstr "" | @@ -1862,7 +1862,7 @@ msgstr "" | ||
1862 | "O certificado fornecido não pode ser utilizado para a finalidade " | 1862 | "O certificado fornecido não pode ser utilizado para a finalidade " |
1863 | "especificada." | 1863 | "especificada." |
1864 | 1864 | ||
1865 | -#: dialog.c:436 | 1865 | +#: dialog.c:446 |
1866 | msgid "" | 1866 | msgid "" |
1867 | "This program is free software; you can redistribute it and/or modify it " | 1867 | "This program is free software; you can redistribute it and/or modify it " |
1868 | "under the terms of the GNU General Public License as published by the Free " | 1868 | "under the terms of the GNU General Public License as published by the Free " |
@@ -2000,7 +2000,7 @@ msgstr "Erro SSL inesperado" | @@ -2000,7 +2000,7 @@ msgstr "Erro SSL inesperado" | ||
2000 | msgid "Unexpected SSL error <b>%ld</b>" | 2000 | msgid "Unexpected SSL error <b>%ld</b>" |
2001 | msgstr "Erro SSL <b>%ld</b> inesperado" | 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 | #, c-format | 2004 | #, c-format |
2005 | msgid "Unexpected action attribute in <%s>" | 2005 | msgid "Unexpected action attribute in <%s>" |
2006 | msgstr "Atributo inesperado \"action\" em <%s>" | 2006 | msgstr "Atributo inesperado \"action\" em <%s>" |
@@ -2131,7 +2131,7 @@ msgstr "Usar teclas +/- para navegar por campos" | @@ -2131,7 +2131,7 @@ msgstr "Usar teclas +/- para navegar por campos" | ||
2131 | msgid "Variable" | 2131 | msgid "Variable" |
2132 | msgstr "Variável" | 2132 | msgstr "Variável" |
2133 | 2133 | ||
2134 | -#: dialog.c:476 | 2134 | +#: dialog.c:486 |
2135 | #, c-format | 2135 | #, c-format |
2136 | msgid "Version %s - Revision %s" | 2136 | msgid "Version %s - Revision %s" |
2137 | msgstr "Versão %s - Revisão %s" | 2137 | msgstr "Versão %s - Revisão %s" |
@@ -2342,7 +2342,7 @@ msgstr "setsockopt(%s)" | @@ -2342,7 +2342,7 @@ msgstr "setsockopt(%s)" | ||
2342 | msgid "socket" | 2342 | msgid "socket" |
2343 | msgstr "socket" | 2343 | msgstr "socket" |
2344 | 2344 | ||
2345 | -#: dialog.c:492 | 2345 | +#: dialog.c:502 |
2346 | msgid "translator-credits" | 2346 | msgid "translator-credits" |
2347 | msgstr "translator-credits" | 2347 | msgstr "translator-credits" |
2348 | 2348 |
src/pw3270/common/config.c
@@ -64,37 +64,40 @@ | @@ -64,37 +64,40 @@ | ||
64 | 64 | ||
65 | /*--[ Implement ]------------------------------------------------------------------------------------*/ | 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 | static BOOL registry_open_key(const gchar *group, const gchar *key, REGSAM samDesired, HKEY *hKey) | 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,7 +243,29 @@ gchar * get_last_error_msg(void) | ||
240 | gboolean get_boolean_from_config(const gchar *group, const gchar *key, gboolean def) | 243 | gboolean get_boolean_from_config(const gchar *group, const gchar *key, gboolean def) |
241 | { | 244 | { |
242 | #ifdef HAVE_WIN_REGISTRY | 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 | HKEY key_handle; | 269 | HKEY key_handle; |
245 | 270 | ||
246 | if(registry_open_key(group,key,KEY_READ,&key_handle)) | 271 | if(registry_open_key(group,key,KEY_READ,&key_handle)) |
@@ -263,6 +288,7 @@ gchar * get_last_error_msg(void) | @@ -263,6 +288,7 @@ gchar * get_last_error_msg(void) | ||
263 | return ret; | 288 | return ret; |
264 | 289 | ||
265 | } | 290 | } |
291 | +*/ | ||
266 | 292 | ||
267 | #else | 293 | #else |
268 | 294 |