$NetBSD: patch-ar,v 1.1.1.1 2012/02/21 12:49:43 drochner Exp $ --- modules/misc/inhibit/xdg.c.orig 2011-11-22 20:30:36.000000000 +0000 +++ modules/misc/inhibit/xdg.c @@ -27,7 +27,11 @@ #include #include #include +#ifdef _POSIX_SPAWN +# if (_POSIX_SPAWN >= 0) #include +# endif +#endif #include static int Open (vlc_object_t *); @@ -47,7 +51,11 @@ struct vlc_inhibit_sys vlc_thread_t thread; vlc_cond_t update, inactive; vlc_mutex_t lock; +#ifdef _POSIX_SPAWN +# if (_POSIX_SPAWN >= 0) posix_spawnattr_t attr; +# endif +#endif bool suspend, suspended; }; @@ -67,17 +75,29 @@ 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); +#ifdef _POSIX_SPAWN +# if (_POSIX_SPAWN >= 0) posix_spawnattr_init (&p_sys->attr); +# endif +#endif /* Reset signal handlers to default and clear mask in the child process */ { sigset_t set; sigemptyset (&set); +#ifdef _POSIX_SPAWN +# if (_POSIX_SPAWN >= 0) posix_spawnattr_setsigmask (&p_sys->attr, &set); +# endif +#endif sigaddset (&set, SIGPIPE); +#ifdef _POSIX_SPAWN +# if (_POSIX_SPAWN >= 0) posix_spawnattr_setsigdefault (&p_sys->attr, &set); posix_spawnattr_setflags (&p_sys->attr, POSIX_SPAWN_SETSIGDEF | POSIX_SPAWN_SETSIGMASK); +# endif +#endif } p_sys->suspend = false; p_sys->suspended = false; @@ -106,7 +126,11 @@ static void Close (vlc_object_t *obj) vlc_cancel (p_sys->thread); vlc_join (p_sys->thread, NULL); +#ifdef _POSIX_SPAWN +# if (_POSIX_SPAWN >= 0) posix_spawnattr_destroy (&p_sys->attr); +# endif +#endif vlc_cond_destroy (&p_sys->inactive); vlc_cond_destroy (&p_sys->update); vlc_mutex_destroy (&p_sys->lock); @@ -152,6 +176,8 @@ static void *Thread (void *data) pid_t pid; vlc_mutex_unlock (&p_sys->lock); +#ifdef _POSIX_SPAWN +# if (_POSIX_SPAWN >= 0) if (!posix_spawnp (&pid, "xdg-screensaver", NULL, &p_sys->attr, argv, environ)) { @@ -162,6 +188,8 @@ static void *Thread (void *data) while (waitpid (pid, &status, 0) == -1); } else/* We don't handle the error, but busy looping would be worse :( */ +# endif +#endif msg_Warn (ih, "could not start xdg-screensaver"); vlc_mutex_lock (&p_sys->lock);