| 6576 | } |
| 6577 | |
| 6578 | void writeFileIfNeeded(const char *fileName) { |
| 6579 | //printf("[D] FLAGSAVEREADFILE %i, FLAGREADEDFILE1 %i\n",FLAGSAVEREADFILE,FLAGREADEDFILE1); |
| 6580 | if(FLAGSAVEREADFILE && !FLAGREADEDFILE1) { |
| 6581 | FILE *fileDescriptor; |
| 6582 | char fileBloomName[30]; |
| 6583 | uint8_t checksum[32],hexPrefix[9]; |
| 6584 | char dataChecksum[32],bloomChecksum[32]; |
| 6585 | size_t bytesWrite; |
| 6586 | uint64_t dataSize; |
| 6587 | if(!sha256_file((const char*)fileName,checksum)){ |
| 6588 | fprintf(stderr,"[E] sha256_file error line %i\n",__LINE__ - 1); |
| 6589 | exit(EXIT_FAILURE); |
| 6590 | } |
| 6591 | tohex_dst((char*)checksum,4,(char*)hexPrefix); // we save the prefix (last fourt bytes) hexadecimal value |
| 6592 | snprintf(fileBloomName,30,"data_%s.dat",hexPrefix); |
| 6593 | fileDescriptor = fopen(fileBloomName,"wb"); |
| 6594 | dataSize = N * (sizeof(struct address_value)); |
| 6595 | printf("[D] size data %li\n",dataSize); |
| 6596 | if(fileDescriptor != NULL) { |
| 6597 | printf("[+] Writing file %s ",fileBloomName); |
| 6598 | |
| 6599 | |
| 6600 | //calculate bloom checksum |
| 6601 | //write bloom checksum (expected value to be checked) |
| 6602 | //write bloom filter structure |
| 6603 | //write bloom filter data |
| 6604 | |
| 6605 | |
| 6606 | //calculate dataChecksum |
| 6607 | //write data checksum (expected value to be checked) |
| 6608 | //write data size |
| 6609 | //write data |
| 6610 | |
| 6611 | |
| 6612 | |
| 6613 | |
| 6614 | sha256((uint8_t*)bloom.bf,bloom.bytes,(uint8_t*)bloomChecksum); |
| 6615 | printf("."); |
| 6616 | bytesWrite = fwrite(bloomChecksum,1,32,fileDescriptor); |
| 6617 | if(bytesWrite != 32) { |
| 6618 | fprintf(stderr,"[E] Errore writing file, code line %i\n",__LINE__ - 2); |
| 6619 | exit(EXIT_FAILURE); |
| 6620 | } |
| 6621 | printf("."); |
| 6622 | |
| 6623 | bytesWrite = fwrite(&bloom,1,sizeof(struct bloom),fileDescriptor); |
| 6624 | if(bytesWrite != sizeof(struct bloom)) { |
| 6625 | fprintf(stderr,"[E] Error writing file, code line %i\n",__LINE__ - 2); |
| 6626 | exit(EXIT_FAILURE); |
| 6627 | } |
| 6628 | printf("."); |
| 6629 | |
| 6630 | bytesWrite = fwrite(bloom.bf,1,bloom.bytes,fileDescriptor); |
| 6631 | if(bytesWrite != bloom.bytes) { |
| 6632 | fprintf(stderr,"[E] Error writing file, code line %i\n",__LINE__ - 2); |
| 6633 | fclose(fileDescriptor); |
| 6634 | exit(EXIT_FAILURE); |
| 6635 | } |
no test coverage detected