Walk dir recursively the way walkFiles does, without dropping
what that walk silently skips (#426): stored entries that cannot be read
— a broken symbolic link, or anything that resolves to neither a regular
file nor a directory (a FIFO, a socket, a device) — are reported in
unreadable instead of vanishing from the package, and holdsSymlinks
marks a tree where any stored entry or directory segment is itself a
symbolic link, whose auto-repair write-back must never follow the link
(#425). A directory the walk cannot list is reported the same way, naming
the directory: every stored file under it would otherwise vanish from the
package with it (#543). A symlink whose target is a directory already on
the current path — by device and inode — is reported as "a symbolic link loop" at the link's stored name, so the walk stops there instead of
descending until the kernel's symlink budget runs out (#546); an ELOOP
from resolving a symlink (a chain that loops without reaching a
directory) is never labelled a broken link. A link whose target resolves
outside the input root is not followed at all: it is reported as "a symbolic link outside the input directory" at the link's stored name, so
foreign files never become package parts and a link to an ancestor of the
root is named at the link itself (#576). holdsHardLinks marks a
regular file with more than one directory entry, whose write-back must
not modify an unnamed alias (#545). files is exactly what walkFiles
returns.
Walk
dirrecursively the way walkFiles does, without dropping what that walk silently skips (#426): stored entries that cannot be read — a broken symbolic link, or anything that resolves to neither a regular file nor a directory (a FIFO, a socket, a device) — are reported inunreadableinstead of vanishing from the package, andholdsSymlinksmarks a tree where any stored entry or directory segment is itself a symbolic link, whose auto-repair write-back must never follow the link (#425). A directory the walk cannot list is reported the same way, naming the directory: every stored file under it would otherwise vanish from the package with it (#543). A symlink whose target is a directory already on the current path — by device and inode — is reported as"a symbolic link loop"at the link's stored name, so the walk stops there instead of descending until the kernel's symlink budget runs out (#546); anELOOPfrom resolving a symlink (a chain that loops without reaching a directory) is never labelled a broken link. A link whose target resolves outside the input root is not followed at all: it is reported as"a symbolic link outside the input directory"at the link's stored name, so foreign files never become package parts and a link to an ancestor of the root is named at the link itself (#576).holdsHardLinksmarks a regular file with more than one directory entry, whose write-back must not modify an unnamed alias (#545).filesis exactly whatwalkFilesreturns.