3 ?RCS: Copyright (c) 2000 Jarkko Hietaniemi
5 ?RCS: You may distribute under the terms of either the GNU General Public
6 ?RCS: License or the Artistic License, as specified in the README file.
8 ?MAKE:d_strtoull: Inlibc d_longlong Compile cat run
11 ?S: This variable conditionally defines the HAS_STRTOULL symbol, which
12 ?S: indicates to the C program that the strtoull() routine is available.
15 ?C: This symbol, if defined, indicates that the strtoull routine is
16 ?C: available to convert strings to unsigned long longs.
18 ?H:#$d_strtoull HAS_STRTOULL /**/
22 : see if strtoull exists
23 set strtoull d_strtoull
26 case "$d_longlong-$d_strtoull" in
29 Checking whether your strtoull() works okay...
34 #define strtoull __strtoull
37 extern unsigned long long int strtoull(char *s, char **, int);
39 int check(char *s, long long eull, int een) {
42 gull = strtoull(s, 0, 10);
43 if (!((gull == eull) && (errno == een)))
49 check("18446744073709551615", 18446744073709551615ULL, 0);
50 check("18446744073709551616", 18446744073709551615ULL, ERANGE);
51 #if 0 /* strtoull() for /^-/ strings is undefined. */
52 check("-1", 18446744073709551615ULL, 0);
53 check("-18446744073709551614", 2LL, 0);
54 check("-18446744073709551615", 1LL, 0);
55 check("-18446744073709551616", 18446744073709551615ULL, ERANGE);
56 check("-18446744073709551617", 18446744073709551615ULL, ERANGE);
63 if eval $compile; then
64 case "`$run ./try`" in
65 ok) echo "Your strtoull() seems to be working okay." ;;
67 Your strtoull() doesn't seem to be working okay.
73 echo "(I can't seem to compile the test program--assuming it doesn't)"