diff options
author | Christian Grothoff <christian@grothoff.org> | 2008-09-11 03:20:52 +0000 |
---|---|---|
committer | Christian Grothoff <christian@grothoff.org> | 2008-09-11 03:20:52 +0000 |
commit | da1654cffdf6f05e1ede33e3a89acfc0c47eb752 (patch) | |
tree | cf24310cad31bedfc8839bda3155db8e5f23deb2 | |
parent | cf41cfa6ae6ac0f6ecd3336bd5c53ac8154500ea (diff) | |
download | libmicrohttpd-da1654cffdf6f05e1ede33e3a89acfc0c47eb752.tar.gz libmicrohttpd-da1654cffdf6f05e1ede33e3a89acfc0c47eb752.zip |
bugfix and dead code removal
-rw-r--r-- | src/daemon/https/lgl/gettext.h | 265 | ||||
-rw-r--r-- | src/daemon/https/tls/Makefile.am | 1 | ||||
-rw-r--r-- | src/daemon/https/tls/gnutls_errors.c | 5 | ||||
-rw-r--r-- | src/daemon/https/tls/gnutls_global.c | 2 | ||||
-rw-r--r-- | src/daemon/https/tls/gnutls_handshake.c | 3 | ||||
-rw-r--r-- | src/daemon/https/tls/gnutls_x509.c | 38 |
6 files changed, 39 insertions, 275 deletions
diff --git a/src/daemon/https/lgl/gettext.h b/src/daemon/https/lgl/gettext.h deleted file mode 100644 index 75a3eb1d..00000000 --- a/src/daemon/https/lgl/gettext.h +++ /dev/null | |||
@@ -1,265 +0,0 @@ | |||
1 | /* Convenience header for conditional use of GNU <libintl.h>. | ||
2 | Copyright (C) 1995-1998, 2000-2002, 2004-2006 Free Software Foundation, Inc. | ||
3 | |||
4 | This program is free software; you can redistribute it and/or modify | ||
5 | it under the terms of the GNU Lesser General Public License as published by | ||
6 | the Free Software Foundation; either version 2.1, or (at your option) | ||
7 | any later version. | ||
8 | |||
9 | This program is distributed in the hope that it will be useful, | ||
10 | but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
12 | GNU Lesser General Public License for more details. | ||
13 | |||
14 | You should have received a copy of the GNU Lesser General Public License along | ||
15 | with this program; if not, write to the Free Software Foundation, | ||
16 | Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ | ||
17 | |||
18 | #ifndef _LIBGETTEXT_H | ||
19 | #define _LIBGETTEXT_H 1 | ||
20 | |||
21 | /* NLS can be disabled through the configure --disable-nls option. */ | ||
22 | #if ENABLE_NLS | ||
23 | |||
24 | /* Get declarations of GNU message catalog functions. */ | ||
25 | # include <libintl.h> | ||
26 | |||
27 | /* You can set the DEFAULT_TEXT_DOMAIN macro to specify the domain used by | ||
28 | the gettext() and ngettext() macros. This is an alternative to calling | ||
29 | textdomain(), and is useful for libraries. */ | ||
30 | # ifdef DEFAULT_TEXT_DOMAIN | ||
31 | # undef gettext | ||
32 | # define gettext(Msgid) \ | ||
33 | dgettext (DEFAULT_TEXT_DOMAIN, Msgid) | ||
34 | # undef ngettext | ||
35 | # define ngettext(Msgid1, Msgid2, N) \ | ||
36 | dngettext (DEFAULT_TEXT_DOMAIN, Msgid1, Msgid2, N) | ||
37 | # endif | ||
38 | |||
39 | #else | ||
40 | |||
41 | /* Solaris /usr/include/locale.h includes /usr/include/libintl.h, which | ||
42 | chokes if dcgettext is defined as a macro. So include it now, to make | ||
43 | later inclusions of <locale.h> a NOP. We don't include <libintl.h> | ||
44 | as well because people using "gettext.h" will not include <libintl.h>, | ||
45 | and also including <libintl.h> would fail on SunOS 4, whereas <locale.h> | ||
46 | is OK. */ | ||
47 | #if defined(__sun) | ||
48 | # include <locale.h> | ||
49 | #endif | ||
50 | |||
51 | /* Many header files from the libstdc++ coming with g++ 3.3 or newer include | ||
52 | <libintl.h>, which chokes if dcgettext is defined as a macro. So include | ||
53 | it now, to make later inclusions of <libintl.h> a NOP. */ | ||
54 | #if defined(__cplusplus) && defined(__GNUG__) && (__GNUC__ >= 3) | ||
55 | # include <cstdlib> | ||
56 | # if (__GLIBC__ >= 2) || _GLIBCXX_HAVE_LIBINTL_H | ||
57 | # include <libintl.h> | ||
58 | # endif | ||
59 | #endif | ||
60 | |||
61 | /* Disabled NLS. | ||
62 | The casts to 'const char *' serve the purpose of producing warnings | ||
63 | for invalid uses of the value returned from these functions. | ||
64 | On pre-ANSI systems without 'const', the config.h file is supposed to | ||
65 | contain "#define const". */ | ||
66 | # define gettext(Msgid) ((const char *) (Msgid)) | ||
67 | # define dgettext(Domainname, Msgid) ((void) (Domainname), gettext (Msgid)) | ||
68 | # define dcgettext(Domainname, Msgid, Category) \ | ||
69 | ((void) (Category), dgettext (Domainname, Msgid)) | ||
70 | # define ngettext(Msgid1, Msgid2, N) \ | ||
71 | ((N) == 1 \ | ||
72 | ? ((void) (Msgid2), (const char *) (Msgid1)) \ | ||
73 | : ((void) (Msgid1), (const char *) (Msgid2))) | ||
74 | # define dngettext(Domainname, Msgid1, Msgid2, N) \ | ||
75 | ((void) (Domainname), ngettext (Msgid1, Msgid2, N)) | ||
76 | # define dcngettext(Domainname, Msgid1, Msgid2, N, Category) \ | ||
77 | ((void) (Category), dngettext(Domainname, Msgid1, Msgid2, N)) | ||
78 | # define textdomain(Domainname) ((const char *) (Domainname)) | ||
79 | # define bindtextdomain(Domainname, Dirname) \ | ||
80 | ((void) (Domainname), (const char *) (Dirname)) | ||
81 | # define bind_textdomain_codeset(Domainname, Codeset) \ | ||
82 | ((void) (Domainname), (const char *) (Codeset)) | ||
83 | |||
84 | #endif | ||
85 | |||
86 | /* A pseudo function call that serves as a marker for the automated | ||
87 | extraction of messages, but does not call gettext(). The run-time | ||
88 | translation is done at a different place in the code. | ||
89 | The argument, String, should be a literal string. Concatenated strings | ||
90 | and other string expressions won't work. | ||
91 | The macro's expansion is not parenthesized, so that it is suitable as | ||
92 | initializer for static 'char[]' or 'const char[]' variables. */ | ||
93 | #define gettext_noop(String) String | ||
94 | |||
95 | /* The separator between msgctxt and msgid in a .mo file. */ | ||
96 | #define GETTEXT_CONTEXT_GLUE "\004" | ||
97 | |||
98 | /* Pseudo function calls, taking a MSGCTXT and a MSGID instead of just a | ||
99 | MSGID. MSGCTXT and MSGID must be string literals. MSGCTXT should be | ||
100 | short and rarely need to change. | ||
101 | The letter 'p' stands for 'particular' or 'special'. */ | ||
102 | #ifdef DEFAULT_TEXT_DOMAIN | ||
103 | # define pgettext(Msgctxt, Msgid) \ | ||
104 | pgettext_aux (DEFAULT_TEXT_DOMAIN, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, LC_MESSAGES) | ||
105 | #else | ||
106 | # define pgettext(Msgctxt, Msgid) \ | ||
107 | pgettext_aux (NULL, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, LC_MESSAGES) | ||
108 | #endif | ||
109 | #define dpgettext(Domainname, Msgctxt, Msgid) \ | ||
110 | pgettext_aux (Domainname, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, LC_MESSAGES) | ||
111 | #define dcpgettext(Domainname, Msgctxt, Msgid, Category) \ | ||
112 | pgettext_aux (Domainname, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, Category) | ||
113 | #ifdef DEFAULT_TEXT_DOMAIN | ||
114 | # define npgettext(Msgctxt, Msgid, MsgidPlural, N) \ | ||
115 | npgettext_aux (DEFAULT_TEXT_DOMAIN, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, MsgidPlural, N, LC_MESSAGES) | ||
116 | #else | ||
117 | # define npgettext(Msgctxt, Msgid, MsgidPlural, N) \ | ||
118 | npgettext_aux (NULL, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, MsgidPlural, N, LC_MESSAGES) | ||
119 | #endif | ||
120 | #define dnpgettext(Domainname, Msgctxt, Msgid, MsgidPlural, N) \ | ||
121 | npgettext_aux (Domainname, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, MsgidPlural, N, LC_MESSAGES) | ||
122 | #define dcnpgettext(Domainname, Msgctxt, Msgid, MsgidPlural, N, Category) \ | ||
123 | npgettext_aux (Domainname, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, MsgidPlural, N, Category) | ||
124 | |||
125 | #ifdef __GNUC__ | ||
126 | __inline | ||
127 | #else | ||
128 | #ifdef __cplusplus | ||
129 | inline | ||
130 | #endif | ||
131 | #endif | ||
132 | static const char * | ||
133 | pgettext_aux (const char *domain, | ||
134 | const char *msg_ctxt_id, const char *msgid, int category) | ||
135 | { | ||
136 | const char *translation = dcgettext (domain, msg_ctxt_id, category); | ||
137 | if (translation == msg_ctxt_id) | ||
138 | return msgid; | ||
139 | else | ||
140 | return translation; | ||
141 | } | ||
142 | |||
143 | #ifdef __GNUC__ | ||
144 | __inline | ||
145 | #else | ||
146 | #ifdef __cplusplus | ||
147 | inline | ||
148 | #endif | ||
149 | #endif | ||
150 | static const char * | ||
151 | npgettext_aux (const char *domain, | ||
152 | const char *msg_ctxt_id, const char *msgid, | ||
153 | const char *msgid_plural, unsigned long int n, int category) | ||
154 | { | ||
155 | const char *translation = | ||
156 | dcngettext (domain, msg_ctxt_id, msgid_plural, n, category); | ||
157 | if (translation == msg_ctxt_id || translation == msgid_plural) | ||
158 | return (n == 1 ? msgid : msgid_plural); | ||
159 | else | ||
160 | return translation; | ||
161 | } | ||
162 | |||
163 | /* The same thing extended for non-constant arguments. Here MSGCTXT and MSGID | ||
164 | can be arbitrary expressions. But for string literals these macros are | ||
165 | less efficient than those above. */ | ||
166 | |||
167 | #include <string.h> | ||
168 | |||
169 | #define _LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS \ | ||
170 | (((__GNUC__ >= 3 || __GNUG__ >= 2) && !__STRICT_ANSI__) \ | ||
171 | /* || __STDC_VERSION__ >= 199901L */ ) | ||
172 | |||
173 | #if !_LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS | ||
174 | #include <stdlib.h> | ||
175 | #endif | ||
176 | |||
177 | #define pgettext_expr(Msgctxt, Msgid) \ | ||
178 | dcpgettext_expr (NULL, Msgctxt, Msgid, LC_MESSAGES) | ||
179 | #define dpgettext_expr(Domainname, Msgctxt, Msgid) \ | ||
180 | dcpgettext_expr (Domainname, Msgctxt, Msgid, LC_MESSAGES) | ||
181 | |||
182 | #ifdef __GNUC__ | ||
183 | __inline | ||
184 | #else | ||
185 | #ifdef __cplusplus | ||
186 | inline | ||
187 | #endif | ||
188 | #endif | ||
189 | static const char * | ||
190 | dcpgettext_expr (const char *domain, | ||
191 | const char *msgctxt, const char *msgid, int category) | ||
192 | { | ||
193 | size_t msgctxt_len = strlen (msgctxt) + 1; | ||
194 | size_t msgid_len = strlen (msgid) + 1; | ||
195 | const char *translation; | ||
196 | #if _LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS | ||
197 | char msg_ctxt_id[msgctxt_len + msgid_len]; | ||
198 | #else | ||
199 | char buf[1024]; | ||
200 | char *msg_ctxt_id = | ||
201 | (msgctxt_len + msgid_len <= sizeof (buf) | ||
202 | ? buf : (char *) malloc (msgctxt_len + msgid_len)); | ||
203 | if (msg_ctxt_id != NULL) | ||
204 | #endif | ||
205 | { | ||
206 | memcpy (msg_ctxt_id, msgctxt, msgctxt_len - 1); | ||
207 | msg_ctxt_id[msgctxt_len - 1] = '\004'; | ||
208 | memcpy (msg_ctxt_id + msgctxt_len, msgid, msgid_len); | ||
209 | translation = dcgettext (domain, msg_ctxt_id, category); | ||
210 | #if !_LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS | ||
211 | if (msg_ctxt_id != buf) | ||
212 | free (msg_ctxt_id); | ||
213 | #endif | ||
214 | if (translation != msg_ctxt_id) | ||
215 | return translation; | ||
216 | } | ||
217 | return msgid; | ||
218 | } | ||
219 | |||
220 | #define npgettext_expr(Msgctxt, Msgid, MsgidPlural, N) \ | ||
221 | dcnpgettext_expr (NULL, Msgctxt, Msgid, MsgidPlural, N, LC_MESSAGES) | ||
222 | #define dnpgettext_expr(Domainname, Msgctxt, Msgid, MsgidPlural, N) \ | ||
223 | dcnpgettext_expr (Domainname, Msgctxt, Msgid, MsgidPlural, N, LC_MESSAGES) | ||
224 | |||
225 | #ifdef __GNUC__ | ||
226 | __inline | ||
227 | #else | ||
228 | #ifdef __cplusplus | ||
229 | inline | ||
230 | #endif | ||
231 | #endif | ||
232 | static const char * | ||
233 | dcnpgettext_expr (const char *domain, | ||
234 | const char *msgctxt, const char *msgid, | ||
235 | const char *msgid_plural, unsigned long int n, int category) | ||
236 | { | ||
237 | size_t msgctxt_len = strlen (msgctxt) + 1; | ||
238 | size_t msgid_len = strlen (msgid) + 1; | ||
239 | const char *translation; | ||
240 | #if _LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS | ||
241 | char msg_ctxt_id[msgctxt_len + msgid_len]; | ||
242 | #else | ||
243 | char buf[1024]; | ||
244 | char *msg_ctxt_id = | ||
245 | (msgctxt_len + msgid_len <= sizeof (buf) | ||
246 | ? buf : (char *) malloc (msgctxt_len + msgid_len)); | ||
247 | if (msg_ctxt_id != NULL) | ||
248 | #endif | ||
249 | { | ||
250 | memcpy (msg_ctxt_id, msgctxt, msgctxt_len - 1); | ||
251 | msg_ctxt_id[msgctxt_len - 1] = '\004'; | ||
252 | memcpy (msg_ctxt_id + msgctxt_len, msgid, msgid_len); | ||
253 | translation = | ||
254 | dcngettext (domain, msg_ctxt_id, msgid_plural, n, category); | ||
255 | #if !_LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS | ||
256 | if (msg_ctxt_id != buf) | ||
257 | free (msg_ctxt_id); | ||
258 | #endif | ||
259 | if (!(translation == msg_ctxt_id || translation == msgid_plural)) | ||
260 | return translation; | ||
261 | } | ||
262 | return (n == 1 ? msgid : msgid_plural); | ||
263 | } | ||
264 | |||
265 | #endif /* _LIBGETTEXT_H */ | ||
diff --git a/src/daemon/https/tls/Makefile.am b/src/daemon/https/tls/Makefile.am index fb2393f4..b2e4f6f5 100644 --- a/src/daemon/https/tls/Makefile.am +++ b/src/daemon/https/tls/Makefile.am | |||
@@ -23,6 +23,7 @@ auth_dhe.c \ | |||
23 | auth_rsa.c \ | 23 | auth_rsa.c \ |
24 | auth_rsa_export.c \ | 24 | auth_rsa_export.c \ |
25 | debug.c \ | 25 | debug.c \ |
26 | defines.h \ | ||
26 | ext_cert_type.c \ | 27 | ext_cert_type.c \ |
27 | ext_max_record.c \ | 28 | ext_max_record.c \ |
28 | ext_oprfi.c \ | 29 | ext_oprfi.c \ |
diff --git a/src/daemon/https/tls/gnutls_errors.c b/src/daemon/https/tls/gnutls_errors.c index 107412c5..c0e42872 100644 --- a/src/daemon/https/tls/gnutls_errors.c +++ b/src/daemon/https/tls/gnutls_errors.c | |||
@@ -30,9 +30,8 @@ | |||
30 | #endif | 30 | #endif |
31 | 31 | ||
32 | /* I18n of error codes. */ | 32 | /* I18n of error codes. */ |
33 | #include "gettext.h" | 33 | #define _(String) (String) |
34 | #define _(String) dgettext (PACKAGE, String) | 34 | #define N_(String) (String) |
35 | #define N_(String) gettext_noop (String) | ||
36 | 35 | ||
37 | extern LOG_FUNC _gnutls_log_func; | 36 | extern LOG_FUNC _gnutls_log_func; |
38 | 37 | ||
diff --git a/src/daemon/https/tls/gnutls_global.c b/src/daemon/https/tls/gnutls_global.c index 97ff1825..b252b127 100644 --- a/src/daemon/https/tls/gnutls_global.c +++ b/src/daemon/https/tls/gnutls_global.c | |||
@@ -44,8 +44,6 @@ | |||
44 | 44 | ||
45 | GCRY_THREAD_OPTION_PTHREAD_IMPL; | 45 | GCRY_THREAD_OPTION_PTHREAD_IMPL; |
46 | 46 | ||
47 | #include "gettext.h" | ||
48 | |||
49 | #define gnutls_log_func LOG_FUNC | 47 | #define gnutls_log_func LOG_FUNC |
50 | 48 | ||
51 | /* created by asn1c */ | 49 | /* created by asn1c */ |
diff --git a/src/daemon/https/tls/gnutls_handshake.c b/src/daemon/https/tls/gnutls_handshake.c index daa39950..08d423b5 100644 --- a/src/daemon/https/tls/gnutls_handshake.c +++ b/src/daemon/https/tls/gnutls_handshake.c | |||
@@ -210,7 +210,8 @@ _gnutls_finished (mhd_gtls_session_t session, int type, void *ret) | |||
210 | if (td_sha == NULL) | 210 | if (td_sha == NULL) |
211 | { | 211 | { |
212 | gnutls_assert (); | 212 | gnutls_assert (); |
213 | mhd_gnutls_hash_deinit (td_md5, NULL); | 213 | if (td_md5 != NULL) |
214 | mhd_gnutls_hash_deinit (td_md5, NULL); | ||
214 | return GNUTLS_E_HASH_FAILED; | 215 | return GNUTLS_E_HASH_FAILED; |
215 | } | 216 | } |
216 | 217 | ||
diff --git a/src/daemon/https/tls/gnutls_x509.c b/src/daemon/https/tls/gnutls_x509.c index 35322db4..22ced8ce 100644 --- a/src/daemon/https/tls/gnutls_x509.c +++ b/src/daemon/https/tls/gnutls_x509.c | |||
@@ -42,7 +42,10 @@ | |||
42 | #include <debug.h> | 42 | #include <debug.h> |
43 | #include <x509_b64.h> | 43 | #include <x509_b64.h> |
44 | #include <gnutls_x509.h> | 44 | #include <gnutls_x509.h> |
45 | #include <read-file.h> | 45 | #include <sys/types.h> |
46 | #include <sys/stat.h> | ||
47 | #include <fcntl.h> | ||
48 | |||
46 | 49 | ||
47 | /* x509 */ | 50 | /* x509 */ |
48 | #include "common.h" | 51 | #include "common.h" |
@@ -602,6 +605,33 @@ read_key_mem (mhd_gtls_cert_credentials_t res, | |||
602 | return 0; | 605 | return 0; |
603 | } | 606 | } |
604 | 607 | ||
608 | static char * | ||
609 | read_file (const char *filename, size_t * length) | ||
610 | { | ||
611 | struct stat st; | ||
612 | char *out; | ||
613 | int fd; | ||
614 | |||
615 | fd = open (filename, O_RDONLY); | ||
616 | if (-1 == fd) | ||
617 | return NULL; | ||
618 | if (0 != fstat(fd, &st)) | ||
619 | goto ERR; | ||
620 | out = malloc(st.st_size); | ||
621 | if (out == NULL) | ||
622 | goto ERR; | ||
623 | if (st.st_size != read(fd, out, st.st_size)) | ||
624 | { | ||
625 | free(out); | ||
626 | goto ERR; | ||
627 | } | ||
628 | close(fd); | ||
629 | return out; | ||
630 | ERR: | ||
631 | close(fd); | ||
632 | return NULL; | ||
633 | } | ||
634 | |||
605 | /* Reads a certificate file | 635 | /* Reads a certificate file |
606 | */ | 636 | */ |
607 | static int | 637 | static int |
@@ -610,7 +640,7 @@ read_cert_file (mhd_gtls_cert_credentials_t res, | |||
610 | { | 640 | { |
611 | int ret; | 641 | int ret; |
612 | size_t size; | 642 | size_t size; |
613 | char *data = read_binary_file (certfile, &size); | 643 | char *data = read_file (certfile, &size); |
614 | 644 | ||
615 | if (data == NULL) | 645 | if (data == NULL) |
616 | { | 646 | { |
@@ -636,7 +666,7 @@ read_key_file (mhd_gtls_cert_credentials_t res, | |||
636 | { | 666 | { |
637 | int ret; | 667 | int ret; |
638 | size_t size; | 668 | size_t size; |
639 | char *data = read_binary_file (keyfile, &size); | 669 | char *data = read_file (keyfile, &size); |
640 | 670 | ||
641 | if (data == NULL) | 671 | if (data == NULL) |
642 | { | 672 | { |
@@ -1080,7 +1110,7 @@ MHD_gnutls_certificate_set_x509_trust_file (mhd_gtls_cert_credentials_t | |||
1080 | { | 1110 | { |
1081 | int ret, ret2; | 1111 | int ret, ret2; |
1082 | size_t size; | 1112 | size_t size; |
1083 | unsigned char *data = (unsigned char*) read_binary_file (cafile, &size); | 1113 | unsigned char *data = (unsigned char*) read_file (cafile, &size); |
1084 | 1114 | ||
1085 | if (data == NULL) | 1115 | if (data == NULL) |
1086 | { | 1116 | { |