Annotation of researchv10no/cmd/f2c/xsum0.c, revision 1.1

1.1     ! root        1: /****************************************************************
        !             2: Copyright 1990 by AT&T Bell Laboratories and Bellcore.
        !             3: 
        !             4: Permission to use, copy, modify, and distribute this software
        !             5: and its documentation for any purpose and without fee is hereby
        !             6: granted, provided that the above copyright notice appear in all
        !             7: copies and that both that the copyright notice and this
        !             8: permission notice and warranty disclaimer appear in supporting
        !             9: documentation, and that the names of AT&T Bell Laboratories or
        !            10: Bellcore or any of their entities not be used in advertising or
        !            11: publicity pertaining to distribution of the software without
        !            12: specific, written prior permission.
        !            13: 
        !            14: AT&T and Bellcore disclaim all warranties with regard to this
        !            15: software, including all implied warranties of merchantability
        !            16: and fitness.  In no event shall AT&T or Bellcore be liable for
        !            17: any special, indirect or consequential damages or any damages
        !            18: whatsoever resulting from loss of use, data or profits, whether
        !            19: in an action of contract, negligence or other tortious action,
        !            20: arising out of or in connection with the use or performance of
        !            21: this software.
        !            22: ****************************************************************/
        !            23: 
        !            24: #include "stdio.h"
        !            25: 
        !            26:  char *progname;
        !            27: 
        !            28:  void
        !            29: usage(rc)
        !            30: {
        !            31:        fprintf(stderr, "usage: %s [file [file...]]\n", progname);
        !            32:        exit(rc);
        !            33:        }
        !            34: 
        !            35: main(argc, argv)
        !            36:  char **argv;
        !            37: {
        !            38:        int x;
        !            39:        char *s;
        !            40:        static int rc;
        !            41: 
        !            42:        progname = *argv;
        !            43:        s = *++argv;
        !            44:        if (s && *s == '-') {
        !            45:                switch(s[1]) {
        !            46:                        case '?':
        !            47:                                usage(0);
        !            48:                        case '-':
        !            49:                                break;
        !            50:                        default:
        !            51:                                fprintf(stderr, "invalid option %s\n", s);
        !            52:                                usage(1);
        !            53:                        }
        !            54:                s = *++argv;
        !            55:                }
        !            56:        if (s) do {
        !            57:                x = open(s,0);
        !            58:                if (x < 0) {
        !            59:                        fprintf(stderr, "%s: can't open %s\n", progname, s);
        !            60:                        rc |= 1;
        !            61:                        }
        !            62:                else
        !            63:                        process(s, x);
        !            64:                }
        !            65:                while(s = *++argv);
        !            66:        else {
        !            67:                process("/dev/stdin", fileno(stdin));
        !            68:                }
        !            69:        exit(rc);
        !            70:        }
        !            71: 
        !            72: typedef unsigned char uchar;
        !            73: 
        !            74:  long
        !            75: sum32(sum, x, n)
        !            76:  register long sum;
        !            77:  register uchar *x;
        !            78:  int n;
        !            79: {
        !            80:        register uchar *xe;
        !            81:        static long crc_table[256] = {
        !            82:                0x0,            0x9073096,      0x120e612c,     0x1b0951ba,
        !            83:                0xff6dc419,     0xf66af48f,     0xed63a535,     0xe46495a3,
        !            84:                0xfedb8832,     0xf7dcb8a4,     0xecd5e91e,     0xe5d2d988,
        !            85:                0x1b64c2b,      0x8b17cbd,      0x13b82d07,     0x1abf1d91,
        !            86:                0xfdb71064,     0xf4b020f2,     0xefb97148,     0xe6be41de,
        !            87:                0x2dad47d,      0xbdde4eb,      0x10d4b551,     0x19d385c7,
        !            88:                0x36c9856,      0xa6ba8c0,      0x1162f97a,     0x1865c9ec,
        !            89:                0xfc015c4f,     0xf5066cd9,     0xee0f3d63,     0xe7080df5,
        !            90:                0xfb6e20c8,     0xf269105e,     0xe96041e4,     0xe0677172,
        !            91:                0x403e4d1,      0xd04d447,      0x160d85fd,     0x1f0ab56b,
        !            92:                0x5b5a8fa,      0xcb2986c,      0x17bbc9d6,     0x1ebcf940,
        !            93:                0xfad86ce3,     0xf3df5c75,     0xe8d60dcf,     0xe1d13d59,
        !            94:                0x6d930ac,      0xfde003a,      0x14d75180,     0x1dd06116,
        !            95:                0xf9b4f4b5,     0xf0b3c423,     0xebba9599,     0xe2bda50f,
        !            96:                0xf802b89e,     0xf1058808,     0xea0cd9b2,     0xe30be924,
        !            97:                0x76f7c87,      0xe684c11,      0x15611dab,     0x1c662d3d,
        !            98:                0xf6dc4190,     0xffdb7106,     0xe4d220bc,     0xedd5102a,
        !            99:                0x9b18589,      0xb6b51f,       0x1bbfe4a5,     0x12b8d433,
        !           100:                0x807c9a2,      0x100f934,      0x1a09a88e,     0x130e9818,
        !           101:                0xf76a0dbb,     0xfe6d3d2d,     0xe5646c97,     0xec635c01,
        !           102:                0xb6b51f4,      0x26c6162,      0x196530d8,     0x1062004e,
        !           103:                0xf40695ed,     0xfd01a57b,     0xe608f4c1,     0xef0fc457,
        !           104:                0xf5b0d9c6,     0xfcb7e950,     0xe7beb8ea,     0xeeb9887c,
        !           105:                0xadd1ddf,      0x3da2d49,      0x18d37cf3,     0x11d44c65,
        !           106:                0xdb26158,      0x4b551ce,      0x1fbc0074,     0x16bb30e2,
        !           107:                0xf2dfa541,     0xfbd895d7,     0xe0d1c46d,     0xe9d6f4fb,
        !           108:                0xf369e96a,     0xfa6ed9fc,     0xe1678846,     0xe860b8d0,
        !           109:                0xc042d73,      0x5031de5,      0x1e0a4c5f,     0x170d7cc9,
        !           110:                0xf005713c,     0xf90241aa,     0xe20b1010,     0xeb0c2086,
        !           111:                0xf68b525,      0x66f85b3,      0x1d66d409,     0x1461e49f,
        !           112:                0xedef90e,      0x7d9c998,      0x1cd09822,     0x15d7a8b4,
        !           113:                0xf1b33d17,     0xf8b40d81,     0xe3bd5c3b,     0xeaba6cad,
        !           114:                0xedb88320,     0xe4bfb3b6,     0xffb6e20c,     0xf6b1d29a,
        !           115:                0x12d54739,     0x1bd277af,     0xdb2615,       0x9dc1683,
        !           116:                0x13630b12,     0x1a643b84,     0x16d6a3e,      0x86a5aa8,
        !           117:                0xec0ecf0b,     0xe509ff9d,     0xfe00ae27,     0xf7079eb1,
        !           118:                0x100f9344,     0x1908a3d2,     0x201f268,      0xb06c2fe,
        !           119:                0xef62575d,     0xe66567cb,     0xfd6c3671,     0xf46b06e7,
        !           120:                0xeed41b76,     0xe7d32be0,     0xfcda7a5a,     0xf5dd4acc,
        !           121:                0x11b9df6f,     0x18beeff9,     0x3b7be43,      0xab08ed5,
        !           122:                0x16d6a3e8,     0x1fd1937e,     0x4d8c2c4,      0xddff252,
        !           123:                0xe9bb67f1,     0xe0bc5767,     0xfbb506dd,     0xf2b2364b,
        !           124:                0xe80d2bda,     0xe10a1b4c,     0xfa034af6,     0xf3047a60,
        !           125:                0x1760efc3,     0x1e67df55,     0x56e8eef,      0xc69be79,
        !           126:                0xeb61b38c,     0xe266831a,     0xf96fd2a0,     0xf068e236,
        !           127:                0x140c7795,     0x1d0b4703,     0x60216b9,      0xf05262f,
        !           128:                0x15ba3bbe,     0x1cbd0b28,     0x7b45a92,      0xeb36a04,
        !           129:                0xead7ffa7,     0xe3d0cf31,     0xf8d99e8b,     0xf1deae1d,
        !           130:                0x1b64c2b0,     0x1263f226,     0x96aa39c,      0x6d930a,
        !           131:                0xe40906a9,     0xed0e363f,     0xf6076785,     0xff005713,
        !           132:                0xe5bf4a82,     0xecb87a14,     0xf7b12bae,     0xfeb61b38,
        !           133:                0x1ad28e9b,     0x13d5be0d,     0x8dcefb7,      0x1dbdf21,
        !           134:                0xe6d3d2d4,     0xefd4e242,     0xf4ddb3f8,     0xfdda836e,
        !           135:                0x19be16cd,     0x10b9265b,     0xbb077e1,      0x2b74777,
        !           136:                0x18085ae6,     0x110f6a70,     0xa063bca,      0x3010b5c,
        !           137:                0xe7659eff,     0xee62ae69,     0xf56bffd3,     0xfc6ccf45,
        !           138:                0xe00ae278,     0xe90dd2ee,     0xf2048354,     0xfb03b3c2,
        !           139:                0x1f672661,     0x166016f7,     0xd69474d,      0x46e77db,
        !           140:                0x1ed16a4a,     0x17d65adc,     0xcdf0b66,      0x5d83bf0,
        !           141:                0xe1bcae53,     0xe8bb9ec5,     0xf3b2cf7f,     0xfab5ffe9,
        !           142:                0x1dbdf21c,     0x14bac28a,     0xfb39330,      0x6b4a3a6,
        !           143:                0xe2d03605,     0xebd70693,     0xf0de5729,     0xf9d967bf,
        !           144:                0xe3667a2e,     0xea614ab8,     0xf1681b02,     0xf86f2b94,
        !           145:                0x1c0bbe37,     0x150c8ea1,     0xe05df1b,      0x702ef8d
        !           146:                };
        !           147: 
        !           148:        xe = x + n;
        !           149:        while(x < xe)
        !           150:                sum = crc_table[(sum ^ *x++) & 0xff] ^ (sum >> 8 & 0xffffff);
        !           151:        return sum;
        !           152:        }
        !           153: 
        !           154: process(s, x)
        !           155:  char *s;
        !           156:  int x;
        !           157: {
        !           158:        register int n;
        !           159:        uchar buf[16*1024];
        !           160:        long fsize, sum;
        !           161: 
        !           162:        sum = 0;
        !           163:        fsize = 0;
        !           164:        while((n = read(x, (char *)buf, sizeof(buf))) > 0) {
        !           165:                fsize += n;
        !           166:                sum = sum32(sum, buf, n);
        !           167:                }
        !           168:        sum &= 0xffffffff;
        !           169:         if (n==0)
        !           170:                printf("%s\t%lx\t%ld\n", s, sum & 0xffffffff, fsize);
        !           171:         else { perror(s); }
        !           172:        close(x);
        !           173:        return(0);
        !           174:        }

unix.superglobalmegacorp.com

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