|
@@ -18,132 +18,88 @@
|
|
|
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
|
|
|
02111-1307 USA. */
|
|
|
|
|
|
-#include <stdlib.h>
|
|
|
-#include <stdio.h>
|
|
|
-#include <search.h>
|
|
|
#include <errno.h>
|
|
|
#include <error.h>
|
|
|
#include <string.h>
|
|
|
#include <unistd.h>
|
|
|
|
|
|
-#define TESTFILE_NAME "CRAP.XXXXXX"
|
|
|
-#define STRINGIFY(s) STRINGIFY2 (s)
|
|
|
-#define STRINGIFY2(s) #s
|
|
|
-
|
|
|
-/* These are for the temporary file we generate. */
|
|
|
-char *name;
|
|
|
-int fd;
|
|
|
|
|
|
+/* Allow testing of the 64-bit versions as well. */
|
|
|
+#ifndef PREAD
|
|
|
+# define PREAD pread
|
|
|
+# define PWRITE pwrite
|
|
|
+#endif
|
|
|
|
|
|
-/* Test the 32-bit versions first. */
|
|
|
-#define PREAD pread
|
|
|
-#define PWRITE pwrite
|
|
|
-
|
|
|
-int test(int argc, char *argv[])
|
|
|
-{
|
|
|
- char buf[1000];
|
|
|
- char res[1000];
|
|
|
- int i;
|
|
|
+#define STRINGIFY(s) STRINGIFY2 (s)
|
|
|
+#define STRINGIFY2(s) #s
|
|
|
|
|
|
- memset (buf, '\0', sizeof (buf));
|
|
|
- memset (res, '\xff', sizeof (res));
|
|
|
+/* Prototype for our test function. */
|
|
|
+extern void do_prepare (int argc, char *argv[]);
|
|
|
+extern int do_test (int argc, char *argv[]);
|
|
|
|
|
|
- if (write (fd, buf, sizeof (buf)) != sizeof (buf))
|
|
|
- error (EXIT_FAILURE, errno, "during write");
|
|
|
+/* We have a preparation function. */
|
|
|
+#define PREPARE do_prepare
|
|
|
|
|
|
- for (i = 100; i < 200; ++i)
|
|
|
- buf[i] = i;
|
|
|
- if (PWRITE (fd, buf + 100, 100, 100) != 100)
|
|
|
- error (EXIT_FAILURE, errno, "during %s", STRINGIFY (PWRITE));
|
|
|
+/* We might need a bit longer timeout. */
|
|
|
+#define TIMEOUT 20 /* sec */
|
|
|
|
|
|
- for (i = 450; i < 600; ++i)
|
|
|
- buf[i] = i;
|
|
|
- if (PWRITE (fd, buf + 450, 150, 450) != 150)
|
|
|
- error (EXIT_FAILURE, errno, "during %s", STRINGIFY (PWRITE));
|
|
|
+/* This defines the `main' function and some more. */
|
|
|
+#include <test-skeleton.c>
|
|
|
|
|
|
- if (PREAD (fd, res, sizeof (buf) - 50, 50) != sizeof (buf) - 50)
|
|
|
- error (EXIT_FAILURE, errno, "during %s", STRINGIFY (PREAD));
|
|
|
+/* These are for the temporary file we generate. */
|
|
|
+char *name;
|
|
|
+int fd;
|
|
|
|
|
|
- close (fd);
|
|
|
- unlink (name);
|
|
|
- return memcmp (buf + 50, res, sizeof (buf) - 50);
|
|
|
+void
|
|
|
+do_prepare (int argc, char *argv[])
|
|
|
+{
|
|
|
+ char name_len;
|
|
|
+
|
|
|
+#define FNAME FNAME2(TRUNCATE)
|
|
|
+#define FNAME2(s) "/" STRINGIFY(s) "XXXXXX"
|
|
|
+
|
|
|
+ name_len = strlen (test_dir);
|
|
|
+ name = malloc (name_len + sizeof (FNAME));
|
|
|
+ if (name == NULL)
|
|
|
+ error (EXIT_FAILURE, errno, "cannot allocate file name");
|
|
|
+ mempcpy (mempcpy (name, test_dir, name_len), FNAME, sizeof (FNAME));
|
|
|
+ add_temp_file (name);
|
|
|
+
|
|
|
+ /* Open our test file. */
|
|
|
+ fd = mkstemp (name);
|
|
|
+ if (fd == -1)
|
|
|
+ error (EXIT_FAILURE, errno, "cannot open test file `%s'", name);
|
|
|
}
|
|
|
|
|
|
-/* Test the 64-bit versions as well. */
|
|
|
-#if defined __UCLIBC_HAS_LFS__
|
|
|
|
|
|
-#undef PREAD
|
|
|
-#undef PWRITE
|
|
|
-#define PREAD pread64
|
|
|
-#define PWRITE pwrite64
|
|
|
-
|
|
|
-
|
|
|
-int test64(int argc, char *argv[])
|
|
|
+int
|
|
|
+do_test (int argc, char *argv[])
|
|
|
{
|
|
|
- char buf[1000];
|
|
|
- char res[1000];
|
|
|
- int i;
|
|
|
-
|
|
|
- memset (buf, '\0', sizeof (buf));
|
|
|
- memset (res, '\xff', sizeof (res));
|
|
|
+ char buf[1000];
|
|
|
+ char res[1000];
|
|
|
+ int i;
|
|
|
|
|
|
- if (write (fd, buf, sizeof (buf)) != sizeof (buf))
|
|
|
- error (EXIT_FAILURE, errno, "during write");
|
|
|
+ memset (buf, '\0', sizeof (buf));
|
|
|
+ memset (res, '\xff', sizeof (res));
|
|
|
|
|
|
- for (i = 100; i < 200; ++i)
|
|
|
- buf[i] = i;
|
|
|
- if (PWRITE (fd, buf + 100, 100, 100) != 100)
|
|
|
- error (EXIT_FAILURE, errno, "during %s", STRINGIFY (PWRITE));
|
|
|
+ if (write (fd, buf, sizeof (buf)) != sizeof (buf))
|
|
|
+ error (EXIT_FAILURE, errno, "during write");
|
|
|
|
|
|
- for (i = 450; i < 600; ++i)
|
|
|
- buf[i] = i;
|
|
|
- if (PWRITE (fd, buf + 450, 150, 450) != 150)
|
|
|
- error (EXIT_FAILURE, errno, "during %s", STRINGIFY (PWRITE));
|
|
|
+ for (i = 100; i < 200; ++i)
|
|
|
+ buf[i] = i;
|
|
|
+ if (PWRITE (fd, buf + 100, 100, 100) != 100)
|
|
|
+ error (EXIT_FAILURE, errno, "during %s", STRINGIFY (PWRITE));
|
|
|
|
|
|
- if (PREAD (fd, res, sizeof (buf) - 50, 50) != sizeof (buf) - 50)
|
|
|
- error (EXIT_FAILURE, errno, "during %s", STRINGIFY (PREAD));
|
|
|
+ for (i = 450; i < 600; ++i)
|
|
|
+ buf[i] = i;
|
|
|
+ if (PWRITE (fd, buf + 450, 150, 450) != 150)
|
|
|
+ error (EXIT_FAILURE, errno, "during %s", STRINGIFY (PWRITE));
|
|
|
|
|
|
- close (fd);
|
|
|
- unlink (name);
|
|
|
- return memcmp (buf + 50, res, sizeof (buf) - 50);
|
|
|
-}
|
|
|
-#endif
|
|
|
+ if (PREAD (fd, res, sizeof (buf) - 50, 50) != sizeof (buf) - 50)
|
|
|
+ error (EXIT_FAILURE, errno, "during %s", STRINGIFY (PREAD));
|
|
|
|
|
|
-void prepare(void)
|
|
|
-{
|
|
|
- if (!name) {
|
|
|
- name = malloc (BUFSIZ);
|
|
|
- if (name == NULL)
|
|
|
- error (EXIT_FAILURE, errno, "cannot allocate file name");
|
|
|
- }
|
|
|
- strncpy(name, TESTFILE_NAME, BUFSIZ);
|
|
|
-
|
|
|
- /* Open our test file. */
|
|
|
- fd = mkstemp (name);
|
|
|
- if (fd == -1)
|
|
|
- error (EXIT_FAILURE, errno, "cannot open test file `%s'", name);
|
|
|
-}
|
|
|
+ close (fd);
|
|
|
+ unlink (name);
|
|
|
|
|
|
-int main (int argc, char **argv)
|
|
|
-{
|
|
|
- int result = 0;
|
|
|
-
|
|
|
- prepare();
|
|
|
- result+=test(argc, argv);
|
|
|
- if (result) {
|
|
|
- fprintf(stderr, "pread/pwrite test failed.\n");
|
|
|
- return(EXIT_FAILURE);
|
|
|
- }
|
|
|
- fprintf(stderr, "pread/pwrite test successful.\n");
|
|
|
-
|
|
|
-#if defined __UCLIBC_HAS_LFS__
|
|
|
- prepare();
|
|
|
- result+=test64(argc, argv);
|
|
|
- if (result) {
|
|
|
- fprintf(stderr, "pread64/pwrite64 test failed.\n");
|
|
|
- return(EXIT_FAILURE);
|
|
|
- }
|
|
|
- fprintf(stderr, "pread64/pwrite64 test successful.\n");
|
|
|
-#endif
|
|
|
- return(EXIT_SUCCESS);
|
|
|
+ return memcmp (buf + 50, res, sizeof (buf) - 50);
|
|
|
}
|