Hello All,
perhaps someone could help me with this:
(apply 'call-process "sleep" nil nil nil (list "30"))
cannot be interrupted within 30 seconds.
The C-g is only accepted when sleep returns after 30 seconds.
The reason for this is that on Windows NT
read_allowing_quit() used to read from the XEmacs stdin Lstream
connected to the child-process calls
int
sys_read_1 (int fildes, void *buf, size_t nbyte, int allow_quit)
{
int rtnval;
/* No harm in looping regardless of the INTERRUPTIBLE_IO setting. */
while ((rtnval = read (fildes, buf, nbyte)) == -1
&& (errno == EINTR))
{
if (allow_quit)
REALLY_QUIT;
}
return rtnval;
}
Problem is that on NT the read() call in sys_read_1(...) is not
interruptible by C-g. Therfor the "if (allow_quit) { ... }" test
is only done after the child process completes.
Any ideas what I could do to make (call-process ...) interruptible on
Windows NT native?
Is there a way to make read(...) interruptible on Windows NT?
Best regards,
Adrian