Mercurial > hg > octave-nkf
changeset 2626:b35a5cd8107f
[project @ 1997-01-27 01:41:30 by jwe]
author | jwe |
---|---|
date | Mon, 27 Jan 1997 01:43:16 +0000 |
parents | e2f1586bb393 |
children | 0b852cbea582 |
files | ChangeLog acconfig.h aclocal.m4 configure.in octMakefile.in src/ChangeLog src/sighandlers.cc |
diffstat | 7 files changed, 89 insertions(+), 15 deletions(-) [+] |
line wrap: on
line diff
--- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,15 @@ +Sun Jan 26 19:39:51 1997 John W. Eaton <jwe@bevo.che.wisc.edu> + + * emacs/Makefile.in: New file. + * configure.in: create emacs/Makefile. + * octMakefile.in: Move/add emacs dir to the appropriate lists. + Sat Jan 25 22:27:14 1997 John W. Eaton <jwe@bevo.che.wisc.edu> + * aclocal.m4 (OCTAVE_CHECK_TYPE): New macro, stolen from bash. + * configure.in: Use it. + * acconfig.h: Add #undef for sigset_t. + * configure.in (RLD_FLAG): Delete. * mkoctfile.in (RLD_FLAG): Delete. * octave-bug.in (RLD_FLAG): Delete.
--- a/acconfig.h +++ b/acconfig.h @@ -122,6 +122,9 @@ /* Define to `short' if <sys/types.h> doesn't define. */ #undef nlink_t +/* Define to `int' if <signal.h> doesn't define. */ +#undef sigset_t + /* Leave that blank line there!! Autoheader needs it. If you're adding to this file, keep in mind:
--- a/aclocal.m4 +++ b/aclocal.m4 @@ -565,3 +565,28 @@ AC_DEFINE(MUST_REINSTALL_SIGHANDLERS) fi ]) +dnl +dnl This check originally from bash 2.0. +dnl +dnl Check for typedef'd symbols in header files, but allow the caller to +dnl specify the include files to be checked in addition to the default. +dnl +dnl OCTAVE_CHECK_TYPE(TYPE, HEADERS, DEFAULT[, VALUE-IF-FOUND]) +AC_DEFUN(OCTAVE_CHECK_TYPE, +[AC_REQUIRE([AC_HEADER_STDC])dnl +AC_MSG_CHECKING(for $1) +AC_CACHE_VAL(octave_cv_type_$1, +[AC_EGREP_CPP($1, [#include <sys/types.h> +#if STDC_HEADERS +#include <stdlib.h> +#endif +$2 +], octave_cv_type_$1=yes, octave_cv_type_$1=no)]) +AC_MSG_RESULT($octave_cv_type_$1) +ifelse($#, 4, [if test $octave_cv_type_$1 = yes; then + AC_DEFINE($4) + fi]) +if test $octave_cv_type_$1 = no; then + AC_DEFINE($1, $3) +fi +])
--- a/configure.in +++ b/configure.in @@ -21,7 +21,7 @@ ### Software Foundation, 59 Temple Place - Suite 330, Boston, MA ### 02111-1307, USA. -AC_REVISION($Revision: 1.247 $) +AC_REVISION($Revision: 1.248 $) AC_PREREQ(2.9) AC_INIT(src/octave.cc) AC_CONFIG_HEADER(config.h) @@ -928,6 +928,7 @@ AC_CHECK_TYPE(dev_t, short) AC_CHECK_TYPE(ino_t, unsigned long) AC_CHECK_TYPE(nlink_t, short) +OCTAVE_CHECK_TYPE(sigset_t, [#include <signal.h>], int) ### Define VOID_SIGHANDLER for readline. @@ -1117,8 +1118,8 @@ AC_OUTPUT(Makefile octMakefile Makeconf test/Makefile dlfcn/Makefile doc/Makefile doc/faq/Makefile doc/interpreter/Makefile - doc/liboctave/Makefile doc/refcard/Makefile examples/Makefile - liboctave/Makefile src/Makefile libcruft/Makefile + doc/liboctave/Makefile doc/refcard/Makefile emacs/Makefile + examples/Makefile liboctave/Makefile src/Makefile libcruft/Makefile libcruft/Makerules libcruft/blas/Makefile libcruft/balgen/Makefile libcruft/dassl/Makefile libcruft/eispack/Makefile libcruft/fftpack/Makefile libcruft/fsqp/Makefile
--- a/octMakefile.in +++ b/octMakefile.in @@ -30,7 +30,7 @@ MAKEINFO.PATCH ChangeLog ChangeLog.[0-9] # Complete directory trees to distribute. -DISTDIRS = emacs glob kpathsea make # plplot +DISTDIRS = glob kpathsea make # plplot # Subdirectories in which to run `make all'. SUBDIRS = @INFO_DIR@ @PLPLOT_DIR@ @READLINE_DIR@ @DLFCN_DIR@ glob \ @@ -52,8 +52,8 @@ octave-bug VERSION ARCH # Subdirectories in which to run `make bin-dist'. -BINDISTSUBDIRS = libcruft liboctave src info kpathsea readline \ - scripts doc examples +BINDISTSUBDIRS = libcruft liboctave src kpathsea readline info \ + scripts doc emacs examples # Complete directories trees to distribute with binary distributions. BINDISTDIRS = emacs
--- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,8 @@ +Sun Jan 26 19:41:48 1997 John W. Eaton <jwe@bevo.che.wisc.edu> + + * sighandlers.cc (sigchld_handler): Block SIGCHLD while + sigchld_hander is running. + Sat Jan 25 22:36:39 1997 John W. Eaton <jwe@bevo.che.wisc.edu> * Makefile.in (bin-dist): Update for 2.x.
--- a/src/sighandlers.cc +++ b/src/sighandlers.cc @@ -80,13 +80,33 @@ #endif #if defined (__EMX__) -#define MAYBE_UNBLOCK_SIGNAL(sig) \ +#define MAYBE_ACK_SIGNAL(sig) \ octave_set_signal_handler (sig, SIG_ACK) #else -#define MAYBE_UNBLOCK_SIGNAL(sig) \ +#define MAYBE_ACK_SIGNAL(sig) \ do { } while (0) #endif +// The following signal blocking stuff is stolen from bash: + +#define BLOCK_SIGNAL(sig, nvar, ovar) \ + do \ + { \ + sigemptyset (&nvar); \ + sigaddset (&nvar, sig); \ + sigemptyset (&ovar); \ + sigprocmask (SIG_BLOCK, &nvar, &ovar); \ + } \ + while (0) + +#if defined (HAVE_POSIX_SIGNALS) +#define BLOCK_CHILD(nvar, ovar) BLOCK_SIGNAL (SIGCHLD, nvar, ovar) +#define UNBLOCK_CHILD(ovar) sigprocmask (SIG_SETMASK, &ovar, 0) +#else +#define BLOCK_CHILD(nvar, ovar) ovar = sigblock (sigmask (SIGCHLD)) +#define UNBLOCK_CHILD(ovar) sigsetmask (ovar) +#endif + void octave_save_signal_mask (void) { @@ -189,14 +209,22 @@ static RETSIGTYPE sigchld_handler (int /* sig */) { -#if defined (__EMX__) volatile octave_interrupt_handler *saved_interrupt_handler = octave_ignore_interrupts (); + // I wonder if this is really right, or if SIGCHLD should just be + // blocked on OS/2 systems the same as for systems with POSIX signal + // functions. + +#if defined (__EMX__) volatile sig_handler *saved_sigchld_handler - = octave_set_signal_hanlder (SIGCHLD, SIG_IGN); + = octave_set_signal_handler (SIGCHLD, SIG_IGN); #endif + sigset_t set, oset; + + BLOCK_CHILD (set, oset); + int n = octave_child_list::length (); if (n == 0) @@ -230,13 +258,15 @@ } } -#if defined (__EMX__) octave_set_interrupt_handler (saved_interrupt_handler); + UNBLOCK_CHILD (oset); + +#ifdef __EMX__ octave_set_signal_handler (SIGCHLD, saved_sigchld_handler); #endif - MAYBE_UNBLOCK_SIGNAL (SIGCHLD); + MAYBE_ACK_SIGNAL (SIGCHLD); MAYBE_REINSTALL_SIGHANDLER (SIGCHLD, sigchld_handler); @@ -247,7 +277,7 @@ static RETSIGTYPE sigfpe_handler (int /* sig */) { - MAYBE_UNBLOCK_SIGNAL (SIGFPE); + MAYBE_ACK_SIGNAL (SIGFPE); MAYBE_REINSTALL_SIGHANDLER (SIGFPE, sigfpe_handler); @@ -272,7 +302,7 @@ static RETSIGTYPE sigint_handler (int sig) { - MAYBE_UNBLOCK_SIGNAL (sig); + MAYBE_ACK_SIGNAL (sig); MAYBE_REINSTALL_SIGHANDLER (sig, sigint_handler); @@ -288,7 +318,7 @@ static RETSIGTYPE sigpipe_handler (int /* sig */) { - MAYBE_UNBLOCK_SIGNAL (SIGPIPE); + MAYBE_ACK_SIGNAL (SIGPIPE); MAYBE_REINSTALL_SIGHANDLER (SIGPIPE, sigpipe_handler);