Re: How to work around a missing library function?

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

 



On Wed, Nov 25, 2009 at 19:13, Dr. David Kirkby <david.kirkby@xxxxxxxxxx> wrote:
> I have some source code
>
> http://magma.maths.usyd.edu.au/~watkins/sympow.tar.bz2
>
> which will not build on an old release of HP-UX as this lacks the atoll()
> (convert string to a long long) library function.
>
> It is relatively easy to test for this in a configure script. I also found
> on the web a 10-line bit of code, which implements my_atoll()
>
> http://p2p.wrox.com/c-programming/16319-string-long-long-without-using-atoll.html
>
> in a way which works on older HP-UX releases.
>
> I'm reluctant to use this code on every OS, as its not my code, and the
> author might not like that, as this does no error checking. But it would be
> good to implement it when atoll() is not in the library.
>
> I was thinking of:
>
> 1) Changing the code from isomg atoll() to using my_atoll()
>
> 2) Having in configure.ac
>
> AC_CHECK_FUNC (atoll, [], [])
>
> 3)Having something like the following in the source code. I think the
> 'AC_CHECK_FUNC' will have defined HAVE_ATOLL, though I might be wrong on
> that.
>
>
> #ifdef HAVE_ATOLL
> long long my_atoll(char *instr){
>  return atoll(instr);
> }
>
> #else
> long long my_atoll(char *instr)
> {
>  long long retval;
>  int i;
>
>  retval = 0;
>  for (; *instr; instr++) {
>    retval = 10*retval + (*instr - '0');
>  }
>  return retval;
> }
> #fi
>
> Is it as simple as that, or am I missing something? How would that be
> improved - I somewhat doubt my method is optimal.
>

What about
    AC_CHECK_FUNC (atoll, [], [AC_LIBOBJ(atoll)])
and place your atoll() implementation into atoll.c ?

Also you will need to declare prototype somewere:

#ifndef HAVE_ATOLL
long long atoll(const char *nptr);
#endif

-- 
Andrew W. Nosenko <andrew.w.nosenko@xxxxxxxxx>


_______________________________________________
Autoconf mailing list
Autoconf@xxxxxxx
http://lists.gnu.org/mailman/listinfo/autoconf


[Index of Archives]     [GCC Help]     [Kernel Discussion]     [RPM Discussion]     [Red Hat Development]     [Yosemite News]     [Linux USB]     [Samba]

  Powered by Linux