From 4ac463dc130bdb00f62e4ece898870cfe8b51ec2 Mon Sep 17 00:00:00 2001
From: mpi <>
Date: Thu, 28 Mar 2013 09:35:58 +0000
Subject: More tests for negative seeks, prodded by matthew@

---
 src/regress/lib/libc/fmemopen/fmemopentest.c       | 41 +++++++++++++++++++++-
 .../lib/libc/open_memstream/open_memstreamtest.c   | 24 ++++++++++++-
 2 files changed, 63 insertions(+), 2 deletions(-)

(limited to 'src')

diff --git a/src/regress/lib/libc/fmemopen/fmemopentest.c b/src/regress/lib/libc/fmemopen/fmemopentest.c
index 57063aeb0a..203c93be65 100644
--- a/src/regress/lib/libc/fmemopen/fmemopentest.c
+++ b/src/regress/lib/libc/fmemopen/fmemopentest.c
@@ -1,4 +1,4 @@
-/*	$OpenBSD: fmemopentest.c,v 1.2 2013/03/27 15:08:13 mpi Exp $ */
+/*	$OpenBSD: fmemopentest.c,v 1.3 2013/03/28 09:35:58 mpi Exp $ */
 
 /*
  * Copyright (c) 2011 Martin Pieuchot <mpi@openbsd.org>
@@ -160,6 +160,44 @@ writetest(void)
 	return (failures);
 }
 
+int
+seektest(void)
+{
+	FILE	*s1;
+	char	 string[] = "long string for testing seek";
+	size_t	 len, slen;
+	int	 failures = 0;
+
+	slen = strlen(string) + 1;
+
+	s1 = fmemopen(string, slen, "r");
+	if (s1 == NULL)
+		return (1);
+
+	if (fseek(s1, 8, SEEK_SET) != 0) {
+		warnx("failed to fseek. (14)");
+		failures++;
+	}
+
+	if (ftell(s1) != 8) {
+		warnx("failed seek test. (15)");
+		failures++;
+	}
+
+	/* Try to seek backward */
+	if (fseek(s1, -1, SEEK_CUR) != 0) {
+		warnx("failed to fseek. (16)");
+		failures++;
+	}
+
+	if (ftell(s1) != 7) {
+		warnx("failed seeking backward. (17)");
+		failures++;
+	}
+
+	return (failures);
+}
+
 int
 main(void)
 {
@@ -168,6 +206,7 @@ main(void)
 	failures += simpletest();
 	failures += updatetest();
 	failures += writetest();
+	failures += seektest();
 
  	return (failures);
 }
diff --git a/src/regress/lib/libc/open_memstream/open_memstreamtest.c b/src/regress/lib/libc/open_memstream/open_memstreamtest.c
index b9c0221b1a..a2327f21c5 100644
--- a/src/regress/lib/libc/open_memstream/open_memstreamtest.c
+++ b/src/regress/lib/libc/open_memstream/open_memstreamtest.c
@@ -1,4 +1,5 @@
-/*	$OpenBSD: open_memstreamtest.c,v 1.2 2013/03/25 03:33:28 guenther Exp $ */
+/*	$OpenBSD: open_memstreamtest.c,v 1.3 2013/03/28 09:35:58 mpi Exp $ */
+
 /*
  * Copyright (c) 2011 Martin Pieuchot <mpi@openbsd.org>
  *
@@ -137,6 +138,27 @@ main(void)
 		failures++;
 	}
 
+	if (fseek(fp, 8, SEEK_SET) != 0) {
+		warnx("failed to fseek. (19)");
+		failures++;
+	}
+
+	if (ftell(fp) != 8) {
+		warnx("failed seek test. (20)");
+		failures++;
+	}
+
+	/* Try to seek backward */
+	if (fseek(fp, -1, SEEK_CUR) != 0) {
+		warnx("failed to fseek. (21)");
+		failures++;
+	}
+
+	if (ftell(fp) != 7) {
+		warnx("failed seeking backward. (22)");
+		failures++;
+	}
+
 	free(buf);
 
 	return (failures);
-- 
cgit v1.2.3-55-g6feb