Annotation of embedaddon/ntp/util/byteorder.c, revision 1.1

1.1     ! misho       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: }

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>