2 * Copyright (C) 2003-2010 The Music Player Daemon Project
3 * http://www.musicpd.org
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; either version 2 of the License, or
8 * (at your option) any later version.
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
15 * You should have received a copy of the GNU General Public License along
16 * with this program; if not, write to the Free Software Foundation, Inc.,
17 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
21 #include "sig_handlers.h"
27 #include "event_pipe.h"
35 static void exit_signal_handler(G_GNUC_UNUSED
int signum
)
37 g_main_loop_quit(main_loop
);
40 static void reload_signal_handler(G_GNUC_UNUSED
int signum
)
42 event_pipe_emit_fast(PIPE_EVENT_RELOAD
);
46 x_sigaction(int signum
, const struct sigaction
*act
)
48 if (sigaction(signum
, act
, NULL
) < 0)
49 g_error("sigaction() failed: %s", strerror(errno
));
53 handle_reload_event(void)
55 g_debug("got SIGHUP, reopening log files");
61 void initSigHandlers(void)
67 sigemptyset(&sa
.sa_mask
);
68 sa
.sa_handler
= SIG_IGN
;
69 while (sigaction(SIGPIPE
, &sa
, NULL
) < 0 && errno
== EINTR
) ;
71 sa
.sa_handler
= exit_signal_handler
;
72 x_sigaction(SIGINT
, &sa
);
73 x_sigaction(SIGTERM
, &sa
);
75 event_pipe_register(PIPE_EVENT_RELOAD
, handle_reload_event
);
76 sa
.sa_handler
= reload_signal_handler
;
77 x_sigaction(SIGHUP
, &sa
);