func makeSymlinkInode(fullPathname string, inode *filesystem.SymlinkInode) { if err := inode.Write(fullPathname); err != nil { logger.Println(err) } else { logger.Printf("Made symlink inode: %s -> %s\n", fullPathname, inode.Symlink) } }
func (decoderData *decoderData) addSymlink(header *tar.Header, parent *filesystem.DirectoryInode, name string) error { var newInode filesystem.SymlinkInode newInode.Uid = uint32(header.Uid) newInode.Gid = uint32(header.Gid) newInode.Symlink = header.Linkname decoderData.addEntry(parent, header.Name, name, &newInode) return nil }
func makeSymlinkInode(fullPathname string, inode *filesystem.SymlinkInode, logger *log.Logger) error { if err := inode.Write(fullPathname); err != nil { logger.Println(err) return err } logger.Printf("Made symlink inode: %s -> %s\n", fullPathname, inode.Symlink) return nil }
func (fileSystem *FileSystem) getSymlinkInode(stat *syscall.Stat_t) ( *filesystem.SymlinkInode, bool) { inode := fileSystem.SymlinkInodeTable[stat.Ino] new := false if inode == nil { var _inode filesystem.SymlinkInode inode = &_inode _inode.Uid = stat.Uid _inode.Gid = stat.Gid fileSystem.SymlinkInodeTable[stat.Ino] = inode new = true } return inode, new }
func (decoderData *decoderData) addSymlink(header *tar.Header, parent *filesystem.Directory, name string) error { var newInode filesystem.SymlinkInode newInode.Uid = uint32(header.Uid) newInode.Gid = uint32(header.Gid) newInode.Symlink = header.Linkname decoderData.symlinkInodeTable[header.Name] = decoderData.nextInodeNumber decoderData.fileSystem.SymlinkInodeTable[decoderData.nextInodeNumber] = &newInode var newEntry filesystem.Symlink newEntry.Name = name newEntry.InodeNumber = decoderData.nextInodeNumber parent.SymlinkList = append(parent.SymlinkList, &newEntry) decoderData.nextInodeNumber++ return nil }
func scanSymlinkInode(inode *filesystem.SymlinkInode, fileSystem *FileSystem, myPathName string) error { target, err := os.Readlink(path.Join(fileSystem.rootDirectoryName, myPathName)) if err != nil { return err } inode.Symlink = target return nil }
func makeSymlinkInode(stat *syscall.Stat_t) *filesystem.SymlinkInode { var inode filesystem.SymlinkInode inode.Uid = stat.Uid inode.Gid = stat.Gid return &inode }