summaryrefslogtreecommitdiff
path: root/libmailutils/tests/strin.c
diff options
context:
space:
mode:
Diffstat (limited to 'libmailutils/tests/strin.c')
-rw-r--r--libmailutils/tests/strin.c74
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;
}

Return to:

Send suggestions and report system problems to the System administrator.