zsh-workers
 help / color / mirror / code / Atom feed
* Idiom
@ 2008-07-14 21:34 Jaime Vargas
  2008-07-14 21:58 ` Idiom Phil Pennock
  2008-07-15  7:58 ` Idiom Stephane Chazelas
  0 siblings, 2 replies; 3+ messages in thread
From: Jaime Vargas @ 2008-07-14 21:34 UTC (permalink / raw)
  To: Zsh hackers list

Is there a better way to setup the ${mask_octects} array?
Without the back-ticks the expression constructs an array of one  
element.

-- Jaime

#!/bin/zsh
declare -A cidr_to_mask
cidr_to_mask=(
   16    255.255.0.0
   17    255.255.128.0
   18    255.255.192.0
   19    255.255.224.0
   20    255.255.240.0
   21    255.255.248.0
   22    255.255.252.0
   23    255.255.254.0
   24    255.255.255.0
   25    255.255.255.128
   26    255.255.255.192
   27    255.255.255.224
   28    255.255.255.240
   29    255.255.255.248
   30    255.255.255.252
   31    255.255.255.254
   32    255.255.255.255
)

set -A mask_octects `echo ${cidr_to_mask[22]//./ }`


^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: Idiom
  2008-07-14 21:34 Idiom Jaime Vargas
@ 2008-07-14 21:58 ` Phil Pennock
  2008-07-15  7:58 ` Idiom Stephane Chazelas
  1 sibling, 0 replies; 3+ messages in thread
From: Phil Pennock @ 2008-07-14 21:58 UTC (permalink / raw)
  To: Jaime Vargas; +Cc: Zsh hackers list

On 2008-07-14 at 17:34 -0400, Jaime Vargas wrote:
> Is there a better way to setup the ${mask_octects} array?
> Without the back-ticks the expression constructs an array of one  
> element.

set -A mask_octets ${(s:.:)cidr_to_mask[22]}

See zshexpn(1), Parameter Expansion Flags.

> -- Jaime

Ah, the necromancer from the Kelley Armstrong books. :)

-Phil


^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: Idiom
  2008-07-14 21:34 Idiom Jaime Vargas
  2008-07-14 21:58 ` Idiom Phil Pennock
@ 2008-07-15  7:58 ` Stephane Chazelas
  1 sibling, 0 replies; 3+ messages in thread
From: Stephane Chazelas @ 2008-07-15  7:58 UTC (permalink / raw)
  To: Jaime Vargas; +Cc: Zsh hackers list

On Mon, Jul 14, 2008 at 05:34:05PM -0400, Jaime Vargas wrote:
> Is there a better way to setup the ${mask_octects} array?
> Without the back-ticks the expression constructs an array of one element.
>
> -- Jaime
>
> #!/bin/zsh
> declare -A cidr_to_mask
> cidr_to_mask=(
>   16    255.255.0.0
>   17    255.255.128.0
>   18    255.255.192.0
>   19    255.255.224.0
>   20    255.255.240.0
>   21    255.255.248.0
>   22    255.255.252.0
>   23    255.255.254.0
>   24    255.255.255.0
>   25    255.255.255.128
>   26    255.255.255.192
>   27    255.255.255.224
>   28    255.255.255.240
>   29    255.255.255.248
>   30    255.255.255.252
>   31    255.255.255.254
>   32    255.255.255.255
> )
>
> set -A mask_octects `echo ${cidr_to_mask[22]//./ }`

Maybe something like:

set-mask_octects() {
  local mask
  (( mask = (2 ** $1 - 1) << (32 - $1)))
  mask_octects=()
  repeat 4 {
    mask_octects=($((mask & 255)) $mask_octects)
    (( mask = mask >> 8 ))
  }
  return 0
}

-- 
Stéphane


^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2008-07-15  7:59 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2008-07-14 21:34 Idiom Jaime Vargas
2008-07-14 21:58 ` Idiom Phil Pennock
2008-07-15  7:58 ` Idiom Stephane Chazelas

Code repositories for project(s) associated with this public inbox

	https://git.vuxu.org/mirror/zsh/

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).