bug-hurd
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[PATCH 3/3] Use the new _hurd_exec_file_name function


From: Justus Winter
Subject: [PATCH 3/3] Use the new _hurd_exec_file_name function
Date: Mon, 7 Apr 2014 14:38:25 +0200

From: Emilio Pozuelo Monfort <pochu27@gmail.com>

* configure.in: Check for _hurd_exec_file_name.
* utils/fakeauth.c: Call _hurd_exec_file_name instead of
_hurd_exec if it's available.
* utils/rpctrace.c: Likewise.
* utils/shd.c: Likewise.

Signed-off-by: Jeremie Koenig <jk@jk.fr.eu.org>
Signed-off-by: Justus Winter <4winter@informatik.uni-hamburg.de>
---
 configure.ac     | 4 ++--
 utils/fakeauth.c | 9 +++++++--
 utils/rpctrace.c | 8 ++++++--
 utils/shd.c      | 9 ++++++---
 4 files changed, 21 insertions(+), 9 deletions(-)

diff --git a/configure.ac b/configure.ac
index ecabfdf..6226e1a 100644
--- a/configure.ac
+++ b/configure.ac
@@ -160,8 +160,8 @@ else
 fi
 AC_SUBST(VERSIONING)
 
-# Check if libc contains getgrouplist and/or uselocale.
-AC_CHECK_FUNCS(getgrouplist uselocale)
+# Check if libc contains these functions.
+AC_CHECK_FUNCS(getgrouplist uselocale _hurd_exec_file_name)
 
 
 # From glibc HEAD, 2007-11-07.
diff --git a/utils/fakeauth.c b/utils/fakeauth.c
index 590a421..851772c 100644
--- a/utils/fakeauth.c
+++ b/utils/fakeauth.c
@@ -1,5 +1,5 @@
 /* fakeauth -- proxy auth server to lie to users about what their IDs are
-   Copyright (C) 2002 Free Software Foundation, Inc.
+   Copyright (C) 2002, 2010 Free Software Foundation, Inc.
 
    This program is free software; you can redistribute it and/or
    modify it under the terms of the GNU General Public License as
@@ -397,7 +397,7 @@ believe it has restricted them to different identities or 
no identity at all.\
   /* We cannot use fork because it doesn't do the right thing with our send
      rights that point to our own receive rights, i.e. the new auth port.
      Since posix_spawn might be implemented with fork (prior to glibc 2.3),
-     we cannot use that simple interface either.  We use _hurd_exec
+     we cannot use that simple interface either.  We use _hurd_exec_file_name
      directly to effect what posix_spawn does in the simple case.  */
   {
     task_t newtask;
@@ -422,7 +422,12 @@ believe it has restricted them to different identities or 
no identity at all.\
     if (err)
       error (3, err, "proc_child");
 
+#ifdef HAVE__HURD_EXEC_FILE_NAME
+    err = _hurd_exec_file_name (newtask, execfile, argv[argi],
+                               &argv[argi], environ);
+#else
     err = _hurd_exec (newtask, execfile, &argv[argi], environ);
+#endif
     mach_port_deallocate (mach_task_self (), newtask);
     mach_port_deallocate (mach_task_self (), execfile);
     if (err)
diff --git a/utils/rpctrace.c b/utils/rpctrace.c
index d7ee203..17acb8d 100644
--- a/utils/rpctrace.c
+++ b/utils/rpctrace.c
@@ -1,7 +1,7 @@
 /* Trace RPCs sent to selected ports
 
-   Copyright (C) 1998, 1999, 2001, 2002, 2003, 2005, 2006, 2009, 2011,
-   2013 Free Software Foundation, Inc.
+   Copyright (C) 1998, 1999, 2001, 2002, 2003, 2005, 2006, 2009, 2010,
+   2011, 2013 Free Software Foundation, Inc.
 
    This file is part of the GNU Hurd.
 
@@ -1734,7 +1734,11 @@ traced_spawn (char **argv, char **envp)
   /* Now actually run the command they told us to trace.  We do the exec on
      the actual task, so the RPCs to map in the program itself do not get
      traced.  Could have an option to use TASK_WRAPPER here instead.  */
+#ifdef HAVE__HURD_EXEC_FILE_NAME
+  err = _hurd_exec_file_name (traced_task, file, *argv, argv, envp);
+#else
   err = _hurd_exec (traced_task, file, argv, envp);
+#endif
   if (err)
     error (2, err, "cannot exec `%s'", argv[0]);
 
diff --git a/utils/shd.c b/utils/shd.c
index a1a4b26..855284f 100644
--- a/utils/shd.c
+++ b/utils/shd.c
@@ -1,5 +1,5 @@
 /*
-   Copyright (C) 1994,95,99,2002 Free Software Foundation
+   Copyright (C) 1994, 1995, 1999, 2002, 2010 Free Software Foundation
 
    This program is free software; you can redistribute it and/or
    modify it under the terms of the GNU General Public License as
@@ -159,15 +159,18 @@ run (char **argv, int fd0, int fd1)
              movefd (fd1, 1, &save1))
            return -1;
 
+#ifdef HAVE__HURD_EXEC_FILE_NAME
+         err = _hurd_exec_file_name (task, file, program, argv, environ);
+#else
          err = _hurd_exec (task, file, argv, environ);
-
+#endif
          if (restorefd (fd0, 0, &save0) ||
              restorefd (fd1, 1, &save1))
            return -1;
 
          if (err)
            {
-             error (0, err, "_hurd_exec");
+             error (0, err, "_hurd_exec_file_name");
              err = task_terminate (task);
              if (err)
                error (0, err, "task_terminate");
-- 
1.9.1




reply via email to

[Prev in Thread] Current Thread [Next in Thread]