Commit 5051b86e20704d11944c13db39059b68fcaf1bd2

Authored by perry.werneck@gmail.com
1 parent 9ca78548

Melhorando o funcionamendo do mecanismo de acesso ao registry windows

Showing 2 changed files with 69 additions and 43 deletions   Show diff stats
@@ -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 &quot;Alerta 3270&quot; @@ -103,7 +103,7 @@ msgstr &quot;Alerta 3270&quot;
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 &quot;&lt;%s&gt; exige %s&quot; @@ -129,7 +129,7 @@ msgstr &quot;&lt;%s&gt; exige %s&quot;
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 &quot;Azul&quot; @@ -278,7 +278,7 @@ msgstr &quot;Azul&quot;
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 &quot;Não foi possível obter o tamanho do arquivo&quot; @@ -346,7 +346,7 @@ msgstr &quot;Não foi possível obter o tamanho do arquivo&quot;
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 &quot;Incapaz de processar arquivos de descrição de UI em %s&quot; @@ -367,7 +367,7 @@ msgstr &quot;Incapaz de processar arquivos de descrição de UI em %s&quot;
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 &quot;&quot; @@ -380,7 +380,7 @@ msgstr &quot;&quot;
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 &quot;&quot; @@ -389,7 +389,7 @@ msgstr &quot;&quot;
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 &quot;Erro em fcntl(%s) ao ativar o modo não blocante&quot; @@ -656,7 +656,7 @@ msgstr &quot;Erro em fcntl(%s) ao ativar o modo não blocante&quot;
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 &quot;Colar próximo&quot; @@ -1154,7 +1154,7 @@ msgstr &quot;Colar próximo&quot;
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 &quot;&quot; @@ -1491,7 +1491,7 @@ msgstr &quot;&quot;
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 &quot;Salvar cópia para arquivo&quot; @@ -1499,7 +1499,7 @@ msgstr &quot;Salvar cópia para arquivo&quot;
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 &quot;Salvar tela para arquivo&quot; @@ -1507,7 +1507,7 @@ msgstr &quot;Salvar tela para arquivo&quot;
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 &quot;&quot; @@ -1862,7 +1862,7 @@ msgstr &quot;&quot;
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 &quot;Erro SSL inesperado&quot; @@ -2000,7 +2000,7 @@ msgstr &quot;Erro SSL inesperado&quot;
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 &quot;Usar teclas +/- para navegar por campos&quot; @@ -2131,7 +2131,7 @@ msgstr &quot;Usar teclas +/- para navegar por campos&quot;
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 &quot;setsockopt(%s)&quot; @@ -2342,7 +2342,7 @@ msgstr &quot;setsockopt(%s)&quot;
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