diff options
author | Not Zed <NotZed@Ximian.com> | 2003-10-30 12:58:33 +0800 |
---|---|---|
committer | Michael Zucci <zucchi@src.gnome.org> | 2003-10-30 12:58:33 +0800 |
commit | 52759f2d4018b8ff0ce173aa1237b08783f1424c (patch) | |
tree | c6b392bea311df4d965b3e234cb769d6bf78e7e0 /camel/camel-utf8.c | |
parent | 4c9e3c871c301e92711b91f0df0aca2521567db1 (diff) | |
download | gsoc2013-evolution-52759f2d4018b8ff0ce173aa1237b08783f1424c.tar.gz 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.c | 60 |
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; +} |