Add minimalistic protected-headers support
[gpgol.git] / src / common.h
1 /* common.h - Common declarations for GpgOL
2  * Copyright (C) 2004 Timo Schulz
3  * Copyright (C) 2005, 2006, 2007, 2008 g10 Code GmbH
4  * Copyright (C) 2015, 2016 by Bundesamt für Sicherheit in der Informationstechnik
5  * Software engineering by Intevation GmbH
6  *
7  * This file is part of GpgOL.
8  *
9  * GpgOL is free software; you can redistribute it and/or
10  * modify it under the terms of the GNU Lesser General Public License
11  * as published by the Free Software Foundation; either version 2.1
12  * of the License, or (at your option) any later version.
13  *
14  * GpgOL is distributed in the hope that it will be useful,
15  * but WITHOUT ANY WARRANTY; without even the implied warranty of
16  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
17  * General Public License for more details.
18  *
19  * You should have received a copy of the GNU Lesser General Public License
20  * along with this program; if not, see <http://www.gnu.org/licenses/>.
21  */
22
23 #ifndef GPGOL_COMMON_H
24 #define GPGOL_COMMON_H
25
26 #ifdef HAVE_CONFIG_H
27 #include <config.h>
28 #endif
29
30 #include <gpgme.h>
31
32 #include "common_indep.h"
33
34 #include <windows.h>
35
36 /* i18n stuff */
37 #include "w32-gettext.h"
38 #define _(a) gettext (a)
39 #define N_(a) gettext_noop (a)
40
41
42 /* Registry path to store plugin settings */
43 #define GPGOL_REGPATH "Software\\GNU\\GpgOL"
44
45 #ifdef __cplusplus
46 extern "C" {
47 #if 0
48 }
49 #endif
50 #endif
51 extern HINSTANCE glob_hinst;
52 extern UINT      this_dll;
53
54 /*-- common.c --*/
55 void set_global_hinstance (HINSTANCE hinst);
56
57 char *get_data_dir (void);
58 char *get_gpg4win_dir (void);
59
60 int store_extension_value (const char *key, const char *val);
61 int store_extension_subkey_value (const char *subkey, const char *key,
62                                   const char *val);
63 int load_extension_value (const char *key, char **val);
64
65 /* Get a temporary filename with and its name */
66 wchar_t *get_tmp_outfile (wchar_t *name, HANDLE *outHandle);
67
68 wchar_t *get_pretty_attachment_name (wchar_t *path, protocol_t protocol,
69                                      int signature);
70
71 /*-- verify-dialog.c --*/
72 int verify_dialog_box (gpgme_protocol_t protocol,
73                        gpgme_verify_result_t res,
74                        const char *filename);
75
76
77 /*-- inspectors.cpp --*/
78 int initialize_inspectors (void);
79
80 #if __GNUC__ >= 4
81 # define GPGOL_GCC_A_SENTINEL(a) __attribute__ ((sentinel(a)))
82 #else
83 # define GPGOL_GCC_A_SENTINEL(a)
84 #endif
85
86
87 /*-- common.c --*/
88
89 void fatal_error (const char *format, ...);
90
91 char *read_w32_registry_string (const char *root, const char *dir,
92                                 const char *name);
93 char *percent_escape (const char *str, const char *extra);
94
95 void fix_linebreaks (char *str, int *len);
96
97 /* Format a date from gpgme (seconds since epoch)
98    with windows system locale. */
99 char *format_date_from_gpgme (unsigned long time);
100
101 /* Get the name of the uiserver */
102 char *get_uiserver_name (void);
103
104 int is_elevated (void);
105
106 /*-- main.c --*/
107 void read_options (void);
108 int write_options (void);
109
110 extern int g_ol_version_major;
111
112 void bring_to_front (HWND wid);
113
114 int gpgol_message_box (HWND parent, const char *utf8_text,
115                        const char *utf8_caption, UINT type);
116
117 /* Show a bug message with the code. */
118 void gpgol_bug (HWND parent, int code);
119
120 void i18n_init (void);
121 #define ERR_CRYPT_RESOLVER_FAILED 1
122 #define ERR_WANTS_SEND_MIME_BODY 2
123 #define ERR_WANTS_SEND_INLINE_BODY 3
124 #define ERR_INLINE_BODY_TO_BODY 4
125 #define ERR_INLINE_BODY_INV_STATE 5
126 #define ERR_SEND_FALLBACK_FAILED 6
127 #define ERR_GET_BASE_MSG_FAILED 7
128 #ifdef __cplusplus
129 }
130 #endif
131 #endif /*GPGOL_COMMON_H*/