mirror of
https://review.haiku-os.org/buildtools
synced 2025-02-15 02:07:42 +01:00
39 lines
894 B
Go
39 lines
894 B
Go
// Copyright 2009 The Go Authors. All rights reserved.
|
|
// Use of this source code is governed by a BSD-style
|
|
// license that can be found in the LICENSE file.
|
|
|
|
// +build darwin dragonfly freebsd linux nacl netbsd openbsd solaris
|
|
|
|
package os
|
|
|
|
import (
|
|
"io"
|
|
)
|
|
|
|
func (f *File) readdir(n int) (fi []FileInfo, err error) {
|
|
dirname := f.name
|
|
if dirname == "" {
|
|
dirname = "."
|
|
}
|
|
names, err := f.Readdirnames(n)
|
|
fi = make([]FileInfo, 0, len(names))
|
|
for _, filename := range names {
|
|
fip, lerr := lstat(dirname + "/" + filename)
|
|
if IsNotExist(lerr) {
|
|
// File disappeared between readdir + stat.
|
|
// Just treat it as if it didn't exist.
|
|
continue
|
|
}
|
|
if lerr != nil {
|
|
return fi, lerr
|
|
}
|
|
fi = append(fi, fip)
|
|
}
|
|
if len(fi) == 0 && err == nil && n > 0 {
|
|
// Per File.Readdir, the slice must be non-empty or err
|
|
// must be non-nil if n > 0.
|
|
err = io.EOF
|
|
}
|
|
return fi, err
|
|
}
|