+2001-08-03 Ron Steinke <rsteinke@w-link.net>
+
+ * glib/giochannel.c: Fixed g_io_channel_seek_position()
+ so that G_SEEK_CUR can be used with UTF-8 encoding
+
+ * glib/giochannel.c: Changed test to decide whether
+ use_buf is encoded_read_buf or read_buf from
+ "if (channel->do_encode)" to "if (channel->encoding)" to
+ fix bug 58472
+
+ * tests/iochannel-test.c: Fixed so it doesn't output
+ double newlines
+
+ * glib/giochannel.c: Fixed g_io_channel_fill_buffer()
+ so that encoded_read_buf is created for UTF-8 encoding
+
2001-08-03 Darin Adler <darin@bentspoon.com>
* tests/strfunc-test.c: (strv_check), (main):
+2001-08-03 Ron Steinke <rsteinke@w-link.net>
+
+ * glib/giochannel.c: Fixed g_io_channel_seek_position()
+ so that G_SEEK_CUR can be used with UTF-8 encoding
+
+ * glib/giochannel.c: Changed test to decide whether
+ use_buf is encoded_read_buf or read_buf from
+ "if (channel->do_encode)" to "if (channel->encoding)" to
+ fix bug 58472
+
+ * tests/iochannel-test.c: Fixed so it doesn't output
+ double newlines
+
+ * glib/giochannel.c: Fixed g_io_channel_fill_buffer()
+ so that encoded_read_buf is created for UTF-8 encoding
+
2001-08-03 Darin Adler <darin@bentspoon.com>
* tests/strfunc-test.c: (strv_check), (main):
+2001-08-03 Ron Steinke <rsteinke@w-link.net>
+
+ * glib/giochannel.c: Fixed g_io_channel_seek_position()
+ so that G_SEEK_CUR can be used with UTF-8 encoding
+
+ * glib/giochannel.c: Changed test to decide whether
+ use_buf is encoded_read_buf or read_buf from
+ "if (channel->do_encode)" to "if (channel->encoding)" to
+ fix bug 58472
+
+ * tests/iochannel-test.c: Fixed so it doesn't output
+ double newlines
+
+ * glib/giochannel.c: Fixed g_io_channel_fill_buffer()
+ so that encoded_read_buf is created for UTF-8 encoding
+
2001-08-03 Darin Adler <darin@bentspoon.com>
* tests/strfunc-test.c: (strv_check), (main):
+2001-08-03 Ron Steinke <rsteinke@w-link.net>
+
+ * glib/giochannel.c: Fixed g_io_channel_seek_position()
+ so that G_SEEK_CUR can be used with UTF-8 encoding
+
+ * glib/giochannel.c: Changed test to decide whether
+ use_buf is encoded_read_buf or read_buf from
+ "if (channel->do_encode)" to "if (channel->encoding)" to
+ fix bug 58472
+
+ * tests/iochannel-test.c: Fixed so it doesn't output
+ double newlines
+
+ * glib/giochannel.c: Fixed g_io_channel_fill_buffer()
+ so that encoded_read_buf is created for UTF-8 encoding
+
2001-08-03 Darin Adler <darin@bentspoon.com>
* tests/strfunc-test.c: (strv_check), (main):
+2001-08-03 Ron Steinke <rsteinke@w-link.net>
+
+ * glib/giochannel.c: Fixed g_io_channel_seek_position()
+ so that G_SEEK_CUR can be used with UTF-8 encoding
+
+ * glib/giochannel.c: Changed test to decide whether
+ use_buf is encoded_read_buf or read_buf from
+ "if (channel->do_encode)" to "if (channel->encoding)" to
+ fix bug 58472
+
+ * tests/iochannel-test.c: Fixed so it doesn't output
+ double newlines
+
+ * glib/giochannel.c: Fixed g_io_channel_fill_buffer()
+ so that encoded_read_buf is created for UTF-8 encoding
+
2001-08-03 Darin Adler <darin@bentspoon.com>
* tests/strfunc-test.c: (strv_check), (main):
+2001-08-03 Ron Steinke <rsteinke@w-link.net>
+
+ * glib/giochannel.c: Fixed g_io_channel_seek_position()
+ so that G_SEEK_CUR can be used with UTF-8 encoding
+
+ * glib/giochannel.c: Changed test to decide whether
+ use_buf is encoded_read_buf or read_buf from
+ "if (channel->do_encode)" to "if (channel->encoding)" to
+ fix bug 58472
+
+ * tests/iochannel-test.c: Fixed so it doesn't output
+ double newlines
+
+ * glib/giochannel.c: Fixed g_io_channel_fill_buffer()
+ so that encoded_read_buf is created for UTF-8 encoding
+
2001-08-03 Darin Adler <darin@bentspoon.com>
* tests/strfunc-test.c: (strv_check), (main):
+2001-08-03 Ron Steinke <rsteinke@w-link.net>
+
+ * glib/giochannel.c: Fixed g_io_channel_seek_position()
+ so that G_SEEK_CUR can be used with UTF-8 encoding
+
+ * glib/giochannel.c: Changed test to decide whether
+ use_buf is encoded_read_buf or read_buf from
+ "if (channel->do_encode)" to "if (channel->encoding)" to
+ fix bug 58472
+
+ * tests/iochannel-test.c: Fixed so it doesn't output
+ double newlines
+
+ * glib/giochannel.c: Fixed g_io_channel_fill_buffer()
+ so that encoded_read_buf is created for UTF-8 encoding
+
2001-08-03 Darin Adler <darin@bentspoon.com>
* tests/strfunc-test.c: (strv_check), (main):
+2001-08-03 Ron Steinke <rsteinke@w-link.net>
+
+ * glib/giochannel.c: Fixed g_io_channel_seek_position()
+ so that G_SEEK_CUR can be used with UTF-8 encoding
+
+ * glib/giochannel.c: Changed test to decide whether
+ use_buf is encoded_read_buf or read_buf from
+ "if (channel->do_encode)" to "if (channel->encoding)" to
+ fix bug 58472
+
+ * tests/iochannel-test.c: Fixed so it doesn't output
+ double newlines
+
+ * glib/giochannel.c: Fixed g_io_channel_fill_buffer()
+ so that encoded_read_buf is created for UTF-8 encoding
+
2001-08-03 Darin Adler <darin@bentspoon.com>
* tests/strfunc-test.c: (strv_check), (main):
if (channel->ref_count == 0)
{
if (channel->close_on_unref)
- g_io_channel_close (channel);
+ g_io_channel_shutdown (channel, TRUE, NULL);
else
g_io_channel_purge (channel);
g_free (channel->encoding);
g_string_truncate (channel->read_buf, 0);
if (channel->write_buf)
g_string_truncate (channel->write_buf, 0);
- if (channel->do_encode)
+ if (channel->encoding)
{
if (channel->encoded_read_buf)
g_string_truncate (channel->encoded_read_buf, 0);
/* Make sure the encoded buffers are empty */
- g_return_val_if_fail (!channel->encoded_read_buf ||
+ g_return_val_if_fail (!channel->do_encode || !channel->encoded_read_buf ||
channel->encoded_read_buf->len == 0, G_IO_STATUS_ERROR);
g_return_val_if_fail (channel->partial_write_buf[0] == '\0', G_IO_STATUS_ERROR);
if (channel->write_cd != (GIConv) -1)
g_iconv_close (channel->write_cd);
+ if (channel->encoded_read_buf && channel->encoded_read_buf->len > 0)
+ {
+ g_assert (!did_encode); /* Encoding UTF-8, NULL doesn't use encoded_read_buf */
+
+ /* This is just validated UTF-8, so we can copy it back into read_buf
+ * so it can be encoded in whatever the new encoding is.
+ */
+
+ g_string_prepend_len (channel->read_buf, channel->encoded_read_buf->str,
+ channel->encoded_read_buf->len);
+ g_string_truncate (channel->encoded_read_buf, 0);
+ }
+
channel->read_cd = read_cd;
channel->write_cd = write_cd;
if (channel->encoded_read_buf)
oldlen = channel->encoded_read_buf->len;
else
- oldlen = 0;
+ {
+ oldlen = 0;
+ channel->encoded_read_buf = g_string_sized_new (channel->buf_size);
+ }
if (channel->do_encode)
{
size_t errnum, inbytes_left, outbytes_left;
gchar *inbuf, *outbuf;
- if (!channel->encoded_read_buf)
- channel->encoded_read_buf = g_string_sized_new (channel->buf_size);
-
reencode:
inbytes_left = channel->read_buf->len;
{
GString *use_buf;
- if (channel->do_encode)
+ if (channel->encoding)
use_buf = channel->encoded_read_buf;
else
use_buf = channel->read_buf;
{
GString *use_buf;
- if (channel->do_encode)
+ if (channel->encoding)
use_buf = channel->encoded_read_buf;
else
use_buf = channel->read_buf;
{
*length = 0;
- if (channel->do_encode && channel->read_buf->len != 0)
- /* using GIConv conversion, unconverted chars */
+ if (channel->encoding && channel->read_buf->len != 0)
{
g_set_error (error, G_CONVERT_ERROR,
G_CONVERT_ERROR_PARTIAL_INPUT,
if (length_out < buffer->len)
g_warning ("Only wrote part of the line.");
- do
- status = g_io_channel_write_chars (gio_w, line_term,
- line_term_len, &length_out, &gerr);
- while (status == G_IO_STATUS_AGAIN);
- if (status != G_IO_STATUS_NORMAL)
- break;
-
- if (length_out < line_term_len)
- g_warning ("Only wrote part of the line term.");
-
- g_print (": %s\n", buffer->str);
+ g_print ("%s", buffer->str);
g_string_truncate (buffer, 0);
}