# HG changeset patch # User Matti Hamalainen # Date 1455512422 -7200 # Node ID 9a0aeb9ce9bafea23c2669613c32597366bd8708 # Parent 09ca9d9a87108805738653e1899cd4fb4f559bd8 More robust endian check. diff -r 09ca9d9a8710 -r 9a0aeb9ce9ba endianchk.c --- a/endianchk.c Mon Feb 15 06:07:50 2016 +0200 +++ b/endianchk.c Mon Feb 15 07:00:22 2016 +0200 @@ -2,11 +2,28 @@ int main(int argc, char *argv[]) { - int val = 1, ret; - char *s = (char *) &val; + int val = 0x01020304, ret; + unsigned char *s = (unsigned char *) &val; + char *name = argv[0]; (void) argc; - (void) argv; - ret = (int)(*s); + + if (sizeof(int) != 4) + { + fprintf(stderr, "%s: sizeof(int) is not 32 bits!\n", name); + return -1; + } + + if (s[0] == 0x01 && s[1] == 0x02 && s[2] == 0x03 && s[3] == 0x04) + ret = 0; + else + if (s[0] == 0x04 && s[1] == 0x03 && s[2] == 0x02 && s[3] == 0x01) + ret = 1; + else + { + fprintf(stderr, "%s: Unsupported endianess.\n", name); + return -2; + } + printf( "#ifndef MY_CONFIG_H\n" "#define MY_CONFIG_H 1\n"