From: Austin S. <te...@of...> - 2004-10-08 20:48:30
|
On Fri, Oct 08, 2004 at 11:28:37AM +0200, Roland Giersig wrote: > > Hmm, in the 'perl Makefile.PL' step I'm trying to figure out what > constants are defined by compiling test progs for each constant. Austin, > as you seem to have a solaris machine on your hands, could you look into > that and see why it gets defined? > On my solaris machine I'm not able to replicate the issue because I'm running an old perl: 5.00503, which doesn't exhibit this problem and I can't get 5.8.4 to compile. However, I _was_ able to replicate this on my home linux workstation by commenting out #define TIOCSCTTY in /usr/include/asm/ioctls.h. I'm not sure why the code in question is being executed. Running it in the debugger I still couldn't figure it out (output follows). It looks to me like a perl bug. However, I was able to work around it by changing line 118 to: if (defined TIOCSCTTY && TIOCSCTTY) { which _should_ be valid - I doubt any vendor defines TIOCSCTTY as 0. Austin DB<5> p defined TIOCSCTTY DB<6> l 118==> if (defined TIOCSCTTY) { 119: if (not defined ioctl( ${*$self}{'io_pty_slave'}, TIOCSCTTY, 0 )) { 120: warn "warning: TIOCSCTTY failed, slave might not be set as control ling terminal: $!" if $^W; 121 } 122 } elsif (defined TCSETCTTY) { 123: if (not defined ioctl( ${*$self}{'io_pty_slave'}, TCSETCTTY, 0 )) { 124: warn "warning: TCSETCTTY failed, slave might not be set as control ling terminal: $!" if $^W; 125 } 126 } 127 DB<6> s IO::Pty::make_slave_controlling_terminal(/root/.cpan/build/IO-Tty-1.02/blib/lib/ IO/Pty.pm:119): 119: if (not defined ioctl( ${*$self}{'io_pty_slave'}, TIOCSCTTY, 0 )) { DB<6> p defined TIOCSCTTY DB<7> p defined TIOCSCTTY DB<8> if(defined TIOCSCTTY) { print "defined\n"; } DB<9> n IO::Pty::make_slave_controlling_terminal(/root/.cpan/build/IO-Tty-1.02/blib/lib/IO/Pty.pm:119): 119: if (not defined ioctl( ${*$self}{'io_pty_slave'}, TIOCSCTTY, 0 )) { DB<9> n Use of uninitialized value in ioctl at /root/.cpan/build/IO-Tty-1.02/blib/lib/IO/Pty.pm line 119, <XT> line 1. IO::Pty::make_slave_controlling_terminal('IO::Pty=GLOB(0x8171f8c)') called at test.pl line 66 IO::Pty::make_slave_controlling_terminal(/root/.cpan/build/IO-Tty-1.02/blib/lib/IO/Pty.pm:120): 120: warn "warning: TIOCSCTTY failed, slave might not be set as controlling terminal: $!" if $^W; |