1da2e3ebdSchin######################################################################## 2da2e3ebdSchin# # 3da2e3ebdSchin# This software is part of the ast package # 4*3e14f97fSRoger A. Faulkner# Copyright (c) 1985-2010 AT&T Intellectual Property # 5da2e3ebdSchin# and is licensed under the # 6da2e3ebdSchin# Common Public License, Version 1.0 # 77c2fbfb3SApril Chin# by AT&T Intellectual Property # 8da2e3ebdSchin# # 9da2e3ebdSchin# A copy of the License is available at # 10da2e3ebdSchin# http://www.opensource.org/licenses/cpl1.0.txt # 11da2e3ebdSchin# (with md5 checksum 059e8cd6165cb4c31e351f2b69388fd9) # 12da2e3ebdSchin# # 13da2e3ebdSchin# Information and Software Systems Research # 14da2e3ebdSchin# AT&T Research # 15da2e3ebdSchin# Florham Park NJ # 16da2e3ebdSchin# # 17da2e3ebdSchin# Glenn Fowler <gsf@research.att.com> # 18da2e3ebdSchin# David Korn <dgk@research.att.com> # 19da2e3ebdSchin# Phong Vo <kpv@research.att.com> # 20da2e3ebdSchin# # 21da2e3ebdSchin######################################################################## 22da2e3ebdSchin: generate sig features 23da2e3ebdSchincase $# in 24da2e3ebdSchin0) ;; 25da2e3ebdSchin*) eval $1 26da2e3ebdSchin shift 27da2e3ebdSchin ;; 28da2e3ebdSchinesac 29da2e3ebdSchinecho "#include <signal.h> 30da2e3ebdSchinint xxx;" > $tmp.c 31da2e3ebdSchin$cc -c $tmp.c >/dev/null 2>$tmp.e 32da2e3ebdSchinecho "#pragma prototyped 33da2e3ebdSchin#define sig_info _sig_info_ 34da2e3ebdSchin 35da2e3ebdSchin#if defined(__STDPP__directive) && defined(__STDPP__hide) 36da2e3ebdSchin__STDPP__directive pragma pp:hide kill killpg 37da2e3ebdSchin#else 38da2e3ebdSchin#define kill ______kill 39da2e3ebdSchin#define killpg ______killpg 40da2e3ebdSchin#endif 41da2e3ebdSchin#include <signal.h> 42da2e3ebdSchin#if defined(__STDPP__directive) && defined(__STDPP__hide) 43da2e3ebdSchin__STDPP__directive pragma pp:nohide kill killpg 44da2e3ebdSchin#else 45da2e3ebdSchin#undef kill 46da2e3ebdSchin#undef killpg 47da2e3ebdSchin#endif 48da2e3ebdSchin#ifndef sigmask 49da2e3ebdSchin#define sigmask(s) (1<<((s)-1)) 50da2e3ebdSchin#endif" 51da2e3ebdSchinecho "#include <signal.h> 52da2e3ebdSchin#ifdef TYPE 53da2e3ebdSchin#if defined(__STDC__) || defined(__cplusplus) || defined(c_plusplus) 54da2e3ebdSchintypedef TYPE (*Sig_handler_t)(ARG); 55da2e3ebdSchin#else 56da2e3ebdSchintypedef TYPE (*Sig_handler_t)(); 57da2e3ebdSchin#endif 58da2e3ebdSchin#endif 59da2e3ebdSchinSig_handler_t f() 60da2e3ebdSchin{ 61da2e3ebdSchin Sig_handler_t handler; 62da2e3ebdSchin handler = signal(1, SIG_IGN); 63da2e3ebdSchin return(handler); 64da2e3ebdSchin}" > $tmp.c 65da2e3ebdSchinif $cc -c $tmp.c >/dev/null 66da2e3ebdSchinthen : 67da2e3ebdSchinelse e=`wc -l $tmp.e` 68da2e3ebdSchin i1= j1= 69da2e3ebdSchin for i in void int 70da2e3ebdSchin do for j in int,... ... int 71da2e3ebdSchin do $cc -c -DTYPE=$i -DARG=$j $tmp.c >/dev/null 2>$tmp.e || continue 72da2e3ebdSchin case `wc -l $tmp.e` in 73da2e3ebdSchin $e) i1= j1=; break 2 ;; 74da2e3ebdSchin esac 75da2e3ebdSchin case $i1 in 76da2e3ebdSchin "") i1=$i j1=$j ;; 77da2e3ebdSchin esac 78da2e3ebdSchin done 79da2e3ebdSchin done 80da2e3ebdSchin case $i1 in 81da2e3ebdSchin ?*) i=$i1 j=$j1 ;; 82da2e3ebdSchin esac 83da2e3ebdSchin echo "typedef $i (*Sig_handler_t)($j);" 84da2e3ebdSchinfi 85da2e3ebdSchinecho ' 86da2e3ebdSchin 87da2e3ebdSchin#define Handler_t Sig_handler_t 88da2e3ebdSchin 89da2e3ebdSchin#define SIG_REG_PENDING (-1) 90da2e3ebdSchin#define SIG_REG_POP 0 91da2e3ebdSchin#define SIG_REG_EXEC 00001 92da2e3ebdSchin#define SIG_REG_PROC 00002 93da2e3ebdSchin#define SIG_REG_TERM 00004 94da2e3ebdSchin#define SIG_REG_ALL 00777 95da2e3ebdSchin#define SIG_REG_SET 01000 96da2e3ebdSchin 97da2e3ebdSchintypedef struct 98da2e3ebdSchin{ 99da2e3ebdSchin char** name; 100da2e3ebdSchin char** text; 101da2e3ebdSchin int sigmax; 102da2e3ebdSchin} Sig_info_t; 103da2e3ebdSchin 104da2e3ebdSchinextern int kill(pid_t, int); 105da2e3ebdSchinextern int killpg(pid_t, int); 106da2e3ebdSchin 107da2e3ebdSchin#if _BLD_ast && defined(__EXPORT__) 108da2e3ebdSchin#define extern extern __EXPORT__ 109da2e3ebdSchin#endif 110da2e3ebdSchin#if !_BLD_ast && defined(__IMPORT__) 111da2e3ebdSchin#define extern extern __IMPORT__ 112da2e3ebdSchin#endif 113da2e3ebdSchin 114da2e3ebdSchinextern Sig_info_t sig_info; 115da2e3ebdSchin 116da2e3ebdSchin#undef extern 117da2e3ebdSchin 118*3e14f97fSRoger A. Faulkner#if _lib_sigflag && _npt_sigflag 119*3e14f97fSRoger A. Faulknerextern int sigflag(int, int, int); 120*3e14f97fSRoger A. Faulkner#endif 121*3e14f97fSRoger A. Faulkner 122da2e3ebdSchin#if _BLD_ast && defined(__EXPORT__) 123da2e3ebdSchin#define extern __EXPORT__ 124da2e3ebdSchin#endif 125da2e3ebdSchin 126*3e14f97fSRoger A. Faulkner#if !_lib_sigflag 127*3e14f97fSRoger A. Faulknerextern int sigflag(int, int, int); 128*3e14f97fSRoger A. Faulkner#endif 129da2e3ebdSchinextern int sigcritical(int); 130da2e3ebdSchinextern int sigunblock(int); 131da2e3ebdSchin 132da2e3ebdSchin#undef extern' 133