Mercurial > gftp.yaz
annotate lib/charset-conv.c @ 988:63555c9744c2
remote charset should be specified by each bookmark entry.
author | Yoshiki Yazawa <yaz@honeyplanet.jp> |
---|---|
date | Fri, 14 Aug 2009 07:54:55 +0900 |
parents | c7d7a081cd9c |
children | c99b134c6185 |
rev | line source |
---|---|
950 | 1 /*****************************************************************************/ |
2 /* charset-conv.c - contains functions for performing conversions between */ | |
3 /* character sets. */ | |
4 /* Copyright (C) 1998-2008 Brian Masney <masneyb@gftp.org> */ | |
5 /* */ | |
6 /* This program is free software; you can redistribute it and/or modify */ | |
7 /* 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 */ | |
9 /* (at your option) any later version. */ | |
10 /* */ | |
11 /* This program 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 */ | |
14 /* GNU General Public License for more details. */ | |
15 /* */ | |
16 /* You should have received a copy of the GNU General Public License */ | |
17 /* along with this program; if not, write to the Free Software */ | |
18 /* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111 USA */ | |
19 /*****************************************************************************/ | |
20 | |
21 #include "gftp.h" | |
22 static const char cvsid[] = "$Id: protocols.c 952 2008-01-24 23:31:26Z masneyb $"; | |
23 | |
24 #if GLIB_MAJOR_VERSION > 1 | |
25 | |
26 static /*@null@*/ char * | |
27 _gftp_get_next_charset (char **curpos) | |
28 { | |
29 char *ret, *endpos; | |
30 size_t len, retlen; | |
31 | |
32 if (**curpos == '\0') | |
33 return (NULL); | |
34 | |
35 for (; **curpos == ' ' || **curpos == '\t'; (*curpos)++); | |
36 | |
37 if ((endpos = strchr (*curpos, ',')) == NULL) | |
38 len = strlen (*curpos) - 1; /* the trailing ',' should be omitted */ | |
39 else | |
40 len = endpos - *curpos; | |
41 | |
42 for (retlen = len - 1; | |
43 (*curpos)[retlen - 1] == ' ' || (*curpos)[retlen - 1] == '\t'; | |
44 retlen--); | |
45 | |
46 retlen++; /* Needed due to the len - 1 above... */ | |
47 ret = g_malloc0 (retlen + 1); | |
48 memcpy (ret, *curpos, retlen); | |
49 | |
50 for (*curpos += len; **curpos == ','; (*curpos)++); | |
51 | |
52 return (ret); | |
53 } | |
54 | |
55 | |
56 static void | |
57 _do_show_iconv_error (const char *str, char *charset, int from_utf8, | |
58 GError * error) | |
59 { | |
60 const char *fromset, *toset; | |
61 | |
62 if (from_utf8) | |
63 { | |
64 fromset = "UTF-8"; | |
65 toset = charset; | |
66 } | |
67 else | |
68 { | |
69 fromset = charset; | |
70 toset = "UTF-8"; | |
71 } | |
72 | |
73 printf (_("Error converting string '%s' from character set %s to character set %s: %s\n"), | |
74 str, fromset, toset, error->message); | |
75 } | |
76 | |
77 /*@null@*/ static char * | |
78 _do_convert_string (gftp_request * request, int is_filename, int force_local, | |
79 const char *str, size_t *dest_len, int from_utf8) | |
80 { | |
988
63555c9744c2
remote charset should be specified by each bookmark entry.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
950
diff
changeset
|
81 char *remote_charset = NULL, *default_charset = NULL, *ret, *fromset, |
63555c9744c2
remote charset should be specified by each bookmark entry.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
950
diff
changeset
|
82 *toset, *stpos, *cur_charset; |
950 | 83 GError * error; |
84 gsize bread; | |
85 | |
86 if (request == NULL) | |
87 return (NULL); | |
88 | |
89 if (g_utf8_validate (str, -1, NULL) != from_utf8) | |
90 return (NULL); | |
91 | |
92 error = NULL; | |
988
63555c9744c2
remote charset should be specified by each bookmark entry.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
950
diff
changeset
|
93 // gftp_lookup_request_option (request, "remote_charset", &remote_charset); |
63555c9744c2
remote charset should be specified by each bookmark entry.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
950
diff
changeset
|
94 remote_charset = request->remote_charset; |
63555c9744c2
remote charset should be specified by each bookmark entry.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
950
diff
changeset
|
95 gftp_lookup_global_option ("default_charset", &default_charset); |
63555c9744c2
remote charset should be specified by each bookmark entry.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
950
diff
changeset
|
96 if(!remote_charset) |
63555c9744c2
remote charset should be specified by each bookmark entry.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
950
diff
changeset
|
97 remote_charset = (default_charset && *default_charset != '\0') |
63555c9744c2
remote charset should be specified by each bookmark entry.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
950
diff
changeset
|
98 ? default_charset : "UTF8"; |
63555c9744c2
remote charset should be specified by each bookmark entry.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
950
diff
changeset
|
99 |
63555c9744c2
remote charset should be specified by each bookmark entry.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
950
diff
changeset
|
100 if (*remote_charset == '\0' || request->use_local_encoding || |
950 | 101 force_local == 1) |
102 { | |
103 if (from_utf8) | |
104 { | |
105 if (is_filename) | |
106 ret = g_filename_from_utf8 (str, -1, &bread, dest_len, &error); | |
107 else | |
108 ret = g_locale_from_utf8 (str, -1, &bread, dest_len, &error); | |
109 } | |
110 else | |
111 { | |
112 if (is_filename) | |
113 ret = g_filename_to_utf8 (str, -1, &bread, dest_len, &error); | |
114 else | |
115 ret = g_locale_to_utf8 (str, -1, &bread, dest_len, &error); | |
116 } | |
117 | |
118 if (ret == NULL) | |
119 _do_show_iconv_error (str, request->iconv_charset, from_utf8, error); | |
120 | |
121 return (ret); | |
122 } | |
123 | |
124 if (from_utf8) | |
125 { | |
126 if (request->iconv_from_initialized) | |
127 { | |
128 ret = g_convert_with_iconv (str, -1, request->iconv_from, &bread, dest_len, | |
129 &error); | |
130 if (ret == NULL) | |
131 _do_show_iconv_error (str, request->iconv_charset, from_utf8, error); | |
132 | |
133 return (ret); | |
134 } | |
135 } | |
136 else | |
137 { | |
138 if (request->iconv_to_initialized) | |
139 { | |
140 ret = g_convert_with_iconv (str, -1, request->iconv_to, &bread, dest_len, | |
141 &error); | |
142 if (ret == NULL) | |
143 _do_show_iconv_error (str, request->iconv_charset, from_utf8, error); | |
144 | |
145 return (ret); | |
146 } | |
147 } | |
148 | |
988
63555c9744c2
remote charset should be specified by each bookmark entry.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
950
diff
changeset
|
149 stpos = remote_charset; |
950 | 150 while ((cur_charset = _gftp_get_next_charset (&stpos)) != NULL) |
151 { | |
152 if (from_utf8) | |
153 { | |
154 fromset = "UTF-8"; | |
155 toset = cur_charset; | |
156 if ((request->iconv_from = g_iconv_open (toset, fromset)) == (GIConv) -1) | |
157 { | |
158 g_free (cur_charset); | |
159 continue; | |
160 } | |
161 | |
162 error = NULL; | |
163 if ((ret = g_convert_with_iconv (str, -1, request->iconv_from, &bread, | |
164 dest_len, &error)) == NULL) | |
165 { | |
166 g_iconv_close (request->iconv_from); | |
167 request->iconv_from = NULL; | |
168 _do_show_iconv_error (str, cur_charset, from_utf8, error); | |
169 g_free (cur_charset); | |
170 continue; | |
171 } | |
172 | |
173 request->iconv_from_initialized = 1; | |
174 } | |
175 else | |
176 { | |
177 fromset = cur_charset; | |
178 toset = "UTF-8"; | |
179 if ((request->iconv_to = g_iconv_open (toset, fromset)) == (GIConv) -1) | |
180 { | |
181 g_free (cur_charset); | |
182 continue; | |
183 } | |
184 | |
185 error = NULL; | |
186 if ((ret = g_convert_with_iconv (str, -1, request->iconv_to, &bread, | |
187 dest_len, &error)) == NULL) | |
188 { | |
189 g_iconv_close (request->iconv_to); | |
190 request->iconv_to = NULL; | |
191 _do_show_iconv_error (str, cur_charset, from_utf8, error); | |
192 g_free (cur_charset); | |
193 continue; | |
194 } | |
195 | |
196 request->iconv_to_initialized = 1; | |
197 } | |
198 | |
199 request->iconv_charset = cur_charset; | |
200 return (ret); | |
201 } | |
202 | |
203 return (NULL); | |
204 } | |
205 | |
988
63555c9744c2
remote charset should be specified by each bookmark entry.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
950
diff
changeset
|
206 |
950 | 207 char * |
208 gftp_string_to_utf8 (gftp_request * request, const char *str, size_t *dest_len) | |
209 { | |
210 return (_do_convert_string (request, 0, 0, str, dest_len, 0)); | |
211 } | |
212 | |
213 | |
214 char * | |
215 gftp_string_from_utf8 (gftp_request * request, int force_local, const char *str, | |
216 size_t *dest_len) | |
217 { | |
218 return (_do_convert_string (request, 0, force_local, str, dest_len, 1)); | |
219 } | |
220 | |
221 | |
222 char * | |
223 gftp_filename_to_utf8 (gftp_request * request, const char *str, | |
224 size_t *dest_len) | |
225 { | |
226 return (_do_convert_string (request, 1, 0, str, dest_len, 0)); | |
227 } | |
228 | |
229 | |
230 char * | |
231 gftp_filename_from_utf8 (gftp_request * request, const char *str, | |
232 size_t *dest_len) | |
233 { | |
234 return (_do_convert_string (request, 1, 0, str, dest_len, 1)); | |
235 } | |
236 | |
988
63555c9744c2
remote charset should be specified by each bookmark entry.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
950
diff
changeset
|
237 |
63555c9744c2
remote charset should be specified by each bookmark entry.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
950
diff
changeset
|
238 char * |
63555c9744c2
remote charset should be specified by each bookmark entry.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
950
diff
changeset
|
239 gftp_remote_filename_to_utf8 (gftp_request * request, const char *str, |
63555c9744c2
remote charset should be specified by each bookmark entry.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
950
diff
changeset
|
240 size_t *dest_len) |
63555c9744c2
remote charset should be specified by each bookmark entry.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
950
diff
changeset
|
241 { |
63555c9744c2
remote charset should be specified by each bookmark entry.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
950
diff
changeset
|
242 char *remote_charset = NULL, *default_charset = NULL; |
63555c9744c2
remote charset should be specified by each bookmark entry.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
950
diff
changeset
|
243 GError *error = NULL; |
63555c9744c2
remote charset should be specified by each bookmark entry.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
950
diff
changeset
|
244 gchar *ret = NULL; |
63555c9744c2
remote charset should be specified by each bookmark entry.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
950
diff
changeset
|
245 |
63555c9744c2
remote charset should be specified by each bookmark entry.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
950
diff
changeset
|
246 if(request == NULL) |
63555c9744c2
remote charset should be specified by each bookmark entry.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
950
diff
changeset
|
247 return (NULL); |
63555c9744c2
remote charset should be specified by each bookmark entry.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
950
diff
changeset
|
248 |
63555c9744c2
remote charset should be specified by each bookmark entry.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
950
diff
changeset
|
249 /* get remote_charset */ |
63555c9744c2
remote charset should be specified by each bookmark entry.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
950
diff
changeset
|
250 // gftp_lookup_request_option (request, "remote_charset", &remote_charset); |
63555c9744c2
remote charset should be specified by each bookmark entry.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
950
diff
changeset
|
251 remote_charset = request->remote_charset; |
63555c9744c2
remote charset should be specified by each bookmark entry.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
950
diff
changeset
|
252 gftp_lookup_global_option ("default_charset", &default_charset); |
63555c9744c2
remote charset should be specified by each bookmark entry.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
950
diff
changeset
|
253 if(!remote_charset) |
63555c9744c2
remote charset should be specified by each bookmark entry.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
950
diff
changeset
|
254 remote_charset = (default_charset && *default_charset != '\0') |
63555c9744c2
remote charset should be specified by each bookmark entry.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
950
diff
changeset
|
255 ? default_charset : "UTF8"; |
63555c9744c2
remote charset should be specified by each bookmark entry.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
950
diff
changeset
|
256 |
63555c9744c2
remote charset should be specified by each bookmark entry.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
950
diff
changeset
|
257 ret = g_convert(str, -1, "UTF8", remote_charset, NULL, dest_len, error); |
63555c9744c2
remote charset should be specified by each bookmark entry.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
950
diff
changeset
|
258 return ret; |
63555c9744c2
remote charset should be specified by each bookmark entry.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
950
diff
changeset
|
259 } |
63555c9744c2
remote charset should be specified by each bookmark entry.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
950
diff
changeset
|
260 |
63555c9744c2
remote charset should be specified by each bookmark entry.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
950
diff
changeset
|
261 |
63555c9744c2
remote charset should be specified by each bookmark entry.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
950
diff
changeset
|
262 char * |
63555c9744c2
remote charset should be specified by each bookmark entry.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
950
diff
changeset
|
263 gftp_remote_filename_from_utf8 (gftp_request *request, const char *str, |
63555c9744c2
remote charset should be specified by each bookmark entry.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
950
diff
changeset
|
264 size_t *dest_len) |
63555c9744c2
remote charset should be specified by each bookmark entry.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
950
diff
changeset
|
265 { |
63555c9744c2
remote charset should be specified by each bookmark entry.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
950
diff
changeset
|
266 char *remote_charset = NULL, *default_charset = NULL; |
63555c9744c2
remote charset should be specified by each bookmark entry.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
950
diff
changeset
|
267 GError *error = NULL; |
63555c9744c2
remote charset should be specified by each bookmark entry.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
950
diff
changeset
|
268 gchar *ret = NULL; |
63555c9744c2
remote charset should be specified by each bookmark entry.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
950
diff
changeset
|
269 |
63555c9744c2
remote charset should be specified by each bookmark entry.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
950
diff
changeset
|
270 if(request == NULL) |
63555c9744c2
remote charset should be specified by each bookmark entry.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
950
diff
changeset
|
271 return (NULL); |
63555c9744c2
remote charset should be specified by each bookmark entry.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
950
diff
changeset
|
272 |
63555c9744c2
remote charset should be specified by each bookmark entry.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
950
diff
changeset
|
273 if(!g_utf8_validate (str, -1, NULL)) |
63555c9744c2
remote charset should be specified by each bookmark entry.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
950
diff
changeset
|
274 return (NULL); |
63555c9744c2
remote charset should be specified by each bookmark entry.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
950
diff
changeset
|
275 |
63555c9744c2
remote charset should be specified by each bookmark entry.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
950
diff
changeset
|
276 /* get remote_charset */ |
63555c9744c2
remote charset should be specified by each bookmark entry.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
950
diff
changeset
|
277 // gftp_lookup_request_option (request, "remote_charset", &remote_charset); |
63555c9744c2
remote charset should be specified by each bookmark entry.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
950
diff
changeset
|
278 remote_charset = request->remote_charset; |
63555c9744c2
remote charset should be specified by each bookmark entry.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
950
diff
changeset
|
279 gftp_lookup_global_option ("default_charset", &default_charset); |
63555c9744c2
remote charset should be specified by each bookmark entry.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
950
diff
changeset
|
280 if(!remote_charset) |
63555c9744c2
remote charset should be specified by each bookmark entry.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
950
diff
changeset
|
281 remote_charset = (default_charset && *default_charset != '\0') |
63555c9744c2
remote charset should be specified by each bookmark entry.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
950
diff
changeset
|
282 ? default_charset : "UTF8"; |
63555c9744c2
remote charset should be specified by each bookmark entry.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
950
diff
changeset
|
283 |
63555c9744c2
remote charset should be specified by each bookmark entry.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
950
diff
changeset
|
284 ret = g_convert(str, -1, remote_charset, "UTF8", NULL, dest_len, error); |
63555c9744c2
remote charset should be specified by each bookmark entry.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
950
diff
changeset
|
285 return ret; |
63555c9744c2
remote charset should be specified by each bookmark entry.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
950
diff
changeset
|
286 } |
63555c9744c2
remote charset should be specified by each bookmark entry.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
950
diff
changeset
|
287 |
950 | 288 #else |
289 | |
290 char * | |
291 gftp_string_to_utf8 (gftp_request * request, const char *str, size_t dest_len) | |
292 { | |
293 return (NULL); | |
294 } | |
295 | |
296 | |
297 char * | |
298 gftp_string_from_utf8 (gftp_request * request, int force_local, const char *str, | |
299 size_t dest_len) | |
300 { | |
301 return (NULL); | |
302 } | |
303 | |
304 | |
305 char * | |
306 gftp_filename_to_utf8 (gftp_request * request, const char *str, size_t dest_len) | |
307 { | |
308 return (NULL); | |
309 } | |
310 | |
311 | |
312 char * | |
313 gftp_filename_from_utf8 (gftp_request * request, int force_local, | |
314 const char *str, size_t dest_len) | |
315 { | |
316 return (NULL); | |
317 } | |
318 | |
988
63555c9744c2
remote charset should be specified by each bookmark entry.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
950
diff
changeset
|
319 char * |
63555c9744c2
remote charset should be specified by each bookmark entry.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
950
diff
changeset
|
320 gftp_remote_filename_to_utf8 (gftp_request * request, const char *str, size_t dest_len) |
63555c9744c2
remote charset should be specified by each bookmark entry.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
950
diff
changeset
|
321 { |
63555c9744c2
remote charset should be specified by each bookmark entry.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
950
diff
changeset
|
322 return (NULL); |
63555c9744c2
remote charset should be specified by each bookmark entry.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
950
diff
changeset
|
323 } |
63555c9744c2
remote charset should be specified by each bookmark entry.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
950
diff
changeset
|
324 |
63555c9744c2
remote charset should be specified by each bookmark entry.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
950
diff
changeset
|
325 |
63555c9744c2
remote charset should be specified by each bookmark entry.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
950
diff
changeset
|
326 char * |
63555c9744c2
remote charset should be specified by each bookmark entry.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
950
diff
changeset
|
327 gftp_remote_filename_from_utf8 (gftp_request * request, int force_local, |
63555c9744c2
remote charset should be specified by each bookmark entry.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
950
diff
changeset
|
328 const char *str, size_t dest_len) |
63555c9744c2
remote charset should be specified by each bookmark entry.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
950
diff
changeset
|
329 { |
63555c9744c2
remote charset should be specified by each bookmark entry.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
950
diff
changeset
|
330 return (NULL); |
63555c9744c2
remote charset should be specified by each bookmark entry.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
950
diff
changeset
|
331 } |
63555c9744c2
remote charset should be specified by each bookmark entry.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
950
diff
changeset
|
332 |
950 | 333 #endif |
334 | |
335 |