In z/OS, S_IFMT is defined in sys/modes.h as 0xFF000000, which is signed.
On 2014-11-26 14:14, Craig A. Berry wrote:
> On Wed, Nov 26, 2014 at 3:39 PM, Karl Williamson> <pub...@khwilliamson.com> wrote:>> We're getting this failure on os390:>>>> # Failed test 'S_IFMT()'>> # at Fcntl/t/mode.t line 88.>> # got: '4278190080'>> # expected: '-16777216'>>>> If you add those two numbers up it becomes clear that this bug is merely one>> of signed vs unsigned. Likely a constant is missing its trailing 'U' to>> make it unsigned. But I don't see where.>>>> Can someone provide some insight into fixing this?> The constants are written by the Makefile.PL, which uses> WriteConstants from ExtUtils::Constant. The type of _S_IFMT does not> seem to be specified at> <http://perl5.git.perl.org/perl.git/blob/HEAD:/ext/Fcntl/Makefile.PL#l40>,> so apparently it will default to IV according to> <http://perl5.git.perl.org/perl.git/blob/HEAD:/cpan/ExtUtils-Constant/lib/ExtUtils/Constant.pm#l484>.> Maybe it should be specified as UV?>> But it would probably also be useful to grep S_IFMT in the generated> const-xs.inc and inspect the value of S_IFMT in whatever system header> it comes from (stat.h?).
--
M. Ray Mullins
Roseville, CA, USA
http://www.catherdersoftware.com/
http://www.z390.org/
German is essentially a form of assembly language consisting entirely of far calls heavily accented with throaty guttural sounds. ---ilvi
French is essentially German with messed-up pronunciation and spelling. --Robert B Wilson
English is essentially French converted to 7-bit ASCII. ---Christophe Pierret [for Alain LaBonté]