tech-userlevel archive

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

Re: strtonum(3) from OpenBSD?

At Wed, 24 Jun 2009 23:11:37 +0200, Marc Balmer <> wrote:
Subject: Re: strtonum(3) from OpenBSD?
> what I find amusing is that people come up with their own implemetation
> of such a function instead of simply accept the fact that there is  a  
> function
> in OpenBSD and FreeBSD that is accepted by many good folks...

Note that the _example_ function I showed has several potentially
extreme use-specific limitations which I tried to document:

> > FWIW, here's my super-picky, super portable (except for err.h et al),
> > version of parseint() suitable for use where hard exits on error are
> > desired and the output range is the full INT_MIN to INT_MAX:

I.e. it is not suitable for general use, though it is perhaps a somewhat
better design in several ways than the much less useful strtonum(3)
you're supporting for reasons I can't quite understand.

If you read my earlier mail you'd also hopefully know that deviating
from any of the restrictions imposed by my parseint() example requires
re-writing some or all of the main conditions and checks and parameters
used by my parseint().

In other words the best function(s) for common use and inclusion in a
system library is already there:  strtol(3) and friends.

Unfortunately as my parseint() example and the length of this discussion
thread shows, strtol(3) is apparently not the easiest API to use
correctly either.  Still, as I said before, from my experience I can't
see that at is possible to do any better with a common utility wrapper
function since all the error handling and range checking is probably
still easier done with local statements than it is to design a good
enough API that can be used widely enough to justify inclusion in a
system library.  It it were possible I'm sure ANSI or IEEE would have
done it instead of publishing strtol(3).

                                                Greg A. Woods
                                                Planix, Inc.

<>       +1 416 218-0099

Attachment: pgpkdHrIw0dQl.pgp
Description: PGP signature

Home | Main Index | Thread Index | Old Index