14887Schin######################################################################## 24887Schin# # 34887Schin# This software is part of the ast package # 4*12068SRoger.Faulkner@Oracle.COM# Copyright (c) 1985-2010 AT&T Intellectual Property # 54887Schin# and is licensed under the # 64887Schin# Common Public License, Version 1.0 # 78462SApril.Chin@Sun.COM# by AT&T Intellectual Property # 84887Schin# # 94887Schin# A copy of the License is available at # 104887Schin# http://www.opensource.org/licenses/cpl1.0.txt # 114887Schin# (with md5 checksum 059e8cd6165cb4c31e351f2b69388fd9) # 124887Schin# # 134887Schin# Information and Software Systems Research # 144887Schin# AT&T Research # 154887Schin# Florham Park NJ # 164887Schin# # 174887Schin# Glenn Fowler <gsf@research.att.com> # 184887Schin# David Korn <dgk@research.att.com> # 194887Schin# Phong Vo <kpv@research.att.com> # 204887Schin# # 214887Schin######################################################################## 224887Schin: generate sig features 234887Schincase $# in 244887Schin0) ;; 254887Schin*) eval $1 264887Schin shift 274887Schin ;; 284887Schinesac 294887Schinecho "#include <signal.h> 304887Schinint xxx;" > $tmp.c 314887Schin$cc -c $tmp.c >/dev/null 2>$tmp.e 324887Schinecho "#pragma prototyped 334887Schin#define sig_info _sig_info_ 344887Schin 354887Schin#if defined(__STDPP__directive) && defined(__STDPP__hide) 364887Schin__STDPP__directive pragma pp:hide kill killpg 374887Schin#else 384887Schin#define kill ______kill 394887Schin#define killpg ______killpg 404887Schin#endif 414887Schin#include <signal.h> 424887Schin#if defined(__STDPP__directive) && defined(__STDPP__hide) 434887Schin__STDPP__directive pragma pp:nohide kill killpg 444887Schin#else 454887Schin#undef kill 464887Schin#undef killpg 474887Schin#endif 484887Schin#ifndef sigmask 494887Schin#define sigmask(s) (1<<((s)-1)) 504887Schin#endif" 514887Schinecho "#include <signal.h> 524887Schin#ifdef TYPE 534887Schin#if defined(__STDC__) || defined(__cplusplus) || defined(c_plusplus) 544887Schintypedef TYPE (*Sig_handler_t)(ARG); 554887Schin#else 564887Schintypedef TYPE (*Sig_handler_t)(); 574887Schin#endif 584887Schin#endif 594887SchinSig_handler_t f() 604887Schin{ 614887Schin Sig_handler_t handler; 624887Schin handler = signal(1, SIG_IGN); 634887Schin return(handler); 644887Schin}" > $tmp.c 654887Schinif $cc -c $tmp.c >/dev/null 664887Schinthen : 674887Schinelse e=`wc -l $tmp.e` 684887Schin i1= j1= 694887Schin for i in void int 704887Schin do for j in int,... ... int 714887Schin do $cc -c -DTYPE=$i -DARG=$j $tmp.c >/dev/null 2>$tmp.e || continue 724887Schin case `wc -l $tmp.e` in 734887Schin $e) i1= j1=; break 2 ;; 744887Schin esac 754887Schin case $i1 in 764887Schin "") i1=$i j1=$j ;; 774887Schin esac 784887Schin done 794887Schin done 804887Schin case $i1 in 814887Schin ?*) i=$i1 j=$j1 ;; 824887Schin esac 834887Schin echo "typedef $i (*Sig_handler_t)($j);" 844887Schinfi 854887Schinecho ' 864887Schin 874887Schin#define Handler_t Sig_handler_t 884887Schin 894887Schin#define SIG_REG_PENDING (-1) 904887Schin#define SIG_REG_POP 0 914887Schin#define SIG_REG_EXEC 00001 924887Schin#define SIG_REG_PROC 00002 934887Schin#define SIG_REG_TERM 00004 944887Schin#define SIG_REG_ALL 00777 954887Schin#define SIG_REG_SET 01000 964887Schin 974887Schintypedef struct 984887Schin{ 994887Schin char** name; 1004887Schin char** text; 1014887Schin int sigmax; 1024887Schin} Sig_info_t; 1034887Schin 1044887Schinextern int kill(pid_t, int); 1054887Schinextern int killpg(pid_t, int); 1064887Schin 1074887Schin#if _BLD_ast && defined(__EXPORT__) 1084887Schin#define extern extern __EXPORT__ 1094887Schin#endif 1104887Schin#if !_BLD_ast && defined(__IMPORT__) 1114887Schin#define extern extern __IMPORT__ 1124887Schin#endif 1134887Schin 1144887Schinextern Sig_info_t sig_info; 1154887Schin 1164887Schin#undef extern 1174887Schin 118*12068SRoger.Faulkner@Oracle.COM#if _lib_sigflag && _npt_sigflag 119*12068SRoger.Faulkner@Oracle.COMextern int sigflag(int, int, int); 120*12068SRoger.Faulkner@Oracle.COM#endif 121*12068SRoger.Faulkner@Oracle.COM 1224887Schin#if _BLD_ast && defined(__EXPORT__) 1234887Schin#define extern __EXPORT__ 1244887Schin#endif 1254887Schin 126*12068SRoger.Faulkner@Oracle.COM#if !_lib_sigflag 127*12068SRoger.Faulkner@Oracle.COMextern int sigflag(int, int, int); 128*12068SRoger.Faulkner@Oracle.COM#endif 1294887Schinextern int sigcritical(int); 1304887Schinextern int sigunblock(int); 1314887Schin 1324887Schin#undef extern' 133