123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- package archive // import "github.com/docker/docker/pkg/archive"
- import (
- "archive/tar"
- "os"
- "path/filepath"
- "github.com/docker/docker/pkg/idtools"
- "github.com/docker/docker/pkg/longpath"
- )
- // fixVolumePathPrefix does platform specific processing to ensure that if
- // the path being passed in is not in a volume path format, convert it to one.
- func fixVolumePathPrefix(srcPath string) string {
- return longpath.AddPrefix(srcPath)
- }
- // getWalkRoot calculates the root path when performing a TarWithOptions.
- // We use a separate function as this is platform specific.
- func getWalkRoot(srcPath string, include string) string {
- return filepath.Join(srcPath, include)
- }
- // chmodTarEntry is used to adjust the file permissions used in tar header based
- // on the platform the archival is done.
- func chmodTarEntry(perm os.FileMode) os.FileMode {
- // Remove group- and world-writable bits.
- perm &= 0o755
- // Add the x bit: make everything +x on Windows
- return perm | 0o111
- }
- func setHeaderForSpecialDevice(hdr *tar.Header, name string, stat interface{}) (err error) {
- // do nothing. no notion of Rdev, Nlink in stat on Windows
- return
- }
- func getInodeFromStat(stat interface{}) (inode uint64, err error) {
- // do nothing. no notion of Inode in stat on Windows
- return
- }
- // handleTarTypeBlockCharFifo is an OS-specific helper function used by
- // createTarFile to handle the following types of header: Block; Char; Fifo
- func handleTarTypeBlockCharFifo(hdr *tar.Header, path string) error {
- return nil
- }
- func handleLChmod(hdr *tar.Header, path string, hdrInfo os.FileInfo) error {
- return nil
- }
- func getFileUIDGID(stat interface{}) (idtools.Identity, error) {
- // no notion of file ownership mapping yet on Windows
- return idtools.Identity{UID: 0, GID: 0}, nil
- }
|