[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [PATCH v6] acpi: Prevent GPL-only code from seeping into non-GPL binaries



Boris Ostrovsky writes ("Re: [PATCH v6] acpi: Prevent GPL-only code from 
seeping into non-GPL binaries"):
> On 09/26/2016 10:45 AM, Ian Jackson wrote:
> > If the indices are necessarily successive integers:
> >
> >   links="A B C D"
> >   index=0
> >   for link in $links; do
> >     index=$(( $index + 1 ))
> >     something with $link and $index
> >
> > If the indices are arbitrary:
> >
> >   links="1:A 4:B 7:C 10:D"
> >   for linkinfo in $links; do
> >     link=${linkinfo#*:}
> >     index=${linkinfo%%:*}
> >     something with $link and $index
> 
> 
> The indices are not successive, in one case they are a function of two
> enclosing loop indices, such as

By `indices' I meant the things which in your code are 1 2 3 4.
Apparently there is a different thing called an `idx'.

Your code below suggests that the numbers you need for each A B C D
are indeed successive integers.

> for dev in $(seq 1 31)
> do
>     for intx in $(seq 0 3)
>     do
>     link_idx=$(((dev + intx) & 3))
>     printf "            Package(){0x%04xffff, %u, \\\\_SB.PCI0.LNK%c,
> 0},\n" \
>         $dev $intx ${links:$link_idx:1}
>     done
> done
> 
> (And then there might also be a question of portability with the second
> approach?)
> 
> So if you don't object to
> 
>     link=`echo "A B C D" | cut -d" " -f $i`
> 
> I'd rather go with that.

I would still prefer

   links="A B C D"
   linkcounter=0
   for link in $links
   do
       linkcounter=$(( $linkcounter + 1))
       link_idx=$(( ($dev + $linkcounter) & 3 ))

I think this is a lot easier to read than messing about with seq and
string slicing.

NB that the spaces inside the $(( )) are IMO essential for
readability.

Ian.

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
https://lists.xen.org/xen-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.