diff options
Diffstat (limited to 'testing/vlc/uclibc-inhibit-spawn.patch')
-rw-r--r-- | testing/vlc/uclibc-inhibit-spawn.patch | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/testing/vlc/uclibc-inhibit-spawn.patch b/testing/vlc/uclibc-inhibit-spawn.patch new file mode 100644 index 0000000000..c34ebe0f7b --- /dev/null +++ b/testing/vlc/uclibc-inhibit-spawn.patch @@ -0,0 +1,76 @@ +diff --git a/modules/misc/inhibit/xdg.c b/modules/misc/inhibit/xdg.c +index 3f297c6..e16a21e 100644 +--- a/modules/misc/inhibit/xdg.c ++++ b/modules/misc/inhibit/xdg.c +@@ -27,7 +27,11 @@ + #include <vlc_inhibit.h> + #include <assert.h> + #include <signal.h> +-#include <spawn.h> ++#if !defined(_POSIX_SPAWN) ++# define _POSIX_SPAWN -1 ++#else ++# include <spawn.h> ++#endif + #include <sys/wait.h> + + static int Open (vlc_object_t *); +@@ -47,7 +51,9 @@ struct vlc_inhibit_sys + vlc_thread_t thread; + vlc_cond_t update, inactive; + vlc_mutex_t lock; ++#if (_POSIX_SPAWN >= 0) + posix_spawnattr_t attr; ++#endif + bool suspend, suspended; + }; + +@@ -67,17 +73,19 @@ static int Open (vlc_object_t *obj) + vlc_mutex_init (&p_sys->lock); + vlc_cond_init (&p_sys->update); + vlc_cond_init (&p_sys->inactive); +- posix_spawnattr_init (&p_sys->attr); + /* Reset signal handlers to default and clear mask in the child process */ + { + sigset_t set; + + sigemptyset (&set); +- posix_spawnattr_setsigmask (&p_sys->attr, &set); + sigaddset (&set, SIGPIPE); ++#if (_POSIX_SPAWN >= 0) ++ posix_spawnattr_init (&p_sys->attr); ++ posix_spawnattr_setsigmask (&p_sys->attr, &set); + posix_spawnattr_setsigdefault (&p_sys->attr, &set); + posix_spawnattr_setflags (&p_sys->attr, POSIX_SPAWN_SETSIGDEF + | POSIX_SPAWN_SETSIGMASK); ++#endif + } + p_sys->suspend = false; + p_sys->suspended = false; +@@ -106,7 +114,9 @@ static void Close (vlc_object_t *obj) + + vlc_cancel (p_sys->thread); + vlc_join (p_sys->thread, NULL); ++#if (_POSIX_SPAWN >= 0) + posix_spawnattr_destroy (&p_sys->attr); ++#endif + vlc_cond_destroy (&p_sys->inactive); + vlc_cond_destroy (&p_sys->update); + vlc_mutex_destroy (&p_sys->lock); +@@ -153,8 +163,16 @@ static void *Thread (void *data) + pid_t pid; + + vlc_mutex_unlock (&p_sys->lock); ++#if (_POSIX_SPAWN >= 0) + if (!posix_spawnp (&pid, "xdg-screensaver", NULL, &p_sys->attr, + argv, environ)) ++#else ++ pid = fork(); ++ if (pid == 0) { ++ execvp("xdg-screensaver", argv); ++ exit(1); ++ } else if (pid > 0) ++#endif + { + int status; + |