/* Altera zero packer and depacker by Shaos (2017,2021) */ #include #include #include int main(int argc, char** argv) { int b,i,n; long l,maxzero,nonzero,nzero,sz,current=0; FILE *f,*fo; if(argc<3) { printf("\n\t%s imgfilename packedfilename\nor",argv[0]); printf("\n\t%s -d packedfilename depackedfile\n",argv[0]); return 0; } if(argv[1][0]=='-' && argv[1][1]=='d') { f = fopen(argv[2],"rb"); if(f==NULL) return -1; if(argc==3) fo = fopen("Altera.bin","wb"); else fo = fopen(argv[3],"wb"); if(fo==NULL){fclose(f);return -2;} fseek(f,0,SEEK_END); sz = ftell(f); printf("Size=%li\n",sz); fseek(f,0,SEEK_SET); printf("Depack %s (size=%li)\n",argv[2],sz); for(l=0;lmaxzero) maxzero=nzero; current+=2; fputc(0,fo); fputc(nzero,fo); } if(b) { nzero = 0; nonzero++; current++; fputc(b,fo); } else nzero = 1; } else nzero++; } if(nzero) { if(nzero>maxzero) maxzero=nzero; current+=2; fputc(0,fo); fputc(nzero,fo); } printf("maxzero=%li nonzero=%li current=%li\n",maxzero,nonzero,current); fclose(fo); fclose(f); return 0; }