24 lines
550 B
Go
24 lines
550 B
Go
//go:build linux || freebsd || netbsd || openbsd || dragonfly
|
|
|
|
package fsutil
|
|
|
|
import (
|
|
"os"
|
|
"syscall"
|
|
|
|
"github.com/tonistiigi/fsutil/types"
|
|
)
|
|
|
|
func handleRootTarTypeBlockCharFifo(root RootMknod, path string, stat *types.Stat) error {
|
|
mode := uint32(stat.Mode & 07777)
|
|
if os.FileMode(stat.Mode)&os.ModeCharDevice != 0 {
|
|
mode |= syscall.S_IFCHR
|
|
} else if os.FileMode(stat.Mode)&os.ModeNamedPipe != 0 {
|
|
mode |= syscall.S_IFIFO
|
|
} else {
|
|
mode |= syscall.S_IFBLK
|
|
}
|
|
|
|
return root.Mknod(path, mode, int(mkdev(stat.Devmajor, stat.Devminor)))
|
|
}
|