Skip to content

Commit

Permalink
SymlinkIfPossible use rel path as oldpath
Browse files Browse the repository at this point in the history
  • Loading branch information
izouxv committed Jun 29, 2024
1 parent e211396 commit dd33f6f
Showing 1 changed file with 19 additions and 3 deletions.
22 changes: 19 additions & 3 deletions basepath.go
Original file line number Diff line number Diff line change
Expand Up @@ -196,7 +196,22 @@ func (b *BasePathFs) LstatIfPossible(name string) (os.FileInfo, bool, error) {
}

func (b *BasePathFs) SymlinkIfPossible(oldname, newname string) error {
oldname, err := b.RealPath(oldname)
if filepath.IsAbs(oldname) || filepath.IsAbs(newname) {
oldname, err := b.RealPath(oldname)
if err != nil {
return &os.LinkError{Op: "symlink", Old: oldname, New: newname, Err: err}
}
newname, err = b.RealPath(newname)
if err != nil {
return &os.LinkError{Op: "symlink", Old: oldname, New: newname, Err: err}
}
if linker, ok := b.source.(Linker); ok {
return linker.SymlinkIfPossible(oldname, newname)
}
return &os.LinkError{Op: "symlink", Old: oldname, New: newname, Err: ErrNoSymlink}
}

relpath, err := filepath.Rel(newname, oldname)
if err != nil {
return &os.LinkError{Op: "symlink", Old: oldname, New: newname, Err: err}
}
Expand All @@ -205,9 +220,10 @@ func (b *BasePathFs) SymlinkIfPossible(oldname, newname string) error {
return &os.LinkError{Op: "symlink", Old: oldname, New: newname, Err: err}
}
if linker, ok := b.source.(Linker); ok {
return linker.SymlinkIfPossible(oldname, newname)
return linker.SymlinkIfPossible(relpath, newname)
}
return &os.LinkError{Op: "symlink", Old: oldname, New: newname, Err: ErrNoSymlink}
return &os.LinkError{Op: "symlink", Old: relpath, New: newname, Err: ErrNoSymlink}

}

func (b *BasePathFs) ReadlinkIfPossible(name string) (string, error) {
Expand Down

0 comments on commit dd33f6f

Please sign in to comment.