Update xscreensaver.c patch to fix build on 7.x.
PR: ports/152412 Submitted by: Martin Birgmeier <martin.birgmeier@aon.at> Approved by: kwm (mentor)
This commit is contained in:
parent
9cdf36a2e6
commit
cfdc587f81
Notes:
svn2git
2021-03-31 03:12:20 +00:00
svn path=/head/; revision=265015
@ -1,25 +1,98 @@
|
||||
--- ./modules/misc/inhibit/xscreensaver.c.orig 2010-07-10 19:56:49.000000000 -0400
|
||||
+++ ./modules/misc/inhibit/xscreensaver.c 2010-07-10 20:05:33.000000000 -0400
|
||||
@@ -39,7 +39,6 @@
|
||||
#include <sys/wait.h>
|
||||
#include <fcntl.h>
|
||||
#include <signal.h>
|
||||
-#include <spawn.h>
|
||||
|
||||
/*****************************************************************************
|
||||
* Local prototypes
|
||||
@@ -133,14 +132,6 @@
|
||||
*****************************************************************************/
|
||||
static void Execute (vlc_inhibit_t *p_ih, const char *const *argv)
|
||||
{
|
||||
- vlc_inhibit_sys_t *p_sys = p_ih->p_sys;
|
||||
- pid_t pid;
|
||||
-
|
||||
- if (posix_spawnp (&pid, argv[0], &p_sys->actions, &p_sys->attr,
|
||||
- (char **)argv, environ) == 0)
|
||||
- {
|
||||
- while (waitpid (pid, NULL, 0) != pid);
|
||||
- }
|
||||
}
|
||||
|
||||
/*****************************************************************************
|
||||
--- ./modules/misc/inhibit/xscreensaver.c.ORIG 2010-04-13 02:22:27.000000000 +0200
|
||||
+++ ./modules/misc/inhibit/xscreensaver.c 2010-11-20 10:28:58.000000000 +0100
|
||||
@@ -39,7 +39,6 @@
|
||||
#include <sys/wait.h>
|
||||
#include <fcntl.h>
|
||||
#include <signal.h>
|
||||
-#include <spawn.h>
|
||||
|
||||
/*****************************************************************************
|
||||
* Local prototypes
|
||||
@@ -53,13 +52,8 @@
|
||||
struct vlc_inhibit_sys
|
||||
{
|
||||
vlc_timer_t timer;
|
||||
- posix_spawn_file_actions_t actions;
|
||||
- posix_spawnattr_t attr;
|
||||
- int nullfd;
|
||||
};
|
||||
|
||||
-extern char **environ;
|
||||
-
|
||||
/*****************************************************************************
|
||||
* Module descriptor
|
||||
*****************************************************************************/
|
||||
@@ -88,21 +82,6 @@
|
||||
}
|
||||
p_ih->inhibit = Inhibit;
|
||||
|
||||
- int fd = vlc_open ("/dev/null", O_WRONLY);
|
||||
- posix_spawn_file_actions_init (&p_sys->actions);
|
||||
- if (fd != -1)
|
||||
- {
|
||||
- posix_spawn_file_actions_adddup2 (&p_sys->actions, fd, 1);
|
||||
- posix_spawn_file_actions_adddup2 (&p_sys->actions, fd, 2);
|
||||
- posix_spawn_file_actions_addclose (&p_sys->actions, fd);
|
||||
- }
|
||||
- p_sys->nullfd = fd;
|
||||
-
|
||||
- sigset_t set;
|
||||
- posix_spawnattr_init (&p_sys->attr);
|
||||
- sigemptyset (&set);
|
||||
- posix_spawnattr_setsigmask (&p_sys->attr, &set);
|
||||
-
|
||||
return VLC_SUCCESS;
|
||||
}
|
||||
|
||||
@@ -115,10 +94,6 @@
|
||||
vlc_inhibit_sys_t *p_sys = p_ih->p_sys;
|
||||
|
||||
vlc_timer_destroy( p_sys->timer );
|
||||
- if (p_sys->nullfd != -1)
|
||||
- close (p_sys->nullfd);
|
||||
- posix_spawnattr_destroy (&p_sys->attr);
|
||||
- posix_spawn_file_actions_destroy (&p_sys->actions);
|
||||
free( p_sys );
|
||||
}
|
||||
|
||||
@@ -131,15 +106,33 @@
|
||||
/*****************************************************************************
|
||||
* Execute: Spawns a process using execv()
|
||||
*****************************************************************************/
|
||||
-static void Execute (vlc_inhibit_t *p_ih, const char *const *argv)
|
||||
+static void Execute( vlc_inhibit_t *p_ih, const char *const *ppsz_args )
|
||||
{
|
||||
- vlc_inhibit_sys_t *p_sys = p_ih->p_sys;
|
||||
- pid_t pid;
|
||||
-
|
||||
- if (posix_spawnp (&pid, argv[0], &p_sys->actions, &p_sys->attr,
|
||||
- (char **)argv, environ) == 0)
|
||||
+ pid_t pid = fork();
|
||||
+ switch( pid )
|
||||
{
|
||||
- while (waitpid (pid, NULL, 0) != pid);
|
||||
+ case 0: /* we're the child */
|
||||
+ {
|
||||
+ sigset_t set;
|
||||
+ sigemptyset (&set);
|
||||
+ pthread_sigmask (SIG_SETMASK, &set, NULL);
|
||||
+
|
||||
+ /* We don't want output */
|
||||
+ if( ( freopen( "/dev/null", "w", stdout ) != NULL )
|
||||
+ && ( freopen( "/dev/null", "w", stderr ) != NULL ) )
|
||||
+ execv( ppsz_args[0] , (char *const *)ppsz_args );
|
||||
+ /* If the file we want to execute doesn't exist we exit() */
|
||||
+ exit( EXIT_FAILURE );
|
||||
+ }
|
||||
+ case -1: /* we're the error */
|
||||
+ msg_Dbg( p_ih, "Couldn't fork() while launching %s",
|
||||
+ ppsz_args[0] );
|
||||
+ break;
|
||||
+ default: /* we're the parent */
|
||||
+ /* Wait for the child to exit.
|
||||
+ * We will not deadlock because we ran "/bin/sh &" */
|
||||
+ while( waitpid( pid, NULL, 0 ) != pid);
|
||||
+ break;
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user