diff options
author | Jose Antonio Ortega Ruiz <jao@gnu.org> | 2004-06-08 22:33:40 +0000 |
---|---|---|
committer | Jose Antonio Ortega Ruiz <jao@gnu.org> | 2004-06-08 22:33:40 +0000 |
commit | c9ec7506c10d4e12778d165e93545342a5faabeb (patch) | |
tree | 4055005ecbc113cc63b72a76d7b452e96dfc9a14 /mixlib/mix_io.c | |
parent | 44c49815bb6d5eb765462fbb9a98d3d1ac5b3ab1 (diff) | |
download | mdk-c9ec7506c10d4e12778d165e93545342a5faabeb.tar.gz mdk-c9ec7506c10d4e12778d165e93545342a5faabeb.tar.bz2 |
the console is now in/out.
Diffstat (limited to 'mixlib/mix_io.c')
-rw-r--r-- | mixlib/mix_io.c | 16 |
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; } |