Author: joes
Date: Mon Apr 11 08:02:51 2005
New Revision: 160897
URL: http://svn.apache.org/viewcvs?view=rev&rev=160897
Log:
Add apreq_cp1252_to_utf8().
Modified:
httpd/apreq/branches/multi-env-unstable/CHANGES
httpd/apreq/branches/multi-env-unstable/include/apreq_util.h
httpd/apreq/branches/multi-env-unstable/library/t/util.c
httpd/apreq/branches/multi-env-unstable/library/util.c
Modified: httpd/apreq/branches/multi-env-unstable/CHANGES
URL:
http://svn.apache.org/viewcvs/httpd/apreq/branches/multi-env-unstable/CHANGES?view=diff&r1=160896&r2=160897
==============================================================================
--- httpd/apreq/branches/multi-env-unstable/CHANGES (original)
+++ httpd/apreq/branches/multi-env-unstable/CHANGES Mon Apr 11 08:02:51 2005
@@ -4,9 +4,11 @@
@section v2_05_dev Changes with libapreq2-2.05-dev
+- C API [joes]
+ Add apreq_cp_1252_to_utf8().
- C API [joes]
- Add utf8 charset flag for params.
+ Add charset support for params.
- C API [joes]
Replace v->size with v->nlen + v->dlen.
Modified: httpd/apreq/branches/multi-env-unstable/include/apreq_util.h
URL:
http://svn.apache.org/viewcvs/httpd/apreq/branches/multi-env-unstable/include/apreq_util.h?view=diff&r1=160896&r2=160897
==============================================================================
--- httpd/apreq/branches/multi-env-unstable/include/apreq_util.h (original)
+++ httpd/apreq/branches/multi-env-unstable/include/apreq_util.h Mon Apr 11
08:02:51 2005
@@ -109,10 +109,24 @@
* @param src Original string.
* @param slen Length of original string.
*
- * @return length of url-encoded string in dest.
+ * @return length of url-encoded string in dest; does not exceed 3 * slen.
*/
APREQ_DECLARE(apr_size_t) apreq_encode(char *dest, const char *src,
const apr_size_t slen);
+
+/**
+ * Convert a string from cp1252 to utf8. Caller must ensure it is large enough
+ * to hold the encoded string and trailing '\\0'.
+ *
+ * @param dest Location of utf8-encoded result string. Caller must ensure it
+ * is large enough to hold the encoded string and trailing '\\0'.
+ * @param src Original string.
+ * @param slen Length of original string.
+ *
+ * @return length of utf8-encoded string in dest; does not exceed 3 * slen.
+ */
+APREQ_DECLARE(apr_size_t) apreq_cp1252_to_utf8(char *dest,
+ const char *src, apr_size_t
slen);
/**
* Url-decodes a string.
Modified: httpd/apreq/branches/multi-env-unstable/library/t/util.c
URL:
http://svn.apache.org/viewcvs/httpd/apreq/branches/multi-env-unstable/library/t/util.c?view=diff&r1=160896&r2=160897
==============================================================================
--- httpd/apreq/branches/multi-env-unstable/library/t/util.c (original)
+++ httpd/apreq/branches/multi-env-unstable/library/t/util.c Mon Apr 11
08:02:51 2005
@@ -112,6 +112,10 @@
}
+static void test_cp1252_to_utf8(dAT)
+{
+
+}
static void test_quote(dAT)
{
@@ -167,6 +171,7 @@
{ dT(test_decode, 0) },
{ dT(test_decodev, 6) },
{ dT(test_encode, 0) },
+ { dT(test_cp1252_to_utf8, 0) },
{ dT(test_quote, 0) },
{ dT(test_quote_once, 0), },
{ dT(test_join, 0) },
Modified: httpd/apreq/branches/multi-env-unstable/library/util.c
URL:
http://svn.apache.org/viewcvs/httpd/apreq/branches/multi-env-unstable/library/util.c?view=diff&r1=160896&r2=160897
==============================================================================
--- httpd/apreq/branches/multi-env-unstable/library/util.c (original)
+++ httpd/apreq/branches/multi-env-unstable/library/util.c Mon Apr 11 08:02:51
2005
@@ -183,6 +183,36 @@
return c;
}
+/* converts cp1252 to utf8 */
+APREQ_DECLARE(apr_size_t) apreq_cp1252_to_utf8(char *dest,
+ const char *src, apr_size_t
slen)
+{
+ const unsigned char *s = (unsigned const char *)src;
+ const unsigned char *end = s + slen;
+ unsigned char *d = (unsigned char *)dest;
+ apr_uint16_t c;
+
+ while (s < end) {
+ c = cp1252_to_bmp(*s++);
+
+ if (c < 0x80) {
+ *d++ = c;
+ }
+ else if (c < 0x800) {
+ *d++ = 0xC0 | (c >> 6);
+ *d++ = 0x80 | (c & 0x3F);
+ }
+ else {
+ *d++ = 0xE0 | (c >> 12);
+ *d++ = 0x80 | ((c >> 6) & 0x3F);
+ *d++ = 0x80 | (c & 0x3F);
+ }
+ }
+ *d = 0;
+ return d - (unsigned char *)dest;
+}
+
+
/**
* Valid utf8 bit patterns:
*