原です。

cbreak.rb は Sun 用なわけですが、freebsd 2.2.2 上でも

  TIOCGETP = 0x40067408
  TIOCSETP = 0x80067409

という値は等しいので、動くのでは無いかと思ったのですが実際は、

ruby-1.4.2/sample/cbreak.rb:28:in `ioctl': bignum too big to convert
into `int' (ArgumentError)
        from ruby-1.4.2/sample/cbreak.rb:28:in `set_cbreak'
        from ruby-1.4.2/sample/cbreak.rb:9:in `cbreak'
        from ruby-1.4.2/sample/cbreak.rb:30

と言われてしまいます。これをみると、

  STDIN.ioctl(TIOCGETP, tty)

はいいのだが、

  STDIN.ioctl(TIOCSETP, tty)

はダメだと言っている様です。どう直したらいいでしょうか?