/[winpt]/trunk/Src/WinPT.cpp
ViewVC logotype

Diff of /trunk/Src/WinPT.cpp

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 154 by twoaday, Wed Jan 18 12:38:46 2006 UTC revision 174 by twoaday, Thu Feb 2 08:20:50 2006 UTC
# Line 41  Line 41 
41  #include "wptCardEdit.h"  #include "wptCardEdit.h"
42  #include "wptCrypto.h"  #include "wptCrypto.h"
43    
44    void remove_crit_file_attrs (const char *fname, int force);
45    
46    
47  HINSTANCE glob_hinst;   /* global instance for the dialogs */  HINSTANCE glob_hinst;   /* global instance for the dialogs */
48  HWND glob_hwnd;         /* global window handle for the dialogs */  HWND glob_hwnd;         /* global window handle for the dialogs */
# Line 102  load_gettext (int prev_inst) Line 104  load_gettext (int prev_inst)
104  }  }
105    
106    
107    /* Return true if the GPG environment is useable. */
108    static bool
109    gpg_prefs_ok (void)
110    {
111        char *p;
112    
113        p = get_reg_entry_gpg4win ("gpg.exe");
114        if (!p || file_exist_check (p) != 0) {
115            free_if_alloc (p);
116            p = get_reg_entry_gpg ("gpgProgram");
117            if (!p || file_exist_check (p) != 0) {
118                free_if_alloc (p);
119                return false;
120            }
121        }
122        free_if_alloc (p);
123        p = get_reg_entry_gpg4win (NULL);    
124        if (!p || dir_exist_check (p) != 0) {
125            free_if_alloc (p);
126            p = get_reg_entry_gpg ("HomeDir");
127            if (!p || dir_exist_check (p) != 0) {
128                free_if_alloc (p);
129                return false;
130            }
131        }
132        free_if_alloc (p);
133        return true;
134    }
135    
136    
137    /* Check gpg files if they are read-only and ask the user
138       if this should be corrected. */
139    static void
140    check_readonly_attr (const char *homedir)
141    {
142        const char *files[] = {"pubring.gpg", "secring.gpg", "trustdb.gpg", NULL};
143        char *file;
144        int i;
145    
146        for (i=0; files[i] != NULL; i++) {
147            file = make_filename (homedir, files[i], NULL);
148            remove_crit_file_attrs (file, 0);
149            free_if_alloc (file);
150        }
151    }
152    
153    
154  /* Load the GPG environment. On the first start, some  /* Load the GPG environment. On the first start, some
155     checks are performed to find out in what state GPG is.     checks are performed to find out in what state GPG is.
156     Return value: 0  everything OK.     Return value: 0  everything OK.
# Line 122  load_gpg_env (void) Line 171  load_gpg_env (void)
171          return (1);          return (1);
172      }      }
173      free_if_alloc (p);      free_if_alloc (p);
174      p = multi_gnupg_path (0);  
175        p = get_reg_entry_gpg ("HomeDir");
176        if (!p || dir_exist_check (p) != 0) {
177            free_if_alloc (p);
178            p = multi_gnupg_path (0);
179        }
180      if (p && dir_exist_check (p)) {      if (p && dir_exist_check (p)) {
181          memset (&sec_attr, 0, sizeof (sec_attr));          memset (&sec_attr, 0, sizeof (sec_attr));
182          sec_attr.nLength = sizeof (sec_attr);          sec_attr.nLength = sizeof (sec_attr);
# Line 133  load_gpg_env (void) Line 187  load_gpg_env (void)
187              return (2);              return (2);
188          }          }
189      }      }
190        check_readonly_attr (p);
191      pkr = make_filename (p, "pubring", "gpg");      pkr = make_filename (p, "pubring", "gpg");
192      free_if_alloc (p);      free_if_alloc (p);
193      if (!pkr)      if (!pkr)
# Line 257  load_keyserver_conf (int quiet) Line 312  load_keyserver_conf (int quiet)
312      else      else
313          t = "keyserver.conf";          t = "keyserver.conf";
314      if (file_exist_check (t) == 0 && file_exist_check (buf) != 0) {      if (file_exist_check (t) == 0 && file_exist_check (buf) != 0) {
315          log_box (_("Keyserver"), MB_INFO,          //log_box (_("Keyserver"), MB_INFO,
316                   _("keyserver.conf will be copied to \"%s\"\r\n"), buf);          //       _("keyserver.conf will be copied to \"%s\"\r\n"), buf);
317          if (!CopyFile (t, buf, FALSE)) {          if (!CopyFile (t, buf, FALSE)) {
318              MessageBox (NULL, _("Failed to copy the keyserver.conf"),              MessageBox (NULL, _("Failed to copy the keyserver.conf"),
319                          _("Keyserver"), MB_ERR);                          _("Keyserver"), MB_ERR);
# Line 419  WinMain (HINSTANCE hinst, HINSTANCE hpre Line 474  WinMain (HINSTANCE hinst, HINSTANCE hpre
474              hotkeys_modify ();              hotkeys_modify ();
475          gnupg_load_config ();          gnupg_load_config ();
476      }      }
477        else { /* default settings. */
478            reg_prefs.keylist_mode = 1;
479        }
480    
481      if (is_gpg4win_installed ())      if (is_gpg4win_installed ())
482          load_gpg_env (); /* XXX: check return code. */          load_gpg_env (); /* XXX: check return code. */
# Line 431  WinMain (HINSTANCE hinst, HINSTANCE hpre Line 489  WinMain (HINSTANCE hinst, HINSTANCE hpre
489                   winpt_strerror (rc));                   winpt_strerror (rc));
490          s = get_fileopen_dlg (GetActiveWindow (),          s = get_fileopen_dlg (GetActiveWindow (),
491                                _("Select GPG Public Keyring"),                                _("Select GPG Public Keyring"),
492                                _("GPG Keyrings (*.gpg)\0*.gpg\0\0"),                                "GPG Keyrings (*.gpg)\0*.gpg\0\0",
493                                NULL);                                NULL);
494          if (s != NULL) {          if (s != NULL) {
495              size_t n;              size_t n;
# Line 590  WinMain (HINSTANCE hinst, HINSTANCE hpre Line 648  WinMain (HINSTANCE hinst, HINSTANCE hpre
648      }      }
649    
650      if (first_start) {      if (first_start) {
         struct first_start_s fs;  
651          struct genkey_s c;          struct genkey_s c;
652            int choice;
653          HWND h;          HWND h;
654  start:  start:
655          h = GetDesktopWindow ();          h = GetDesktopWindow ();
656          DialogBoxParam (glob_hinst, (LPCTSTR)IDD_WINPT_GPGPREFS, h,          if (!gpg_prefs_ok ())
657                DialogBoxParam (glob_hinst, (LPCTSTR)IDD_WINPT_GPGPREFS, h,
658                              gpgprefs_dlg_proc, 0);                              gpgprefs_dlg_proc, 0);
659          DialogBoxParam (glob_hinst, (LPCSTR)IDD_WINPT_FIRST, h,          choice = DialogBoxParam (glob_hinst, (LPCSTR)IDD_WINPT_FIRST, h,
660                          first_run_dlg_proc, (LPARAM)&fs);                                   first_run_dlg_proc, 0);
661          switch (fs.choice) {          switch (choice) {
662          case SETUP_KEYGEN:          case SETUP_KEYGEN:
663              c.interactive = 1;              c.interactive = 1;
664              c.first_start = 1;              c.first_start = 1;
# Line 617  start: Line 676  start:
676              }              }
677              break;              break;
678    
679          case -1: /* Cancel/Abort. */          case 0: /* Cancel/Abort. */
680            default:
681              DestroyWindow (hwnd);              DestroyWindow (hwnd);
682              free_gnupg_table ();              free_gnupg_table ();
683              return 0;              return 0;
684          }          }
685          update_keycache (hwnd);          update_keycache (hwnd);
686          check_crypto_engine ();          if (!check_crypto_engine ()) {
687                DestroyWindow (hwnd);
688                free_gnupg_table ();
689                return 0;
690            }
691      }      }
692      else {      else {
693          gpg_keycache_t c;          gpg_keycache_t c, sec_c;
694          update_keycache (hwnd);          update_keycache (hwnd);
695          c = keycache_get_ctx (1);          c = keycache_get_ctx (1);
696          if (!c || !gpg_keycache_get_size (c)) {          if (!c || !gpg_keycache_get_size (c)) {
# Line 648  start: Line 712  start:
712                  return 0;                  return 0;
713              }              }
714          }          }
715          if (check_default_key (c)) {          sec_c = keycache_get_ctx (0);
716            if (check_default_key (sec_c)) {
717              char *p = get_gnupg_default_key ();              char *p = get_gnupg_default_key ();
718              log_box (_("WinPT Error"), MB_ERR,              log_box (_("WinPT Error"), MB_ERR,
719                       _("Default key from the GPG options file could not be found.\n"                       _("Default key (from the GPG config file) could not be found.\n"
720                         "Please check your gpg.conf (options) to correct this:\n\n"                         "Please check your gpg.conf or set a new default key to correct it:\n\n"
721                         "%s: public key not found."), p? p : "[null]");                         "%s: public key not found."), p? p : "[null]");
722              free_if_alloc (p);              free_if_alloc (p);
723              DestroyWindow (hwnd);              DestroyWindow (hwnd);

Legend:
Removed from v.154  
changed lines
  Added in v.174

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26