|
|
1.1 root 1: main()
2: {
3: int i, j;
4: char buf[300];
5:
6: for (i = 0; i < 300; i++)
7: buf[i] = i;
8: printf("%o\n", chksum(buf, 300));
9: }
10:
11: chksum(s,n)
12: register char *s;
13: register n;
14: {
15: register short sum;
16: register unsigned t;
17: register x;
18:
19: sum = -1;
20: x = 0;
21:
22: do {
23: if (sum<0) {
24: sum <<= 1;
25: sum++;
26: } else
27: sum <<= 1;
28: t = sum;
29: sum += (unsigned)*s++;
30: x += sum^n;
31: if ((unsigned)sum <= t) {
32: sum ^= x;
33: }
34: } while (--n > 0);
35:
36: return(sum);
37: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.