da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin########################################################################
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# #
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# This software is part of the ast package #
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner# Copyright (c) 1985-2010 AT&T Intellectual Property #
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# and is licensed under the #
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# Common Public License, Version 1.0 #
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin# by AT&T Intellectual Property #
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# #
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# A copy of the License is available at #
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# http://www.opensource.org/licenses/cpl1.0.txt #
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# (with md5 checksum 059e8cd6165cb4c31e351f2b69388fd9) #
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# #
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# Information and Software Systems Research #
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# AT&T Research #
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# Florham Park NJ #
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# #
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# Glenn Fowler <gsf@research.att.com> #
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# David Korn <dgk@research.att.com> #
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# Phong Vo <kpv@research.att.com> #
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# #
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin########################################################################
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin: generate sig features
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chincase $# in
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin0) ;;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin*) eval $1
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin shift
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin ;;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinesac
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinecho "#include <signal.h>
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinint xxx;" > $tmp.c
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin$cc -c $tmp.c >/dev/null 2>$tmp.e
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinecho "#pragma prototyped
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define sig_info _sig_info_
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#if defined(__STDPP__directive) && defined(__STDPP__hide)
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin__STDPP__directive pragma pp:hide kill killpg
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#else
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define kill ______kill
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define killpg ______killpg
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#endif
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#include <signal.h>
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#if defined(__STDPP__directive) && defined(__STDPP__hide)
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin__STDPP__directive pragma pp:nohide kill killpg
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#else
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#undef kill
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#undef killpg
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#endif
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#ifndef sigmask
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define sigmask(s) (1<<((s)-1))
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#endif"
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinecho "#include <signal.h>
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#ifdef TYPE
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#if defined(__STDC__) || defined(__cplusplus) || defined(c_plusplus)
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chintypedef TYPE (*Sig_handler_t)(ARG);
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#else
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chintypedef TYPE (*Sig_handler_t)();
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#endif
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#endif
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinSig_handler_t f()
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin{
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin Sig_handler_t handler;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin handler = signal(1, SIG_IGN);
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin return(handler);
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin}" > $tmp.c
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinif $cc -c $tmp.c >/dev/null
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinthen :
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinelse e=`wc -l $tmp.e`
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin i1= j1=
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin for i in void int
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin do for j in int,... ... int
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin do $cc -c -DTYPE=$i -DARG=$j $tmp.c >/dev/null 2>$tmp.e || continue
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin case `wc -l $tmp.e` in
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin $e) i1= j1=; break 2 ;;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin esac
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin case $i1 in
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin "") i1=$i j1=$j ;;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin esac
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin done
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin done
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin case $i1 in
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin ?*) i=$i1 j=$j1 ;;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin esac
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin echo "typedef $i (*Sig_handler_t)($j);"
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinfi
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinecho '
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define Handler_t Sig_handler_t
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define SIG_REG_PENDING (-1)
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define SIG_REG_POP 0
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define SIG_REG_EXEC 00001
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define SIG_REG_PROC 00002
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define SIG_REG_TERM 00004
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define SIG_REG_ALL 00777
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define SIG_REG_SET 01000
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chintypedef struct
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin{
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin char** name;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin char** text;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin int sigmax;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin} Sig_info_t;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinextern int kill(pid_t, int);
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinextern int killpg(pid_t, int);
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#if _BLD_ast && defined(__EXPORT__)
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define extern extern __EXPORT__
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#endif
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#if !_BLD_ast && defined(__IMPORT__)
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define extern extern __IMPORT__
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#endif
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinextern Sig_info_t sig_info;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#undef extern
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner#if _lib_sigflag && _npt_sigflag
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulknerextern int sigflag(int, int, int);
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner#endif
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#if _BLD_ast && defined(__EXPORT__)
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define extern __EXPORT__
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#endif
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner#if !_lib_sigflag
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulknerextern int sigflag(int, int, int);
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner#endif
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinextern int sigcritical(int);
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinextern int sigunblock(int);
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#undef extern'