|
Lines 220-225
cmd_interrupt(int signo)
Link Here
|
| 220 |
errno = olderrno; |
220 |
errno = olderrno; |
| 221 |
} |
221 |
} |
| 222 |
|
222 |
|
|
|
223 |
/*ARGSUSED*/ |
| 224 |
static void |
| 225 |
sigchld_handler(int sig) |
| 226 |
{ |
| 227 |
int save_errno = errno; |
| 228 |
pid_t pid; |
| 229 |
const char msg[] = "\rConnection closed. \n"; |
| 230 |
|
| 231 |
/* Report if ssh transport process dies. */ |
| 232 |
while ((pid = waitpid(sshpid, NULL, WNOHANG)) == -1 && errno == EINTR) |
| 233 |
continue; |
| 234 |
if (pid == sshpid) |
| 235 |
(void)write(STDERR_FILENO, msg, sizeof(msg) - 1); |
| 236 |
|
| 237 |
errno = save_errno; |
| 238 |
} |
| 239 |
|
| 223 |
static void |
240 |
static void |
| 224 |
help(void) |
241 |
help(void) |
| 225 |
{ |
242 |
{ |
|
Lines 2119-2124
interactive_loop(struct sftp_conn *conn, char *file1, char *file2)
Link Here
|
| 2119 |
if (err != 0) |
2136 |
if (err != 0) |
| 2120 |
break; |
2137 |
break; |
| 2121 |
} |
2138 |
} |
|
|
2139 |
signal(SIGCHLD, SIG_DFL); |
| 2122 |
free(remote_path); |
2140 |
free(remote_path); |
| 2123 |
free(conn); |
2141 |
free(conn); |
| 2124 |
|
2142 |
|
|
Lines 2171-2176
connect_to_server(char *path, char **args, int *in, int *out)
Link Here
|
| 2171 |
signal(SIGTERM, killchild); |
2189 |
signal(SIGTERM, killchild); |
| 2172 |
signal(SIGINT, killchild); |
2190 |
signal(SIGINT, killchild); |
| 2173 |
signal(SIGHUP, killchild); |
2191 |
signal(SIGHUP, killchild); |
|
|
2192 |
signal(SIGCHLD, sigchld_handler); |
| 2174 |
close(c_in); |
2193 |
close(c_in); |
| 2175 |
close(c_out); |
2194 |
close(c_out); |
| 2176 |
} |
2195 |
} |