NetBSD/dist/ntp/util/byteorder.c

59 lines
908 B
C

/* $NetBSD: byteorder.c,v 1.2 2003/12/04 16:23:38 drochner Exp $ */
/*
* This works on:
* Crays
* Conven
* sparc's
* Dec mip machines
* Dec alpha machines
* RS6000
* SGI's
*/
#include <stdio.h>
int
main(
int argc,
char *argv[]
)
{
int i;
int big;
union {
unsigned long l;
char c[sizeof(long)];
} u;
#if defined(LONG8)
u.l = (((long)0x08070605) << 32) | (long)0x04030201;
#else
u.l = 0x04030201;
#endif
if (sizeof(long) > 4) {
if (u.c[0] == 0x08) big = 1;
else big = 0;
} else {
if (u.c[0] == 0x04) big = 1;
else big = 0;
}
for (i=0; i< sizeof(long); i++) {
if (big == 1 && (u.c[i] == (sizeof(long) - i))) {
continue;
} else if (big == 0 && (u.c[i] == (i+1))) {
continue;
} else {
big = -1;
break;
}
}
if (big == 1) {
printf("XNTP_BIG_ENDIAN\n");
} else if (big == 0) {
printf("XNTP_LITTLE_ENDIAN\n");
}
exit(0);
}