#include <vlc_common.h>
-#include <ctype.h>
-
-
#undef iconv_t
#undef iconv_open
#undef iconv
#ifdef HAVE_FORK
# include <signal.h>
-# include <sys/time.h>
# include <unistd.h>
# include <errno.h>
# include <sys/wait.h>
-# include <fcntl.h>
# include <sys/socket.h>
# include <sys/poll.h>
# ifndef PF_LOCAL
return b_exact;
}
+#undef vlc_execve
/*************************************************************************
* vlc_execve: Execute an external program with a given environment,
* wait until it finishes and return its standard output
*************************************************************************/
-int __vlc_execve( vlc_object_t *p_object, int i_argc, char *const *ppsz_argv,
- char *const *ppsz_env, const char *psz_cwd,
- const char *p_in, size_t i_in,
- char **pp_data, size_t *pi_data )
+int vlc_execve( vlc_object_t *p_object, int i_argc, char *const *ppsz_argv,
+ char *const *ppsz_env, const char *psz_cwd,
+ const char *p_in, size_t i_in,
+ char **pp_data, size_t *pi_data )
{
(void)i_argc; // <-- hmph
#ifdef HAVE_FORK
/* NOTE:
* Like it or not, close can fail (and not only with EBADF)
*/
- if ((close (0) == 0) && (close (1) == 0) && (close (2) == 0)
- && (dup (fds[1]) == 0) && (dup (fds[1]) == 1)
- && (open ("/dev/null", O_RDONLY) == 2)
+ if ((dup2 (fds[1], 0) == 0) && (dup2 (fds[1], 1) == 1)
&& ((psz_cwd == NULL) || (chdir (psz_cwd) == 0)))
execve (ppsz_argv[0], ppsz_argv, ppsz_env);
- exit (EXIT_FAILURE);
+ _exit (EXIT_FAILURE);
}
}
|| i_read == 0 )
break;
*pi_data += i_read;
- *pp_data = realloc( *pp_data, *pi_data + 1025 );
+ *pp_data = xrealloc( *pp_data, *pi_data + 1025 );
}
while ( !p_object->b_die