Mercurial > hg > sidinfo
changeset 105:9a0aeb9ce9ba
More robust endian check.
author | Matti Hamalainen <ccr@tnsp.org> |
---|---|
date | Mon, 15 Feb 2016 07:00:22 +0200 |
parents | 09ca9d9a8710 |
children | 36552c7d7171 |
files | endianchk.c |
diffstat | 1 files changed, 21 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- 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"