Re: 'continue' does not work in files sourced with dotcmd

2011-07-10 Thread Jilles Tjoelker
On Sat, Jul 09, 2011 at 10:07:30PM +0800, Herbert Xu wrote:
 On Sat, Jul 09, 2011 at 03:07:04PM +0200, Jilles Tjoelker wrote:
  A fix for dash is below. The dash code is broken in a different way than
  the FreeBSD sh code was, but the patched code is pretty much the same.
  This makes the above test work and does not change the outcome of any
  other tests in the FreeBSD sh testsuite.

 You're right.  But I think your patch may introduce a problem
 with a return statement inside a dot script.  That should not
 have an effect after exiting the script.

Interesting. Dash has been returning from the closest scope (function or
sourced script) for a while, but the SKIPFUNC/SKIPFILE distinction and
the comment in eval.c returncmd()

]   /*
]* If called outside a function, do what ksh does;
]* skip the rest of the file.
]*/

still gave me the impression that it behaved like older ash (also in
FreeBSD and NetBSD), trying to be bug-compatible with the Bourne shell
by having 'return' return from a function, if any, and only return from
a dot script if there is no function (because the Bourne shell gives an
error in that case).

It may be better to name the constant SKIPRETURN rather than SKIPFUNC.

 Anyway, the following patch based on your idea should fix the
 problem.

 commit 4f7e206782675b548565ca2bc82bc8c262a0f20e
 Author: Herbert Xu herb...@gondor.apana.org.au
 Date:   Sat Jul 9 22:05:22 2011 +0800
 
 [BUILTIN] Merge SKIPFUNC/SKIPFILE and only clear SKIPFUNC when leaving 
 dotcmd

Yes, this works too.

-- 
Jilles Tjoelker
--
To unsubscribe from this list: send the line unsubscribe dash in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


'continue' does not work in files sourced with dotcmd

2011-02-26 Thread Taylan Ulrich B.
Using latest dash from git.
Transcript:

$ echo continue  foo
$ for i in 1; do . ./foo; echo foobar; done
foobar
$

By the way you guys should look into the Debian bugtracker for their
dash package, if you don't already; most of the bugs there are
probably upstream.

Dash is awesome.
Regards,
Taylan
--
To unsubscribe from this list: send the line unsubscribe dash in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html