[dovecot-cvs] dovecot/src/lib-charset charset-iconv.c,1.8,1.9 charset-utf8.c,1.2,1.3 charset-utf8.h,1.3,1.4
cras at procontrol.fi
cras at procontrol.fi
Mon Dec 9 15:39:34 EET 2002
- Previous message: [dovecot-cvs] dovecot/src/lib-mail message-body-search.c,1.3,1.4 message-header-search.c,1.5,1.6 message-header-search.h,1.2,1.3 message-parser.c,1.26,1.27 message-part-serialize.c,1.6,1.7 message-part-serialize.h,1.4,1.5 quoted-printable.c,1.1,1.2 Message-Id: <20021208052310.917F5238CA@danu.procontrol.fi>
- Next message: [dovecot-cvs] dovecot/src/lib-storage mail-search.c,1.5,1.6
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
Update of /home/cvs/dovecot/src/lib-charset
In directory danu:/tmp/cvs-serv8606
Modified Files:
charset-iconv.c charset-utf8.c charset-utf8.h
Log Message:
Compiles again without iconv()
Index: charset-iconv.c
===================================================================
RCS file: /home/cvs/dovecot/src/lib-charset/charset-iconv.c,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -d -r1.8 -r1.9
--- charset-iconv.c 8 Dec 2002 05:23:07 -0000 1.8
+++ charset-iconv.c 9 Dec 2002 13:39:32 -0000 1.9
@@ -67,17 +67,6 @@
(void)iconv(t->cd, NULL, NULL, NULL, NULL);
}
-static void str_ucase_utf8(const unsigned char *src, size_t src_size,
- Buffer *dest, size_t destpos)
-{
- char *destbuf;
- size_t i;
-
- destbuf = buffer_get_space(dest, destpos, src_size);
- for (i = 0; i < src_size; i++)
- destbuf[i] = i_toupper(src[i]); /* FIXME: utf8 */
-}
-
CharsetResult
charset_to_ucase_utf8(CharsetTranslation *t,
const Buffer *src, size_t *src_pos, Buffer *dest)
@@ -95,7 +84,8 @@
size = buffer_get_used_size(src);
if (size > destleft)
size = destleft;
- str_ucase_utf8(buffer_get_data(src, NULL), size, dest, destpos);
+ _charset_utf8_ucase(buffer_get_data(src, NULL),
+ size, dest, destpos);
if (src_pos != NULL)
*src_pos = size;
return CHARSET_RET_OK;
@@ -124,27 +114,11 @@
if (src_pos != NULL)
*src_pos = buffer_get_used_size(src) - srcleft;
- str_ucase_utf8((unsigned char *) ic_destbuf - size, size,
- dest, destpos);
+ _charset_utf8_ucase((unsigned char *) ic_destbuf - size, size,
+ dest, destpos);
return ret;
}
-static const char *alloc_str_ucase_utf8(const Buffer *data, size_t *utf8_size)
-{
- const char *buf;
- size_t size;
- Buffer *dest;
-
- buf = buffer_get_data(data, &size);
-
- dest = buffer_create_dynamic(data_stack_pool, size, (size_t)-1);
- str_ucase_utf8(buf, size, dest, 0);
- if (utf8_size != NULL)
- *utf8_size = buffer_get_used_size(dest);
- buffer_append_c(dest, '\0');
- return buffer_free_without_data(dest);
-}
-
const char *
charset_to_ucase_utf8_string(const char *charset, int *unknown_charset,
const Buffer *data, size_t *utf8_size)
@@ -157,8 +131,11 @@
if (charset == NULL || strcasecmp(charset, "us-ascii") == 0 ||
strcasecmp(charset, "ascii") == 0 ||
strcasecmp(charset, "UTF-8") == 0 ||
- strcasecmp(charset, "UTF8") == 0)
- return alloc_str_ucase_utf8(data, utf8_size);
+ strcasecmp(charset, "UTF8") == 0) {
+ if (unknown_charset != NULL)
+ *unknown_charset = FALSE;
+ return _charset_utf8_ucase_strdup(data, utf8_size);
+ }
cd = iconv_open("UTF-8", charset);
if (cd == (iconv_t)-1) {
Index: charset-utf8.c
===================================================================
RCS file: /home/cvs/dovecot/src/lib-charset/charset-utf8.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -d -r1.2 -r1.3
--- charset-utf8.c 3 Dec 2002 13:55:44 -0000 1.2
+++ charset-utf8.c 9 Dec 2002 13:39:32 -0000 1.3
@@ -1,8 +1,39 @@
/* Copyright (C) 2002 Timo Sirainen */
#include "lib.h"
+#include "buffer.h"
#include "charset-utf8.h"
+#include <ctype.h>
+
+void _charset_utf8_ucase(const unsigned char *src, size_t src_size,
+ Buffer *dest, size_t destpos)
+{
+ char *destbuf;
+ size_t i;
+
+ destbuf = buffer_get_space(dest, destpos, src_size);
+ for (i = 0; i < src_size; i++)
+ destbuf[i] = i_toupper(src[i]); /* FIXME: utf8 */
+}
+
+const char *_charset_utf8_ucase_strdup(const Buffer *data, size_t *utf8_size)
+{
+ const char *buf;
+ size_t size;
+ Buffer *dest;
+
+ buf = buffer_get_data(data, &size);
+
+ dest = buffer_create_dynamic(data_stack_pool, size, (size_t)-1);
+ _charset_utf8_ucase(buf, size, dest, 0);
+ if (utf8_size != NULL)
+ *utf8_size = buffer_get_used_size(dest);
+ buffer_append_c(dest, '\0');
+ return buffer_free_without_data(dest);
+}
+
+
#ifndef HAVE_ICONV_H
#include <ctype.h>
@@ -41,40 +72,41 @@
{
}
-int charset_to_ucase_utf8(CharsetTranslation *t __attr_unused__,
- const unsigned char **inbuf, size_t *insize,
- unsigned char *outbuf, size_t *outsize)
+CharsetResult
+charset_to_ucase_utf8(CharsetTranslation *t __attr_unused__,
+ const Buffer *src, size_t *src_pos, Buffer *dest)
{
- size_t max_size, i;
-
- max_size = I_MIN(*insize, *outsize);
- for (i = 0; i < max_size; i++)
- outbuf[i] = i_toupper((*inbuf)[i]); /* FIXME: utf8 */
+ size_t size, destpos, destleft;
- *insize = 0;
- *outsize = max_size;
+ destpos = buffer_get_used_size(dest);
+ destleft = buffer_get_size(dest) - destpos;
- return TRUE;
+ /* no translation needed - just copy it to outbuf uppercased */
+ size = buffer_get_used_size(src);
+ if (size > destleft)
+ size = destleft;
+ _charset_utf8_ucase(buffer_get_data(src, NULL), size, dest, destpos);
+ if (src_pos != NULL)
+ *src_pos = size;
+ return CHARSET_RET_OK;
}
const char *
charset_to_ucase_utf8_string(const char *charset, int *unknown_charset,
- const unsigned char *buf,
- size_t *size __attr_unused__)
+ const Buffer *data, size_t *utf8_size)
{
if (charset == NULL || strcasecmp(charset, "us-ascii") == 0 ||
strcasecmp(charset, "ascii") == 0 ||
strcasecmp(charset, "UTF-8") == 0 ||
strcasecmp(charset, "UTF8") == 0) {
- outbuf = t_malloc(*size + 1);
- memcpy(outbuf, buf, *size);
- outbuf[*size] = '\0';
- return str_ucase(outbuf); /* FIXME: utf8 */
+ if (unknown_charset != NULL)
+ *unknown_charset = FALSE;
+ return _charset_utf8_ucase_strdup(data, utf8_size);
+ } else {
+ if (unknown_charset != NULL)
+ *unknown_charset = TRUE;
+ return NULL;
}
-
- if (unknown_charset != NULL)
- *unknown_charset = TRUE;
- return NULL;
}
#endif
Index: charset-utf8.h
===================================================================
RCS file: /home/cvs/dovecot/src/lib-charset/charset-utf8.h,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -d -r1.3 -r1.4
--- charset-utf8.h 8 Dec 2002 05:23:07 -0000 1.3
+++ charset-utf8.h 9 Dec 2002 13:39:32 -0000 1.4
@@ -30,4 +30,8 @@
charset_to_ucase_utf8_string(const char *charset, int *unknown_charset,
const Buffer *data, size_t *utf8_size);
+void _charset_utf8_ucase(const unsigned char *src, size_t src_size,
+ Buffer *dest, size_t destpos);
+const char *_charset_utf8_ucase_strdup(const Buffer *data, size_t *utf8_size);
+
#endif
- Previous message: [dovecot-cvs] dovecot/src/lib-mail message-body-search.c,1.3,1.4 message-header-search.c,1.5,1.6 message-header-search.h,1.2,1.3 message-parser.c,1.26,1.27 message-part-serialize.c,1.6,1.7 message-part-serialize.h,1.4,1.5 quoted-printable.c,1.1,1.2 Message-Id: <20021208052310.917F5238CA@danu.procontrol.fi>
- Next message: [dovecot-cvs] dovecot/src/lib-storage mail-search.c,1.5,1.6
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
More information about the dovecot-cvs
mailing list