Initial import of the CDE 2.1.30 sources from the Open Group.
This commit is contained in:
122
cde/lib/DtSearch/userint.c
Normal file
122
cde/lib/DtSearch/userint.c
Normal file
@@ -0,0 +1,122 @@
|
||||
/*
|
||||
* COMPONENT_NAME: austext
|
||||
*
|
||||
* FUNCTIONS: flag_shutdown
|
||||
* init_user_interrupt
|
||||
* main
|
||||
* user_interrupt
|
||||
*
|
||||
* ORIGINS: 27
|
||||
*
|
||||
* (C) COPYRIGHT International Business Machines Corp. 1992,1995
|
||||
* All Rights Reserved
|
||||
* US Government Users Restricted Rights - Use, duplication or
|
||||
* disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
|
||||
*/
|
||||
/******************** USERINT.C *************************
|
||||
* $XConsortium: userint.c /main/5 1996/05/07 13:49:00 drk $
|
||||
* April 1992.
|
||||
*
|
||||
* Init_user_interrupt() initializes interrupt handler.
|
||||
*
|
||||
* User_interrupt() returns TRUE if any of several signals
|
||||
* has been received anytime since initialization or last call.
|
||||
* These occur when user pushes CTRL-C, CTRL-BREAK,
|
||||
* or when process is killed by external process.
|
||||
* It's usually called in a major loop in a program at a place
|
||||
* where it is convenient to allow a graceful exit.
|
||||
* SIGHUP is not trapped because this module is only used in
|
||||
* offline programs and users often want to nohup their
|
||||
* offline scripts.
|
||||
*
|
||||
* Replaces quit_escape() after version 4.0 because
|
||||
* quit_escape() only worked on dos platform because of
|
||||
* the dependency on conio/curses functions.
|
||||
* Current user_interrupt() works on all C platforms.
|
||||
*
|
||||
* $Log$
|
||||
* Revision 2.4 1996/03/13 22:59:54 miker
|
||||
* Removed trap of SIGABRT to enable external kills with core dump.
|
||||
*
|
||||
* Revision 2.3 1996/02/01 19:28:30 miker
|
||||
* Made shutdown_now flag volatile.
|
||||
*
|
||||
* Revision 2.2 1995/10/25 15:03:09 miker
|
||||
* Added prolog.
|
||||
*
|
||||
* Revision 2.1 1995/09/22 22:21:36 miker
|
||||
* Freeze DtSearch 0.1, AusText 2.1.8
|
||||
*
|
||||
* Revision 1.2 1995/09/05 19:18:14 miker
|
||||
* Minor name changes for DtSearch.
|
||||
*/
|
||||
#include "SearchP.h"
|
||||
#include <signal.h>
|
||||
|
||||
/***********#define INCLUDE_MAIN******************/
|
||||
|
||||
|
||||
volatile int shutdown_now = 0; /* i.e. FALSE */
|
||||
|
||||
/************************************************/
|
||||
/* */
|
||||
/* flag_shutdown */
|
||||
/* */
|
||||
/************************************************/
|
||||
/* interrupt handler for termination signals */
|
||||
static void flag_shutdown (int sig)
|
||||
{
|
||||
shutdown_now = sig;
|
||||
return;
|
||||
}
|
||||
|
||||
/************************************************/
|
||||
/* */
|
||||
/* init_user_interrupt */
|
||||
/* */
|
||||
/************************************************/
|
||||
void init_user_interrupt (void)
|
||||
{
|
||||
signal (SIGINT, flag_shutdown); /* interrupt (ctrl-c) */
|
||||
signal (SIGQUIT, flag_shutdown); /* quit (ctrl-d) */
|
||||
signal (SIGTRAP, flag_shutdown); /* trace trap */
|
||||
signal (SIGKILL, flag_shutdown); /* kill -9, cannot be trapped */
|
||||
signal (SIGALRM, flag_shutdown); /* called alarm() polling timer */
|
||||
signal (SIGTERM, flag_shutdown); /* kill [-15], sfwr terminate */
|
||||
signal (SIGPWR, flag_shutdown); /* power failure imminent */
|
||||
signal (SIGUSR1, flag_shutdown); /* kill -30, "pings" OE */
|
||||
#ifdef _AIX
|
||||
signal (SIGXCPU, flag_shutdown); /* cpu time limit exceeded */
|
||||
signal (SIGDANGER, flag_shutdown); /* out of paging space,
|
||||
* crash immin */
|
||||
#endif
|
||||
return;
|
||||
} /* init_user_interrupt() */
|
||||
|
||||
/************************************************/
|
||||
/* */
|
||||
/* user_interrupt */
|
||||
/* */
|
||||
/************************************************/
|
||||
int user_interrupt (void)
|
||||
{ return shutdown_now; }
|
||||
|
||||
|
||||
|
||||
#ifdef INCLUDE_MAIN
|
||||
/******************** main for testing ****************************/
|
||||
main ()
|
||||
{
|
||||
int done = FALSE;
|
||||
int i = 0;
|
||||
|
||||
init_user_interrupt ();
|
||||
while (!user_interrupt ())
|
||||
printf ("\r%5d: Push CTRL-C or CTRL-BREAK to exit... ", ++i);
|
||||
printf ("\nWhew! Thank-you.\n");
|
||||
return;
|
||||
} /* main() */
|
||||
|
||||
#endif
|
||||
|
||||
/******************** USERINT.C *************************/
|
||||
Reference in New Issue
Block a user