package os
import (
"syscall"
"unsafe"
)
func direntIno(buf []byte ) (uint64 , bool ) {
return readInt (buf , unsafe .Offsetof (syscall .Dirent {}.Ino ), unsafe .Sizeof (syscall .Dirent {}.Ino ))
}
func direntReclen(buf []byte ) (uint64 , bool ) {
return readInt (buf , unsafe .Offsetof (syscall .Dirent {}.Reclen ), unsafe .Sizeof (syscall .Dirent {}.Reclen ))
}
func direntNamlen(buf []byte ) (uint64 , bool ) {
reclen , ok := direntReclen (buf )
if !ok {
return 0 , false
}
return reclen - uint64 (unsafe .Offsetof (syscall .Dirent {}.Name )), true
}
func direntType(buf []byte ) FileMode {
off := unsafe .Offsetof (syscall .Dirent {}.Type )
if off >= uintptr (len (buf )) {
return ^FileMode (0 )
}
typ := buf [off ]
switch typ {
case syscall .DT_BLK :
return ModeDevice
case syscall .DT_CHR :
return ModeDevice | ModeCharDevice
case syscall .DT_DIR :
return ModeDir
case syscall .DT_FIFO :
return ModeNamedPipe
case syscall .DT_LNK :
return ModeSymlink
case syscall .DT_REG :
return 0
case syscall .DT_SOCK :
return ModeSocket
}
return ^FileMode (0 )
}
The pages are generated with Golds v0.7.0-preview . (GOOS=linux GOARCH=amd64)
Golds is a Go 101 project developed by Tapir Liu .
PR and bug reports are welcome and can be submitted to the issue list .
Please follow @zigo_101 (reachable from the left QR code) to get the latest news of Golds .