2007-10-19 Nagappan A <anagappan@novell.com>
[mono.git] / eglib / src / gunicode.c
index a5e25419276dc0382b29ad6fa0e37e372109d6cb..d9e680994ec45ea82ae5f9ca2a0e5e07d85add99 100644 (file)
@@ -62,16 +62,38 @@ g_unichar_tolower (gunichar c)
        return 0;
 }
 
+gboolean
+g_unichar_isxdigit (gunichar c)
+{
+       return (g_unichar_xdigit_value (c) != -1);
+
+}
+
+gint
+g_unichar_xdigit_value (gunichar c)
+{
+       if (c >= 0x30 && c <= 0x39) /*0-9*/
+               return (c - 0x30);
+       if (c >= 0x41 && c <= 0x46) /*A-F*/
+               return (c - 0x37);
+       if (c >= 0x61 && c <= 0x66) /*a-f*/
+               return (c - 0x57);
+       return -1;
+}
+
 gchar *
 g_convert (const gchar *str, gssize len,
           const gchar *to_codeset, const gchar *from_codeset,
           gsize *bytes_read, gsize *bytes_written, GError **error)
 {
+       char *result = NULL;
+#ifdef G_OS_WIN32
+#else
        iconv_t convertor;
-       char *buffer, *result, *output;
+       char *buffer, *output;
        const char *strptr = (const char *) str;
-       int str_len = len == -1 ? strlen (str) : len;
-       int buffer_size;
+       size_t str_len = len == -1 ? strlen (str) : len;
+       size_t buffer_size;
        size_t left, out_left;
        
        convertor = iconv_open (to_codeset, from_codeset);
@@ -91,8 +113,8 @@ g_convert (const gchar *str, gssize len,
                if (res == (size_t) -1){
                        if (errno == E2BIG){
                                char *n;
-                               int extra_space = 8 + left;
-                               int output_used = output - buffer;
+                               size_t extra_space = 8 + left;
+                               size_t output_used = output - buffer;
                                
                                buffer_size += extra_space;
                                
@@ -131,6 +153,7 @@ g_convert (const gchar *str, gssize len,
        result = buffer;
  leave:
        iconv_close (convertor);
+#endif
        return result;
 }
 
@@ -153,6 +176,8 @@ g_filename_from_utf8 (const gchar *utf8string, gssize len, gsize *bytes_read, gs
 gboolean
 g_get_charset (G_CONST_RETURN char **charset)
 {
+#ifdef G_OS_WIN32
+#else
        if (my_charset == NULL){
                my_charset = g_strdup (nl_langinfo (CODESET));
                is_utf8 = strcmp (my_charset, "UTF-8") == 0;
@@ -161,6 +186,7 @@ g_get_charset (G_CONST_RETURN char **charset)
        if (charset != NULL)
                *charset = my_charset;
 
+#endif
        return is_utf8;
 }