* clicon_msg_rcv: Added intr parameter for interrupting on ^C (default 0)

* Internal NETCONF (client <-> backend)
  * Ensure message-id increments
  * Separated rpc from notification socket in same session
* Removed coverage icon from homepage since it stopped working some time ago
This commit is contained in:
Olof hagsand 2023-03-08 21:14:38 +01:00
parent 453e97ef6b
commit 5822c1a72a
21 changed files with 140 additions and 68 deletions

View file

@ -65,19 +65,40 @@ int
set_signal(int signo,
void (*handler)(int),
void (**oldhandler)(int))
{
return set_signal_flags(signo,
#if defined(HAVE_SIGACTION)
SA_RESTART,
#else
0,
#endif
handler, oldhandler);
}
/*! Set a signal handler, but without SA_RESTART
* @param[in] signo Signal number
* @param[in] flags Flags (to sigaction)
* @param[in] handler Function to call when signal occurs
* @param[out] oldhandler Pointer to old handler
*/
int
set_signal_flags(int signo,
int flags,
void (*handler)(int),
void (**oldhandler)(int))
{
#if defined(HAVE_SIGACTION)
struct sigaction sold, snew;
snew.sa_handler = handler;
sigemptyset(&snew.sa_mask);
snew.sa_flags = SA_RESTART;
if (sigaction(signo, &snew, &sold) < 0){
snew.sa_flags = flags;
if (sigaction(signo, &snew, &sold) < 0){
clicon_err(OE_UNIX, errno, "sigaction");
return -1;
}
if (oldhandler)
*oldhandler = sold.sa_handler;
}
if (oldhandler)
*oldhandler = sold.sa_handler;
return 0;
#elif defined(HAVE_SIGVEC)
assert(0);