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

1.1     ! root        1: /****************************************************************
        !             2: Copyright 1990, 1993 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: #ifndef KR_headers
        !            26: #include "stdlib.h"
        !            27: #include "fcntl.h"     /* for declaration of open, O_RDONLY */
        !            28: #endif
        !            29: #ifdef MSDOS
        !            30: #include "io.h"
        !            31: #endif
        !            32: #ifndef O_RDONLY
        !            33: #define O_RDONLY 0
        !            34: #endif
        !            35: #ifndef O_BINARY
        !            36: #define O_BINARY O_RDONLY
        !            37: #endif
        !            38: 
        !            39:  char *progname;
        !            40:  static int ignore_cr;
        !            41: 
        !            42:  void
        !            43: #ifdef KR_headers
        !            44: usage(rc)
        !            45: #else
        !            46: usage(int rc)
        !            47: #endif
        !            48: {
        !            49:        fprintf(stderr, "usage: %s [-r] [file [file...]]\n\
        !            50:        option -r ignores carriage return characters\n", progname);
        !            51:        exit(rc);
        !            52:        }
        !            53: 
        !            54: typedef unsigned char Uchar;
        !            55: 
        !            56:  long
        !            57: #ifdef KR_headers
        !            58: sum32(sum, x, n)
        !            59:  register long sum;
        !            60:  register Uchar *x;
        !            61:  int n;
        !            62: #else
        !            63: sum32(register long sum, register Uchar *x, int n)
        !            64: #endif
        !            65: {
        !            66:        register Uchar *xe;
        !            67:        static long crc_table[256] = {
        !            68:                0,              151466134,      302932268,      453595578,
        !            69:                -9583591,       -160762737,     -312236747,     -463170141,
        !            70:                -19167182,      -136529756,     -321525474,     -439166584,
        !            71:                28724267,       145849533,      330837255,      448732561,
        !            72:                -38334364,      -189783822,     -273059512,     -423738914,
        !            73:                47895677,       199091435,      282375505,      433292743,
        !            74:                57448534,       174827712,      291699066,      409324012,
        !            75:                -67019697,      -184128295,     -300991133,     -418902539,
        !            76:                -76668728,      -227995554,     -379567644,     -530091662,
        !            77:                67364049,       218420295,      369985021,      520795499,
        !            78:                95791354,       213031020,      398182870,      515701056,
        !            79:                -86479645,      -203465611,     -388624945,     -506380967,
        !            80:                114897068,      266207290,      349655424,      500195606,
        !            81:                -105581387,     -256654301,     -340093543,     -490887921,
        !            82:                -134039394,     -251295736,     -368256590,     -485758684,
        !            83:                124746887,      241716241,      358686123,      476458301,
        !            84:                -153337456,     -2395898,       -455991108,     -304803798,
        !            85:                162629001,      11973919,       465560741,      314102835,
        !            86:                134728098,      16841012,       436840590,      319723544,
        !            87:                -144044613,     -26395347,      -446403433,     -329032703,
        !            88:                191582708,      40657250,       426062040,      274858062,
        !            89:                -200894995,     -50223749,      -435620671,     -284179369,
        !            90:                -172959290,     -55056048,      -406931222,     -289830788,
        !            91:                182263263,      64630089,       416513267,      299125861,
        !            92:                229794136,      78991822,       532414580,      381366498,
        !            93:                -220224191,     -69691945,      -523123603,     -371788549,
        !            94:                -211162774,     -93398532,      -513308602,     -396314416,
        !            95:                201600371,      84090341,       503991391,      386759881,
        !            96:                -268078788,     -117292630,     -502591472,     -351526778,
        !            97:                258520357,      107972019,      493278217,      341959839,
        !            98:                249493774,      131713432,      483432482,      366454964,
        !            99:                -239911657,     -122417791,     -474129349,     -356881235,
        !           100:                -306674912,     -457198666,     -4791796,       -156118374,
        !           101:                315967289,      466778031,      14362133,       165418627,
        !           102:                325258002,      442776452,      23947838,       141187752,
        !           103:                -334573813,     -452329571,     -33509849,      -150495567,
        !           104:                269456196,      419996626,      33682024,       184992510,
        !           105:                -278767779,     -429561909,     -43239823,      -194312473,
        !           106:                -288089226,     -405591072,     -52790694,      -170046772,
        !           107:                297394031,      415166457,      62373443,       179343061,
        !           108:                383165416,      533828478,      81314500,       232780370,
        !           109:                -373594127,     -524527769,     -72022307,      -223201717,
        !           110:                -401789990,     -519431348,     -100447498,     -217810336,
        !           111:                392228803,      510123861,      91131631,       208256633,
        !           112:                -345918580,     -496598246,     -110112096,     -261561802,
        !           113:                336361365,      487278339,      100800185,      251995695,
        !           114:                364526526,      482151208,      129260178,      246639108,
        !           115:                -354943065,     -472854735,     -119955829,     -237064675,
        !           116:                459588272,      308539942,      157983644,      7181066,
        !           117:                -469170519,     -317835713,     -167286907,     -16754925,
        !           118:                -440448382,     -323454444,     -139383890,     -21619912,
        !           119:                450006683,      332774925,      148697015,      31186721,
        !           120:                -422325548,     -271261118,     -186797064,     -36011154,
        !           121:                431888077,      280569435,      196114401,      45565815,
        !           122:                403200742,      286222960,      168180682,      50400092,
        !           123:                -412770561,     -295522711,     -177471533,     -59977915,
        !           124:                -536157576,     -384970002,     -234585260,     -83643454,
        !           125:                526853729,      375396087,      225003341,      74348507,
        !           126:                517040714,      399923932,      215944038,      98057200,
        !           127:                -507728301,     -390357307,     -206385281,     -88735767,
        !           128:                498987548,      347783818,      263426864,      112501670,
        !           129:                -489671163,     -338229613,     -253864151,     -103192641,
        !           130:                -479823314,     -362722632,     -244835582,     -126932076,
        !           131:                470531639,      353144481,      235265819,      117632909
        !           132:                };
        !           133: 
        !           134:        xe = x + n;
        !           135:        while(x < xe)
        !           136:                sum = crc_table[(sum ^ *x++) & 0xff] ^ (sum >> 8 & 0xffffff);
        !           137:        return sum;
        !           138:        }
        !           139: 
        !           140:  int
        !           141: #ifdef KR_headers
        !           142: cr_purge(buf, n)
        !           143:  Uchar *buf;
        !           144:  int n;
        !           145: #else
        !           146: cr_purge(Uchar *buf, int n)
        !           147: #endif
        !           148: {
        !           149:        register Uchar *b, *b1, *be;
        !           150:        b = buf;
        !           151:        be = b + n;
        !           152:        while(b < be)
        !           153:                if (*b++ == '\r') {
        !           154:                        b1 = b - 1;
        !           155:                        while(b < be)
        !           156:                                if ((*b1 = *b++) != '\r')
        !           157:                                        b1++;
        !           158:                        return b1 - buf;
        !           159:                        }
        !           160:        return n;
        !           161:        }
        !           162: 
        !           163: static Uchar Buf[16*1024];
        !           164: 
        !           165:  void
        !           166: #ifdef KR_headers
        !           167: process(s, x)
        !           168:  char *s;
        !           169:  int x;
        !           170: #else
        !           171: process(char *s, int x)
        !           172: #endif
        !           173: {
        !           174:        register int n;
        !           175:        long fsize, sum;
        !           176: 
        !           177:        sum = 0;
        !           178:        fsize = 0;
        !           179:        while((n = read(x, (char *)Buf, sizeof(Buf))) > 0) {
        !           180:                if (ignore_cr)
        !           181:                        n = cr_purge(Buf, n);
        !           182:                fsize += n;
        !           183:                sum = sum32(sum, Buf, n);
        !           184:                }
        !           185:        sum &= 0xffffffff;
        !           186:         if (n==0)
        !           187:                printf("%s\t%lx\t%ld\n", s, sum & 0xffffffff, fsize);
        !           188:         else { perror(s); }
        !           189:        close(x);
        !           190:        }
        !           191: 
        !           192: #ifdef KR_headers
        !           193: main(argc, argv)
        !           194:  char **argv;
        !           195: #else
        !           196: main(int argc, char **argv)
        !           197: #endif
        !           198: {
        !           199:        int x;
        !           200:        char *s;
        !           201:        static int rc;
        !           202: 
        !           203:        progname = *argv;
        !           204:        s = *++argv;
        !           205:        if (s && *s == '-') {
        !           206:                switch(s[1]) {
        !           207:                        case '?':
        !           208:                                usage(0);
        !           209:                        case 'r':
        !           210:                                ignore_cr = 1;
        !           211:                        case '-':
        !           212:                                break;
        !           213:                        default:
        !           214:                                fprintf(stderr, "invalid option %s\n", s);
        !           215:                                usage(1);
        !           216:                        }
        !           217:                s = *++argv;
        !           218:                }
        !           219:        if (s) do {
        !           220:                x = open(s, O_RDONLY|O_BINARY);
        !           221:                if (x < 0) {
        !           222:                        fprintf(stderr, "%s: can't open %s\n", progname, s);
        !           223:                        rc |= 1;
        !           224:                        }
        !           225:                else
        !           226:                        process(s, x);
        !           227:                }
        !           228:                while(s = *++argv);
        !           229:        else {
        !           230:                process("/dev/stdin", fileno(stdin));
        !           231:                }
        !           232:        return rc;
        !           233:        }

unix.superglobalmegacorp.com

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