mirror of
https://github.com/kovidgoyal/kitty
synced 2026-06-08 14:18:26 +02:00
Avoid extra lstat() per entry when removing directory tree
This commit is contained in:
@@ -243,7 +243,7 @@ func RemoveChildren(dirFile *os.File) error {
|
|||||||
|
|
||||||
for {
|
for {
|
||||||
// Read names in small chunks to handle very large directories
|
// Read names in small chunks to handle very large directories
|
||||||
names, err := dirFile.Readdirnames(64)
|
entries, err := dirFile.ReadDir(64)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if errors.Is(err, io.EOF) {
|
if errors.Is(err, io.EOF) {
|
||||||
break
|
break
|
||||||
@@ -254,16 +254,9 @@ func RemoveChildren(dirFile *os.File) error {
|
|||||||
break
|
break
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, name := range names {
|
for _, entry := range entries {
|
||||||
var stat os.FileInfo
|
name := entry.Name()
|
||||||
// Get file info relative to the parent FD
|
if entry.IsDir() {
|
||||||
if stat, err = LstatAt(dirFile, name); err != nil {
|
|
||||||
if firstErr == nil {
|
|
||||||
firstErr = err
|
|
||||||
}
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
if stat.IsDir() {
|
|
||||||
// Open subdirectory relative to parent FD
|
// Open subdirectory relative to parent FD
|
||||||
var childFile *os.File
|
var childFile *os.File
|
||||||
if childFile, err = OpenDirAt(dirFile, name); err != nil {
|
if childFile, err = OpenDirAt(dirFile, name); err != nil {
|
||||||
|
|||||||
Reference in New Issue
Block a user