1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
|
--- Makefile 2005-03-24 16:19:34.187973102 +0000
+++ Makefile 2005-03-24 16:20:26.349215003 +0000
@@ -40,21 +40,42 @@
@echo
@echo "Looking for supported readline implementation"
@$(PERL) -MTerm::ReadLine \
+ -MPOSIX \
-MFcntl \
-e 'if ( !-t(STDOUT) && -c("/dev/ptmx") )' \
-e '{' \
-e ' require "sys/ioctl.ph";' \
- -e ' my $$ptn = 0;' \
- -e ' my $$unl = 0;' \
+ -e ' my $$ptn = pack(L => 0);' \
+ -e ' my $$unl = pack(L => 0);' \
-e ' sysopen(PTMX, "/dev/ptmx", O_RDWR|O_NDELAY);' \
- -e ' ioctl(PTMX, TIOCSPTLCK, $$unl);' \
- -e ' ioctl(PTMX, TIOCGPTN, $$ptn);' \
+ -e ' ioctl(PTMX, TIOCSPTLCK(), $$unl)' \
+ -e ' || warn("TIOCSPTLCK: $$!\n");' \
+ -e ' if( $$! == POSIX::EINVAL() )' \
+ -e ' {' \
+ -e ' warn("EINVAL: kludging ioctls\n"); '\
+ -e ' ioctl(PTMX, 0x40045431, $$unl)||die("SPTLCK:$$!\n");'\
+ -e ' ioctl(PTMX, 0x80045430, $$ptn)||die("GPTN :$$!\n");'\
+ -e ' warn( "ioctl() calls succeeded: ", ' \
+ -e ' unpack(L => $$ptn), "/" , ' \
+ -e ' unpack(L => $$unl), "\n" );' \
+ -e ' }' \
+ -e ' else { ioctl(PTMX, TIOCGPTN(), $$ptn) }' \
+ -e ' $$ptn = unpack(L => $$ptn);' \
-e ' sysopen(TTY, "/dev/pts/".$$ptn, O_RDWR)' \
- -e ' ||die("i", $$!, "\n");' \
+ -e ' ||die("/dev/pts/$$ptn: ", $$!, "\n");' \
+ -e ' warn( "TTY /dev/pts/$$ptn opened\n");' \
+ -e ' my $$tws; ' \
+ -e ' ioctl(TTY, TIOCGWINSZ(), $$tws)' \
+ -e ' ||die("TIOCGWINSZ() failed: $$!\n");' \
+ -e ' warn("TIOCGWINSZ succeeded\n");' \
+ -e ' open( STDIN , "<&TTY"); ' \
+ -e ' open( STDOUT, ">&TTY"); ' \
-e '}' \
-e 'else { *TTY = *STDIN }' \
- -e '$$x = Term::ReadLine->new("X", *TTY, *TTY)->ReadLine();' \
- -e 'print(STDOUT "readline == $$x\n");' \
+ -e 'warn("*TTY is", (-t(TTY) ? "" : " not"), " a pty\n" );' \
+ -e 'warn("fd of TTY is: ",fileno(TTY),"\n");' \
+ -e '$$x = Term::ReadLine->new("X", *TTY, *TTY)->ReadLine();'\
+ -e 'print(STDERR "readline == $$x\n");' \
-e '$$x =~ /^Term::ReadLine::(?:Gnu|Perl)$$/' \
-e ' || die("Must have Term::ReadLine::(Gnu|Perl)\n");'
|