Skip to content

Check files symlink support#398

Draft
inqrphl wants to merge 6 commits into
mainfrom
check-files-symlink-support
Draft

Check files symlink support#398
inqrphl wants to merge 6 commits into
mainfrom
check-files-symlink-support

Conversation

@inqrphl

@inqrphl inqrphl commented Jun 30, 2026

Copy link
Copy Markdown
Contributor

default golang filepath.Walk did not traverse into the recursive directories. need to check if a filesystem item is a link using fs.readLink

add a new file walker, it can resolve file links, and keeps track of visited files, directories and inodes

this prevents infinite recursion and adding the same file twice due to hard links

add new argument followSymlinks and new attribute is_symlink.

This attribute is toggled on for symlinks and junctions under windows.

On windows, file walker sees hardlinks like another files, but cannot determine if they are hardlinks or not. So they are added without setting is_symlink on.

On windows, it can detect junctions by checking if FILE_ATTRIBUTE_REPARSE_POINT bit is set in the Win32 file attribute struct. This is on for symlinks and junctions.

On linux, it can detect hardlinks by checking visited inodes array. They are not added on linux.

added a new argument to the check called follow-symlinks, it is true by default.

added a powershell/bash script to dynamically generate some files / links and check related functionality during testing.

Ahmet Oeztuerk added 2 commits June 30, 2026 10:09
add new argument followSymlinks and new attribute is_symlink

add a new file walker, it can resolve file links, and keeps track of visited directories to prevent infinite recursion
Add default value to the followSymlinks argument definition

Change is_symlink behavior: it is only toggled on if the file/directory itself is a symlink

change the unit of is_symlink to UBool, its filters can now parse bool values
@lgmu

lgmu commented Jun 30, 2026

Copy link
Copy Markdown
Contributor

symbolic links for linux and windows work, but junctions are not recognized yet

@inqrphl inqrphl marked this pull request as draft July 6, 2026 10:22
inqrphl and others added 4 commits July 6, 2026 16:17
…the resolved paths for tracking visited files/directories.

add a new test function for check_files, windows specific for now. uses script to generate symlinks, hardlinks and junctions
… detect hard links and skip over them

add bash script to generate filesystem links, and write linux/darwin test for them
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants