]> CyberLeo.Net >> Repos - FreeBSD/releng/10.0.git/blob - contrib/ntp/util/byteorder.c
- Copy stable/10 (r259064) to releng/10.0 as part of the
[FreeBSD/releng/10.0.git] / contrib / ntp / util / byteorder.c
1 /*
2  * This works on:
3  *   Crays
4  *   Conven
5  *   sparc's
6  *   Dec mip machines
7  *   Dec alpha machines
8  *   RS6000
9  *   SGI's
10  */
11
12 #include <stdio.h>
13
14 int
15 main(
16         int argc,
17         char *argv[]
18         )
19 {
20         int i;
21         int big;
22         union {
23                 unsigned long l;
24                 char c[sizeof(long)];
25         } u;
26
27 #if defined(LONG8)
28         u.l = (((long)0x08070605) << 32) | (long)0x04030201;
29 #else
30         u.l = 0x04030201;
31 #endif
32         if (sizeof(long) > 4) {
33                 if (u.c[0] == 0x08) big = 1;
34                 else                big = 0;
35         } else {
36                 if (u.c[0] == 0x04) big = 1;
37                 else                big = 0;
38         }
39         for (i=0; i< sizeof(long); i++) {
40                 if (big == 1 && (u.c[i] == (sizeof(long) - i))) { 
41                         continue; 
42                 } else if (big == 0 && (u.c[i] == (i+1))) {
43                         continue;
44                 } else {
45                         big = -1;
46                         break;
47                 }
48         }
49
50         if (big == 1) {
51                 printf("XNTP_BIG_ENDIAN\n");
52         } else if (big == 0) {
53                 printf("XNTP_LITTLE_ENDIAN\n");
54         }
55         exit(0);
56 }