diff options
-rw-r--r-- | source3/rpcclient/rpcclient.c | 32 |
1 files changed, 31 insertions, 1 deletions
diff --git a/source3/rpcclient/rpcclient.c b/source3/rpcclient/rpcclient.c index 9648c4d28fd..84504b16fba 100644 --- a/source3/rpcclient/rpcclient.c +++ b/source3/rpcclient/rpcclient.c @@ -257,6 +257,37 @@ static void do_command(struct client_info *info, char *tok, char *line) } } +#ifndef HAVE_LIBREADLINE +/**************************************************************************** +wait for keyboard activity, swallowing network packets +****************************************************************************/ +static void wait_keyboard(void) +{ + fd_set fds; + struct timeval timeout; + + while (1) { + FD_ZERO(&fds); + FD_SET(cli->fd,&fds); + FD_SET(fileno(stdin),&fds); + + timeout.tv_sec = 20; + timeout.tv_usec = 0; + sys_select(MAX(cli->fd,fileno(stdin))+1,&fds,&timeout); + + if (FD_ISSET(fileno(stdin),&fds)) + return; + + /* We deliberately use receive_smb instead of + client_receive_smb as we want to receive + session keepalives and then drop them here. + */ + if (FD_ISSET(cli->fd,&fds)) + receive_smb(cli->fd,cli->inbuf,0); + } +} +#endif + /**************************************************************************** process commands from the client ****************************************************************************/ @@ -340,7 +371,6 @@ static BOOL process( struct client_info *info, char *cmd_str) /* Copy read line to samba buffer */ pstrcpy(line, rl_line_buffer); - pstrcat(line, "\n"); /* Add to history */ |