View | Details | Raw Unified | Return to bug 2719 | Differences between
and this patch

Collapse All | Expand All

(-)a/sftp.c (-1 / +20 lines)
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
- 

Return to bug 2719