本文整理汇总了Golang中github.com/Symantec/Dominator/lib/filesystem.RegularInode.MtimeNanoSeconds方法的典型用法代码示例。如果您正苦于以下问题:Golang RegularInode.MtimeNanoSeconds方法的具体用法?Golang RegularInode.MtimeNanoSeconds怎么用?Golang RegularInode.MtimeNanoSeconds使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类github.com/Symantec/Dominator/lib/filesystem.RegularInode
的用法示例。
在下文中一共展示了RegularInode.MtimeNanoSeconds方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: makeRegularInode
func makeRegularInode(stat *syscall.Stat_t) *filesystem.RegularInode {
var inode filesystem.RegularInode
inode.Mode = filesystem.FileMode(stat.Mode)
inode.Uid = stat.Uid
inode.Gid = stat.Gid
inode.MtimeSeconds = stat.Mtim.Sec
inode.MtimeNanoSeconds = int32(stat.Mtim.Nsec)
inode.Size = uint64(stat.Size)
return &inode
}
示例2: setComputedFileMtime
func setComputedFileMtime(requiredInode *filesystem.RegularInode,
subEntry *filesystem.DirectoryEntry) {
if requiredInode.MtimeSeconds >= 0 {
return
}
if subEntry != nil {
subInode := subEntry.Inode()
if subInode, ok := subInode.(*filesystem.RegularInode); ok {
if requiredInode.Hash == subInode.Hash {
requiredInode.MtimeNanoSeconds = subInode.MtimeNanoSeconds
requiredInode.MtimeSeconds = subInode.MtimeSeconds
return
}
}
}
requiredInode.MtimeSeconds = time.Now().Unix()
}
示例3: getRegularInode
func (fileSystem *FileSystem) getRegularInode(stat *syscall.Stat_t) (
*filesystem.RegularInode, bool) {
inode := fileSystem.RegularInodeTable[stat.Ino]
new := false
if inode == nil {
var _inode filesystem.RegularInode
inode = &_inode
_inode.Mode = filesystem.FileMode(stat.Mode)
_inode.Uid = stat.Uid
_inode.Gid = stat.Gid
_inode.MtimeSeconds = stat.Mtim.Sec
_inode.MtimeNanoSeconds = int32(stat.Mtim.Nsec)
_inode.Size = uint64(stat.Size)
fileSystem.RegularInodeTable[stat.Ino] = inode
new = true
}
return inode, new
}
示例4: addRegularFile
func (decoderData *decoderData) addRegularFile(tarReader *tar.Reader,
hasher Hasher, header *tar.Header, parent *filesystem.DirectoryInode,
name string) error {
var newInode filesystem.RegularInode
newInode.Mode = filesystem.FileMode((header.Mode & ^syscall.S_IFMT) |
syscall.S_IFREG)
newInode.Uid = uint32(header.Uid)
newInode.Gid = uint32(header.Gid)
newInode.MtimeNanoSeconds = int32(header.ModTime.Nanosecond())
newInode.MtimeSeconds = header.ModTime.Unix()
newInode.Size = uint64(header.Size)
if header.Size > 0 {
var err error
newInode.Hash, err = hasher.Hash(tarReader, uint64(header.Size))
if err != nil {
return err
}
}
decoderData.addEntry(parent, header.Name, name, &newInode)
return nil
}
示例5: addRegularFile
func (decoderData *decoderData) addRegularFile(tarReader *tar.Reader,
dataHandler DataHandler, header *tar.Header, parent *filesystem.Directory,
name string) error {
var newInode filesystem.RegularInode
newInode.Mode = filesystem.FileMode((header.Mode & ^syscall.S_IFMT) |
syscall.S_IFREG)
newInode.Uid = uint32(header.Uid)
newInode.Gid = uint32(header.Gid)
newInode.MtimeNanoSeconds = int32(header.ModTime.Nanosecond())
newInode.MtimeSeconds = header.ModTime.Unix()
newInode.Size = uint64(header.Size)
if header.Size > 0 {
data, err := ioutil.ReadAll(tarReader)
if err != nil {
return errors.New("error reading file data" + err.Error())
}
if int64(len(data)) != header.Size {
return errors.New(fmt.Sprintf(
"failed to read file data, wanted: %d, got: %d bytes",
header.Size, len(data)))
}
newInode.Hash, err = dataHandler.HandleData(data)
if err != nil {
return err
}
}
decoderData.regularInodeTable[header.Name] = decoderData.nextInodeNumber
decoderData.fileSystem.RegularInodeTable[decoderData.nextInodeNumber] =
&newInode
var newEntry filesystem.RegularFile
newEntry.Name = name
newEntry.InodeNumber = decoderData.nextInodeNumber
parent.RegularFileList = append(parent.RegularFileList, &newEntry)
decoderData.nextInodeNumber++
return nil
}