IO.seek behaving strangely on FreeBSD 4.9

Discussion in 'Ruby' started by Travis Whitton, Apr 1, 2004.

  1. Hi,
    Initially I thought that this was a bug with rubyzip, but it appears that
    something is wrong with IO.seek on FreeBSD 4.9 (at least on my system).

    [email protected]:~$ uname -a
    FreeBSD aop.intranet 4.9-RELEASE-p4 FreeBSD 4.9-RELEASE-p4
    #0: Wed Mar 17 16:55:09 EST 2004
    :/usr/obj/usr/src/sys/MYKERNEL i386

    [email protected]:~$ ruby -v
    ruby 1.8.1 (2003-12-25) [i386-freebsd4]

    [email protected]:~$ cat badseek.rb
    f = File.new("somefile.txt", "w") # make an empty file
    f.close
    f = File.new("somefile.txt")
    f.seek(-1, IO::SEEK_END)
    f.read

    [email protected]:~$ ruby badseek.rb
    badseek.rb:3:in `seek': File too large - somefile.txt (Errno::EFBIG)
    from badseek.rb:3

    I know that the seek index is invalid, so I should get Errno::EINVAL, but why
    am I getting Errno:EFBIG? This seems to be causing a problem preventing me
    from using rubyzip on my machine when it tries to do a valid seek on a zipfile.

    Thanks,
    Travis Whitton
     
    Travis Whitton, Apr 1, 2004
    #1
    1. Advertisements


  2. I get the EINVAL error on freebsd5.1

    server> rm somefile.txt
    server> ruby b.rb
    b.rb:4:in `seek': Invalid argument - somefile.txt (Errno::EINVAL)
    from b.rb:4
    server> cat b.rb
    f = File.new("somefile.txt", "w") # make an empty file
    f.close
    f = File.new("somefile.txt")
    f.seek(-1, IO::SEEK_END)
    f.read
    server> uname -a
    FreeBSD server.neoneye.dk 5.1-RELEASE FreeBSD 5.1-RELEASE #0: Thu Jun 5 02:55:42 GMT 2003 :/usr/obj/usr/src/sys/GENERIC i386
    server> ruby -v
    ruby 1.8.1 (2003-12-22) [i386-freebsd5.1]
    server>
     
    Simon Strandgaard, Apr 1, 2004
    #2
    1. Advertisements

  3. I get the EINVAL error on freebsd5.1

    Anybody here have a FreeBSD 4.9 system they can test on with ruby 1.8.1?
     
    Travis Whitton, Apr 1, 2004
    #3
  4. Hi,

    In message "Re: IO.seek behaving strangely on FreeBSD 4.9"

    |> I get the EINVAL error on freebsd5.1
    |
    |Anybody here have a FreeBSD 4.9 system they can test on with ruby 1.8.1?

    I did. It raises Errno::EFBIG.

    matz.
     
    Yukihiro Matsumoto, Apr 1, 2004
    #4
  5. I did. It raises Errno::EFBIG.

    Is this something the ruby interpreter will work around?
     
    Thomas Sondergaard, Apr 1, 2004
    #5
  6. Hi,

    In message "Re: IO.seek behaving strangely on FreeBSD 4.9"

    |> I did. It raises Errno::EFBIG.
    |
    |Is this something the ruby interpreter will work around?

    We just can't provide every work around for every bad behavior on
    every operating system. Most methods corresponding to system calls
    raise exception according to their errno status. If FreeBSD current
    reports EFBIG, the method would (and should) raise exception
    accordingly, I guess.

    matz.
     
    Yukihiro Matsumoto, Apr 2, 2004
    #6
    1. Advertisements

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments (here). After that, you can post your question and our members will help you out.