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