]> git.immae.eu Git - github/fretlink/terraform-provider-statuscake.git/blame - vendor/github.com/fsouza/go-dockerclient/external/github.com/docker/docker/pkg/archive/archive_windows.go
provider: Ensured Go 1.11 in TravisCI and README
[github/fretlink/terraform-provider-statuscake.git] / vendor / github.com / fsouza / go-dockerclient / external / github.com / docker / docker / pkg / archive / archive_windows.go
CommitLineData
9b12e4fe
JC
1// +build windows
2
3package archive
4
5import (
6 "archive/tar"
7 "fmt"
8 "os"
9 "path/filepath"
10 "strings"
11
12 "github.com/fsouza/go-dockerclient/external/github.com/docker/docker/pkg/longpath"
13)
14
15// fixVolumePathPrefix does platform specific processing to ensure that if
16// the path being passed in is not in a volume path format, convert it to one.
17func fixVolumePathPrefix(srcPath string) string {
18 return longpath.AddPrefix(srcPath)
19}
20
21// getWalkRoot calculates the root path when performing a TarWithOptions.
22// We use a separate function as this is platform specific.
23func getWalkRoot(srcPath string, include string) string {
24 return filepath.Join(srcPath, include)
25}
26
27// CanonicalTarNameForPath returns platform-specific filepath
28// to canonical posix-style path for tar archival. p is relative
29// path.
30func CanonicalTarNameForPath(p string) (string, error) {
31 // windows: convert windows style relative path with backslashes
32 // into forward slashes. Since windows does not allow '/' or '\'
33 // in file names, it is mostly safe to replace however we must
34 // check just in case
35 if strings.Contains(p, "/") {
36 return "", fmt.Errorf("Windows path contains forward slash: %s", p)
37 }
38 return strings.Replace(p, string(os.PathSeparator), "/", -1), nil
39
40}
41
42// chmodTarEntry is used to adjust the file permissions used in tar header based
43// on the platform the archival is done.
44func chmodTarEntry(perm os.FileMode) os.FileMode {
45 perm &= 0755
46 // Add the x bit: make everything +x from windows
47 perm |= 0111
48
49 return perm
50}
51
52func setHeaderForSpecialDevice(hdr *tar.Header, ta *tarAppender, name string, stat interface{}) (inode uint64, err error) {
53 // do nothing. no notion of Rdev, Inode, Nlink in stat on Windows
54 return
55}
56
57// handleTarTypeBlockCharFifo is an OS-specific helper function used by
58// createTarFile to handle the following types of header: Block; Char; Fifo
59func handleTarTypeBlockCharFifo(hdr *tar.Header, path string) error {
60 return nil
61}
62
63func handleLChmod(hdr *tar.Header, path string, hdrInfo os.FileInfo) error {
64 return nil
65}
66
67func getFileUIDGID(stat interface{}) (int, int, error) {
68 // no notion of file ownership mapping yet on Windows
69 return 0, 0, nil
70}