scan: create the database's directory where its path leads (closes #119)
check / check (push) Canceled after 0s
check / check (push) Canceled after 0s
scan created a missing database directory from filepath.Dir of the path, which cleans it as text and drops each ".." together with the name before it. After a symlinked directory that is another directory than the one the system reaches when it opens the file, so scan left an empty directory beside the symlink and then failed to create the database. lockScanDatabase and openScanDatabase now both call createDatabaseDirectory, beside databasePath, which cuts the last element off the path as text and creates what is missing along it. A comment in databasePath now says why the working directory has its symlinks resolved. Unverified: a missing directory before a ".." in the path is created along the way; no test covers it. Model: opus-5-5
This commit was merged in pull request #129.
This commit is contained in:
@@ -29,6 +29,14 @@
|
||||
|
||||
# Completed Steps
|
||||
|
||||
- `scan` creates the database's directory where the database path leads: the
|
||||
path with its last element cut off as text, never cleaned, so a `..` after a
|
||||
symlinked directory is followed through the symlink, as when the file is
|
||||
opened. With `SFDUPES_DATABASE=/srv/link/../new/db.sqlite` and `/srv/link` a
|
||||
symlink to `/data/x`, it creates `/data/new` and the database in it, where it
|
||||
used to create `/srv/new` and then fail (2026-10-17,
|
||||
https://git.eeqj.de/sneak/sfdupes/issues/119)
|
||||
|
||||
- `scan` never records its own database: once the database and its `.lock` file
|
||||
are open, it notes the device and inode of the database file, its `-wal` and
|
||||
`-shm` files and its `.lock` file, and the walk passes over a file with one of
|
||||
|
||||
Reference in New Issue
Block a user