*/
#include <stdio.h>
#include <glib.h>
+#include <errno.h>
+#ifdef _MSC_VER
+/* FIXME */
+#define CODESET 1
+typedef int iconv_t;
+#else
#include <langinfo.h>
#include <iconv.h>
-#include <errno.h>
+#endif
static char *my_charset;
static gboolean is_utf8;
GUnicodeType
g_unichar_type (gunichar c)
{
- g_error ("g_unichar_type is not implemented");
+ g_error ("%s", "g_unichar_type is not implemented");
return 0;
}
gunichar
g_unichar_tolower (gunichar c)
{
- g_error ("g_unichar_type is not implemented");
+ g_error ("%s", "g_unichar_type is not implemented");
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);
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;
result = buffer;
leave:
iconv_close (convertor);
+#endif
return result;
}
len = strlen (utf8string);
res = g_malloc (len + 1);
- g_strlcpy (res, utf8string, len);
+ g_strlcpy (res, utf8string, len + 1);
return res;
}
gboolean
-g_get_charset (char **charset)
+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;
if (charset != NULL)
*charset = my_charset;
+#endif
return is_utf8;
}