Hi,

I have noticed some forks during valgrind check, I think it will be better
to use functions instead of the unix command. This patch replace the fork
and exec  domainnanme by a simple call to getdomainname(). It is faster and
we sould have less message during valgrind and strace investigation's.

Best regards

-- 
Arnaud Versini
From 1f15cd04c17af93c7603e8d90137df9a91e86493 Mon Sep 17 00:00:00 2001
From: Arnaud Versini <arnaud.vers...@gmail.com>
Date: Sat, 12 Nov 2011 19:17:03 +0100
Subject: [PATCH] Replace domainname command by getdomainname syscall or
 function

---
 sal/osl/unx/socket.c |   51 ++++---------------------------------------------
 1 files changed, 5 insertions(+), 46 deletions(-)

diff --git a/sal/osl/unx/socket.c b/sal/osl/unx/socket.c
index b60fb2d..9c33eaf 100644
--- a/sal/osl/unx/socket.c
+++ b/sal/osl/unx/socket.c
@@ -811,52 +811,11 @@ static struct hostent* _osl_gethostbyname_r (
 
 static sal_Bool  _osl_getDomainName (sal_Char *buffer, sal_Int32 bufsiz)
 {
-    sal_Bool result;
-    int      p[2];
-
-    result = sal_False;
-    if (pipe (p) == 0)
-    {
-        pid_t pid;
-        int nStatus;
-
-        pid = fork();
-        if (pid == 0)
-        {
-            char *argv[] =
-            {
-                "/bin/domainname",
-                NULL
-            };
-
-            close (p[0]);
-            dup2  (p[1], 1);
-            close (p[1]);
-
-            execv ("/bin/domainname", argv);
-            // arriving here means exec failed
-            _exit(-1);
-        }
-        else if (pid > 0)
-        {
-            sal_Int32 k = 0, n = bufsiz;
-
-            close (p[1]);
-            if ((k = read (p[0], buffer, n - 1)) > 0)
-            {
-                buffer[k] = 0;
-                if (buffer[k - 1] == '\n')
-                    buffer[k - 1] = 0;
-                result = sal_True;
-            }
-            close (p[0]);
-            waitpid (pid, &nStatus, 0);
-        }
-        else
-        {
-            close (p[0]);
-            close (p[1]);
-        }
+    sal_Bool result = (getdomainname(buffer, bufsiz) == 0);
+    if  (!result) {
+        OSL_TRACE("osl_getDomainName failed. Errno: %d; %s\n",
+                      errno,
+                      strerror(errno));
     }
     return (result);
 }
-- 
1.7.5.4

_______________________________________________
LibreOffice mailing list
LibreOffice@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/libreoffice

Reply via email to