mirror of
https://github.com/containers/skopeo.git
synced 2025-04-27 19:05:32 +00:00
Use filepath.WalkDir instead of filepath.Walk
... to optimize away some lstat(2) calls. Signed-off-by: Miloslav Trmač <mitr@redhat.com>
This commit is contained in:
parent
23a4605742
commit
d9d3ceca45
@ -4,6 +4,7 @@ import (
|
|||||||
"context"
|
"context"
|
||||||
"fmt"
|
"fmt"
|
||||||
"io"
|
"io"
|
||||||
|
"io/fs"
|
||||||
"os"
|
"os"
|
||||||
"path"
|
"path"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
@ -258,11 +259,11 @@ func imagesToCopyFromRepo(sys *types.SystemContext, repoRef reference.Named) ([]
|
|||||||
// and any error encountered.
|
// and any error encountered.
|
||||||
func imagesToCopyFromDir(dirPath string) ([]types.ImageReference, error) {
|
func imagesToCopyFromDir(dirPath string) ([]types.ImageReference, error) {
|
||||||
var sourceReferences []types.ImageReference
|
var sourceReferences []types.ImageReference
|
||||||
err := filepath.Walk(dirPath, func(path string, info os.FileInfo, err error) error {
|
err := filepath.WalkDir(dirPath, func(path string, d fs.DirEntry, err error) error {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
if !info.IsDir() && info.Name() == "manifest.json" {
|
if !d.IsDir() && d.Name() == "manifest.json" {
|
||||||
dirname := filepath.Dir(path)
|
dirname := filepath.Dir(path)
|
||||||
ref, err := directory.Transport.ParseReference(dirname)
|
ref, err := directory.Transport.ParseReference(dirname)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -6,6 +6,7 @@ import (
|
|||||||
"crypto/x509"
|
"crypto/x509"
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"io/fs"
|
||||||
"log"
|
"log"
|
||||||
"net/http"
|
"net/http"
|
||||||
"net/http/httptest"
|
"net/http/httptest"
|
||||||
@ -831,15 +832,15 @@ func (s *CopySuite) TestCopyCompression(c *check.C) {
|
|||||||
|
|
||||||
func findRegularFiles(c *check.C, root string) []string {
|
func findRegularFiles(c *check.C, root string) []string {
|
||||||
result := []string{}
|
result := []string{}
|
||||||
err := filepath.Walk(root, filepath.WalkFunc(func(path string, info os.FileInfo, err error) error {
|
err := filepath.WalkDir(root, func(path string, d fs.DirEntry, err error) error {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
if info.Mode().IsRegular() {
|
if d.Type().IsRegular() {
|
||||||
result = append(result, path)
|
result = append(result, path)
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}))
|
})
|
||||||
c.Assert(err, check.IsNil)
|
c.Assert(err, check.IsNil)
|
||||||
return result
|
return result
|
||||||
}
|
}
|
||||||
|
@ -3,6 +3,7 @@ package main
|
|||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"io/fs"
|
||||||
"os"
|
"os"
|
||||||
"path"
|
"path"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
@ -102,11 +103,11 @@ func (s *SyncSuite) TearDownSuite(c *check.C) {
|
|||||||
|
|
||||||
func assertNumberOfManifestsInSubdirs(c *check.C, dir string, expectedCount int) {
|
func assertNumberOfManifestsInSubdirs(c *check.C, dir string, expectedCount int) {
|
||||||
nManifests := 0
|
nManifests := 0
|
||||||
err := filepath.Walk(dir, func(path string, info os.FileInfo, err error) error {
|
err := filepath.WalkDir(dir, func(path string, d fs.DirEntry, err error) error {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
if !info.IsDir() && info.Name() == "manifest.json" {
|
if !d.IsDir() && d.Name() == "manifest.json" {
|
||||||
nManifests++
|
nManifests++
|
||||||
return filepath.SkipDir
|
return filepath.SkipDir
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user