"GOT", but the "O" is a cute, smiling pufferfish. Index | Thread | Search

From:
Tracey Emery <tracey@traceyemery.net>
Subject:
Re: regress common.sh: POSIX arithmetic for trim_obj_id()
To:
Christian Weisgerber <naddy@mips.inka.de>, gameoftrees@openbsd.org
Date:
Wed, 16 Sep 2020 15:07:48 -0600

Download raw body.

Thread
On Wed, Sep 16, 2020 at 10:01:22PM +0200, Stefan Sperling wrote:
> On Wed, Sep 16, 2020 at 07:37:01PM +0200, Christian Weisgerber wrote:
> > Replace ksh syntax with POSIX arithmetic expressions.
> > 
> > This one had me puzzled.  How did the while condition ever work?
> > Apparently, variables are expanded without '$' for arithmetic(!)
> > comparisons inside [[ ... ]] and in our (k)sh this behavior accidentally
> > leaks out to [ ... ].
> > 
> > Mark the variables as "local" while here.  Actually, "local" isn't
> > part of the POSIX shell language, but it's used pervasively in these
> > scripts and seems widely supported in practice.
> > 
> > ok?
> 
> Yes, ok.
> 
> I think this is a case where I bashed my head against a wall until

Don't you mean you kshed your head against a wall? *snicker*

> I somehow got it working, without giving any consideration to POSIX.
> 
> > diff 0429cd76586cecb81d322546ab686ce527eb8f83 /home/naddy/got
> > blob - e95df3908f366957e8608730cd2dc49e62155ac0
> > file + regress/cmdline/common.sh
> > --- regress/cmdline/common.sh
> > +++ regress/cmdline/common.sh
> > @@ -96,13 +96,13 @@ git_show_tree()
> >  
> >  trim_obj_id()
> >  {
> > -	let trimcount=$1
> > -	id=$2
> > +	local trimcount=$1
> > +	local id=$2
> >  
> > -	pat=""
> > -	while [ trimcount -gt 0 ]; do
> > +	local pat=""
> > +	while [ "$trimcount" -gt 0 ]; do
> >  		pat="[0-9a-f]$pat"
> > -		let trimcount--
> > +		trimcount=$((trimcount - 1))
> >  	done
> >  
> >  	echo ${id%$pat}
> > -- 
> > Christian "naddy" Weisgerber                          naddy@mips.inka.de
> > 
> > 

-- 

Tracey Emery