qSnapper 1.3.1
Updated to version 1.3.1
Replace external command invocations with library/API calls
Replace all QProcess-based external command calls (except installation-helper) with direct library, POSIX,
and D-Bus calls, eliminating runtime dependencies on system utilities.
Simple replacements:
- /usr/bin/snapper (list-configs): Snapper::getConfigs("/")
- /usr/sbin/btrfs: libbtrfsutil
- /bin/mkdir: std::filesystem::create_directories()
- /bin/stat + /bin/chmod: POSIX lstat() + chmod()
- /bin/chown: POSIX chown()
File copy/remove:
- /bin/rm -rf: std::filesystem::remove_all()
- /bin/cp: custom copyRegularFile() (FICLONE + sendfile fallback) and copySymlink(),
preserving ownership and timestamps
D-Bus method migration:
- Add IsConfigured(), WriteSnapperConfig(), SetupQuota() on service side
- Migrate client-side snapper commands to D-Bus calls
- Add D-Bus XML interface and Polkit policy for configure action
In-process diff:
- /usr/bin/diff -u: Myers diff algorithm with unified output format
- Replace #include with and
Full Changelog: v1.3.0...v1.3.1