X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;f=tests%2Ftest-pread.c;h=4416bd162109f7069b96455085f5b5d517799fed;hb=fa1db0dd22768f09a507674a30beb5b8a87bb35f;hp=d5a86ad2a70f023b14eafb080678d632f6d0835c;hpb=89ae4589dd58d12e7cbcf0e92c1d828c1e430f97;p=gnulib.git diff --git a/tests/test-pread.c b/tests/test-pread.c index d5a86ad2a..4416bd162 100644 --- a/tests/test-pread.c +++ b/tests/test-pread.c @@ -1,5 +1,5 @@ /* Test the pread function. - Copyright (C) 2009 Free Software Foundation, Inc. + Copyright (C) 2009-2013 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -23,23 +23,11 @@ #include "signature.h" SIGNATURE_CHECK (pread, ssize_t, (int, void *, size_t, off_t)); -#include -#include #include #include #include -#define ASSERT(expr) \ - do \ - { \ - if (!(expr)) \ - { \ - fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \ - fflush (stderr); \ - abort (); \ - } \ - } \ - while (0) +#include "macros.h" #define N (sizeof buf - 1) @@ -80,7 +68,9 @@ main (void) /* Invalid offset must evoke failure with EINVAL. */ char byte; ASSERT (pread (fd, &byte, 1, (off_t) -1) == -1); - ASSERT (errno == EINVAL); + ASSERT (errno == EINVAL + || errno == EFBIG /* seen on OpenBSD 4.9 */ + ); } ASSERT (close (fd) == 0); @@ -93,5 +83,20 @@ main (void) ASSERT (errno == ESPIPE); } + /* Test behaviour for invalid file descriptors. */ + { + char byte; + errno = 0; + ASSERT (pread (-1, &byte, 1, 0) == -1); + ASSERT (errno == EBADF); + } + { + char byte; + close (99); + errno = 0; + ASSERT (pread (99, &byte, 1, 0) == -1); + ASSERT (errno == EBADF); + } + return 0; }