Annotation of 43BSD/usr.bin/uucp/chksum.c, revision 1.1

1.1     ! root        1: #ifndef lint
        !             2: static char sccsid[] = "@(#)chksum.c   4.2 (Berkeley) 6/19/85";
        !             3: #endif
        !             4: 
        !             5: #ifndef pdp11
        !             6: chksum (s, n)
        !             7: register char *s;
        !             8: register n;
        !             9: {
        !            10:        register long sum, x, t;
        !            11: 
        !            12:        sum = 0xffff;
        !            13:        x = 0;
        !            14:        do {
        !            15:                /* Rotate left, copying bit 15 to bit 0 */
        !            16:                sum <<= 1;
        !            17:                if (sum & 0x10000)
        !            18:                        sum ^= 0x10001;
        !            19:                t = sum;
        !            20:                sum = (sum + (*s++ & 0377)) & 0xffff;
        !            21:                x += sum ^ n;
        !            22:                if (sum <= t)
        !            23:                        sum = (sum ^ x) & 0xffff;
        !            24:        } while (--n > 0);
        !            25: 
        !            26:        return (long) (short) sum;
        !            27: }
        !            28: #else pdp11
        !            29: chksum(s,n)
        !            30: register char *s;
        !            31: register n;
        !            32: {
        !            33:        register unsigned sum, t;
        !            34:        register x;
        !            35: 
        !            36:        sum = -1;
        !            37:        x = 0;
        !            38: 
        !            39:        do {
        !            40:                if (sum&0x8000) {
        !            41:                        sum <<= 1;
        !            42:                        sum++;
        !            43:                } else
        !            44:                        sum <<= 1;
        !            45:                t = sum;
        !            46:                sum += (unsigned)*s++ & 0377;
        !            47:                x += sum^n;
        !            48:                if ((sum&0xffff) <= (t&0xffff)) {
        !            49:                        sum ^= x;
        !            50:                }
        !            51:        } while (--n > 0);
        !            52: 
        !            53:        return sum & 0xffff;
        !            54: }
        !            55: 
        !            56: #endif pdp11

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.