Skip to content

v1.2.1 - Add comprehensive symlink support

Choose a tag to compare

@zombocoder zombocoder released this 13 Sep 15:19
· 29 commits to main since this release

What's New

Symlink Support

  • Full symlink preservation: Create, extract, and list symbolic links with complete metadata preservation
  • Cross-platform compatibility: Works on Unix-like systems (Linux, macOS, BSD)
  • All symlink types supported: Relative paths, absolute paths, broken links, and directory links
  • Integration with existing features: Symlinks work seamlessly with compression (ZSTD) and encryption (ChaCha20-Poly1305)

API Enhancements

  • New bfc_add_symlink() function for programmatic symlink creation
  • Enhanced CLI commands to handle symlinks across all operations (create, extract, list, info, verify)
  • Proper symlink detection using lstat() instead of stat()

CLI Improvements

  • Create command: Automatically detects and preserves symlinks during container creation
  • Extract command: Restores symlinks with original targets and timestamps using lutimes()
  • List command: Displays symlinks with 'l' prefix in file mode (e.g., lrwxrwxrwx)
  • Info command: Shows symlink count and type statistics
  • Verify command: Validates symlink integrity and targets

Testing & Quality

  • Comprehensive unit test coverage for both writer and reader functionality
  • Integration tests covering all symlink scenarios
  • CI/CD pipeline updated with symlink testing
  • Cross-platform build fixes for Linux systems

Technical Details

  • Symlink targets are stored as file content within the container format
  • Uses existing BFC_TYPE_SYMLINK object type in the BFC format
  • Maintains backward compatibility with existing containers
  • CRC32C validation ensures symlink target integrity