1/* $NetBSD: signal.c,v 1.3 2021/08/14 16:14:58 christos Exp $ */ 2 3/* $OpenLDAP$ */ 4/* This work is part of OpenLDAP Software <http://www.openldap.org/>. 5 * 6 * Copyright 1998-2021 The OpenLDAP Foundation. 7 * All rights reserved. 8 * 9 * Redistribution and use in source and binary forms, with or without 10 * modification, are permitted only as authorized by the OpenLDAP 11 * Public License. 12 * 13 * A copy of this license is available in the file LICENSE in the 14 * top-level directory of the distribution or, alternatively, at 15 * <http://www.OpenLDAP.org/license.html>. 16 */ 17 18#include <sys/cdefs.h> 19__RCSID("$NetBSD: signal.c,v 1.3 2021/08/14 16:14:58 christos Exp $"); 20 21#include "portable.h" 22 23#ifdef HAVE_SIGACTION 24#include <ac/string.h> 25#include <ac/signal.h> 26 27lutil_sig_t 28lutil_sigaction(int sig, lutil_sig_t func) 29{ 30 struct sigaction action, oaction; 31 32 memset( &action, '\0', sizeof(action) ); 33 34 action.sa_handler = func; 35 sigemptyset( &action.sa_mask ); 36#ifdef SA_RESTART 37 action.sa_flags |= SA_RESTART; 38#endif 39 40 if( sigaction( sig, &action, &oaction ) != 0 ) { 41 return NULL; 42 } 43 44 return oaction.sa_handler; 45} 46#endif 47