Releases: paolostivanin/FastFileCheck
v1.0.0-beta3
Changes since beta2:
- Add overflow checks and return value validations:
- the get_free_memory function was modified to prevent division by zero and multiplication overflow
- the g_setenv call's return value is now checked and logged if failed
- Introduce GMutex in SummaryData to protect shared state
- Add
summary_increment_processed()andsummary_get_processed()with atomic operations for thread-safe progress tracking - Replace direct increments of total_files_processed with new API
- Ensure g_mutex_init and g_mutex_clear are called during lifecycle
- Fix missing cleanup in load_config() by freeing key_file and config_data on error paths
- Lower log level for chunked file reading from INFO to DEBUG
sha256: 34f3072f6f141838c9c483de029c65787d1ceb6f0c7dd6146b8cd900349914b0
1.0.0-beta2
Changes since beta1:
- Add LMDB performance/durability toggles to configuration:
- db_nosync, db_nometasync, db_mapasync, db_writemap (default: false)
- Parse new flags from [database] in config file (config.c)
- Apply corresponding flags when opening LMDB env (database.c)
- Document options and usage:
- Update example.conf with new flags and guidance
- Add README section: “HDD performance tuning (LMDB flags and recipes)” with explanations, recipes, and safety notes
Notes:
- All flags default to false for maximum safety; behavior is unchanged unless explicitly enabled.
- Using these flags can risk data loss on sudden power loss/crash; see README for details.
sha256: 6e23ac44263a3039f8cd8b0cae092785afbc2d7c05766bedc91cff69e46ca84c
1.0.0-beta1
Changes since alpha4:
- Added exponential backoff (1–10ms) in flush_queue_buffer() to reduce CPU usage
when queue is full, with reset after successful push. - Fixed LMDB key size calculation in process_file.c to use byte length (strlen)
instead of UTF-8 character count. - Ensured get_max_queue_size() always returns at least 1 to prevent deadlocks
on very low RAM systems. - Refactored scan_dir() to simplify skip logic and improve readability.
- Introduce --verbose/-V CLI option to enable detailed logs and live progress updates
- Echo INFO/DEBUG/MESSAGE logs to stdout when verbose is enabled
- Add periodic progress reporter thread
- Show start/end timestamps and duration
- Improve help text formatting
sha256: 48e76f722f5f05be673d73edac0e8befcbcfdcc4065010e63829df6584c80550
1.0.0-alpha4
Changes since alpha3:
- Improve logging and file handling
- Add proper handling of NULL values in queue operations
- Fix incorrect LMDB transaction flags in check mode
- Add missing log levels (CRITICAL, MESSAGE) to log handler
- Improve error handling and memory management in config loading
- Add total processed files in all cases
- Handle missing files
- report files that are in the database but not in the filesystem
- report files that are in the filesystem but not in the database
sha256: dc8c9e02ec3699c3eba30b3e3045dce46adbb36fab8679880107bf7141adaacd
1.0.0-alpha3
Changes since alpha2:
Major Improvements
- Added comprehensive change tracking and summary reporting
- New summary system shows detailed statistics of file changes
- Reports hash mismatches, inode changes, link count changes, and block count changes
- Provides a breakdown of affected files and specific changes
- Enhanced logging system
- Implemented thread-safe logging with mutex protection
- Added log file caching for better performance
- Improved log message formatting and consistency
- Added proper cleanup of logging resources
Stability & Error Handling
- Improved memory management
- Replaced malloc calls with g_try_malloc0_n and g_new0 with g_try_new0
- Added proper memory allocation checks throughout the code
- Fixed potential memory leaks in database and configuration handling
- Better directory handling
- Improved directory path validation
- More robust directory creation and permission checking
- Better error messages for directory-related issues
- Enhanced database operations
- Added proper transaction handling
- Improved error reporting for database operations
- Fixed potential resource leaks in database initialization
- Implemented proper cleanup procedures for all components
sha256: 18dd0c88c91680e1a699881ae88589af41216f96a5b781ef260828813218c8b6
1.0.0-alpha2
Changes since alpha1:
- implement logging to file
- implement directory scanning from config instead of CLI
- implement exclusion of files and directories from scanning
- Code optimization and fixes
sha256: 0b49882571f8e5b3156a79127a09911a2bdf21eb54586737e62b21215a189a4c
1.0.0-alpha1 - HackWeek24
1.0.0-alpha1
This first big release has been possible thanks to the Hack Week 24 😄
Features:
- multi threaded execution via a thread pool and async queue
- given a directory,
add | check | updatefiles info (hash, inode, link count, block count) - full config file available (not all options used, see below) and documented
In development for alpha2:
- implement logging to file
- implement directory scanning from config instead of CLI
- implement exclusion of files and directories from scanning
sha256: ab8027151219d7feec0993565768eedc5d19d8b543ebc5ed0b875def65369c56