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

Re: questions - calling matheval() for printf



Sorry I didn't reply to this (the bits Bart didn'g) earlier...

Oliver Kiddle wrote:
> argument	stdout		stderr
> 5a		5		printf: "5a" not completely converted
> 
> In the first case, the different error message doesn't worry me but
> math evaluation doesn't return `5'. It is conceivable that someone
> relies on this in a script, passing a string starting with a number and
> redirecting stderr. I could successively chop characters off the right
> of the string until matheval returns without an error. This would need
> a hack to avoid repeated error messages from matheval(). Any other,
> perhaps better suggestions?

If we need this, it would be better to hack matheval to give it an option
to stop and return a pointer to the end, just like strtol().  But I don't
think we need to adhere to POSIX printf semantics that closely.  I'd be
more interested in what other shells do.

> Is there any way I can find out when arithmetic overflows have occurred
> for the second and third cases? matheval() just allows the numbers to
> wrap?

Again, this would be more work and I'm not sure it's worth it in a shell.

> Can a 64-bit integer be something other than long long? It seems I only
> have ZSH_64_BIT_TYPE to check and it might need a different format
> specifier for printf(3) if this is something other than long long.

On Alpha, it will normally be long rather than long long.  However, I
compiled sizeof(long long) with gcc on the Alpha at Sourceforge, and that
seems to be 64-bit too.  I don't think it's a good idea to rely on that,
though --- there's no standard for such things.

Can we make %q do just the same as what ${(q)foo} would do?

-- 
Peter Stephenson <pws@xxxxxxx>                  Software Engineer
CSR Ltd., Science Park, Milton Road,
Cambridge, CB4 0WH, UK                          Tel: +44 (0)1223 392070


**********************************************************************
The information transmitted is intended only for the person or
entity to which it is addressed and may contain confidential 
and/or privileged material. 
Any review, retransmission, dissemination or other use of, or
taking of any action in reliance upon, this information by 
persons or entities other than the intended recipient is 
prohibited.  
If you received this in error, please contact the sender and 
delete the material from any computer.
**********************************************************************



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