lua-users home
lua-l archive

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


I have done similar things in the past. Each time I have cloned
liolib.c, its not hard work and it may suit you.

DB
On 12/2/05, Jens Alfke <jens@mooseyard.com> wrote:
>
>
> On 1 Dec '05, at 3:15 PM, Javier Guerra wrote:
>
>
> it's not obvious if you're used to other languages, but in Lua you can just
>
> redefine any function; in other words, the io package is just a table with
>
> functions, and, like any table, can be modified:
>
>
>
>
> io.write = mywritefunc
> OK. Then my next question is, what are the core bottlenecks that output goes
> through? In other words, what's the minimal set of functions I have to
> replace? There seem to be many different ways to write to stdout:
>  print()
>  io.write()
>  io.output():write()
>  io.stdout():write()
> From the reference, it looks like print() calls io.stdout():write(), and
> io.write() calls io.output:write().
>
>
> also, you could modify a file's metatable to change it's behavior:
> getmetatable (io.output()).write = mywritefunc
> Would it work to create my own 'object' (table) and add a 'write' method to
> it, then make that the default output file? That sounds like it should work,
> unless there is code inside the Lua VM that knows that files are userdata
> and gropes the FILE* pointers out of them.
>
> Something like:
>
>  myout = {
>  write = function(self,str) ..... end
>  }
>  io.output(myout)
>  print("hello world")
>
> --Jens