Hi. In OATH Toolkit I started to use the 'longlong' feature recently,
to be able to specify 64-bit integers. However I noticed that it
doesn't really work well. There are two reasons for this:
1) The generated code use the HAVE_LONG_LONG pre-processor symbol to
check whether 'long long' is available. I didn't have that symbol
defined, I did have HAVE_LONG_LONG_INT defined via gnulib. This issue
could be resolved with improved documentation, stating that you need to
make sure HAVE_LONG_LONG is defined when building.
2) The generated code uses 'strtol' to convert values. This function
does not handle larger values. The code looks like this:
#ifdef HAVE_LONG_LONG
if (val) *((long long int*)field) = (long long int) strtol (val,
&stop_char, 0);
#else
if (val) *((long *)field) = (long)strtol (val, &stop_char, 0);
#endif
Changing 'strtol' to 'strtoll' works. I'm guessing platforms with 'long
long' have 'strtoll' as well, but I can't guarantee it.
/Simon
_______________________________________________
Help-gengetopt mailing list
address@hidden
https://lists.gnu.org/mailman/listinfo/help-gengetopt