X-Git-Url: http://git.tuebingen.mpg.de/?p=paraslash.git;a=blobdiff_plain;f=interactive.c;h=c34a0f6eb3c5ff3fd6fcb0e85546a180d21fd880;hp=b72148cc41df54e79f0da53bd4853ba979674a0c;hb=dda88dcb390a44e1f1f68f6248ed513c75dce4bf;hpb=5a74392f53dcecfb39c541853ddca427975c7fa3 diff --git a/interactive.c b/interactive.c index b72148cc..c34a0f6e 100644 --- a/interactive.c +++ b/interactive.c @@ -38,6 +38,7 @@ struct i9e_private { bool caught_sigterm; Keymap standard_km; Keymap bare_km; + int fd_flags[2]; }; static struct i9e_private i9e_private, *i9ep = &i9e_private; @@ -254,6 +255,8 @@ void i9e_close(void) if (hf) write_history(hf); wipe_bottom_line(); + fcntl(i9ep->ici->fds[0], F_SETFL, i9ep->fd_flags[0]); + fcntl(i9ep->ici->fds[1], F_SETFL, i9ep->fd_flags[1]); } static void clear_bottom_line(void) @@ -476,6 +479,14 @@ int i9e_open(struct i9e_client_info *ici, struct sched *s) memset(i9ep, 0, sizeof(struct i9e_private)); if (!isatty(ici->fds[0])) return -E_I9E_SETUPTERM; + ret = fcntl(ici->fds[0], F_GETFL); + if (ret < 0) + return -E_I9E_SETUPTERM; + i9ep->fd_flags[0] = ret; + ret = fcntl(ici->fds[1], F_GETFL); + if (ret < 0) + return -E_I9E_SETUPTERM; + i9ep->fd_flags[1] = ret; ret = mark_fd_nonblocking(ici->fds[0]); if (ret < 0) return ret;