#!/bin/bash

# Define log file path
LOG_FILE="fix_gz_universal.log"

# Clear or create the log file
> "$LOG_FILE"

# Recursively process all .gz files
find . -type f -name "*.gz" -print0 | while IFS= read -r -d '' file; do
    # Extract directory and base name
    dir=$(dirname "$file")
    base_name=$(basename "$file" .gz)
    temp_file="$dir/$base_name"
    
    # Log processing steps to the file
    {
        echo "[Processing] Handling file: $file"
        
        # Attempt to decompress
        if gzip -d "$file" 2>/dev/null; then
            echo "  Successfully decompressed to: $temp_file"
        else
            # If decompression fails, assume it's a pseudo .gz file
            echo "  Decompression failed - assuming pseudo .gz file"
            mv -- "$file" "$temp_file"
        fi
        
        # Recompress the file
        echo "  Recompressing: $temp_file"
        if gzip --best -c "$temp_file" > "$file" && touch -r "$temp_file" "$file"; then
            rm -- "$temp_file"
            echo "  Successfully recompressed: $file"
        else
            echo "  [Error] Failed to recompress - restoring original"
            mv -- "$temp_file" "$file"
        fi
    } >> "$LOG_FILE" 2>&1  # Redirect both stdout and stderr to the log file
done

echo "All operations completed. Log saved to: $LOG_FILE"

