Open sffc opened 2 years ago
thanks for reporting. which glob crate do you recommend? also do you plan to PR this?
We no longer have the symlink, so this isn't a pressing need any more. But it would still be nice lower-priority cleanup.
I've used globset before, maintained by @BurntSushi. It is more featureful than glob
, but I'm not sure if it fixes the cyclic symlink issue.
globset
unfortunately only provides glob matching. It does not also provide directory traversal, which glob
does. The ignore
crate does directory traversal and has a very complicated API, but does support glob matching too (and relies on globset
). There is also globwalk
, which is built on top of ignore
and has a simpler API.
The glob situation in Rust is not so great. I built globset
specifically to be able to efficiently handle gitignore files, but kind of just stopped there and I haven't gotten a chance to revisit the situation. (Which I still hope to do.)
Anything that's built on walkdir
(or ignore
) should not have the cyclic symlink problem. It has specific logic for detecting loops.
Describe The Bug
In a directory that has a recursive symbolic link, the duckscript
glob_array
command performs a cyclic recursion.To Reproduce
glob_array
Commentary
This is a bug in
glob
, notduckscript
, butduckscript
isn't completely off the hook because theglob
crate has had an issue open since 2017 (https://github.com/rust-lang/glob/issues/62), and a PR to fix it, but the crate hasn't been updated in several years. There are other glob-like crates in the ecosystem now with better options, including ones to ignore symlinks. It might be worthwhile migrating to one of them.