Beispiel #1
0
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)
	}
}
Beispiel #2
0
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
}
Beispiel #3
0
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
}
Beispiel #4
0
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
}
Beispiel #5
0
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
}
Beispiel #6
0
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
}
Beispiel #7
0
func makeSymlinkInode(stat *syscall.Stat_t) *filesystem.SymlinkInode {
	var inode filesystem.SymlinkInode
	inode.Uid = stat.Uid
	inode.Gid = stat.Gid
	return &inode
}