diff options
Diffstat (limited to 'libmailutils/tests/strin.c')
-rw-r--r-- | libmailutils/tests/strin.c | 74 |
1 files changed, 55 insertions, 19 deletions
diff --git a/libmailutils/tests/strin.c b/libmailutils/tests/strin.c index 7a2181f01..c30c0b8ec 100644 --- a/libmailutils/tests/strin.c +++ b/libmailutils/tests/strin.c @@ -1,18 +1,38 @@ -/* GNU Mailutils -- a suite of utilities for electronic mail - Copyright (C) 2011-2019 Free Software Foundation, Inc. +/* +NAME + strin - test whether mu_strin is functioning. - GNU Mailutils is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3, or (at your option) - any later version. +DESCRIPTION + This test program reads data from mu_strin and prints it on stdout + using stdio function call. - GNU Mailutils is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + The mu_strin object, as well as the other two standard streams, springs + into existence the first time it is used by any function of the stream + family. Therefore, care is taken not to call any mailutils I/O function + either directly or indirectly prior to the first read from mu_strin. + +OPTIONS + -noecho + If mu_strin is attached to a tty, this option disables echoing of + the data read. + +LICENSE + GNU Mailutils -- a suite of utilities for electronic mail + Copyright (C) 2011-2024 Free Software Foundation, Inc. - You should have received a copy of the GNU General Public License - along with GNU Mailutils. If not, see <http://www.gnu.org/licenses/>. */ + GNU Mailutils is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3, or (at your option) + any later version. + + GNU Mailutils is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with GNU Mailutils. If not, see <http://www.gnu.org/licenses/>. +*/ #ifdef HAVE_CONFIG_H # include <config.h> @@ -31,8 +51,8 @@ main (int argc, char **argv) int i, rc; int echo_state = 0; size_t n; - char buf[80]; - + int ex = 0; + for (i = 1; i < argc; i++) { char *arg = argv[i]; @@ -53,12 +73,28 @@ main (int argc, char **argv) } } - while ((rc = mu_stream_read (mu_strin, buf, sizeof (buf), &n) == 0) && - n > 0) - fwrite (buf, 1, n, stdout); - + while (1) + { + char c; + if ((rc = mu_stream_read (mu_strin, &c, 1, &n)) != 0) + { + fprintf (stderr, "mu_stream_read: %s\n", mu_strerror (rc)); + ex = 1; + break; + } + if (n == 0) + break; + if (n != 1) + { + fprintf (stderr, "read %zu bytes?\n", n); + ex = 1; + break; + } + fputc (c, stdout); + } + if (echo_state) MU_ASSERT (mu_stream_ioctl (mu_strin, MU_IOCTL_ECHO, MU_IOCTL_OP_SET, &echo_state)); - return 0; + return ex; } |