aboutsummaryrefslogtreecommitdiffstats
path: root/gpgme/posix-io.c
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--gpgme/posix-io.c35
1 files changed, 17 insertions, 18 deletions
diff --git a/gpgme/posix-io.c b/gpgme/posix-io.c
index 5034468d..5c9baaca 100644
--- a/gpgme/posix-io.c
+++ b/gpgme/posix-io.c
@@ -39,6 +39,23 @@
#include "ath.h"
#include "debug.h"
+
+void
+_gpgme_io_subsystem_init (void)
+{
+ struct sigaction act;
+
+ sigaction (SIGPIPE, NULL, &act);
+ if (act.sa_handler == SIG_DFL)
+ {
+ act.sa_handler = SIG_IGN;
+ sigemptyset (&act.sa_mask);
+ act.sa_flags = 0;
+ sigaction (SIGPIPE, &act, NULL);
+ }
+}
+
+
static struct
{
void (*handler) (int,void*);
@@ -162,27 +179,9 @@ _gpgme_io_spawn (const char *path, char **argv,
struct spawn_fd_item_s *fd_child_list,
struct spawn_fd_item_s *fd_parent_list)
{
- static int fixed_signals;
- DEFINE_STATIC_LOCK (fixed_signals_lock);
pid_t pid;
int i;
int status, signo;
- LOCK (fixed_signals_lock);
- if (!fixed_signals)
- {
- struct sigaction act;
-
- sigaction (SIGPIPE, NULL, &act);
- if (act.sa_handler == SIG_DFL)
- {
- act.sa_handler = SIG_IGN;
- sigemptyset (&act.sa_mask);
- act.sa_flags = 0;
- sigaction (SIGPIPE, &act, NULL);
- }
- fixed_signals = 1;
- }
- UNLOCK (fixed_signals_lock);
pid = fork ();
if (pid == -1)