aboutsummaryrefslogtreecommitdiffstats
path: root/camel/camel-utf8.c
diff options
context:
space:
mode:
authorNot Zed <NotZed@Ximian.com>2003-10-30 12:58:33 +0800
committerMichael Zucci <zucchi@src.gnome.org>2003-10-30 12:58:33 +0800
commit52759f2d4018b8ff0ce173aa1237b08783f1424c (patch)
treec6b392bea311df4d965b3e234cb769d6bf78e7e0 /camel/camel-utf8.c
parent4c9e3c871c301e92711b91f0df0aca2521567db1 (diff)
downloadgsoc2013-evolution-52759f2d4018b8ff0ce173aa1237b08783f1424c.tar
gsoc2013-evolution-52759f2d4018b8ff0ce173aa1237b08783f1424c.tar.gz
gsoc2013-evolution-52759f2d4018b8ff0ce173aa1237b08783f1424c.tar.bz2
gsoc2013-evolution-52759f2d4018b8ff0ce173aa1237b08783f1424c.tar.lz
gsoc2013-evolution-52759f2d4018b8ff0ce173aa1237b08783f1424c.tar.xz
gsoc2013-evolution-52759f2d4018b8ff0ce173aa1237b08783f1424c.tar.zst
gsoc2013-evolution-52759f2d4018b8ff0ce173aa1237b08783f1424c.zip
Added a note about api inconsistencies.
2003-10-30 Not Zed <NotZed@Ximian.com> * camel-cipher-context.h: Added a note about api inconsistencies. 2003-10-30 Not Zed <NotZed@Ximian.com> * camel-multipart-encrypted.c (camel_multipart_encrypted_decrypt): fix for cipher_decrypt changes. * camel-gpg-context.c, camel-cipher-context.c: moved all the init code to the end to save having to keep forward declarations around. (camel_cipher_decrypt): changed to take mimepart input and return a mimepart. (gpg_decrypt): fix for changed args. 2003-10-29 Not Zed <NotZed@Ximian.com> * camel-smime-context.[ch]: replaced entirely with a new implementation which inherits from camel-cipher-context, and add to build. * camel-multipart-encrypted.c (camel_multipart_encrypted_encrypt): fix for cipher_encrypt api changes. (camel_multipart_encrypted_decrypt): use g_ascii_strcasecmp. * camel-gpg-context.c (gpg_encrypt): Fix to handle input/output as parts not streams * camel-cipher-context.c (camel_cipher_encrypt): change to take mimeparts rather than streams as input/output. And remove the 'sign' argument, it is implied if userid is supplied. 2003-10-28 Not Zed <NotZed@Ximian.com> * tests/smime/pgp.c (main): fix for ciphercontext api changes. * camel-multipart-signed.c (camel_multipart_signed_verify): pass in the part to cipher_verify directly. (camel_multipart_signed_sign): let the cipher context setup the part details. * camel-gpg-context.c (gpg_sign): put the signature stream into a mimepart, with appropriate headers/encoding. (swrite): write out a mimepart rather than a stream. (gpg_verify): handle changed args. * camel-cipher-context.c (camel_cipher_sign): write the signature to a mimepart rather than a simple stream. (camel_cipher_verify): take the signature as a mimepart not a stream. 2003-10-22 Not Zed <NotZed@Ximian.com> * camel-utf8.c (camel_ucs2_utf8, camel_utf8_ucs2): helpers for ucs2 stuff. ucs2 is 16 bit truncated unicode. svn path=/trunk/; revision=23127
Diffstat (limited to 'camel/camel-utf8.c')
-rw-r--r--camel/camel-utf8.c60
1 files changed, 60 insertions, 0 deletions
diff --git a/camel/camel-utf8.c b/camel/camel-utf8.c
index 65ca7f90a2..8fd422c944 100644
--- a/camel/camel-utf8.c
+++ b/camel/camel-utf8.c
@@ -25,9 +25,12 @@
#include <config.h>
#endif
+#include <string.h>
+
#include <glib.h>
#include "camel-utf8.h"
+#include <netinet/in.h>
/**
* camel_utf8_putc:
@@ -338,3 +341,60 @@ camel_utf8_utf7(const char *ptr)
return ret;
}
+
+/**
+ * camel_utf8_ucs2:
+ * @ptr:
+ *
+ * Convert a utf8 string into a ucs2 one. The ucs string will be in
+ * network byte order, and terminated with a 16 bit NULL.
+ *
+ * Return value:
+ **/
+char *
+camel_utf8_ucs2(const char *ptr)
+{
+ GByteArray *work = g_byte_array_new();
+ guint32 c;
+ char *out;
+
+ /* what if c is > 0xffff ? */
+
+ while ( (c = camel_utf8_getc((const unsigned char **)&ptr)) ) {
+ guint16 s = htons(c);
+
+ g_byte_array_append(work, (char *)&s, 2);
+ }
+
+ g_byte_array_append(work, "\000\000", 2);
+ out = g_malloc(work->len);
+ memcpy(out, work->data, work->len);
+ g_byte_array_free(work, TRUE);
+
+ return out;
+}
+
+/**
+ * camel_ucs2_utf8:
+ * @ptr:
+ *
+ * Convert a ucs2 string into a utf8 one. The ucs2 string is treated
+ * as network byte ordered, and terminated with a 16 bit NUL.
+ *
+ * Return value:
+ **/
+char *camel_ucs2_utf8(const char *ptr)
+{
+ guint16 *ucs = (guint16 *)ptr;
+ guint32 c;
+ GString *work = g_string_new("");
+ char *out;
+
+ while ( (c = *ucs++) )
+ g_string_append_u(work, ntohs(c));
+
+ out = g_strdup(work->str);
+ g_string_free(work, TRUE);
+
+ return out;
+}