diff options
author | Ulrich Drepper <drepper@redhat.com> | 2006-01-12 02:03:42 +0000 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 2006-01-12 02:03:42 +0000 |
commit | bb10459f2d534f67ebe771bed85e4ebfcd9eacd1 (patch) | |
tree | d8f06d6ce03d5289e07b68f0d1726b31a6d9339d /libio/tst-memstream1.c | |
parent | 37169cccddb401c9efeac446703dff7f815b5d1d (diff) | |
download | glibc-bb10459f2d534f67ebe771bed85e4ebfcd9eacd1.tar glibc-bb10459f2d534f67ebe771bed85e4ebfcd9eacd1.tar.gz glibc-bb10459f2d534f67ebe771bed85e4ebfcd9eacd1.tar.bz2 glibc-bb10459f2d534f67ebe771bed85e4ebfcd9eacd1.zip |
* libio/wmemstream.c: New file.
* libio/Makefile (routines): Add wmemstream.
(tests): Add tst-memstream1, tst-memstream2, tst-wmemstream2, and
tst-wmemstream2.
* libio/tst-memstream1.c: New file.
* libio/tst-memstream2.c: New file.
* libio/tst-wmemstream1.c: New file.
* libio/tst-wmemstream2.c: New file.
* libio/memstream.c (_IO_mem_sync): Remove useless call to
_IO_default_sync.
Diffstat (limited to 'libio/tst-memstream1.c')
-rw-r--r-- | libio/tst-memstream1.c | 89 |
1 files changed, 89 insertions, 0 deletions
diff --git a/libio/tst-memstream1.c b/libio/tst-memstream1.c new file mode 100644 index 0000000000..d18f5cc22a --- /dev/null +++ b/libio/tst-memstream1.c @@ -0,0 +1,89 @@ +#include <mcheck.h> +#include <stdio.h> + + +#ifndef CHAR_T +# define CHAR_T char +# define W(o) o +# define OPEN_MEMSTREAM open_memstream +#endif + +#define S(s) S1 (s) +#define S1(s) #s + + +static void +mcheck_abort (enum mcheck_status ev) +{ + printf ("mecheck failed with status %d\n", (int) ev); + exit (1); +} + + +static int +do_test (void) +{ + mcheck_pedantic (mcheck_abort); + + CHAR_T *buf = (CHAR_T *) 1l; + size_t len = 12345; + FILE *fp = OPEN_MEMSTREAM (&buf, &len); + if (fp == NULL) + { + printf ("%s failed\n", S(OPEN_MEMSTREAM)); + return 1; + } + + if (fflush (fp) != 0) + { + puts ("fflush failed"); + return 1; + } + + if (len != 0) + { + puts ("string after no write not empty"); + return 1; + } + if (buf == (CHAR_T *) 1l) + { + puts ("buf not updated"); + return 1; + } + if (buf[0] != W('\0')) + { + puts ("buf[0] != 0"); + return 1; + } + + buf = (CHAR_T *) 1l; + len = 12345; + if (fclose (fp) != 0) + { + puts ("fclose failed"); + return 1; + } + + if (len != 0) + { + puts ("string after close with no write not empty"); + return 1; + } + if (buf == (CHAR_T *) 1l) + { + puts ("buf not updated"); + return 1; + } + if (buf[0] != W('\0')) + { + puts ("buf[0] != 0"); + return 1; + } + + free (buf); + + return 0; +} + +#define TEST_FUNCTION do_test () +#include "../test-skeleton.c" |