[Date Prev][Date Next][Thread Prev][Thread Next]
[Date Index]
[Thread Index]
- Subject: Re: Standalone lua, stdin, and arguments
- From: David Burgess <dburgess@...>
- Date: Wed, 12 Oct 2005 10:06:57 +1000
Same think works on windows. Except
@echo "print(arg)" | lua /dev/stdin arg1
On 10/12/05, David Given <dg@cowlark.com> wrote:
> On Tuesday 11 October 2005 23:04, David Burgess wrote:
> > I agree that it is a bug. The same problem occurs with
> >
> > lua - -e print(arg) -- "arg1" or
> > lua - -e print(...) -- "arg1"
> >
> > What is your suggested solution?
>
> What I've done is to change the relevant chunk of code at the end of
> handle_argv() with this:
>
> if (argv[i] != NULL) {
> const char *filename = argv[i];
> getargs(argv, i); /* collect arguments */
> lua_setglobal(L, "arg");
> if (strcmp(filename, "/dev/stdin") == 0)
> filename = NULL;
> return file_input(filename); /* stop scanning arguments */
> }
>
> This allows:
>
> echo "print(arg)" | lua /dev/stdin arg1
>
> This mirrors the behaviour of a bunch of other tools such as awk that allow
> stdin, stdout etc to be specified in this way; plus, on Linux and AFAIK some
> other Unices, there really *is* a device called /dev/stdin that maps to fd 0.
> (And /dev/fd/0, and /proc/self/fd/0...)
>
> However, this doesn't really make sense on non-Unix platforms, and so may not
> be suitable as a generic solution.
>
> I'm using Lua 5.0, BTW.
>
> --
> +- David Given --McQ-+ "I smell a rat; I see him forming in the air &
> | dg@cowlark.com | darkening the sky; but I'll nip him in the bud."
> | (dg@tao-group.com) | --- Sir Boyle Roche
> +- www.cowlark.com --+
>
>
>
>