Use dup2() replacement from libreplace.
authorJelmer Vernooij <jelmer@samba.org>
Sat, 1 Nov 2008 02:58:14 +0000 (03:58 +0100)
committerJelmer Vernooij <jelmer@samba.org>
Sat, 1 Nov 2008 02:58:14 +0000 (03:58 +0100)
lib/replace/README
lib/replace/libreplace.m4
lib/replace/replace.c
lib/replace/replace.h
source3/include/proto.h
source3/lib/debug.c
source3/lib/smbrun.c
source3/lib/system.c
source3/smbd/chgpasswd.c

index 2f3b37340fc7451688ac391b945fe58856d3b541..108534d29b7b3daa7bdcfb68827957cd4566b227 100644 (file)
@@ -64,6 +64,7 @@ getifaddrs
 freeifaddrs
 utime
 utimes
+dup2
 
 Types:
 bool
index 6f1543863a673100ef90b1b1e3d85e515ff2f4ab..6c72cf8a2c68f71c64e6ad5beca36ee163c511fe 100644 (file)
@@ -107,7 +107,7 @@ AC_CHECK_HEADERS(stropts.h)
 AC_CHECK_FUNCS(seteuid setresuid setegid setresgid chroot bzero strerror)
 AC_CHECK_FUNCS(vsyslog setlinebuf mktime ftruncate chsize rename)
 AC_CHECK_FUNCS(waitpid strlcpy strlcat initgroups memmove strdup)
-AC_CHECK_FUNCS(pread pwrite strndup strcasestr strtok_r mkdtemp)
+AC_CHECK_FUNCS(pread pwrite strndup strcasestr strtok_r mkdtemp dup2)
 AC_CHECK_FUNCS(isatty)
 AC_HAVE_DECL(setresuid, [#include <unistd.h>])
 AC_HAVE_DECL(setresgid, [#include <unistd.h>])
index 98d799b07e8f3950fe30039da961c6944964c34f..4aa84b886d1ccd0c335b3b3666ff8e006543c00a 100644 (file)
@@ -614,3 +614,12 @@ int rep_utimes(const char *filename, const struct timeval tv[2])
        return utime(filename, &u);
 }
 #endif
+
+#ifndef HAVE_DUP2
+int rep_dup2(int oldfd, int newfd) 
+{
+       errno = ENOSYS;
+       return -1;
+}
+#endif
+
index a8164b642b16d5e101c4c6f09285e130ab5b0424..70b29722bf4d51405093cddc5465a249a33ca2ce 100644 (file)
@@ -358,6 +358,11 @@ struct tm;
 char *rep_strptime(const char *buf, const char *format, struct tm *tm);
 #endif
 
+#ifndef HAVE_DUP2
+#define dup2 rep_dup2
+int rep_dup2(int oldfd, int newfd);
+#endif
+
 /* Load header file for dynamic linking stuff */
 #ifdef HAVE_DLFCN_H
 #include <dlfcn.h>
index c6609be5d629733a1ff2f0281e9898ec12d4c483..6e0bde3a14856f69c34db9a87ac67dc44366735e 100644 (file)
@@ -1054,7 +1054,6 @@ void *sys_dlopen(const char *name, int flags);
 void *sys_dlsym(void *handle, const char *symbol);
 int sys_dlclose (void *handle);
 const char *sys_dlerror(void);
-int sys_dup2(int oldfd, int newfd) ;
 ssize_t sys_getxattr (const char *path, const char *name, void *value, size_t size);
 ssize_t sys_lgetxattr (const char *path, const char *name, void *value, size_t size);
 ssize_t sys_fgetxattr (int filedes, const char *name, void *value, size_t size);
index be2707b59505a927c34dbf771b9fa255959dff43..986dff48d7d2ca31b004fcce8caa125a23cd6be5 100644 (file)
@@ -680,8 +680,8 @@ bool reopen_logs( void )
        force_check_log_size();
        (void)umask(oldumask);
 
-       /* Take over stderr to catch ouput into logs */
-       if (dbf && sys_dup2(x_fileno(dbf), 2) == -1) {
+       /* Take over stderr to catch output into logs */
+       if (dbf && dup2(x_fileno(dbf), 2) == -1) {
                close_low_fds(True); /* Close stderr too, if dup2 can't point it
                                        at the logfile */
        }
index 515fcd75c29ac78712bf575e0ec32a370adad6f7..31990713b88ac1f531d71ae7e2f456a389f35b09 100644 (file)
@@ -153,7 +153,7 @@ static int smbrun_internal(const char *cmd, int *outfd, bool sanitize)
        /* point our stdout at the file we want output to go into */
        if (outfd) {
                close(1);
-               if (sys_dup2(*outfd,1) != 1) {
+               if (dup2(*outfd,1) != 1) {
                        DEBUG(2,("Failed to create stdout file descriptor\n"));
                        close(*outfd);
                        exit(80);
@@ -305,7 +305,7 @@ int smbrunsecret(const char *cmd, const char *secret)
        
        close(ifd[1]);
        close(0);
-       if (sys_dup2(ifd[0], 0) != 0) {
+       if (dup2(ifd[0], 0) != 0) {
                DEBUG(2,("Failed to create stdin file descriptor\n"));
                close(ifd[0]);
                exit(80);
index eabb6d6dc48dbca7b1dc7fb9b4ea4b5cec934b2c..6d33a1c36065a25fa4ed1e95e1caa4c3e1a69b93 100644 (file)
@@ -1343,16 +1343,6 @@ const char *sys_dlerror(void)
 #endif
 }
 
-int sys_dup2(int oldfd, int newfd) 
-{
-#if defined(HAVE_DUP2)
-       return dup2(oldfd, newfd);
-#else
-       errno = ENOSYS;
-       return -1;
-#endif
-}
-
 /**************************************************************************
  Wrapper for Admin Logs.
 ****************************************************************************/
index 64a4311256b4328a1b69bcfe128f7d3104167d2a..e6d2bbf59fd133e511ff121b3567989c9fccecc6 100644 (file)
@@ -184,17 +184,17 @@ static int dochild(int master, const char *slavedev, const struct passwd *pass,
 
        /* Make slave stdin/out/err of child. */
 
-       if (sys_dup2(slave, STDIN_FILENO) != STDIN_FILENO)
+       if (dup2(slave, STDIN_FILENO) != STDIN_FILENO)
        {
                DEBUG(3, ("Could not re-direct stdin\n"));
                return (False);
        }
-       if (sys_dup2(slave, STDOUT_FILENO) != STDOUT_FILENO)
+       if (dup2(slave, STDOUT_FILENO) != STDOUT_FILENO)
        {
                DEBUG(3, ("Could not re-direct stdout\n"));
                return (False);
        }
-       if (sys_dup2(slave, STDERR_FILENO) != STDERR_FILENO)
+       if (dup2(slave, STDERR_FILENO) != STDERR_FILENO)
        {
                DEBUG(3, ("Could not re-direct stderr\n"));
                return (False);