reassign 291039 dash reassign 291107 dash thanks There seems to be a problem with dash mistaking mistaking $(( ... ) ... ) as $(( exp ))
-- Horms On Wed, Jan 19, 2005 at 09:57:23AM +0100, Goswin von Brederlow wrote: > Horms <[EMAIL PROTECTED]> writes: > > > On Wed, Jan 19, 2005 at 09:23:27AM +0100, Goswin von Brederlow wrote: > >> Horms <[EMAIL PROTECTED]> writes: > >> > >> > On Tue, Jan 18, 2005 at 08:37:21PM +0100, Roberto Suarez Soto wrote: > >> >> Package: kernel-patch-debian-2.6.9 > >> >> Version: 2.6.9-5 > >> >> Severity: normal > >> >> > >> >> The file apply/debian > >> >> (/usr/src/kernel-patches/all/2.6.9/apply/debian > >> >> in my system) has a bashism in line 160: > >> >> > >> >> for base in $((cd $home/series/ && ls -d *) | sort -rnt- -k 2); > >> >> do > >> >> > >> >> I have dash as /bin/sh. So, when I try to apply the patch with > >> >> "make-kpkg --added-patches debian", it goes like this: > >> >> > >> >> /usr/src/kernel-patches/all/2.6.9/apply/debian: 160: Syntax error: > >> >> Missing '))' > >> >> > >> >> I think the solution would be to change the "$(...)" stuff for a > >> >> backquote block (i.e., "`...`") or to specify /bin/bash as the > >> >> shell > >> >> to use with this script. I've opted for the latter, but the > >> >> former > >> >> looks prettier :-) > >> > > >> > Wow, nobody notices this for months then two in one day. > >> > I just made a fix for this and sent it to #291039. Could you > >> > please test out the attached patch and see if it works for you. > >> > I agree that this is not a good state for things to be in. > >> > > >> > -- > >> > Horms > >> > > >> > Index: apply > >> > =================================================================== > >> > --- apply (revision 2324) > >> > +++ apply (working copy) > >> > @@ -38,7 +38,7 @@ > >> > } > >> > > >> > apply_patch() { > >> > - patch=$(find_patch $home/$1) > >> > + patch=`find_patch $home/$1` > >> > base=$1 > >> > if uncompress_patch "$patch" | patch -p1 -f -s -t > >> > --no-backup-if-mismatch; then > >> > printf "%-${length}s\tOK (+)\n" "$base" > >> > >> Nothing wrong with $(). In fact many people prefer $(). > > > > I am one of those people. I just assumed dash didn't like it ias it is > > the only thing suspicous I could see on line 160 > > $(...) works fine in dash and I see no difference in either line ($() > or ``). > > > > >> > @@ -139,8 +139,7 @@ > >> > die "Upstream $target_up doesn't match $upstream!" > >> > # We don't have that version out yet! > >> > elif [ ! -n "$target_rev" ] || ( [ "$target_rev" != "$target" ] && [ > >> > $target_rev -gt $revision ] ); then > >> > - year=$(($(date +%Y) + 1)) > >> > - die "Can't patch to nonexistent revision $target_rev (wait > >> > until $year)" > >> > + die "Can't patch to nonexistent revision $target_rev" > >> > fi > >> > > >> > # At this point, we must handle three cases. > >> > >> $(( ... )) is a math expression and $() a subshell. Both look fine too > >> me. > > > > Yes, I understand that. But the code is bogus and I took > > the chance to axe it. > > > >> Use $((`date +%Y` + 1)) if you must. > > > > Says he who just complained about using `` instead of $() > > > >> > @@ -157,7 +156,7 @@ > >> > exit 0 > >> > fi > >> > > >> > - for base in $((cd $home/series/ && ls -d *) | sort -rnt- -k 2); > >> > do > >> > + for base in `(cd $home/series/ && ls -d *) | sort -rnt- -k 2` do > >> > srev=${base#*-} > >> > if [ -n "$srev" ]; then > >> > if [ $srev -le $current_rev ]; then > >> > >> Could that be a bug in dash for mistaking $(( ... ) ... ) as $(( exp > >> )) construct? > > > > That is a possibility to. If so its a dash bug and I guess we > > don't need to change anything after all, just reassign the bug > > to dash. Can someone confirm this? > > I just tested it and dash does parse it as $(( ... )) and fails to > find any )) token. $( ( fixes it. > > I guess it should be fixed in the kernel so it works now and cloned > for dash unless you see a reason why $((...) | ... ) isn't legal > POSIX. > > >> $( (cd $home/series/ && ls -d *) | sort -rnt- -k 2); should work too. -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]