cleaning up code
diff --git a/programs/fileio.c b/programs/fileio.c
index dadb8ec..ca08c7f 100644
--- a/programs/fileio.c
+++ b/programs/fileio.c
@@ -872,6 +872,23 @@
} fileInfo_t;
+int calcFrameHeaderSize(BYTE frameHeaderDescriptor){
+ int frameContentSizeBytes = 0;
+ int windowDescriptorBytes;
+ int dictionaryIDBytes;
+ int frameContentSizeFlag = frameHeaderDescriptor >> 6;
+ int singleSegmentFlag = (frameHeaderDescriptor & (1 << 5)) >> 5;
+ int dictionaryIDFlag = frameHeaderDescriptor & 3;
+ if(frameContentSizeFlag!=0){
+ frameContentSizeBytes = 1 << frameContentSizeFlag;
+ }
+ else if(singleSegmentFlag){
+ frameContentSizeBytes = 1;
+ }
+ windowDescriptorBytes = singleSegmentFlag ? 0 : 1;
+ dictionaryIDBytes = dictionaryIDFlag ? 1 << (dictionaryIDFlag - 1): 0;
+ return 4 + 1 + windowDescriptorBytes + frameContentSizeBytes + dictionaryIDBytes;
+}
/*
* Reads information from file, stores in *info
@@ -896,17 +913,9 @@
magicNumber = MEM_readLE32(magicNumberBuffer);
if(magicNumber==ZSTD_MAGICNUMBER){
BYTE frameHeaderDescriptor;
- int frameContentSizeFlag;
- int singleSegmentFlag;
- int contentChecksumFlag;
- int dictionaryIDFlag;
- int frameContentSizeBytes=0;
- int windowDescriptorBytes;
- int dictionaryIDBytes;
int totalFrameHeaderBytes;
BYTE* frameHeader;
- U64 additional;
- int lastBlock;
+ int lastBlock = 0;
size_t readBytes = fread(&frameHeaderDescriptor, 1, 1, srcFile);
info->numActualFrames++;
if(readBytes != 1){
@@ -914,19 +923,7 @@
exit(1);
}
/* calculate actual frame header size */
- frameContentSizeFlag = frameHeaderDescriptor >> 6;
- singleSegmentFlag = (frameHeaderDescriptor & (1 << 5)) >> 5;
- contentChecksumFlag = (frameHeaderDescriptor & (1 << 2)) >> 2;
- dictionaryIDFlag = frameHeaderDescriptor & 3;
- if(frameContentSizeFlag!=0){
- frameContentSizeBytes = 1 << frameContentSizeFlag;
- }
- else if(singleSegmentFlag){
- frameContentSizeBytes = 1;
- }
- windowDescriptorBytes = singleSegmentFlag ? 0 : 1;
- dictionaryIDBytes = dictionaryIDFlag ? 1 << (dictionaryIDFlag - 1): 0;
- totalFrameHeaderBytes = 4 + 1 + windowDescriptorBytes + frameContentSizeBytes + dictionaryIDBytes;
+ totalFrameHeaderBytes = calcFrameHeaderSize(frameHeaderDescriptor);
/* reset to beginning of from and read entire header */
fseek(srcFile, -5, SEEK_CUR);
@@ -938,21 +935,17 @@
}
/* get decompressed file size */
- additional = ZSTD_getFrameContentSize(frameHeader, totalFrameHeaderBytes);
- if(additional!=ZSTD_CONTENTSIZE_UNKNOWN && additional!=ZSTD_CONTENTSIZE_ERROR){
- info->decompressedSize += additional;
- }
- else{
- info->canComputeDecompSize = 0;
- }
-
- /* check if checksum is used */
- if(contentChecksumFlag){
- info->usesCheck = 1;
+ {
+ U64 additional = ZSTD_getFrameContentSize(frameHeader, totalFrameHeaderBytes);
+ if(additional!=ZSTD_CONTENTSIZE_UNKNOWN && additional!=ZSTD_CONTENTSIZE_ERROR){
+ info->decompressedSize += additional;
+ }
+ else{
+ info->canComputeDecompSize = 0;
+ }
}
/* skip the rest of the blocks in the frame */
- lastBlock = 0;
do{
BYTE blockHeaderBuffer[3];
U32 blockHeader;
@@ -967,8 +960,15 @@
blockSize = (blockHeader - (blockHeader & 7)) >> 3;
fseek(srcFile, blockSize, SEEK_CUR);
}while(lastBlock != 1);
- if(contentChecksumFlag){
- fseek(srcFile, 4, SEEK_CUR);
+ {
+ /* check if checksum is used */
+ int contentChecksumFlag = (frameHeaderDescriptor & (1 << 2)) >> 2;
+ if(contentChecksumFlag){
+ info->usesCheck = 1;
+ }
+ if(contentChecksumFlag){
+ fseek(srcFile, 4, SEEK_CUR);
+ }
}
}
else if(magicNumber==ZSTD_MAGIC_SKIPPABLE_START){
@@ -987,64 +987,64 @@
}
return 0;
}
+void displayInfo(const char* inFileName, fileInfo_t* info, int displayLevel){
+ double compressedSizeMB = (double)info->compressedSize/(1 MB);
+ double decompressedSizeMB = (double)info->decompressedSize/(1 MB);
+
+ if(displayLevel<=2){
+ if(info->usesCheck && info->canComputeDecompSize){
+ DISPLAY("Skippable Non-Skippable Compressed Uncompressed Ratio Check Filename\n");
+ DISPLAY("%9d %13d %7.2f MB %7.2f MB %5.3f XXH64 %s\n",
+ info->numSkippableFrames, info->numActualFrames, compressedSizeMB, decompressedSizeMB,
+ compressedSizeMB/decompressedSizeMB, inFileName);
+ }
+ else if(!info->usesCheck){
+ DISPLAY("Skippable Non-Skippable Compressed Uncompressed Ratio Check Filename\n");
+ DISPLAY("%9d %13d %7.2f MB %7.2f MB %5.3f %s\n",
+ info->numSkippableFrames, info->numActualFrames, compressedSizeMB, decompressedSizeMB,
+ compressedSizeMB/decompressedSizeMB, inFileName);
+ }
+ else if(!info->canComputeDecompSize){
+ DISPLAY("Skippable Non-Skippable Compressed Uncompressed Ratio Check Filename\n");
+ DISPLAY("%9d %13d %7.2f MB XXH64 %s\n",
+ info->numSkippableFrames, info->numActualFrames, compressedSizeMB, inFileName);
+ }
+ else{
+ DISPLAY("Skippable Non-Skippable Filename\n");
+ DISPLAY("%9d %13d %7.2f MB %s\n",
+ info->numSkippableFrames, info->numActualFrames, compressedSizeMB, inFileName);
+ }
+ }
+ else{
+ DISPLAY("# Zstandard Frames: %d\n", info->numActualFrames);
+ DISPLAY("# Skippable Frames: %d\n", info->numSkippableFrames);
+ DISPLAY("Compressed Size: %.2f MB (%llu B)\n", compressedSizeMB, info->compressedSize);
+ if(info->canComputeDecompSize){
+ DISPLAY("Decompressed Size: %.2f MB (%llu B)\n", decompressedSizeMB, info->decompressedSize);
+ DISPLAY("Ratio: %.4f\n", compressedSizeMB/decompressedSizeMB);
+ }
+ if(info->usesCheck){
+ DISPLAY("Check: XXH64\n");
+ }
+ }
+
+}
int FIO_listFile(const char* inFileName, int displayLevel){
const char* const suffixPtr = strrchr(inFileName, '.');
- DISPLAY("FILE DETECTED: %s\n", inFileName);
+ DISPLAY("File: %s\n", inFileName);
if(!suffixPtr || strcmp(suffixPtr, ZSTD_EXTENSION)){
- DISPLAYLEVEL(1, "file %s was not compressed with zstd -- ignoring\n", inFileName);
- DISPLAY("\n");
+ DISPLAYLEVEL(1, "file %s was not compressed with zstd -- ignoring\n\n", inFileName);
return 1;
}
else{
- double compressedSizeMB;
- double decompressedSizeMB;
fileInfo_t* info = (fileInfo_t*)malloc(sizeof(fileInfo_t));
int error = getFileInfo(info, inFileName);
if(error==1){
DISPLAY("An error occurred with getting file info\n");
exit(1);
}
-
- compressedSizeMB = (double)info->compressedSize/(1 MB);
- decompressedSizeMB = (double)info->decompressedSize/(1 MB);
-
- if(displayLevel<=2){
- if(info->usesCheck && info->canComputeDecompSize){
- DISPLAY("Skippable Non-Skippable Compressed Uncompressed Ratio Check Filename\n");
- DISPLAY("%9d %13d %7.2f MB %7.2f MB %5.3f XXH64 %s\n",
- info->numSkippableFrames, info->numActualFrames, compressedSizeMB, decompressedSizeMB,
- compressedSizeMB/decompressedSizeMB, inFileName);
- }
- else if(!info->usesCheck){
- DISPLAY("Skippable Non-Skippable Compressed Uncompressed Ratio Check Filename\n");
- DISPLAY("%9d %13d %7.2f MB %7.2f MB %5.3f %s\n",
- info->numSkippableFrames, info->numActualFrames, compressedSizeMB, decompressedSizeMB,
- compressedSizeMB/decompressedSizeMB, inFileName);
- }
- else if(!info->canComputeDecompSize){
- DISPLAY("Skippable Non-Skippable Compressed Uncompressed Ratio Check Filename\n");
- DISPLAY("%9d %13d %7.2f MB XXH64 %s\n",
- info->numSkippableFrames, info->numActualFrames, compressedSizeMB, inFileName);
- }
- else{
- DISPLAY("Skippable Non-Skippable Filename\n");
- DISPLAY("%9d %13d %7.2f MB %s\n",
- info->numSkippableFrames, info->numActualFrames, compressedSizeMB, inFileName);
- }
- }
- else{
- DISPLAY("# Zstandard Frames: %d\n", info->numActualFrames);
- DISPLAY("# Skippable Frames: %d\n", info->numSkippableFrames);
- DISPLAY("Compressed Size: %.2f MB (%llu B)\n", compressedSizeMB, info->compressedSize);
- if(info->canComputeDecompSize){
- DISPLAY("Decompressed Size: %.2f MB (%llu B)\n", decompressedSizeMB, info->decompressedSize);
- DISPLAY("Ratio: %.4f\n", compressedSizeMB/decompressedSizeMB);
- }
- if(info->usesCheck){
- DISPLAY("Check: XXH64\n");
- }
- }
+ displayInfo(inFileName, info, displayLevel);
}
DISPLAY("\n");
return 0;