[Date Prev][Date Next][Thread Prev][Thread Next]
- Subject: Re: file:write() fails silently for read-only files
- From: Sean Conner <sean@...>
- Date: Tue, 6 Sep 2011 03:14:21 -0400
It was thus said that the Great HyperHacker once stated:
> On Tue, Sep 6, 2011 at 00:51, Josh Simmons <firstname.lastname@example.org> wrote:
> > On Tue, Sep 6, 2011 at 4:39 PM, HyperHacker <email@example.com> wrote:
> >> Lua 5.1.4 Copyright (C) 1994-2008 Lua.org, PUC-Rio
> >>> f=io.open('foo.foo', 'r')
> >>> f:write('ffd')
> >>> f:close()
> >> Call me crazy, but I feel like f:write() should throw an error when
> >> trying to write to a read-only file, instead of just doing nothing.
> >> --
> >> Sent from my toaster.
> > Check the return value of write.
> I get "bad file descriptor" which seems rather misleading. No return
> value is documented in the manual though.
Re-read section 5.7:
Unless otherwise stated, all I/O functions return nil on failure
(plus an error message as a second result and a system-dependent
error code as a third result) and some value different from nil on
Also, under Unix, the write() system call (which is the system call that
f:write() eventually calls) can return EBADF (which translates to "bad file
descriptor") as described in the man page:
EBADF fd is not a valid file descriptor or is not open for