/[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 159 by twoaday, Wed Jan 18 13:57:31 2006 UTC revision 180 by twoaday, Mon Mar 6 14:41:58 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 313  enable_mobile_mode (void) Line 368  enable_mobile_mode (void)
368      reg_prefs.auto_backup = 0;      reg_prefs.auto_backup = 0;
369      reg_prefs.cache_time = 0;      reg_prefs.cache_time = 0;
370      reg_prefs.expert = 0;      reg_prefs.expert = 0;
     reg_prefs.keylist_mode = 1;  
371      reg_prefs.kserv_conf = m_strdup ("keyserver.conf");      reg_prefs.kserv_conf = m_strdup ("keyserver.conf");
372      reg_prefs.no_zip_mmedia = 1;      reg_prefs.no_zip_mmedia = 1;
373      reg_prefs.use_tmpfiles = 1;      reg_prefs.use_tmpfiles = 1;
# Line 415  WinMain (HINSTANCE hinst, HINSTANCE hpre Line 469  WinMain (HINSTANCE hinst, HINSTANCE hpre
469          reg_prefs.use_tmpfiles = 1; /* default */          reg_prefs.use_tmpfiles = 1; /* default */
470          reg_prefs.fm.progress = 0; /* XXX: fix the bug and enable it again */          reg_prefs.fm.progress = 0; /* XXX: fix the bug and enable it again */
471          get_reg_winpt_prefs (&reg_prefs);          get_reg_winpt_prefs (&reg_prefs);
         if (!reg_prefs.no_hotkeys)  
             hotkeys_modify ();  
472          gnupg_load_config ();          gnupg_load_config ();
473      }      }
474    
# Line 431  WinMain (HINSTANCE hinst, HINSTANCE hpre Line 483  WinMain (HINSTANCE hinst, HINSTANCE hpre
483                   winpt_strerror (rc));                   winpt_strerror (rc));
484          s = get_fileopen_dlg (GetActiveWindow (),          s = get_fileopen_dlg (GetActiveWindow (),
485                                _("Select GPG Public Keyring"),                                _("Select GPG Public Keyring"),
486                                _("GPG Keyrings (*.gpg)\0*.gpg\0\0"),                                "GPG Keyrings (*.gpg)\0*.gpg\0\0",
487                                NULL);                                NULL);
488          if (s != NULL) {          if (s != NULL) {
489              size_t n;              size_t n;
# Line 590  WinMain (HINSTANCE hinst, HINSTANCE hpre Line 642  WinMain (HINSTANCE hinst, HINSTANCE hpre
642      }      }
643    
644      if (first_start) {      if (first_start) {
         struct first_start_s fs;  
645          struct genkey_s c;          struct genkey_s c;
646            int choice;
647          HWND h;          HWND h;
648  start:  start:
649          h = GetDesktopWindow ();          h = GetDesktopWindow ();
650          DialogBoxParam (glob_hinst, (LPCTSTR)IDD_WINPT_GPGPREFS, h,          if (!gpg_prefs_ok ())
651                DialogBoxParam (glob_hinst, (LPCTSTR)IDD_WINPT_GPGPREFS, h,
652                              gpgprefs_dlg_proc, 0);                              gpgprefs_dlg_proc, 0);
653          DialogBoxParam (glob_hinst, (LPCSTR)IDD_WINPT_FIRST, h,          choice = DialogBoxParam (glob_hinst, (LPCSTR)IDD_WINPT_FIRST, h,
654                          first_run_dlg_proc, (LPARAM)&fs);                                   first_run_dlg_proc, 0);
655          switch (fs.choice) {          switch (choice) {
656          case SETUP_KEYGEN:          case SETUP_KEYGEN:
657              c.interactive = 1;              c.interactive = 1;
658              c.first_start = 1;              c.first_start = 1;
# Line 617  start: Line 670  start:
670              }              }
671              break;              break;
672    
673          case -1: /* Cancel/Abort. */          case 0: /* Cancel/Abort. */
674            default:
675              DestroyWindow (hwnd);              DestroyWindow (hwnd);
676              free_gnupg_table ();              free_gnupg_table ();
677              return 0;              return 0;
678          }          }
679          update_keycache (hwnd);          update_keycache (hwnd);
680          check_crypto_engine ();          if (!check_crypto_engine ()) {
681                DestroyWindow (hwnd);
682                free_gnupg_table ();
683                return 0;
684            }
685      }      }
686      else {      else {
687          gpg_keycache_t c;          gpg_keycache_t c, sec_c;
688          update_keycache (hwnd);          update_keycache (hwnd);
689          c = keycache_get_ctx (1);          c = keycache_get_ctx (1);
690          if (!c || !gpg_keycache_get_size (c)) {          if (!c || !gpg_keycache_get_size (c)) {
# Line 648  start: Line 706  start:
706                  return 0;                  return 0;
707              }              }
708          }          }
709          if (check_default_key (c)) {          sec_c = keycache_get_ctx (0);
710            if (check_default_key (sec_c)) {
711              char *p = get_gnupg_default_key ();              char *p = get_gnupg_default_key ();
712              log_box (_("WinPT Error"), MB_ERR,              log_box (_("WinPT Error"), MB_ERR,
713                       _("Default key from the GPG options file could not be found.\n"                       _("Default key (from the GPG config file) could not be found.\n"
714                         "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"
715                         "%s: public key not found."), p? p : "[null]");                         "%s: public key not found."), p? p : "[null]");
716              free_if_alloc (p);              free_if_alloc (p);
717              DestroyWindow (hwnd);              DestroyWindow (hwnd);

Legend:
Removed from v.159  
changed lines
  Added in v.180

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26