00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011 const char *XrdOucCRC32CVSID = "$Id: XrdOucCRC.cc 30949 2009-11-02 16:37:58Z ganis $";
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031 #include "XrdOucCRC.hh"
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053 unsigned int XrdOucCRC::crctable[256] =
00054 {
00055 0x00000000, 0x77073096, 0xEE0E612C, 0x990951BA,
00056 0x076DC419, 0x706AF48F, 0xE963A535, 0x9E6495A3,
00057 0x0EDB8832, 0x79DCB8A4, 0xE0D5E91E, 0x97D2D988,
00058 0x09B64C2B, 0x7EB17CBD, 0xE7B82D07, 0x90BF1D91,
00059 0x1DB71064, 0x6AB020F2, 0xF3B97148, 0x84BE41DE,
00060 0x1ADAD47D, 0x6DDDE4EB, 0xF4D4B551, 0x83D385C7,
00061 0x136C9856, 0x646BA8C0, 0xFD62F97A, 0x8A65C9EC,
00062 0x14015C4F, 0x63066CD9, 0xFA0F3D63, 0x8D080DF5,
00063 0x3B6E20C8, 0x4C69105E, 0xD56041E4, 0xA2677172,
00064 0x3C03E4D1, 0x4B04D447, 0xD20D85FD, 0xA50AB56B,
00065 0x35B5A8FA, 0x42B2986C, 0xDBBBC9D6, 0xACBCF940,
00066 0x32D86CE3, 0x45DF5C75, 0xDCD60DCF, 0xABD13D59,
00067 0x26D930AC, 0x51DE003A, 0xC8D75180, 0xBFD06116,
00068 0x21B4F4B5, 0x56B3C423, 0xCFBA9599, 0xB8BDA50F,
00069 0x2802B89E, 0x5F058808, 0xC60CD9B2, 0xB10BE924,
00070 0x2F6F7C87, 0x58684C11, 0xC1611DAB, 0xB6662D3D,
00071 0x76DC4190, 0x01DB7106, 0x98D220BC, 0xEFD5102A,
00072 0x71B18589, 0x06B6B51F, 0x9FBFE4A5, 0xE8B8D433,
00073 0x7807C9A2, 0x0F00F934, 0x9609A88E, 0xE10E9818,
00074 0x7F6A0DBB, 0x086D3D2D, 0x91646C97, 0xE6635C01,
00075 0x6B6B51F4, 0x1C6C6162, 0x856530D8, 0xF262004E,
00076 0x6C0695ED, 0x1B01A57B, 0x8208F4C1, 0xF50FC457,
00077 0x65B0D9C6, 0x12B7E950, 0x8BBEB8EA, 0xFCB9887C,
00078 0x62DD1DDF, 0x15DA2D49, 0x8CD37CF3, 0xFBD44C65,
00079 0x4DB26158, 0x3AB551CE, 0xA3BC0074, 0xD4BB30E2,
00080 0x4ADFA541, 0x3DD895D7, 0xA4D1C46D, 0xD3D6F4FB,
00081 0x4369E96A, 0x346ED9FC, 0xAD678846, 0xDA60B8D0,
00082 0x44042D73, 0x33031DE5, 0xAA0A4C5F, 0xDD0D7CC9,
00083 0x5005713C, 0x270241AA, 0xBE0B1010, 0xC90C2086,
00084 0x5768B525, 0x206F85B3, 0xB966D409, 0xCE61E49F,
00085 0x5EDEF90E, 0x29D9C998, 0xB0D09822, 0xC7D7A8B4,
00086 0x59B33D17, 0x2EB40D81, 0xB7BD5C3B, 0xC0BA6CAD,
00087 0xEDB88320, 0x9ABFB3B6, 0x03B6E20C, 0x74B1D29A,
00088 0xEAD54739, 0x9DD277AF, 0x04DB2615, 0x73DC1683,
00089 0xE3630B12, 0x94643B84, 0x0D6D6A3E, 0x7A6A5AA8,
00090 0xE40ECF0B, 0x9309FF9D, 0x0A00AE27, 0x7D079EB1,
00091 0xF00F9344, 0x8708A3D2, 0x1E01F268, 0x6906C2FE,
00092 0xF762575D, 0x806567CB, 0x196C3671, 0x6E6B06E7,
00093 0xFED41B76, 0x89D32BE0, 0x10DA7A5A, 0x67DD4ACC,
00094 0xF9B9DF6F, 0x8EBEEFF9, 0x17B7BE43, 0x60B08ED5,
00095 0xD6D6A3E8, 0xA1D1937E, 0x38D8C2C4, 0x4FDFF252,
00096 0xD1BB67F1, 0xA6BC5767, 0x3FB506DD, 0x48B2364B,
00097 0xD80D2BDA, 0xAF0A1B4C, 0x36034AF6, 0x41047A60,
00098 0xDF60EFC3, 0xA867DF55, 0x316E8EEF, 0x4669BE79,
00099 0xCB61B38C, 0xBC66831A, 0x256FD2A0, 0x5268E236,
00100 0xCC0C7795, 0xBB0B4703, 0x220216B9, 0x5505262F,
00101 0xC5BA3BBE, 0xB2BD0B28, 0x2BB45A92, 0x5CB36A04,
00102 0xC2D7FFA7, 0xB5D0CF31, 0x2CD99E8B, 0x5BDEAE1D,
00103 0x9B64C2B0, 0xEC63F226, 0x756AA39C, 0x026D930A,
00104 0x9C0906A9, 0xEB0E363F, 0x72076785, 0x05005713,
00105 0x95BF4A82, 0xE2B87A14, 0x7BB12BAE, 0x0CB61B38,
00106 0x92D28E9B, 0xE5D5BE0D, 0x7CDCEFB7, 0x0BDBDF21,
00107 0x86D3D2D4, 0xF1D4E242, 0x68DDB3F8, 0x1FDA836E,
00108 0x81BE16CD, 0xF6B9265B, 0x6FB077E1, 0x18B74777,
00109 0x88085AE6, 0xFF0F6A70, 0x66063BCA, 0x11010B5C,
00110 0x8F659EFF, 0xF862AE69, 0x616BFFD3, 0x166CCF45,
00111 0xA00AE278, 0xD70DD2EE, 0x4E048354, 0x3903B3C2,
00112 0xA7672661, 0xD06016F7, 0x4969474D, 0x3E6E77DB,
00113 0xAED16A4A, 0xD9D65ADC, 0x40DF0B66, 0x37D83BF0,
00114 0xA9BCAE53, 0xDEBB9EC5, 0x47B2CF7F, 0x30B5FFE9,
00115 0xBDBDF21C, 0xCABAC28A, 0x53B39330, 0x24B4A3A6,
00116 0xBAD03605, 0xCDD70693, 0x54DE5729, 0x23D967BF,
00117 0xB3667A2E, 0xC4614AB8, 0x5D681B02, 0x2A6F2B94,
00118 0xB40BBE37, 0xC30C8EA1, 0x5A05DF1B, 0x2D02EF8D
00119 };
00120
00121
00122
00123
00124
00125
00126
00127
00128
00129
00130
00131
00132
00133
00134
00135
00136
00137
00138
00139
00140
00141
00142
00143
00144
00145
00146
00147
00148
00149 unsigned int XrdOucCRC::CRC32(const unsigned char *p, int reclen)
00150 {
00151 const unsigned int CRC32_XINIT = 0xffffffff;
00152 const unsigned int CRC32_XOROT = 0xffffffff;
00153 unsigned int crc = CRC32_XINIT;
00154
00155
00156
00157 while(reclen-- > 0) crc = crctable[(crc ^ *p++) & 0xff] ^ (crc >> 8);
00158
00159
00160
00161 return crc ^ CRC32_XOROT;
00162 }