[PATCH] make it possible to keep Config/Kbuild snippets in *.c files

Cristian Ionescu-Idbohrn cristian.ionescu-idbohrn at axis.com
Sat May 15 17:57:49 UTC 2010


On Sat, 15 May 2010, Denys Vlasenko wrote:

> On Friday 14 May 2010 21:44, Cristian Ionescu-Idbohrn wrote:
> > On Fri, 14 May 2010, Denys Vlasenko wrote:
> >
> > > I did discover a lot of interesting details about shells
> > > while hacking on them. One is that bare "read"
> > > is NOT the same thing as "read REPLY"! Look at this:
> > >
> > > $ echo "  foo  b\ar  " | { read -r; echo "[$REPLY]"; }
> > > [  foo  b\ar  ]
> >
> > $ dash -c 'echo "  foo  b\ar  " | { read -r; echo "[$REPLY]"; }'
> > read: 1: arg count
> > []
>
> They are not bash compat :)

Pick any one shell as _the_ reference shell and compare it with all other
major shells.  The in"compat"ibilities (bash or not bash) will be
noticable.

> > > $ echo "  foo  b\ar  " | { read -r REPLY; echo "[$REPLY]"; }
> > > [foo  b\ar]
> >
> > $ dash -c 'echo "  foo  b\ar  " | { read -r REPLY; echo "[$REPLY]"; }'
> > [foo  br]
> >
> > (with a bell ringing)
>
> Bug per http://www.opengroup.org/onlinepubs/009695399/utilities/read.html

Yes.  And there's still a lot of room for interpretation:

-r
    Do not treat a backslash character in any special way. Consider each
    backslash to be part of the input line.

But what is an input line?

Is this an input line?

	bash$ read -r REPLY <<EOF
	>   foo  b\ar
	> EOF
	bash$ echo "[$REPLY]"
	[foo  b\ar]

Is this an input line too?

	bash$ echo "  foo  b\ar  " | { read REPLY; echo "[$REPLY]"; }
	[foo  bar]

Busybox ash imitating bash:

	ash$ read -r REPLY <<EOF
	>     foo  b\ar
	> EOF
	ash$ echo "[$REPLY]"
	[foo  b\ar]

	ash$ echo "  foo  b\ar  " | { read REPLY; echo "[$REPLY]"; }
	[foo  bar]

What about this?

	dash$ read -r REPLY <<EOF
	>    foo  b\ar
	> EOF
	dash$ echo "[$REPLY]"
	[foo  br]

	dash$ echo "  foo  b\ar  " | { read REPLY; echo "[$REPLY]"; }
	[foo  br]

(rings the bell in both cases)


But I thought we were discussing the bash REPLY obfuscatin, did we not?


Cheers,

-- 
Cristian


More information about the busybox mailing list