|
|
1.1 ! root 1: static char *sccsid = "@(#)sum.c 4.1 (Berkeley) 10/1/80"; ! 2: /* ! 3: * Sum bytes in file mod 2^16 ! 4: */ ! 5: ! 6: #include <stdio.h> ! 7: ! 8: main(argc,argv) ! 9: char **argv; ! 10: { ! 11: register unsigned sum; ! 12: register i, c; ! 13: register FILE *f; ! 14: register long nbytes; ! 15: int errflg = 0; ! 16: ! 17: i = 1; ! 18: do { ! 19: if(i < argc) { ! 20: if ((f = fopen(argv[i], "r")) == NULL) { ! 21: fprintf(stderr, "sum: Can't open %s\n", argv[i]); ! 22: errflg += 10; ! 23: continue; ! 24: } ! 25: } else ! 26: f = stdin; ! 27: sum = 0; ! 28: nbytes = 0; ! 29: while ((c = getc(f)) != EOF) { ! 30: nbytes++; ! 31: if (sum&01) ! 32: sum = (sum>>1) + 0x8000; ! 33: else ! 34: sum >>= 1; ! 35: sum += c; ! 36: sum &= 0xFFFF; ! 37: } ! 38: if (ferror(f)) { ! 39: errflg++; ! 40: fprintf(stderr, "sum: read error on %s\n", argc>1?argv[i]:"-"); ! 41: } ! 42: printf("%05u%6ld", sum, (nbytes+BUFSIZ-1)/BUFSIZ); ! 43: if(argc > 2) ! 44: printf(" %s", argv[i]); ! 45: printf("\n"); ! 46: fclose(f); ! 47: } while(++i < argc); ! 48: exit(errflg); ! 49: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.