version 1.85, 2001/10/24 08:51:35 |
version 1.86, 2001/10/24 19:57:40 |
|
|
continue; |
continue; |
|
|
case '&': |
case '&': |
/* XXX does not work yet with proto 2 */ |
|
if (compat20) |
|
continue; |
|
/* |
/* |
* Detach the program (continue to serve connections, |
* Detach the program (continue to serve connections, |
* but put in background and no more new connections). |
* but put in background and no more new connections). |
*/ |
*/ |
if (!stdin_eof) { |
|
/* |
|
* Sending SSH_CMSG_EOF alone does not always appear |
|
* to be enough. So we try to send an EOF character |
|
* first. |
|
*/ |
|
packet_start(SSH_CMSG_STDIN_DATA); |
|
packet_put_string("\004", 1); |
|
packet_send(); |
|
/* Close stdin. */ |
|
stdin_eof = 1; |
|
if (buffer_len(bin) == 0) { |
|
packet_start(SSH_CMSG_EOF); |
|
packet_send(); |
|
} |
|
} |
|
/* Restore tty modes. */ |
/* Restore tty modes. */ |
leave_raw_mode(); |
leave_raw_mode(); |
|
|
/* Stop listening for new connections. */ |
/* Stop listening for new connections. */ |
channel_close_all(); /* proto1 only XXXX */ |
channel_stop_listening(); |
|
|
printf("%c& [backgrounded]\n", escape_char); |
snprintf(string, sizeof string, |
|
"%c& [backgrounded]\n", escape_char); |
|
buffer_append(berr, string, strlen(string)); |
|
|
/* Fork into background. */ |
/* Fork into background. */ |
pid = fork(); |
pid = fork(); |
|
|
exit(0); |
exit(0); |
} |
} |
/* The child continues serving connections. */ |
/* The child continues serving connections. */ |
continue; /*XXX ? */ |
if (compat20) { |
|
buffer_append(bin, "\004", 1); |
|
/* fake EOF on stdin */ |
|
return -1; |
|
} else if (!stdin_eof) { |
|
/* |
|
* Sending SSH_CMSG_EOF alone does not always appear |
|
* to be enough. So we try to send an EOF character |
|
* first. |
|
*/ |
|
packet_start(SSH_CMSG_STDIN_DATA); |
|
packet_put_string("\004", 1); |
|
packet_send(); |
|
/* Close stdin. */ |
|
stdin_eof = 1; |
|
if (buffer_len(bin) == 0) { |
|
packet_start(SSH_CMSG_EOF); |
|
packet_send(); |
|
} |
|
} |
|
continue; |
|
|
case '?': |
case '?': |
snprintf(string, sizeof string, |
snprintf(string, sizeof string, |