aboutsummaryrefslogtreecommitdiffstats
path: root/testing/vlc/uclibc-inhibit-spawn.patch
diff options
context:
space:
mode:
Diffstat (limited to 'testing/vlc/uclibc-inhibit-spawn.patch')
-rw-r--r--testing/vlc/uclibc-inhibit-spawn.patch76
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;
+