2009-11-13 Kazu Hirata <kazu@codesourcery.com>

Maxim Kuvyrkov  <maxim@codesourcery.com>

	* remote-fileio.c (remote_fileio_request): Send Ctrl-C if it is
	pending.
	* remote-fileio.h: Update the prototype for remote_fileio_request.
	* remote.c (struct remote_state): Add ctrlc_pending_p.
	(remote_open_1): Clear ctrlc_pending_p.
	(remote_stop_as): Set ctrlc_pending_p to 1.
	(remote_wait_as): Pass ctrlc_pending_p to remote_fileio_request.
This commit is contained in:
Daniel Jacobowitz 2009-11-13 22:36:30 +00:00
parent 3d8d5e79c0
commit 3a29589aa2
4 changed files with 57 additions and 17 deletions

View file

@ -1416,28 +1416,44 @@ remote_fileio_reset (void)
}
}
/* Handle a file I/O request. BUF points to the packet containing the
request. CTRLC_PENDING_P should be nonzero if the target has not
acknowledged the Ctrl-C sent asynchronously earlier. */
void
remote_fileio_request (char *buf)
remote_fileio_request (char *buf, int ctrlc_pending_p)
{
int ex;
remote_fileio_sig_init ();
remote_fio_ctrl_c_flag = 0;
remote_fio_no_longjmp = 0;
ex = catch_exceptions (uiout, do_remote_fileio_request, (void *)buf,
RETURN_MASK_ALL);
switch (ex)
if (ctrlc_pending_p)
{
case RETURN_ERROR:
remote_fileio_reply (-1, FILEIO_ENOSYS);
break;
case RETURN_QUIT:
remote_fileio_reply (-1, FILEIO_EINTR);
break;
default:
break;
/* If the target hasn't responded to the Ctrl-C sent
asynchronously earlier, take this opportunity to send the
Ctrl-C synchronously. */
remote_fio_ctrl_c_flag = 1;
remote_fio_no_longjmp = 0;
remote_fileio_reply (-1, FILEIO_EINTR);
}
else
{
remote_fio_ctrl_c_flag = 0;
remote_fio_no_longjmp = 0;
ex = catch_exceptions (uiout, do_remote_fileio_request, (void *)buf,
RETURN_MASK_ALL);
switch (ex)
{
case RETURN_ERROR:
remote_fileio_reply (-1, FILEIO_ENOSYS);
break;
case RETURN_QUIT:
remote_fileio_reply (-1, FILEIO_EINTR);
break;
default:
break;
}
}
remote_fileio_sig_exit ();