[#58149] [ruby-trunk - Feature #9076][Open] New one-argument block syntax: &. — "asterite (Ary Borenszweig)" <ary@...>

23 messages 2013/11/04

[#58176] [ruby-trunk - Bug #9082][Open] popen3 hangs when stderr gets lots of output — "rosenfeld (Rodrigo Rosenfeld Rosas)" <rr.rosas@...>

15 messages 2013/11/05

[#58207] [ruby-trunk - Bug #9089][Open] rb_fix2uint no longer raises a RangeError when given negative values — "NoKarma (Arthur Schreiber)" <schreiber.arthur@...>

9 messages 2013/11/06

[#58243] [ruby-trunk - Feature #9098][Open] Indent heredoc against the left margin by default when "indented closing identifier" is turned on. — "sikachu (Prem Sichanugrist)" <s@...>

24 messages 2013/11/09

[#58306] [ruby-trunk - Bug #9106][Open] 'gem install' doesn't copy .so files of ext libs — "tagomoris (Satoshi TAGOMORI)" <tagomoris@...>

15 messages 2013/11/13

[#58324] [ruby-trunk - Feature #9108][Open] Hash sub-selections — "wardrop (Tom Wardrop)" <tom@...>

28 messages 2013/11/14

[#58342] [ruby-trunk - Feature #9112][Open] Make module lookup more dynamic (Including modules into a module after it has already been included) — "PragTob (Tobias Pfeiffer)" <pragtob@...>

16 messages 2013/11/14

[#58350] [ruby-trunk - Feature #9113][Open] Ship Ruby for Linux with jemalloc out-of-the-box — "sam.saffron (Sam Saffron)" <sam.saffron@...>

59 messages 2013/11/15

[#58374] [ruby-trunk - Bug #9115][Open] Logger traps all exceptions; breaks Timeout — "cphoenix (Chris Phoenix)" <cphoenix@...>

10 messages 2013/11/16

[#58375] [ruby-trunk - Feature #9116][Open] String#rsplit missing — "artagnon (Ramkumar Ramachandra)" <artagnon@...>

12 messages 2013/11/16

[#58396] [ruby-trunk - Bug #9121][Open] [PATCH] Remove rbtree implementation of SortedSet due to performance regression — "xshay (Xavier Shay)" <contact@...>

15 messages 2013/11/18

[#58404] [ruby-trunk - Feature #9123][Open] Make Numeric#nonzero? behavior consistent with Numeric#zero? — "sferik (Erik Michaels-Ober)" <sferik@...>

40 messages 2013/11/18

[#58411] [ruby-trunk - Bug #9124][Open] TestSocket errors in test-all on Arch 64-bit — "jonforums (Jon Forums)" <redmine@...>

14 messages 2013/11/18

[#58438] [ruby-trunk - Bug #9129][Open] Regression in support for IPv6 literals in URIs with Net::HTTP — "kallistec (Daniel DeLeo)" <dan@...>

11 messages 2013/11/19

[#58545] [ruby-trunk - Feature #9145][Open] Queue#pop(true) return nil if empty instead of raising ThreadError — "jsc (Justin Collins)" <redmine@...>

9 messages 2013/11/24

[#58653] [ruby-trunk - Bug #9170][Open] Math.sqrt returns different types when mathn is included; breaks various gems - this bug can be reproduced in Ruby 1.8 as well — "kranzky (Jason Hutchens)" <JasonHutchens@...>

7 messages 2013/11/28

[ruby-core:58538] [ruby-trunk - Bug #9144][Open] ptys on AIX version 4 through 7

From: "pedz (Perry Smith)" <pedz@...>
Date: 2013-11-23 19:14:57 UTC
List: ruby-core #58538
Issue #9144 has been reported by pedz (Perry Smith).

----------------------------------------
Bug #9144: ptys on AIX version 4 through 7
https://bugs.ruby-lang.org/issues/9144

Author: pedz (Perry Smith)
Status: Open
Priority: Normal
Assignee: 
Category: 
Target version: 
ruby -v: ruby 2.0.0p247 (2013-06-27 revision 41674) [powerpc-aix6.1.0.0]
Backport: 1.9.3: UNKNOWN, 2.0.0: UNKNOWN


The best way to open a pty on AIX version 4 through 7 is using what they call "AT&T" mode.  The steps are to first open "/dev/ptc" which opens the master side.  Then to a ttyname on the file descriptor and open the string that is returned to open the slave side.

cat q.c
#include <stdio.h>
#include <fcntl.h>

int main(int argc, char *argv[])
{
  int master = open("/dev/ptc", O_RDWR);
  char *slave_name = ttyname(master);
  int slave = open(slave_name, O_RDWR);
  int n;
  char buf[128];

  printf("slave name is %s\n", slave_name);
  printf("master fd is %d, slave fd is %d\n", master, slave);
  write(master, "blah\n", 5);
  n = read(slave, buf, sizeof(buf));
  printf("n = %d\n", n);
  printf("%*.*s", n, n, buf);
  write(slave, "foodog\n", 7);
  n = read(master, buf, sizeof(buf));
  printf("n = %d\n", n);
  printf("%*.*s", n, n, buf);
  return 0;
}

make q
cc     q.c   -o q

./q
slave name is /dev/pts/9
master fd is 3, slave fd is 5
n = 5
blah
n = 14
blah
foodog

(Note that ECHO is set on the tty which is why we see 'blah' when the slave is read.)

You can also use what the ruby code calls BSD 4.2 ptys.  On my build that I did as simply as possible, I'm not sure which code I got but it is not working.  I have several versions of Ruby and all fail with "can't get Master/Slave device (RuntimeError)"  While "BSD" mode is supported and works, the "AT&T" mode is much nicer.

For AIX version 3, there was a similar approach but instead of /dev/ptc, the master was called /dev/ptm.  

The _IBMESA code in ext/pty/pty.c (which mentions AIX) I don't recognize those names.

There is no need to push any streams modules, etc.  Everything is autopushed.  You might want to add in a grantpt but I'm still not clear when and if that is needed.



-- 
http://bugs.ruby-lang.org/

In This Thread

Prev Next