diff options
author | Ulrich Drepper <drepper@redhat.com> | 2002-02-26 05:23:31 +0000 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 2002-02-26 05:23:31 +0000 |
commit | b39d571990557cc5ab855794ff0d4d7876f4596b (patch) | |
tree | f5f6918e0520a86a5576cc393c39fabb1cb4e0eb /stdio-common/tst-fdopen.c | |
parent | 77fe0b9cd86ccba7349921082d886cbca613404c (diff) | |
download | glibc-b39d571990557cc5ab855794ff0d4d7876f4596b.zip glibc-b39d571990557cc5ab855794ff0d4d7876f4596b.tar.gz glibc-b39d571990557cc5ab855794ff0d4d7876f4596b.tar.bz2 |
Update.
2002-02-25 Jakub Jelinek <jakub@redhat.com>
* libio/iofopen.c (__fopen_maybe_mmap): Set the initial
position to fp->_offset if it is set.
* stdio-common/Makefile (tests): Add tst-fdopen.
* stdio-common/tst-fdopen.c: New test.
2002-02-25 Jakub Jelinek <jakub@redhat.com>
* libio/fileops.c (_IO_file_xsgetn_mmap): Handle reading from backup.
* stdio-common/tst-ungetc.c (main): Add another test.
Diffstat (limited to 'stdio-common/tst-fdopen.c')
-rw-r--r-- | stdio-common/tst-fdopen.c | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/stdio-common/tst-fdopen.c b/stdio-common/tst-fdopen.c new file mode 100644 index 0000000..bbdc4c8 --- /dev/null +++ b/stdio-common/tst-fdopen.c @@ -0,0 +1,49 @@ +/* Test for fdopen bugs. */ + +#include <stdio.h> +#include <unistd.h> +#include <fcntl.h> + +#define assert(x) \ + if (!(x)) \ + { \ + fputs ("test failed: " #x "\n", stderr); \ + retval = 1; \ + goto the_end; \ + } + +char buffer[256]; + +int +main (int argc, char *argv[]) +{ + char *name; + FILE *fp = NULL; + int retval = 0; + int c, fd; + + name = tmpnam (NULL); + fp = fopen (name, "w"); + assert (fp != NULL) + fputs ("foobar and baz", fp); + fclose (fp); + fp = NULL; + + fd = open (name, O_RDONLY); + assert (fd != -1); + assert (lseek (fd, 5, SEEK_SET) == 5); + /* The file position indicator associated with the new stream is set to + the position indicated by the file offset associated with the file + descriptor. */ + fp = fdopen (fd, "r"); + assert (fp != NULL); + assert (getc (fp) == 'r'); + assert (getc (fp) == ' '); + +the_end: + if (fp != NULL) + fclose (fp); + unlink (name); + + return retval; +} |