[llvm-dev] Supporting symbolic links in Path library routines

Michael Spencer via llvm-dev llvm-dev at lists.llvm.org
Wed Aug 19 18:48:30 PDT 2015


On Mon, Aug 17, 2015 at 6:32 PM, Cameron Esfahani via llvm-dev
<llvm-dev at lists.llvm.org> wrote:
> include/llvm/Support/FileSystem.h has file_type which enumerates the file system’s view of the file type.  One of the values is “symlink_file”.
>
> But because the Unix implementation of status() calls stat() instead of lstat(), if the path refers to a symbolic link, the link is followed.  There’s no way to get information about the symbolic link itself.
>
> I think changing status() to call lstat() is a bad idea, so it seems like the only other option is to create a new routine when you explicitly want to check if what the path refers to is a symbolic link.
>
> Or this is such an uncommon case, that it’s the caller’s responsibility to detect if a file path refers to a symbolic link in whatever platform appropriate mechanism they have available to them.  If that’s the case, then I suggest removing symlink_file from file_type.
>
> Any comments?
>
> Cameron Esfahani
> dirty at apple.com
>
> "There are times in the life of a nation when the only place a decent man can find himself is in prison."
>
>
>
> _______________________________________________
> LLVM Developers mailing list
> llvm-dev at lists.llvm.org         http://llvm.cs.uiuc.edu
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev

The API was designed as a mirror of the Boost Filesystem API. I'm not
surprised to see an unused enum member there. I don't believe any LLVM
tools care about symlinks, so I'm fine with removing it as long as no
platform will return that value.

- Michael Spencer


More information about the llvm-dev mailing list