|
Lines 254-259
cmd_interrupt(int signo)
Link Here
|
| 254 |
errno = olderrno; |
254 |
errno = olderrno; |
| 255 |
} |
255 |
} |
| 256 |
|
256 |
|
|
|
257 |
/* Report if ssh transport process dies. */ |
| 258 |
/*ARGSUSED*/ |
| 259 |
static void |
| 260 |
sigchld_handler(int sig) |
| 261 |
{ |
| 262 |
int save_errno = errno; |
| 263 |
pid_t pid; |
| 264 |
const char msg[] = "\rConnection closed. \n"; |
| 265 |
|
| 266 |
while ((pid = waitpid(sshpid, NULL, WNOHANG|WNOWAIT)) == -1 && |
| 267 |
errno == EINTR) |
| 268 |
continue; |
| 269 |
if (pid == sshpid) |
| 270 |
(void)write(STDERR_FILENO, msg, sizeof(msg) - 1); |
| 271 |
|
| 272 |
errno = save_errno; |
| 273 |
} |
| 274 |
|
| 257 |
static void |
275 |
static void |
| 258 |
help(void) |
276 |
help(void) |
| 259 |
{ |
277 |
{ |
|
Lines 2168-2173
interactive_loop(struct sftp_conn *conn, char *file1, char *file2)
Link Here
|
| 2168 |
if (err != 0) |
2186 |
if (err != 0) |
| 2169 |
break; |
2187 |
break; |
| 2170 |
} |
2188 |
} |
|
|
2189 |
signal(SIGCHLD, SIG_DFL); |
| 2171 |
free(remote_path); |
2190 |
free(remote_path); |
| 2172 |
free(conn); |
2191 |
free(conn); |
| 2173 |
|
2192 |
|
|
Lines 2233-2238
connect_to_server(char *path, char **args, int *in, int *out)
Link Here
|
| 2233 |
signal(SIGTERM, killchild); |
2252 |
signal(SIGTERM, killchild); |
| 2234 |
signal(SIGINT, killchild); |
2253 |
signal(SIGINT, killchild); |
| 2235 |
signal(SIGHUP, killchild); |
2254 |
signal(SIGHUP, killchild); |
|
|
2255 |
signal(SIGCHLD, sigchld_handler); |
| 2236 |
signal(SIGTSTP, suspchild); |
2256 |
signal(SIGTSTP, suspchild); |
| 2237 |
signal(SIGTTIN, suspchild); |
2257 |
signal(SIGTTIN, suspchild); |
| 2238 |
signal(SIGTTOU, suspchild); |
2258 |
signal(SIGTTOU, suspchild); |
| 2239 |
- |
|
|