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