annotate endianchk.c @ 105:9a0aeb9ce9ba

More robust endian check.
author Matti Hamalainen <ccr@tnsp.org>
date Mon, 15 Feb 2016 07:00:22 +0200
parents 8e7e08bf7b9e
children 170e447e0984
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
8e7e08bf7b9e Initial import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1 #include <stdio.h>
8e7e08bf7b9e Initial import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2
8e7e08bf7b9e Initial import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3 int main(int argc, char *argv[])
8e7e08bf7b9e Initial import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
4 {
105
9a0aeb9ce9ba More robust endian check.
Matti Hamalainen <ccr@tnsp.org>
parents: 0
diff changeset
5 int val = 0x01020304, ret;
9a0aeb9ce9ba More robust endian check.
Matti Hamalainen <ccr@tnsp.org>
parents: 0
diff changeset
6 unsigned char *s = (unsigned char *) &val;
9a0aeb9ce9ba More robust endian check.
Matti Hamalainen <ccr@tnsp.org>
parents: 0
diff changeset
7 char *name = argv[0];
0
8e7e08bf7b9e Initial import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
8 (void) argc;
105
9a0aeb9ce9ba More robust endian check.
Matti Hamalainen <ccr@tnsp.org>
parents: 0
diff changeset
9
9a0aeb9ce9ba More robust endian check.
Matti Hamalainen <ccr@tnsp.org>
parents: 0
diff changeset
10 if (sizeof(int) != 4)
9a0aeb9ce9ba More robust endian check.
Matti Hamalainen <ccr@tnsp.org>
parents: 0
diff changeset
11 {
9a0aeb9ce9ba More robust endian check.
Matti Hamalainen <ccr@tnsp.org>
parents: 0
diff changeset
12 fprintf(stderr, "%s: sizeof(int) is not 32 bits!\n", name);
9a0aeb9ce9ba More robust endian check.
Matti Hamalainen <ccr@tnsp.org>
parents: 0
diff changeset
13 return -1;
9a0aeb9ce9ba More robust endian check.
Matti Hamalainen <ccr@tnsp.org>
parents: 0
diff changeset
14 }
9a0aeb9ce9ba More robust endian check.
Matti Hamalainen <ccr@tnsp.org>
parents: 0
diff changeset
15
9a0aeb9ce9ba More robust endian check.
Matti Hamalainen <ccr@tnsp.org>
parents: 0
diff changeset
16 if (s[0] == 0x01 && s[1] == 0x02 && s[2] == 0x03 && s[3] == 0x04)
9a0aeb9ce9ba More robust endian check.
Matti Hamalainen <ccr@tnsp.org>
parents: 0
diff changeset
17 ret = 0;
9a0aeb9ce9ba More robust endian check.
Matti Hamalainen <ccr@tnsp.org>
parents: 0
diff changeset
18 else
9a0aeb9ce9ba More robust endian check.
Matti Hamalainen <ccr@tnsp.org>
parents: 0
diff changeset
19 if (s[0] == 0x04 && s[1] == 0x03 && s[2] == 0x02 && s[3] == 0x01)
9a0aeb9ce9ba More robust endian check.
Matti Hamalainen <ccr@tnsp.org>
parents: 0
diff changeset
20 ret = 1;
9a0aeb9ce9ba More robust endian check.
Matti Hamalainen <ccr@tnsp.org>
parents: 0
diff changeset
21 else
9a0aeb9ce9ba More robust endian check.
Matti Hamalainen <ccr@tnsp.org>
parents: 0
diff changeset
22 {
9a0aeb9ce9ba More robust endian check.
Matti Hamalainen <ccr@tnsp.org>
parents: 0
diff changeset
23 fprintf(stderr, "%s: Unsupported endianess.\n", name);
9a0aeb9ce9ba More robust endian check.
Matti Hamalainen <ccr@tnsp.org>
parents: 0
diff changeset
24 return -2;
9a0aeb9ce9ba More robust endian check.
Matti Hamalainen <ccr@tnsp.org>
parents: 0
diff changeset
25 }
9a0aeb9ce9ba More robust endian check.
Matti Hamalainen <ccr@tnsp.org>
parents: 0
diff changeset
26
0
8e7e08bf7b9e Initial import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
27 printf(
8e7e08bf7b9e Initial import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
28 "#ifndef MY_CONFIG_H\n"
8e7e08bf7b9e Initial import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
29 "#define MY_CONFIG_H 1\n"
8e7e08bf7b9e Initial import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
30 "\n"
8e7e08bf7b9e Initial import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
31 "#define TH_BYTEORDER TH_%s_ENDIAN\n"
8e7e08bf7b9e Initial import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
32 "\n"
8e7e08bf7b9e Initial import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
33 "#endif /* MY_CONFIG_H */\n"
8e7e08bf7b9e Initial import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
34 ,
8e7e08bf7b9e Initial import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
35 ret ? "LITTLE" : "BIG"
8e7e08bf7b9e Initial import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
36 );
8e7e08bf7b9e Initial import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
37 return 0;
8e7e08bf7b9e Initial import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
38 }
8e7e08bf7b9e Initial import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
39