summaryrefslogtreecommitdiffhomepage
path: root/mixlib/mix_io.c
diff options
context:
space:
mode:
authorJose Antonio Ortega Ruiz <jao@gnu.org>2004-06-08 22:33:40 +0000
committerJose Antonio Ortega Ruiz <jao@gnu.org>2004-06-08 22:33:40 +0000
commit21830126cfa1badd81b2c6fe1b3e9d0c610c8b0a (patch)
treea9a9eb3edbaf9b371a269c5f93670c35eebadc47 /mixlib/mix_io.c
parent29e2e833d3d8c5e3cd00d22134df878379933124 (diff)
downloadmdk-21830126cfa1badd81b2c6fe1b3e9d0c610c8b0a.tar.gz
mdk-21830126cfa1badd81b2c6fe1b3e9d0c610c8b0a.tar.bz2
the console is now in/out.
Diffstat (limited to 'mixlib/mix_io.c')
-rw-r--r--mixlib/mix_io.c16
1 files changed, 12 insertions, 4 deletions
diff --git a/mixlib/mix_io.c b/mixlib/mix_io.c
index 84b9ee0..74cca66 100644
--- a/mixlib/mix_io.c
+++ b/mixlib/mix_io.c
@@ -184,15 +184,23 @@ mix_io_read_word_array_as_char (mix_iochannel_t *ioc,
mix_word_t *w, size_t s)
{
guint k, j;
+ guchar value;
+ gboolean eol = FALSE;
+ mix_char_t spc = mix_ascii_to_char (' ');
if ((ioc == NULL) || (w == NULL)) return FALSE;
- for (k = 0; k < s; k++)
+ for (k = 0; k < s && !eol; k++)
for (j = 1; j < 6; j++)
{
- guchar value;
- if (!read_data_ (ioc, &value, 1)) return FALSE;
- mix_word_set_byte (&w[k], j, mix_ascii_to_char (value));
+ if (!eol && !read_data_ (ioc, &value, 1)) return FALSE;
+ eol = eol || (value == '\n');
+ mix_word_set_byte (&w[k], j, eol? spc : mix_ascii_to_char (value));
}
+ for (; k < s; ++k) w[k] = MIX_WORD_ZERO;
+
+ while (!eol && !is_eof_ (ioc) && value != '\n')
+ if (!read_data_ (ioc, &value, 1)) return FALSE;
+
return TRUE;
}