mooring@grimoire (Ed Mooring) (10/23/90)
The select() operator in perl3.0 pl3[67] is broken. The fourth argument (when it is used as the BSD select() function), is never evaluated, nor is it passed to the OS. I believe that a change to consarg.c uncovered an old bug in arg.h. The fix I came up with follows as a context diff: *** arg.h Mon Oct 22 17:34:19 1990 --- arg.h.old Mon Oct 22 17:33:51 1990 *************** *** 896,902 **** A(1,1,0), /* ACCEPT */ A(1,1,3), /* SEND */ A(1,1,3), /* RECV */ ! A5(1,1,1,1,0), /* SSELECT */ A(1,1,1), /* SOCKPAIR */ A(0,3,0), /* DBSUBR */ A(1,0,0), /* DEFINED */ --- 896,902 ---- A(1,1,0), /* ACCEPT */ A(1,1,3), /* SEND */ A(1,1,3), /* RECV */ ! A(1,1,1), /* SSELECT */ A(1,1,1), /* SOCKPAIR */ A(0,3,0), /* DBSUBR */ A(1,0,0), /* DEFINED */ *************** I've tested it a little, and it seems to work, but caveat implementor as usual. Ed Mooring (mooring@tymix.tymnet.com 408-922-7504)
lwall@jpl-devvax.JPL.NASA.GOV (Larry Wall) (10/23/90)
In article <3896@tymix.UUCP> mooring@grimoire (Ed Mooring) writes:
: The select() operator in perl3.0 pl3[67] is broken. The fourth argument
: (when it is used as the BSD select() function), is never evaluated, nor
: is it passed to the OS. I believe that a change to consarg.c uncovered
: an old bug in arg.h. The fix I came up with follows as a context diff:
: *** arg.h Mon Oct 22 17:34:19 1990
: --- arg.h.old Mon Oct 22 17:33:51 1990
: ***************
: *** 896,902 ****
: A(1,1,0), /* ACCEPT */
: A(1,1,3), /* SEND */
: A(1,1,3), /* RECV */
: ! A5(1,1,1,1,0), /* SSELECT */
: A(1,1,1), /* SOCKPAIR */
: A(0,3,0), /* DBSUBR */
: A(1,0,0), /* DEFINED */
: --- 896,902 ----
: A(1,1,0), /* ACCEPT */
: A(1,1,3), /* SEND */
: A(1,1,3), /* RECV */
: ! A(1,1,1), /* SSELECT */
: A(1,1,1), /* SOCKPAIR */
: A(0,3,0), /* DBSUBR */
: A(1,0,0), /* DEFINED */
: ***************
: I've tested it a little, and it seems to work, but caveat implementor
: as usual.
That's the correct patch for that, and it will be in patch38, but you
should realize that recv, socket, socketpair, and setsockopt are broken
the same way. I suppose I could blame it all on Chip, but I'll refrain...
Larry