On Wed, 12 Dec 2012 00:30:36 +0100 (CET) Mikulas Patocka wrote: > Unfortunatelly, I found out that my previous patch was wrong - it compiles > on HP-UX, but it doesn't use the 64-bit strtoimax instruction. > > There were these problems: > * strtoimax is defined in inttypes.h, not stdlib.h, so we must include > inttypes.h > > * strtoimax is a macro that expands to __strtoll function. __strtoll only > exists in 32-bit libc. When building in 64-bit mode, strtoimax still > expands to __strtoll, but __strtoll doesn't exist (I think this is a bug > in HP-UX). So we must test for __strtoll in configure and use strtoimax > macro only if __strtoll is present in the libc. On 64-bit build we can use > strtol instead of strtoll, because strtol is already 64-bit.
We already decided to use g_ascii_strtoll [1] (see https://www.midnight-commander.org/changeset/a2dd0f997cd98dc2ec70b90c9ddc43db8ad139cb). > * on HP-UX inttypes.h includes ctype.h through other dependencies, ctype.h > defines macros for various functions and these macros clash with entries > of "struct str_class" - so we must undefine the macros before defining > str_class. I'm not sure that we need global #undef of isspace, isdigit, etc. The better way is rename str_class members to some unique names, probably use the "str_" prefix. -- Andrew _______________________________________________ mc-devel mailing list https://mail.gnome.org/mailman/listinfo/mc-devel