
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>

int main(int argc, char *argv[]){
	int i;
	FILE *f;	
	char *buff;
	unsigned long len;
	struct stat info;

	if(stat(argv[1],&info) == -1){ printf("Cannot stat '%s'\n",argv[1]); return -1; }
	len = (unsigned long)info.st_size;
	printf("size: %lu\n",len);
	
	buff=(char *)malloc(info.st_size);
	if(!buff){printf("buff fail\n"); return 0; }
	

	f=fopen(argv[1],"rb");
	if(!f){printf("file fail\n"); return 0; }
	
	fread(buff,info.st_size,1,f);
	fclose(f);
	printf("checksum: ");
	fflush(stdout);

	unsigned long *l=(unsigned long*)buff;

	unsigned long checkSum=0;
	for(i=0;i<info.st_size;i+=4){
		
		checkSum += *l++;
		//rintf("%i: %08x\n",i,checkSum);
		
	}
	printf("%08x\n",checkSum);
	
	return 0;

}
