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

Annotation of /trunk/Src/wptErrors.cpp

Parent Directory Parent Directory | Revision Log Revision Log


Revision 36 - (hide annotations)
Thu Oct 27 15:25:13 2005 UTC (19 years, 4 months ago) by werner
File size: 7748 byte(s)
First set of changes to use autotools for building.
1 werner 36 /* wptErrors.cpp - Error management
2     * Copyright (C) 2000-2004 Timo Schulz
3     *
4     * This file is part of WinPT.
5     *
6     * WinPT is free software; you can redistribute it and/or
7     * modify it under the terms of the GNU General Public License
8     * as published by the Free Software Foundation; either version 2
9     * of the License, or (at your option) any later version.
10     *
11     * WinPT is distributed in the hope that it will be useful,
12     * but WITHOUT ANY WARRANTY; without even the implied warranty of
13     * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14     * General Public License for more details.
15     *
16     * You should have received a copy of the GNU General Public License
17     * along with WinPT; if not, write to the Free Software Foundation,
18     * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
19     */
20    
21     #ifdef HAVE_CONFIG_H
22     #include <config.h>
23     #endif
24    
25     #include <windows.h>
26     #include <windows.h>
27     #include <stdio.h>
28    
29     #include "wptErrors.h"
30     #include "wptTypes.h"
31     #include "wptW32API.h"
32     #include "wptVersion.h"
33     #include "wptGPG.h"
34     #include "wptNLS.h"
35    
36    
37     static char *
38     gpg_strerror( int errid )
39     {
40     static char buf[512];
41     char * path = NULL;
42    
43     path = get_gnupg_path();
44     if( !path )
45     BUG( NULL );
46     switch( errid ) {
47     case WPTERR_GPG_EXEFILE:
48     _snprintf( buf, sizeof buf - 1, _("Could not locate GPG.exe in %s."), path );
49     break;
50     case WPTERR_GPG_OPT_KEYRINGS:
51     case WPTERR_GPG_KEYRINGS:
52     _snprintf( buf, sizeof buf - 1,
53     _("Could not find keyring entries into the options file in %s "
54     "or the file does NOT exist."), path );
55     break;
56     }
57     free_if_alloc( path );
58     return buf;
59     } /* gpg_strerror */
60    
61    
62     static void
63     w32_fmt_msg (char *buf, size_t buflen)
64     {
65     FormatMessage (FORMAT_MESSAGE_FROM_SYSTEM, NULL, GetLastError (),
66     MAKELANGID (LANG_NEUTRAL, SUBLANG_DEFAULT),
67     buf, buflen, NULL);
68     }
69    
70     /* Return an error specific message.
71     If there is a translation available, it returns the translated text. */
72     const char*
73     winpt_strerror (int errid)
74     {
75     static char buf[256];
76    
77     switch( errid ) {
78     case WPTERR_GENERAL: return _("General error occured");
79     case WPTERR_FILE_OPEN: return _("Could not open file");
80     case WPTERR_FILE_CREAT: return _("Could not create file");
81     case WPTERR_FILE_READ: return _("Could not read file");
82     case WPTERR_FILE_WRITE: return _("Could not write file");
83     case WPTERR_FILE_CLOSE: return _("Could not close file");
84     case WPTERR_FILE_EXIST: return _("File does not exist");
85     case WPTERR_FILE_REMOVE: return _("Could not delete file");
86     case WPTERR_CLIP_OPEN: return _("Could not open Clipboard");
87     case WPTERR_CLIP_CLOSE: return _("Could not close Clipboard");
88     case WPTERR_CLIP_EMPTY: return _("Could not empty Clipboard");
89     case WPTERR_CLIP_SET: return _("Could not set Clipboard data");
90     case WPTERR_CLIP_GET: return _("Could not get Clipboard data");
91     case WPTERR_CLIP_ISEMPTY: return _("There is no text in the Clipboard");
92     case WPTERR_CLIP_SECURED: return _("The Clipboard already contains GPG data");
93     case WPTERR_CLIP: return _("General Clipboard error");
94     case WPTERR_REGISTRY: sprintf (buf, "%s", _("Registry error: "));
95     w32_fmt_msg (buf + strlen (buf), 128);
96     break;
97     case WPTERR_WINSOCK_INIT: return _("Could not startup Winsock 2 interface");
98     case WPTERR_WINSOCK_RESOLVE: return _("Could not resolve hostname");
99     case WPTERR_WINSOCK_SOCKET: return _("Could not create new socket");
100     case WPTERR_WINSOCK_CONNECT: return _("Could not connect to the host");
101     case WPTERR_WINSOCK_SENDKEY: return _("Could not send the key to the keyserver");
102     case WPTERR_WINSOCK_RECVKEY: return _("Could not receive the key from the keyserver");
103     case WPTERR_WINSOCK_TIMEOUT: return _("Socket timed out, no data");
104     case WPTERR_KEYSERVER_NOTFOUND: return _("Keyserver returned: no matching keys in database");
105     case WPTERR_HOTKEY: sprintf (buf, "%s", _("Could not register hotkey: "));
106     w32_fmt_msg (buf + strlen (buf), 128);
107     break;
108     case WPTERR_DIR_OPEN: return _("Could not open directory");
109     case WPTERR_DIR_CREAT: return _("Could not create directory");
110     case WPTERR_CURR_WND: return _("Could not extract data from the current window");
111     case WPTERR_CONFIG_FILE: return _("Could not load config file");
112     case WPTERR_GPG_EXEFILE:
113     case WPTERR_GPG_OPT_KEYRINGS:
114     case WPTERR_GPG_KEYRINGS: return gpg_strerror (errid);
115     case WPTERR_NOCARD: return _("There is no card in the reader");
116     case WPTERR_NOREADER: return _("There was no reader found");
117     case WPTERR_NOPGPCARD: return _("This is not an OpenPGP card");
118     case WPTERR_CDISK_LOCK: return _("Could not lock or unlock volume");
119     case WPTERR_CDISK_MOUNT: return _("Could not mount volume");
120     case WPTERR_CDISK_UMOUNT: return _("Could not unmount volume");
121     case WPTERR_CDISK_OPEN: return _("Could not open volume");
122     case WPTERR_CDISK_BUSY: return _("Drive that belongs to the volume is busy");
123     case WPTERR_CDISK_QUERY: return _("Could not query volume information");
124     default: _snprintf (buf, sizeof (buf) - 1, _("Unknown error=%d"), errid); return buf;
125     }
126    
127     return NULL;
128     } /* winpt_strerror */
129    
130    
131     void
132     winpt_errmsg (const char * name, int is_file)
133     {
134     TCHAR buf[500], head[500];
135     DWORD last_err;
136    
137     memset (head, 0, sizeof head);
138     last_err = GetLastError ();
139     if (!name)
140     strcpy (head, _("WinPT Error"));
141     else if (is_file)
142     _snprintf (head, DIM (head)-1, "%s: %d", name, last_err);
143     else
144     strncpy (head, name, DIM (head)-1);
145     FormatMessage (FORMAT_MESSAGE_FROM_SYSTEM, NULL, last_err,
146     MAKELANGID (LANG_NEUTRAL, SUBLANG_DEFAULT),
147     buf, DIM (buf)-1, NULL);
148     MessageBox (NULL, buf, head, MB_OK);
149     } /* winpt_errmsg */
150    
151    
152     void
153     winpt_debug_msg( void )
154     {
155     char output[768], temp[384];
156    
157     GetTempPath( sizeof temp -1, temp );
158     _snprintf( output, sizeof output - 1,
159     "The GPGME output file is gpgme.dbg\n"
160     "The WinPT output file is %swinpt.log\n", temp );
161     MessageBox( NULL, output, "WinPT now runs in DEBUG MODE", MB_INFO );
162     } /* winpt_debug_msg */
163    
164    
165     void
166     debug_box( const char *msg, const char *file, int line )
167     {
168     #if _DEBUG
169     char output[4096];
170    
171     memset( output, 0, sizeof output );
172     _snprintf( output, sizeof output -1,
173     "WinPT DBG:\n \"%s\", file %s, line %d\n", msg, file, line );
174     MessageBox( NULL, output, PGM_NAME, MB_OK | MB_ICONERROR );
175     #endif
176     } /* debug_box */
177    
178    
179     void
180     debug_f( const char *msg, const char *file, int line )
181     {
182     #if _DEBUG
183     FILE *fp;
184     char temp_path[ 1024 ];
185     char output[ 4096 ];
186    
187     GetTempPath( sizeof temp_path - 1, temp_path );
188     strcat( temp_path, "\\WinPT.DEBUG" );
189     fp = fopen( temp_path, "a+b" );
190     if( !fp )
191     return;
192     memset( output, 0, sizeof output );
193     _snprintf( output, sizeof output -1,
194     "WinPT DBG:\n \"%s\", file %s, line %d\n", msg, file, line );
195     fwrite( output, 1, strlen( output ), fp );
196     fflush( fp );
197     fclose( fp );
198     #endif
199     } /* debug_f */
200    
201    
202     void
203     log_debug (const char *format, ...)
204     {
205     FILE *fp;
206     char temp_path[384];
207     va_list arg_ptr;
208    
209     if (!debug)
210     return;
211    
212     GetTempPath (sizeof temp_path - 1, temp_path);
213     strcat (temp_path, "\\WinPT.LOG");
214     fp = fopen (temp_path, "a+b");
215     if (!fp)
216     return;
217     va_start (arg_ptr, format);
218     vfprintf (fp, format, arg_ptr);
219     va_end (arg_ptr);
220     fflush (fp);
221     fclose (fp);
222     }
223    
224    
225     int
226     log_box (const char *title, int style, const char *format, ...)
227     {
228     va_list arg_ptr;
229     char log[8192];
230     int id;
231    
232     va_start (arg_ptr, format);
233     _vsnprintf (log, sizeof (log)-1, format, arg_ptr);
234     id = msg_box (NULL, log, title? title : "Log Output", style);
235     va_end( arg_ptr );
236    
237     return id;
238     } /* log_box */

Properties

Name Value
svn:eol-style native

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26