Initial Commit.

This commit is contained in:
2013-05-24 00:49:29 +02:00
commit aeb408cfb1
14 changed files with 1286 additions and 0 deletions

69
crc.c Normal file
View File

@@ -0,0 +1,69 @@
#include <stdio.h>
unsigned long CRCTable[256];
int CRCTable_initialized=0;
#define CRC32_POLYNOMIAL 0xEDB88320L
void CRCTable_Init(){
int i;
int j;
unsigned long crc;
if(CRCTable_initialized){
return;
}
CRCTable_initialized=1;
for (i=0;i<256;i++){
crc=i;
for (j=8;j>0;j--){
if (crc&1)
crc=(crc>>1)^CRC32_POLYNOMIAL;
else
crc>>=1;
}
CRCTable[i]=crc;
}
}
unsigned long CRC_Buffer(unsigned char *buffer,int len,unsigned long crc){
unsigned char *p;
unsigned long temp1;
unsigned long temp2;
// Calcular CRC del buffer
p=(unsigned char*)buffer;
while(len--!=0) {
temp1=(crc>>8)&0x00FFFFFFL;
temp2=CRCTable[((int)crc^*p++)&0xff];
crc=temp1^temp2;
}
return(crc);
}
unsigned long CRC_File(FILE *file){
unsigned long crc;
int count;
unsigned char buffer[512];
unsigned char *p;
unsigned long temp1;
unsigned long temp2;
CRCTable_Init();
crc=0xFFFFFFFFL;
for(;;){
// Llenar el buffer
count=fread(buffer,1,512,file);
if(count==0)
break;
// Calcular CRC del buffer
crc=CRC_Buffer(buffer,count,crc);
}
return(crc^=0xFFFFFFFFL);
}