diff options
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | Src/Modules/zpty.c | 3 | ||||
-rw-r--r-- | Test/.distfiles | 1 | ||||
-rw-r--r-- | Test/V08zpty.ztst | 20 |
4 files changed, 29 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog index 74e0ebeb5..63c9be0a1 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2013-08-25 Peter Stephenson <p.w.stephenson@ntlworld.com> + + * Src/Modules/zpty.c, Test/V08zpty.ztst, Test/.distfiles: zpty + should attach terminal on slave. + 2013-08-17 Barton E. Schaefer <schaefer@zsh.org> * 31637: Src/builtin.c: change of directory should not be retried diff --git a/Src/Modules/zpty.c b/Src/Modules/zpty.c index 25ec7dfea..382119483 100644 --- a/Src/Modules/zpty.c +++ b/Src/Modules/zpty.c @@ -344,6 +344,8 @@ newptycmd(char *nam, char *pname, char **args, int echo, int nblock) if (get_pty(0, &slave)) exit(1); + SHTTY = slave; + attachtty(mypid); #ifdef TIOCGWINSZ /* Set the window size before associating with the terminal * * so that we don't get hit with a SIGWINCH. I'm paranoid. */ @@ -398,6 +400,7 @@ newptycmd(char *nam, char *pname, char **args, int echo, int nblock) opts[INTERACTIVE] = 0; execode(prog, 1, 0, "zpty"); stopmsg = 2; + mypid = 0; /* trick to ensure we _exit() */ zexit(lastval, 0); } master = movefd(master); diff --git a/Test/.distfiles b/Test/.distfiles index 689b69587..ab92153b0 100644 --- a/Test/.distfiles +++ b/Test/.distfiles @@ -40,6 +40,7 @@ V04features.ztst V05styles.ztst V06parameter.ztst V07pcre.ztst +V08zpty.ztst Y01completion.ztst Y02compmatch.ztst Y03arguments.ztst diff --git a/Test/V08zpty.ztst b/Test/V08zpty.ztst new file mode 100644 index 000000000..d9d24c5e8 --- /dev/null +++ b/Test/V08zpty.ztst @@ -0,0 +1,20 @@ +# zpty is required by tests of interactive modes of the shell itself. +# This tests some extra things. + +%prep + + if ! zmodload zsh/zpty 2>/dev/null + then + ZTST_unimplemented="the zsh/zpty module is not available" + return 0 + fi + +%test + + zpty cat cat + print a line of text | zpty -w cat + var= + zpty -r cat var && print -r -- ${var%%$'\r\n'} + zpty -d cat +0:zpty with a process that does not set up the terminal +>a line of text |