lua-users home
lua-l archive

[Date Prev][Date Next][Thread Prev][Thread Next] [Date Index] [Thread Index]


It was thus said that the Great HyperHacker once stated:
> On Tue, Sep 6, 2011 at 00:51, Josh Simmons <simmons.44@gmail.com> wrote:
> > On Tue, Sep 6, 2011 at 4:39 PM, HyperHacker <hyperhacker@gmail.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
	success.

  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:

	ERRORS 

		EBADF fd is not a valid file descriptor or is not open for
		writing.

		...

  -spc