fish-shell/src/signal.h
2018-10-27 18:01:38 -05:00

57 lines
1.5 KiB
C

// The library for various signal related issues.
#ifndef FISH_SIGNALH
#define FISH_SIGNALH
#include <signal.h>
/// Get the integer signal value representing the specified signal, or -1 of no signal was found.
int wcs2sig(const wchar_t *str);
/// Get string representation of a signal.
const wchar_t *sig2wcs(int sig);
/// Returns a description of the specified signal.
const wchar_t *signal_get_desc(int sig);
/// Set all signal handlers to SIG_DFL.
void signal_reset_handlers();
/// Set signal handlers to fish default handlers.
void signal_set_handlers();
/// Tell fish what to do on the specified signal.
///
/// \param sig The signal to specify the action of
/// \param do_handle If true fish will catch the specified signal and fire an event, otherwise the
/// default action (SIG_DFL) will be set
void signal_handle(int sig, int do_handle);
/// Ensure we did not inherit any blocked signals. See issue #3964.
void signal_unblock_all();
/// Block all signals.
void signal_block();
/// Unblock all signals.
void signal_unblock();
/// Returns true if signals are being blocked.
bool signal_is_blocked();
/// Returns signals with non-default handlers.
void get_signals_with_handlers(sigset_t *set);
/// A RAII wrapper for signal_block/signal_unblock that triggers a signal block on creation, and then
/// automatically releases the block when the object is destroyed, handling control flow and exceptions.
struct signal_block_t {
signal_block_t() {
signal_block();
}
~signal_block_t() {
signal_unblock();
}
};
#endif