BSD 4 development
authorBill Joy <wnj@ucbvax.Berkeley.EDU>
Sun, 27 May 1979 10:56:06 +0000 (02:56 -0800)
committerBill Joy <wnj@ucbvax.Berkeley.EDU>
Sun, 27 May 1979 10:56:06 +0000 (02:56 -0800)
Work on file usr/src/cmd/uucp/chksum.c

Synthesized-from: CSRG//cd1/4.0

usr/src/cmd/uucp/chksum.c [new file with mode: 0644]

diff --git a/usr/src/cmd/uucp/chksum.c b/usr/src/cmd/uucp/chksum.c
new file mode 100644 (file)
index 0000000..d01020d
--- /dev/null
@@ -0,0 +1,37 @@
+main()
+{
+       int i, j;
+       char buf[300];
+
+       for (i = 0; i < 300; i++)
+               buf[i] = i;
+       printf("%o\n", chksum(buf, 300));
+}
+
+chksum(s,n)
+register char *s;
+register n;
+{
+       register short sum;
+       register unsigned t;
+       register x;
+
+       sum = -1;
+       x = 0;
+
+       do {
+               if (sum<0) {
+                       sum <<= 1;
+                       sum++;
+               } else
+                       sum <<= 1;
+               t = sum;
+               sum += (unsigned)*s++;
+               x += sum^n;
+               if ((unsigned)sum <= t) {
+                       sum ^= x;
+               }
+       } while (--n > 0);
+
+       return(sum);
+}