From 140bfb4eaeca73e407f6a2c65a7ea2d0cb80fd38 Mon Sep 17 00:00:00 2001
From: Jiri Palecek <jpalecek@web.de>
Date: Tue, 12 May 2009 18:50:10 +0200
Subject: [PATCH] Fix the splice02 test
Cc: "ltp-list@lists.sourceforge.net" <ltp-list@lists.sourceforge.net>

 Particularly:

  - TEST_ERRNO is only set when the syscall is executed using the
    TEST() macro. The tests gave bad error messages because of that.

  - The end of the test was dead code; moved the TPASS code to pass at
    the end of file.

  - The test assumes std. input is a pipe; reflect this in the runtest
    file

Signed-off-by: Jiri Palecek <jpalecek@web.de>
---
 runtest/syscalls                            |    2 +-
 testcases/kernel/syscalls/splice/splice02.c |   16 ++++++----------
 2 files changed, 7 insertions(+), 11 deletions(-)

diff --git a/runtest/syscalls b/runtest/syscalls
index 9b7b2ca..33beff0 100644
--- a/runtest/syscalls
+++ b/runtest/syscalls
@@ -1033,7 +1033,7 @@ sockioctl01 sockioctl01
 
 #splice test
 splice01 splice01
-splice02 echo "Test splice02()" > splice02-temp; splice02 splice02-temp
+splice02 seq 1 10000000 | splice02 splice02-temp
 
 tee01 tee01
 
diff --git a/testcases/kernel/syscalls/splice/splice02.c b/testcases/kernel/syscalls/splice/splice02.c
index 321d002..16bff86 100644
--- a/testcases/kernel/syscalls/splice/splice02.c
+++ b/testcases/kernel/syscalls/splice/splice02.c
@@ -108,7 +108,6 @@ void setup() {
 
 int main(int ac, char **av) {
 	int fd = 0;
-	int ret = 0;
 	
         setup();
 
@@ -118,26 +117,23 @@ int main(int ac, char **av) {
 	}
 	fd=open(av[1], O_WRONLY | O_CREAT | O_TRUNC, 0644);
 	if(fd < 0 ) {
-           tst_resm(TFAIL, "%s failed - errno = %d : %s", TCID, TEST_ERRNO, strerror(TEST_ERRNO));
+		tst_resm(TFAIL, "open(%s) failed - errno = %d : %s", av[1], errno, strerror(errno));
 	   cleanup();
 	   tst_exit();
 	}
 			
         do {
-	    ret = splice(STDIN_FILENO, NULL, fd, NULL, SPLICE_SIZE, 0);
-	    if (ret < 0) {
-            	tst_resm(TFAIL, "%s failed - errno = %d : %s",TCID, TEST_ERRNO, strerror(TEST_ERRNO));
+					TEST(splice(STDIN_FILENO, NULL, fd, NULL, SPLICE_SIZE, 0));
+	    if (TEST_RETURN < 0) {
+            	tst_resm(TFAIL, "splice failed - errno = %d : %s", TEST_ERRNO, strerror(TEST_ERRNO));
 	        cleanup();
 		tst_exit();
 	    } else
-            if (ret < SPLICE_SIZE){
+            if (TEST_RETURN == 0){
+							tst_resm(TPASS, "splice() system call Passed");
 	        cleanup();
 	        tst_exit();
 	    }
 	} while(1);
-
-	close(fd);
-        tst_resm(TPASS, "splice() system call Passed");
-        tst_exit();
 }
 
-- 
1.6.2

