(tarReader *tar.Reader)
| 219 | } |
| 220 | |
| 221 | func getFileList(tarReader *tar.Reader) ([]filetree.FileInfo, error) { |
| 222 | var files []filetree.FileInfo |
| 223 | |
| 224 | for { |
| 225 | header, err := tarReader.Next() |
| 226 | if err == io.EOF { |
| 227 | break |
| 228 | } else if err != nil { |
| 229 | return nil, err |
| 230 | } |
| 231 | |
| 232 | // always ensure relative path notations are not parsed as part of the filename |
| 233 | name := path.Clean(header.Name) |
| 234 | if name == "." { |
| 235 | continue |
| 236 | } |
| 237 | |
| 238 | switch header.Typeflag { |
| 239 | case tar.TypeXGlobalHeader: |
| 240 | return nil, fmt.Errorf("unexptected tar file: (XGlobalHeader): type=%v name=%s", header.Typeflag, name) |
| 241 | case tar.TypeXHeader: |
| 242 | return nil, fmt.Errorf("unexptected tar file (XHeader): type=%v name=%s", header.Typeflag, name) |
| 243 | default: |
| 244 | files = append(files, filetree.NewFileInfoFromTarHeader(tarReader, header, name)) |
| 245 | } |
| 246 | } |
| 247 | return files, nil |
| 248 | } |
| 249 | |
| 250 | func (img *ImageArchive) ToImage() (*image.Image, error) { |
| 251 | trees := make([]*filetree.FileTree, 0) |
no test coverage detected