chicken-hackers
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Chicken-hackers] [PATCH] resubmission of Win32-specific EINTR handl


From: Jim Ursetto
Subject: Re: [Chicken-hackers] [PATCH] resubmission of Win32-specific EINTR handling
Date: Mon, 16 Jan 2012 11:08:37 -0600

Signed off and pushed.
Jim

On Jan 5, 2012, at 2:42 AM, Felix wrote:

> Attached a patch submitted recently that adds win32-specific handling
> of EINTR in reado/peek-char. Without this patch Ctrl-C will be 
> treated like EOF and terminate csi.
> 
> The version attached adds a CYGWIN-specific preprocessor test.
> 
> Please consider signing this off, whoever you are.
> 
> 
> cheers,
> felix
> From fd5fbd2f1ca21e2964e0a27b7768532cf8dfe9bb Mon Sep 17 00:00:00 2001
> From: felix <address@hidden>
> Date: Thu, 5 Jan 2012 09:34:06 +0100
> Subject: [PATCH] Added win32-specific keyboard-interrupt handling in
> read/peek char routines in C runtime system, according to
> information found here:
> 
>  http://mail.python.org/pipermail/python-bugs-list/2002-July/012579.html
> 
> Without this patch SIGINT will result in the input routine returning EOF
> which makes csi exit.
> ---
> runtime.c |    9 +++++++++
> 1 files changed, 9 insertions(+), 0 deletions(-)
> 
> diff --git a/runtime.c b/runtime.c
> index 3c5f3a9..7f8fa5c 100644
> --- a/runtime.c
> +++ b/runtime.c
> @@ -3957,6 +3957,11 @@ C_regparm C_word C_fcall C_read_char(C_word port)
> 
>   if(c == EOF) {
>     if(errno == EINTR) return C_fix(-1);
> +    /* Found here:
> +       
> http://mail.python.org/pipermail/python-bugs-list/2002-July/012579.html */
> +#if defined(_WIN32) && !defined(__CYGWIN__)
> +    else if(GetLastError() == ERROR_OPERATION_ABORTED) return C_fix(-1);
> +#endif
>     else return C_SCHEME_END_OF_FILE;
>   }
> 
> @@ -3971,6 +3976,10 @@ C_regparm C_word C_fcall C_peek_char(C_word port)
> 
>   if(c == EOF) {
>     if(errno == EINTR) return C_fix(-1);
> +    /* see above */
> +#if defined(_WIN32) && !defined(__CYGWIN__)
> +    else if(GetLastError() == ERROR_OPERATION_ABORTED) return C_fix(-1);
> +#endif
>     else return C_SCHEME_END_OF_FILE;
>   }
> 
> -- 
> 1.7.6.msysgit.0
> 
> _______________________________________________
> Chicken-hackers mailing list
> address@hidden
> https://lists.nongnu.org/mailman/listinfo/chicken-hackers




reply via email to

[Prev in Thread] Current Thread [Next in Thread]