diff options
Diffstat (limited to 'libio/bug-fseek.c')
-rw-r--r-- | libio/bug-fseek.c | 123 |
1 files changed, 0 insertions, 123 deletions
diff --git a/libio/bug-fseek.c b/libio/bug-fseek.c deleted file mode 100644 index 1b60580b53..0000000000 --- a/libio/bug-fseek.c +++ /dev/null @@ -1,123 +0,0 @@ -#include <errno.h> -#include <stdio.h> -#include <stdlib.h> -#include <unistd.h> - - -static char *fname; - - -static void do_prepare (void); -#define PREPARE(argc, argv) do_prepare () -static int do_test (void); -#define TEST_FUNCTION do_test () -#include <test-skeleton.c> - - -static void -do_prepare (void) -{ - static const char pattern[] = "12345678901234567890"; - int fd = create_temp_file ("bug-fseek.", &fname); - if (fd == -1) - { - printf ("cannot create temporary file: %m\n"); - exit (1); - } - - if (write (fd, pattern, sizeof (pattern)) != sizeof (pattern)) - { - perror ("short write"); - abort (); - } - close (fd); -} - - - -static int -do_test (void) -{ - FILE *f; - int result = 0; - char buf[10]; - - - if ((f = fopen (fname, "r")) == (FILE *) NULL) - { - perror ("fopen(\"r\")"); - } - - fread (buf, 3, 1, f); - errno = 0; - if (fseek (f, -10, SEEK_CUR) == 0) - { - printf ("fseek() for r to before start of file worked!\n"); - result = 1; - } - else if (errno != EINVAL) - { - printf ("\ -fseek() for r to before start of file did not set errno to EINVAL. \ -Got %d instead\n", - errno); - result = 1; - } - - fclose (f); - - - if ((f = fopen (fname, "r+")) == (FILE *) NULL) - { - perror ("fopen(\"r+\")"); - } - - fread (buf, 3, 1, f); - errno = 0; - if (fseek (f, -10, SEEK_CUR) == 0) - { - printf ("fseek() for r+ to before start of file worked!\n"); - result = 1; - } - else if (errno != EINVAL) - { - printf ("\ -fseek() for r+ to before start of file did not set errno to EINVAL. \ -Got %d instead\n", - errno); - result = 1; - } - - fclose (f); - - - if ((f = fopen (fname, "r+")) == (FILE *) NULL) - { - perror ("fopen(\"r+\")"); - } - - fread (buf, 3, 1, f); - if (ftell (f) != 3) - { - puts ("ftell failed"); - return 1; - } - errno = 0; - if (fseek (f, -10, SEEK_CUR) == 0) - { - printf ("fseek() for r+ to before start of file worked!\n"); - result = 1; - } - else if (errno != EINVAL) - { - printf ("\ -fseek() for r+ to before start of file did not set errno to EINVAL. \ -Got %d instead\n", - errno); - result = 1; - } - - fclose (f); - - return result; -} |