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

Diff of /trunk/Src/wptMDSumDlg.cpp

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

revision 23 by twoaday, Fri Sep 30 10:10:16 2005 UTC revision 36 by werner, Thu Oct 27 15:25:13 2005 UTC
# Line 1  Line 1 
1  /* wptMDSumDlg.cpp  /* wptMDSumDlg.cpp
2   *      Copyright (C) 2003, 2005 Timo Schulz   *      Copyright (C) 2003, 2005 Timo Schulz
3   *   *
4   * This file is part of WinPT.   * This file is part of WinPT.
5   *   *
6   * WinPT is free software; you can redistribute it and/or modify   * WinPT is free software; you can redistribute it and/or modify
7   * it under the terms of the GNU General Public License as published by   * it under the terms of the GNU General Public License as published by
8   * the Free Software Foundation; either version 2 of the License, or   * the Free Software Foundation; either version 2 of the License, or
9   * (at your option) any later version.   * (at your option) any later version.
10   *   *
11   * WinPT is distributed in the hope that it will be useful,   * WinPT is distributed in the hope that it will be useful,
12   * but WITHOUT ANY WARRANTY; without even the implied warranty of   * but WITHOUT ANY WARRANTY; without even the implied warranty of
13   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14   * GNU General Public License for more details.   * GNU General Public License for more details.
15   *   *
16   * You should have received a copy of the GNU General Public License   * You should have received a copy of the GNU General Public License
17   * along with WinPT; if not, write to the Free Software Foundation,   * along with WinPT; if not, write to the Free Software Foundation,
18   * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA   * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
19   */   */
20    
21    
22  #include <windows.h>  #ifdef HAVE_CONFIG_H
23  #include <stdio.h>  #include <config.h>
24  #include "../resource.h"  #endif
25    
26  #include "wptTypes.h"  #include <windows.h>
27  #include "wptW32API.h"  #include <windows.h>
28  #include "wptGPG.h"  #include <stdio.h>
29  #include "wptCommonCtl.h"  #include "../resource.h"
30  #include "wptContext.h"  
31  #include "wptNLS.h"  #include "wptTypes.h"
32  #include "wptErrors.h"  #include "wptW32API.h"
33    #include "wptGPG.h"
34    #include "wptCommonCtl.h"
35  static const char *  #include "wptContext.h"
36  printable_digest( byte *mdbuf, size_t n )  #include "wptNLS.h"
37  {  #include "wptErrors.h"
38      static char mdasc[64];  
39      size_t i;  
40      for( i = 0; i < n; i++ )  /* Return a printable digest of the buffer @mdbuf. */
41          sprintf( mdasc+2*i, "%02X", mdbuf[i] );  static const char*
42      return mdasc;  printable_digest (byte *mdbuf, size_t n)
43  } /* printable_digest */  {
44        static char mdasc[64];
45        size_t i;
46  BOOL CALLBACK      for (i = 0; i < n; i++)
47  mdsum_dlg_proc (HWND dlg, UINT msg, WPARAM wparam, LPARAM lparam)          sprintf (mdasc+2*i, "%02X", mdbuf[i]);
48  {      return mdasc;
49      static listview_ctrl_t lv;  }
50      static struct md_file_s * md;  
51      struct listview_column_s cols[] = {  
52          {0, 264, (char *)_("Digest")},  /* Dialog box procedure to show and calculate file digests. */
53          {1, 128, (char *)_("Name")},  BOOL CALLBACK
54          {0, 0, 0}  mdsum_dlg_proc (HWND dlg, UINT msg, WPARAM wparam, LPARAM lparam)
55      };  {
56      gpgme_data_t sumlist;      static listview_ctrl_t lv;
57      char fname[300], mdasc[64];      static struct md_file_s * md;
58      byte mdbuf[20];      struct listview_column_s cols[] = {
59      int i;          {0, 264, (char *)_("Digest")},
60      size_t n;          {1, 128, (char *)_("Name")},
61            {0, 0, 0}
62      switch( msg ) {      };
63      case WM_INITDIALOG:      gpgme_data_t sumlist;
64          md = (md_file_s *)lparam;      char fname[300], mdasc[64];
65          if( !md )      byte mdbuf[20];
66              BUG( NULL );              int i;
67          if( listview_new( &lv ) )      size_t n;
68              BUG( NULL );  
69          lv->ctrl = GetDlgItem( dlg, IDC_MDSUM_LIST );      switch( msg ) {
70          for( i = 0; i < cols[i].width; i++ )      case WM_INITDIALOG:
71              listview_add_column( lv, &cols[i] );          md = (md_file_s *)lparam;
72          for( i = 0; i < listview_count_items( md->lv, 0 ); i++ ) {          if( !md )
73              if( listview_get_item_state( md->lv, i ) ) {              BUG( NULL );        
74                  listview_get_item_text( md->lv, i, 1, fname, sizeof (fname)-1 );          if( listview_new( &lv ) )
75                  if( !gpg_md_hash_file( md->mdalgo, fname, mdbuf, &n ) ) {              BUG( NULL );
76                      listview_add_item( lv, "" );          lv->ctrl = GetDlgItem( dlg, IDC_MDSUM_LIST );
77                      listview_add_sub_item( lv, 0, 0, printable_digest( mdbuf, n ) );          for( i = 0; i < cols[i].width; i++ )
78                      listview_add_sub_item( lv, 0, 1, fname );              listview_add_column( lv, &cols[i] );
79                  }          for( i = 0; i < listview_count_items( md->lv, 0 ); i++ ) {
80              }              if( listview_get_item_state( md->lv, i ) ) {
81          }                  listview_get_item_text( md->lv, i, 1, fname, sizeof (fname)-1 );
82          SetForegroundWindow( dlg );                  if( !gpg_md_hash_file( md->mdalgo, fname, mdbuf, &n ) ) {
83          break;                      listview_add_item( lv, "" );
84                        listview_add_sub_item( lv, 0, 0, printable_digest( mdbuf, n ) );
85      case WM_DESTROY:                      listview_add_sub_item( lv, 0, 1, fname );
86          if( lv ) {                  }
87              listview_release( lv );              }
88              lv = NULL;          }
89          }          SetForegroundWindow( dlg );
90          break;          break;
91    
92      case WM_COMMAND:      case WM_DESTROY:
93          switch (LOWORD (wparam)) {          if( lv ) {
94          case IDOK:              listview_release( lv );
95              EndDialog (dlg, TRUE);              lv = NULL;
96              break;          }
97            break;
98          case IDC_MDSUM_COPY:  
99              if (gpgme_data_new (&sumlist))      case WM_COMMAND:
100                  BUG(0);          switch (LOWORD (wparam)) {
101              if (md->mdalgo == 3) {/* rmd160 */          case IDOK:
102                  const char *s = "# warning rmd160sum is not yet available\r\n";              EndDialog (dlg, TRUE);
103                  gpgme_data_write (sumlist, s, strlen (s));              break;
104              }  
105              for (i = 0; i < listview_count_items (lv, 0); i++) {          case IDC_MDSUM_COPY:
106                  listview_get_item_text (lv, i, 0, mdasc, DIM (mdasc)-1);              if (gpgme_data_new (&sumlist))
107                  listview_get_item_text (lv, i, 1, fname, DIM (fname)-1);                  BUG(0);
108                                if (md->mdalgo == 3) {/* rmd160 */
109                  gpgme_data_write (sumlist, mdasc, strlen (mdasc));                  const char *s = "# warning rmd160sum is not yet available\r\n";
110                  gpgme_data_write (sumlist, " ", 1);                  gpgme_data_write (sumlist, s, strlen (s));
111                  gpgme_data_write (sumlist, fname, strlen (fname));              }
112                  gpgme_data_write (sumlist, "\r\n", 2);              for (i = 0; i < listview_count_items (lv, 0); i++) {
113              }                  listview_get_item_text (lv, i, 0, mdasc, DIM (mdasc)-1);
114              const char *name = get_filename_dlg (dlg, 1, _("Select file to save checksums"), NULL, NULL);                  listview_get_item_text (lv, i, 1, fname, DIM (fname)-1);
115              if (name && *name) {                  
116                  gpg_data_release_and_set_file (sumlist, name);                  gpgme_data_write (sumlist, mdasc, strlen (mdasc));
117                  log_box (_("File Manager"), MB_OK, "Checksums successfully saved in '%s'", name);                  gpgme_data_write (sumlist, " ", 1);
118              }                  gpgme_data_write (sumlist, fname, strlen (fname));
119              else                  gpgme_data_write (sumlist, "\r\n", 2);
120                  gpgme_data_release (sumlist);              }
121              break;              const char *name = get_filename_dlg (dlg, 1, _("Select file to save checksums"), NULL, NULL);
122          }              if (name && *name) {
123          break;                  gpg_data_release_and_set_file (sumlist, name);
124      }                  log_box (_("File Manager"), MB_OK, "Checksums successfully saved in '%s'", name);
125      return FALSE;              }
126  } /* mdsum_dlg_proc */              else
127                    gpgme_data_release (sumlist);
128                break;
129            }
130            break;
131        }
132        return FALSE;
133    }

Legend:
Removed from v.23  
changed lines
  Added in v.36

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26