/[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 176 by twoaday, Mon Feb 13 09:38:03 2006 UTC revision 193 by twoaday, Sat Apr 1 12:36:35 2006 UTC
# Line 40  Line 40 
40  #include "wptContext.h"  #include "wptContext.h"
41  #include "wptCardEdit.h"  #include "wptCardEdit.h"
42  #include "wptCrypto.h"  #include "wptCrypto.h"
43    #include "wptUTF8.h"
44    
45  void remove_crit_file_attrs (const char *fname, int force);  void remove_crit_file_attrs (const char *fname, int force);
46    
# Line 49  HWND glob_hwnd;                /* global window handle Line 50  HWND glob_hwnd;                /* global window handle
50  HWND activ_hwnd;  HWND activ_hwnd;
51  int scard_support = 0;  int scard_support = 0;
52  int debug = 0;  int debug = 0;
53  int mobile = 0;  int mobile_mode_active = 0;
54  int gpg_read_only = 0;  int gpg_read_only = 0;
55  char gpgver[3];  char gpgver[3];
56    
57    
58  /* Load the key cache and rebuild the signature cache. */  /* Load the key cache and rebuild the signature cache. */
59  static void  void
60  update_keycache (HWND hwnd)  update_keycache (HWND hwnd)
61  {  {
62      refresh_cache_s rcs = {0};      refresh_cache_s rcs = {0};
# Line 70  update_keycache (HWND hwnd) Line 71  update_keycache (HWND hwnd)
71  /* Set GPGME debug mode. If @val is 0, the debug mode is disabled. */  /* Set GPGME debug mode. If @val is 0, the debug mode is disabled. */
72  void  void
73  gpg_set_debug_mode (int val)  gpg_set_debug_mode (int val)
74  {        {
75      if (val)      static char buf[256];
76          putenv ("GPGME_DEBUG=5:gpgme.dbg");      char tmp[128];
77        
78        /* XXX: no gpgme.dbg is created. */
79        if (val > 0) {
80            GetTempPath (sizeof (tmp)-1, tmp);
81            _snprintf (buf, sizeof (buf)-1, "GPGME_DEBUG=5:%sgpgme.dbg", tmp);
82            putenv (buf);
83        }
84      else      else
85          putenv ("GPGME_DEBUG=");          putenv ("GPGME_DEBUG=");
86  }  }
87    
88    
 /* Return the name of the gettext language file. */  
 static char*  
 get_gettext_lang (void)  
 {      
     char *fname;  
     fname = get_reg_entry_mo ();  
     if (!fname)  
         return NULL;  
     return fname;  
 }  
   
   
89  /* Initialize the gettext sub system. */  /* Initialize the gettext sub system. */
90  static void  static void
91  load_gettext (int prev_inst)  load_gettext (void)
92  {  {
93      char *nls = NULL;      char *nls = NULL;
94    
95      nls = get_gettext_lang ();      /* Return the name of the gettext language file. */
96        nls = get_reg_entry_mo ();
97      if (nls != NULL) {      if (nls != NULL) {
98          set_gettext_file ("winpt", nls);          set_gettext_file ("winpt", nls);
99          free_if_alloc (nls);          free_if_alloc (nls);
# Line 116  gpg_prefs_ok (void) Line 113  gpg_prefs_ok (void)
113          p = get_reg_entry_gpg ("gpgProgram");          p = get_reg_entry_gpg ("gpgProgram");
114          if (!p || file_exist_check (p) != 0) {          if (!p || file_exist_check (p) != 0) {
115              free_if_alloc (p);              free_if_alloc (p);
116                log_debug ("gpg_prefs_ok: could not locate gpg.exe");
117              return false;              return false;
118          }          }
119      }      }
# Line 126  gpg_prefs_ok (void) Line 124  gpg_prefs_ok (void)
124          p = get_reg_entry_gpg ("HomeDir");          p = get_reg_entry_gpg ("HomeDir");
125          if (!p || dir_exist_check (p) != 0) {          if (!p || dir_exist_check (p) != 0) {
126              free_if_alloc (p);              free_if_alloc (p);
127                log_debug ("gpg_prefs_ok: could not determine home directory");
128              return false;              return false;
129          }          }
130      }      }
# Line 206  static int Line 205  static int
205  check_default_key (gpg_keycache_t kc)  check_default_key (gpg_keycache_t kc)
206  {  {
207      gpgme_key_t key;      gpgme_key_t key;
208      gpgme_error_t err = GPG_ERR_NO_ERROR;      gpgme_error_t err = gpg_error (GPG_ERR_NO_ERROR);
209      char *defkey;      char *defkey;
210    
211      defkey = get_gnupg_default_key ();      defkey = get_gnupg_default_key ();
# Line 258  get_prog_part (const char * fname, int u Line 257  get_prog_part (const char * fname, int u
257  static bool  static bool
258  check_crypto_engine (void)  check_crypto_engine (void)
259  {  {
260      int ma=0, mi=0, pa=0;      int ma = 0, mi = 0, pa = 0;
261      int rc;      int rc;
262    
263      rc = check_gnupg_engine (NEED_GPG_VERSION, &ma, &mi, &pa);      rc = check_gnupg_engine (NEED_GPG_VERSION, &ma, &mi, &pa);
# Line 275  check_crypto_engine (void) Line 274  check_crypto_engine (void)
274          return false;          return false;
275      }      }
276      /* We enable smartcard support for GPG: >= 2 or >= 1.4.3 */      /* We enable smartcard support for GPG: >= 2 or >= 1.4.3 */
277      if (ma > 1 || pa >= 3)          if (ma > 1 || pa >= 3)
278          scard_support = 1;          scard_support = 1;
279    
280      gpgver[0] = ma;      gpgver[0] = ma;
# Line 291  static int Line 290  static int
290  load_keyserver_conf (int quiet)  load_keyserver_conf (int quiet)
291  {  {
292      char *buf;      char *buf;
293      const char *t;      const char *t, *conf;
294      int rc;      int rc;
295    
296      /* Create $APPDATA\winpt if needed. */      /* Create $APPDATA\winpt if needed. */
# Line 307  load_keyserver_conf (int quiet) Line 306  load_keyserver_conf (int quiet)
306      /* Check for $APPDATA\winpt\keyserver.conf */      /* Check for $APPDATA\winpt\keyserver.conf */
307      buf = make_special_filename (CSIDL_APPDATA, "winpt\\keyserver.conf", NULL);      buf = make_special_filename (CSIDL_APPDATA, "winpt\\keyserver.conf", NULL);
308    
309      if (!file_exist_check (get_prog_part ("keyserver.conf", 0)))      conf = get_prog_part ("keyserver.conf", 0);
310          t = get_prog_part ("keyserver.conf", 0);      if (!file_exist_check (conf))
311            t = conf;
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) {
         //log_box (_("Keyserver"), MB_INFO,  
         //       _("keyserver.conf will be copied to \"%s\"\r\n"), buf);  
315          if (!CopyFile (t, buf, FALSE)) {          if (!CopyFile (t, buf, FALSE)) {
316              MessageBox (NULL, _("Failed to copy the keyserver.conf"),              MessageBox (NULL, _("Failed to copy the keyserver.conf"),
317                          _("Keyserver"), MB_ERR);                          _("Keyserver"), MB_ERR);
# Line 360  check_for_empty_keyrings (bool pub_only) Line 358  check_for_empty_keyrings (bool pub_only)
358    
359    
360  /* Enable the mobility mode. */  /* Enable the mobility mode. */
361  static void  static int
362  enable_mobile_mode (void)  enable_mobile_mode (void)
363  {  {
364        if (dir_exist_check ("temp") != 0) {
365            if (!CreateDirectory ("temp", NULL)) {
366                MessageBox (NULL, "Could not create mobile temp directory",
367                            "WinPT Mobile Error", MB_ERR);
368                return -1;
369            }
370        }
371    
372      memset (&reg_prefs, 0, sizeof (reg_prefs));      memset (&reg_prefs, 0, sizeof (reg_prefs));
373      reg_prefs.always_trust = 0;      reg_prefs.always_trust = 0;
374      reg_prefs.auto_backup = 0;      reg_prefs.auto_backup = 0;
# Line 373  enable_mobile_mode (void) Line 379  enable_mobile_mode (void)
379      reg_prefs.use_tmpfiles = 1;      reg_prefs.use_tmpfiles = 1;
380      reg_prefs.word_wrap = 80;      reg_prefs.word_wrap = 80;
381      reg_prefs.use_viewer = 0; /* XXX */      reg_prefs.use_viewer = 0; /* XXX */
382        return 0;
383    }
384    
385    
386    void
387    set_default_keyserver (void)
388    {
389        char *host = get_reg_entry_keyserver ("Default");
390        char *str_port = get_reg_entry_keyserver ("Default_Port");
391        WORD port = HKP_PORT;
392    
393        if (!host)
394            keyserver_set_default (NULL, 0);
395        else {
396            if (str_port && *str_port)
397                port = atoi (str_port);
398            keyserver_set_default (host, port);
399        }
400        free_if_alloc (host);
401        free_if_alloc (str_port);
402    }
403    
404    
405    /* Display info message that WinPT is now in debug mode. */
406    void
407    winpt_debug_msg (void)
408    {      
409        char output[512];
410        char temp[128];
411            
412        GetTempPath (sizeof temp -1, temp);
413        _snprintf (output, sizeof output - 1,
414            "The GPGME output file is %sgpgme.dbg\n"
415            "The WinPT output file is %swinpt.log\n", temp, temp);
416        MessageBox (NULL, output, "WinPT now runs in DEBUG MODE", MB_INFO);
417  }  }
418    
419    
# Line 384  WinMain (HINSTANCE hinst, HINSTANCE hpre Line 425  WinMain (HINSTANCE hinst, HINSTANCE hpre
425      HACCEL accel_tab;      HACCEL accel_tab;
426      MSG msg;      MSG msg;
427      HWND hwnd = NULL;      HWND hwnd = NULL;
428      WORD ver[3], ptdver[4];      /*WORD ver[3], ptdver[4];*/
429      int rc, ec, created = 0;      int rc, ec, created = 0;
430      int first_start = 0, start_gpgprefs = 0;      int first_start = 0, start_gpgprefs = 0;
431      int winpt_inst_found = 0;      int winpt_inst_found = 0;
432      int start_manager = 0;      int start_manager = 0;
433      const char *s;      const char *s;
434    
435      glob_hinst = hinst;      glob_hinst = hinst;
436      if (cmdline && stristr (cmdline, "--stop")) {      if (cmdline && stristr (cmdline, "--stop")) {
# Line 399  WinMain (HINSTANCE hinst, HINSTANCE hpre Line 440  WinMain (HINSTANCE hinst, HINSTANCE hpre
440          return 0;          return 0;
441      }      }
442    
     /*  
     OSVERSIONINFO osinf;  
     memset (&osinf, 0, sizeof (osinf));  
     if (GetVersionEx (&osinf) &&  
         osinf.dwPlatformId == VER_PLATFORM_WIN32_WINDOWS &&  
         osinf.dwMinorVersion == 0) {  
         msg_box (NULL, "WinPT propably does not work on Windows 95 without restrictions",  
                  "WinPT Warning", MB_INFO);  
     }  
     */  
   
443      #ifdef _DEBUG      #ifdef _DEBUG
444      gpg_set_debug_mode (1);      gpg_set_debug_mode (1);
445      debug = 1;      debug = 1;
446      #endif      #endif
447    
448        /* XXX
449      get_file_version ("WinPT.exe", &ver[0], &ver[1], &ver[2], &ver[3]);      get_file_version ("WinPT.exe", &ver[0], &ver[1], &ver[2], &ver[3]);
450      get_file_version ("PTD.dll", &ptdver[0], &ptdver[1],      get_file_version ("PTD.dll", &ptdver[0], &ptdver[1],
451                                   &ptdver[2], &ptdver[3]);                                   &ptdver[2], &ptdver[3]);
452      /* XXX      
453      if (ptdver[0] != ver[0] || ptdver[1] != ver[1]|| ptdver[2] != ver[2]) {      if (ptdver[0] != ver[0] || ptdver[1] != ver[1]|| ptdver[2] != ver[2]) {
454          log_box (_("WinPT Error"), MB_ERR,          log_box (_("WinPT Error"), MB_ERR,
455                   _("The PTD.dll file has a different version than WinPT.exe\n"                   _("The PTD.dll file has a different version than WinPT.exe\n"
# Line 448  WinMain (HINSTANCE hinst, HINSTANCE hpre Line 479  WinMain (HINSTANCE hinst, HINSTANCE hpre
479      if (cmdline && stristr (cmdline, "--mobile")) {      if (cmdline && stristr (cmdline, "--mobile")) {
480          msg_box (NULL, "WARNING: mobile modus is not fully implemented yet!",          msg_box (NULL, "WARNING: mobile modus is not fully implemented yet!",
481                   "WinPT", MB_INFO);                   "WinPT", MB_INFO);
482          mobile = 1;          mobile_mode_active = 1;
483      }      }
484        
485        set_default_keyserver ();
486        load_gettext ();
487    
488      set_default_kserver ();      if (!mobile_mode_active) {
     load_gettext (winpt_inst_found);  
   
     if (!mobile) {  
489          regist_inst_gnupg (1);          regist_inst_gnupg (1);
490          regist_inst_winpt (1, &created);          regist_inst_winpt (1, &created);
491      }      }
492      else {      else {
493          enable_mobile_mode ();          if (enable_mobile_mode ())
494          /* XXX: ask for GPG path */              return 0;
495          created = 1; /* Disable registry writing */          created = 1; /* Disable registry writing */
496      }      }
497    
# Line 469  WinMain (HINSTANCE hinst, HINSTANCE hpre Line 500  WinMain (HINSTANCE hinst, HINSTANCE hpre
500          reg_prefs.use_tmpfiles = 1; /* default */          reg_prefs.use_tmpfiles = 1; /* default */
501          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 */
502          get_reg_winpt_prefs (&reg_prefs);          get_reg_winpt_prefs (&reg_prefs);
         if (!reg_prefs.no_hotkeys)  
             hotkeys_modify ();  
503          gnupg_load_config ();          gnupg_load_config ();
504      }      }
505    
# Line 594  WinMain (HINSTANCE hinst, HINSTANCE hpre Line 623  WinMain (HINSTANCE hinst, HINSTANCE hpre
623          return 0;          return 0;
624      }      }
625    
626      if (cmdline) {      if (cmdline && (stristr (cmdline, "--enable-debug") ||
627          if (stristr (cmdline, "--enable-debug") ||                      stristr (cmdline, "--debug"))) {
628              stristr (cmdline, "--debug")) {          gpg_set_debug_mode (1);
629              gpg_set_debug_mode (1);          winpt_debug_msg ();
630              winpt_debug_msg ();          debug = 1;
             debug = 1;  
         }  
631      }      }
632    
633      wc.hIcon = LoadIcon (glob_hinst, MAKEINTRESOURCE (IDI_WINPT));      wc.hIcon = LoadIcon (glob_hinst, MAKEINTRESOURCE (IDI_WINPT));
# Line 684  start: Line 711  start:
711              free_gnupg_table ();              free_gnupg_table ();
712              return 0;              return 0;
713          }          }
714            if (!is_gpg4win_installed ()) {
715                select_language ();
716                load_gettext ();
717            }
718      }      }
719      else {      else {
720          gpg_keycache_t c, sec_c;          gpg_keycache_t c, sec_c;

Legend:
Removed from v.176  
changed lines
  Added in v.193

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26