コード例 #1
0
ファイル: walk.go プロジェクト: wxdublin/Dominator
func addFile(directory *filesystem.Directory, fileSystem, oldFS *FileSystem,
	name string, directoryPathName string, stat *syscall.Stat_t) error {
	inode, isNewInode := fileSystem.getInode(stat)
	var file filesystem.File
	file.Name = name
	file.InodeNumber = stat.Ino
	file.SetInode(inode)
	if isNewInode {
		err := scanFile(&file, fileSystem, directoryPathName)
		if err != nil {
			return err
		}
		if oldFS != nil && oldFS.InodeTable != nil {
			if oldInode, found := oldFS.InodeTable[stat.Ino]; found {
				if filesystem.CompareInodes(inode, oldInode, nil) {
					inode = oldInode
					file.SetInode(inode)
					fileSystem.InodeTable[stat.Ino] = inode
				}
			}
		}
	}
	directory.FileList = append(directory.FileList, &file)
	return nil
}