Zsh Mailing List Archive
Messages sorted by: Reverse Date, Date, Thread, Author

Re: Rounding of glob qualifiers?



On Fri, 23 Jul 2010 16:09:33 -0400 (EDT)
"Benjamin R. Haskell" <zsh@xxxxxxxxxx> wrote:
> The rounding seems a bit odd here:
> 
> ## some files less than, equal to, and greater than 1024 bytes
> $ ls -l {lt,eq,gt}-1k
> -rw------- 1 bhaskell users 1023 2010-07-23 16:08 lt-1k
> -rw------- 1 bhaskell users 1024 2010-07-23 16:08 eq-1k
> -rw------- 1 bhaskell users 1025 2010-07-23 16:08 gt-1k
> 
> ## why does lt-1k match here:
> $ print -l *-1k(L-1024)
> lt-1k
> 
> ## and here:
> $ print -l *-1k(Lk1)
> eq-1k
> lt-1k
> 
> ## but not here?
> $ print -l *-1k(Lk-1)
> zsh: no matches found: *-1k(Lk-1)
> 
> 
> Not claiming it's a 'bug', per se, but what's the rationale for
> rounding up?  Seems similar to the 'a' glob qualifier caveat with
> 'whole units', but I didn't see an explanation similar to
> fractional-part-is-discarded for 'L'.

Yes, it's the same point, because it's the same logic.  It should really be
described higher up.

I'm not sure it's ever actually useful to discard the fractional part when
comparing less than or greater than; equality is a bit different because
when you want a file a certain number of K it's unlikely you wan't it to be
exactly that size, just more than the next unit down and less than the next
unit up.  You get the behaviour for other comparisons out of consistency
with this.

-- 
Peter Stephenson <pws@xxxxxxx>            Software Engineer
Tel: +44 (0)1223 692070                   Cambridge Silicon Radio Limited
Churchill House, Cambridge Business Park, Cowley Road, Cambridge, CB4 0WZ, UK


Member of the CSR plc group of companies. CSR plc registered in England and Wales, registered number 4187346, registered office Churchill House, Cambridge Business Park, Cowley Road, Cambridge, CB4 0WZ, United Kingdom



Messages sorted by: Reverse Date, Date, Thread, Author