diff src/util.c @ 1985:008a4cc4a82c

[gaim-migrate @ 1995] hi. committer: Tailor Script <tailor@pidgin.im>
author Eric Warmenhoven <eric@warmenhoven.org>
date Mon, 11 Jun 2001 09:21:18 +0000
parents 24aed1c31342
children 9a2e3902658c
line wrap: on
line diff
--- a/src/util.c	Sun Jun 10 20:20:44 2001 +0000
+++ b/src/util.c	Mon Jun 11 09:21:18 2001 +0000
@@ -1524,6 +1524,47 @@
 	fclose(fd);
 }
 
+unsigned char *utf8_to_str(unsigned char *in)
+{
+	int n = 0,i = 0;
+	int inlen;
+	unsigned char *result;
+
+	if (!in)
+		return NULL;
+
+	inlen = strlen(in);
+
+	result = g_malloc(inlen+1);
+
+	while(n <= inlen-1) {
+		long c = (long)in[n];
+		if(c<0x80)
+			result[i++] = (char)c;
+		else {
+			if((c&0xC0) == 0xC0)
+				result[i++] = (char)(((c&0x03)<<6)|(((unsigned char)in[++n])&0x3F));
+			else if((c&0xE0) == 0xE0) {
+				if (n + 2 <= inlen) {
+					result[i] = (char)(((c&0xF)<<4)|(((unsigned char)in[++n])&0x3F));
+					result[i] = (char)(((unsigned char)result[i]) |(((unsigned char)in[++n])&0x3F));
+					i++;
+				} else n += 2;
+			}
+			else if((c&0xF0) == 0xF0)
+				n += 3;
+			else if((c&0xF8) == 0xF8)
+				n += 4;
+			else if((c&0xFC) == 0xFC)
+				n += 5;
+		}
+		n++;
+    }
+    result[i] = '\0';
+
+    return result;
+}
+
 time_t get_time(int year, int month, int day, int hour, int min, int sec)
 {
 	struct tm tm;