func addSymlink(directory *filesystem.Directory, fileSystem, oldFS *FileSystem, name string, directoryPathName string, stat *syscall.Stat_t) error { inode, isNewInode := fileSystem.getSymlinkInode(stat) var symlink filesystem.Symlink symlink.Name = name symlink.InodeNumber = stat.Ino symlink.SetInode(inode) if isNewInode { err := scanSymlink(&symlink, fileSystem, directoryPathName) if err != nil { return err } if oldFS != nil && oldFS.SymlinkInodeTable != nil { if oldInode, found := oldFS.SymlinkInodeTable[stat.Ino]; found { if filesystem.CompareSymlinkInodes(inode, oldInode, nil) { inode = oldInode symlink.SetInode(inode) fileSystem.SymlinkInodeTable[stat.Ino] = inode } } } } directory.SymlinkList = append(directory.SymlinkList, &symlink) return nil }