fix: cost the device prefix exactly rather than approximately
Build and publish container / build (pull_request) Successful in 3m54s
Build and publish container / build (pull_request) Successful in 3m54s
The budget subtracted the prefix length plus two, on the assumption of a leading and a trailing slash. That is right for /Music and wrong for an empty prefix, where there is only one slash -- losing a character at the card root, which is exactly where the longest paths sit. Computed from the prefix as it will actually appear instead: /Music/ costs seven characters and gives a mirror-relative budget of 253, the root costs one and gives 259. Worth being exact about because the reverse error is worse. A checker comparing mirror-relative paths against the flat 260 passes everything between 253 and 260, and those are precisely the paths closest to the edge.
This commit is contained in:
@@ -241,7 +241,16 @@ run would move rather than what it would delete.
|
||||
Rockbox's `MAX_PATH` is 260, from `firmware/include/fs_defines.h`, and it bounds
|
||||
the path *as the device sees it*. The directory the mirror is copied into comes
|
||||
out of the same budget, so `--device-prefix` (default `/Music`) is subtracted
|
||||
from `--max-path` to get what a mirror-relative path may spend.
|
||||
from `--max-path` to get what a mirror-relative path may spend:
|
||||
|
||||
| Destination on the device | Mirror-relative budget |
|
||||
| ------------------------- | ---------------------- |
|
||||
| `/Music/` | 253 |
|
||||
| the card root | 259 |
|
||||
|
||||
Worth being exact about, because a checker that measures mirror-relative paths
|
||||
against the flat 260 quietly passes everything from 253 to 260 — and those are
|
||||
the paths most likely to be near the edge in the first place.
|
||||
|
||||
Over-budget paths are shortened from the **deepest component outward**: the
|
||||
track name carries the least navigational value and the artist directory the
|
||||
|
||||
Reference in New Issue
Block a user