From a56ab623ba1004ba073b9a494236ed12b018fe78 Mon Sep 17 00:00:00 2001
From: Davi Arnaut <Davi.Arnaut@Sun.COM>
Date: Wed, 8 Jul 2009 09:31:22 -0300
Subject: [PATCH] Fix warnings generated by SunStudio and GCC.

Based upon patch contributed by Stewart Smith

mysql-test/lib/My/SafeProcess/safe_process.cc:
  Fix style -- remove unneeded spaces.
  Specify C linkage for the signal handling functions.
  Check return value from read()/write().
---
 mysql-test/lib/My/SafeProcess/safe_process.cc | 25 +++++++++++--------
 1 file changed, 14 insertions(+), 11 deletions(-)

diff --git a/mysql-test/lib/My/SafeProcess/safe_process.cc b/mysql-test/lib/My/SafeProcess/safe_process.cc
index dc7b7da28c..50c433b9b3 100644
--- a/mysql-test/lib/My/SafeProcess/safe_process.cc
+++ b/mysql-test/lib/My/SafeProcess/safe_process.cc
@@ -89,7 +89,7 @@ static void die(const char* fmt, ...)
 }
 
 
-static void kill_child (void)
+static void kill_child(void)
 {
   int status= 0;
 
@@ -119,7 +119,7 @@ static void kill_child (void)
 }
 
 
-static void handle_abort (int sig)
+extern "C" void handle_abort(int sig)
 {
     message("Got signal %d, child_pid: %d, sending ABRT", sig, child_pid);
 
@@ -128,8 +128,8 @@ static void handle_abort (int sig)
     }
 }
 
-    
-static void handle_signal (int sig)
+
+extern "C" void handle_signal(int sig)
 {
   message("Got signal %d, child_pid: %d", sig, child_pid);
   terminated= 1;
@@ -152,7 +152,7 @@ int main(int argc, char* const argv[] )
   pid_t own_pid= getpid();
   pid_t parent_pid= getppid();
   bool nocore = false;
-  
+
   /* Install signal handlers */
   signal(SIGTERM, handle_signal);
   signal(SIGINT,  handle_signal);
@@ -232,10 +232,11 @@ int main(int argc, char* const argv[] )
         message("setrlimit failed, errno=%d", errno);
       }
     }
-    
+
     // Signal that child is ready
     buf= 37;
-    write(pfd[1], &buf, 1);
+    if ((write(pfd[1], &buf, 1)) < 1)
+      die("Failed to signal that child is ready");
     // Close write end
     close(pfd[1]);
 
@@ -246,8 +247,10 @@ int main(int argc, char* const argv[] )
   close(pfd[1]); // Close unused write end
 
   // Wait for child to signal it's ready
-  read(pfd[0], &buf, 1);
-  if(buf != 37)
+  if ((read(pfd[0], &buf, 1)) < 1)
+    die("Failed to read signal from child");
+
+  if (buf != 37)
     die("Didn't get 37 from pipe");
   close(pfd[0]); // Close read end
 
@@ -272,7 +275,7 @@ int main(int argc, char* const argv[] )
       if (WIFEXITED(status))
       {
         // Process has exited, collect return status
-        int ret_code= WEXITSTATUS(status);
+        ret_code= WEXITSTATUS(status);
         message("Child exit: %d", ret_code);
         // Exit with exit status of the child
         exit(ret_code);
@@ -287,6 +290,6 @@ int main(int argc, char* const argv[] )
   }
   kill_child();
 
-  exit(1);
+  return 1;
 }
 
-- 
2.30.9