X-Git-Url: http://git.chise.org/gitweb/?a=blobdiff_plain;f=src%2Fsignal.c;h=f85d83c0bdfa6847425541cea124a1ced1fbdf7e;hb=c9aa6da219aea7d082594aad96332eca33402f2d;hp=eadc6d30e875480f404bdbf08e155ba109c13cba;hpb=77dcef404dc78635f6ffa8f71a803d2bc7cc8921;p=chise%2Fxemacs-chise.git.1 diff --git a/src/signal.c b/src/signal.c index eadc6d3..f85d83c 100644 --- a/src/signal.c +++ b/src/signal.c @@ -31,10 +31,7 @@ Boston, MA 02111-1307, USA. */ #include "syssignal.h" #include "systime.h" -#ifdef HAVE_UNISTD_H -#include -#endif -#include +#include "sysfile.h" /* Set to 1 when a quit-check signal (either a SIGIO interrupt or the asynch. timeout for poll-for-quit) occurs. The QUITP @@ -105,7 +102,7 @@ set_one_shot_timer (EMACS_TIME interval) struct itimerval it; it.it_value = interval; EMACS_SET_SECS_USECS (it.it_interval, 0, 0); - setitimer (ITIMER_REAL, &it, 0); + qxe_setitimer (ITIMER_REAL, &it, 0); #else int secs; EMACS_TIME_TO_INT (interval, secs); @@ -180,7 +177,7 @@ alarm_signal (int signo) it needs to stay the way it is. */ quit_check_signal_happened = 1; -#ifdef WINDOWSNT +#ifdef WIN32_NATIVE can_break_system_calls = 0; #else /* can_break_system_calls is set when we want to break out of @@ -330,6 +327,7 @@ handle_alarm_going_off (void) } #ifdef HAVE_SETITIMER + unsigned int alarm (unsigned int howlong) { @@ -343,12 +341,27 @@ alarm (unsigned int howlong) new_it.it_value.tv_usec = 0; new_it.it_interval.tv_sec = 0; new_it.it_interval.tv_usec = 0; - setitimer (ITIMER_REAL, &new_it, &old_it); + qxe_setitimer (ITIMER_REAL, &new_it, &old_it); /* Never return zero if there was a timer outstanding. */ return old_it.it_value.tv_sec + (old_it.it_value.tv_usec > 0 ? 1 : 0); } + +int +qxe_setitimer (int kind, const struct itimerval *itnew, + struct itimerval *itold) +{ +#if defined (WIN32_NATIVE) || defined (CYGWIN) + /* setitimer() does not exist on native MS Windows, and appears broken + on Cygwin. See win32.c. */ + return mswindows_setitimer (kind, itnew, itold); +#else + return setitimer (kind, itnew, itold); #endif +} + +#endif /* HAVE_SETITIMER */ + DEFUN ("waiting-for-user-input-p", Fwaiting_for_user_input_p, 0, 0, 0, /* Return non-nil if XEmacs is waiting for input from the user. @@ -420,19 +433,16 @@ interrupt_signal (int sig) stdout_out ("you can continue or abort.\n"); #endif /* not SIGTSTP */ stdout_out ("Auto-save? (y or n) "); - fflush (stdout); if (((c = getc (stdin)) & ~040) == 'Y') Fdo_auto_save (Qnil, Qnil); while (c != '\n') c = getc (stdin); stdout_out ("Abort (and dump core)? (y or n) "); - fflush (stdout); if (((c = getc (stdin)) & ~040) == 'Y') abort (); while (c != '\n') c = getc (stdin); stdout_out ("Continuing...\n"); - fflush (stdout); reinit_initial_console (); MARK_FRAME_CHANGED (XFRAME (DEVICE_SELECTED_FRAME (XDEVICE (CONSOLE_SELECTED_DEVICE