Remove g_convert (moved to glib) and now useless utf_to_latin1()

Thu Sep 14 12:21:12 2000  Owen Taylor  <otaylor@redhat.com>

        * gtk/gtktexttypes.[ch]: Remove g_convert (moved to
	glib) and now useless utf_to_latin1() latin1_to_utf()
This commit is contained in:
Owen Taylor 2000-09-14 21:19:11 +00:00 committed by Owen Taylor
parent 5fea69440e
commit 2a9abf57ce
2 changed files with 0 additions and 182 deletions

View File

@ -60,172 +60,3 @@ gtk_text_byte_begins_utf8_char(const gchar *byte)
return inline_byte_begins_utf8_char(byte);
}
guint
gtk_text_utf_to_latin1_char(const gchar *p, guchar *l1_ch)
{
guint charlen;
gunichar ch;
g_assert(inline_byte_begins_utf8_char(p));
charlen = g_utf8_next_char (p) - p;
ch = g_utf8_get_char (p);
g_assert(ch != '\0');
if (ch > 0xff)
*l1_ch = '?';
else
*l1_ch = ch;
return charlen;
}
gchar*
gtk_text_utf_to_latin1(const gchar *p, gint len)
{
GString *str;
guint i;
gchar *retval;
str = g_string_new("");
i = 0;
while (i < len)
{
guchar ch;
guint charlen;
charlen = gtk_text_utf_to_latin1_char(p+i, &ch);
g_string_append_c(str, ch);
i += charlen;
}
retval = str->str;
g_string_free(str, FALSE);
return retval;
}
gchar*
gtk_text_latin1_to_utf (const gchar *latin1, gint len)
{
gint i;
GString *retval;
gchar *str;
retval = g_string_new("");
i = 0;
while (i < len)
{
gchar utf[7];
gint count;
count = g_unichar_to_utf8 ((guchar)latin1[i], utf);
utf[count] = '\0';
g_string_append(retval, utf);
++i;
}
str = retval->str;
g_string_free(retval, FALSE);
return str;
}
#include <iconv.h>
#include <errno.h>
#include <string.h>
gchar*
g_convert (const gchar *str,
gint len,
const gchar *to_codeset,
const gchar *from_codeset,
gint *bytes_converted)
{
gchar *dest;
gchar *outp;
const gchar *p;
size_t inbytes_remaining;
size_t outbytes_remaining;
size_t err;
iconv_t cd;
size_t outbuf_size;
g_return_val_if_fail (str != NULL, NULL);
g_return_val_if_fail (to_codeset != NULL, NULL);
g_return_val_if_fail (from_codeset != NULL, NULL);
cd = iconv_open (to_codeset, from_codeset);
if (cd == (iconv_t) -1)
{
/* Something went wrong. */
if (errno == EINVAL)
g_warning ("Conversion from character set `%s' to `%s' is not supported",
from_codeset, to_codeset);
else
g_warning ("Failed to convert character set `%s' to `%s': %s",
from_codeset, to_codeset, strerror (errno));
if (bytes_converted)
*bytes_converted = 0;
return NULL;
}
if (len < 0)
len = strlen (str);
p = str;
inbytes_remaining = len;
outbuf_size = len + 1; /* + 1 for nul in case len == 1 */
outbytes_remaining = outbuf_size - 1; /* -1 for nul */
outp = dest = g_malloc (outbuf_size);
again:
err = iconv (cd, &p, &inbytes_remaining, &outp, &outbytes_remaining);
if (err == (size_t) -1)
{
if (errno == E2BIG)
{
size_t used = outp - dest;
outbuf_size *= 2;
dest = g_realloc (dest, outbuf_size);
outp = dest + used;
outbytes_remaining = outbuf_size - used - 1; /* -1 for nul */
goto again;
}
else
g_warning ("iconv() failed: %s", strerror (errno));
}
*outp = '\0';
if (iconv_close (cd) != 0)
g_warning ("Failed to close iconv() conversion descriptor: %s",
strerror (errno));
if (bytes_converted)
*bytes_converted = p - str;
if (p == str)
{
g_free (dest);
return NULL;
}
else
return dest;
}

View File

@ -117,20 +117,7 @@ extern const gunichar gtk_text_unknown_char;
extern const gchar gtk_text_unknown_char_utf8[];
gboolean gtk_text_byte_begins_utf8_char (const gchar *byte);
guint gtk_text_utf_to_latin1_char (const gchar *p,
guchar *l1_ch);
gchar* gtk_text_utf_to_latin1 (const gchar *p,
gint len);
gchar* gtk_text_latin1_to_utf (const gchar *latin1,
gint len);
gchar* g_convert (const gchar *str,
gint len,
const gchar *to_codeset,
const gchar *from_codeset,
gint *bytes_converted);
#ifdef __cplusplus
}
#endif /* __cplusplus */