38 lines
		
	
	
		
			909 B
		
	
	
	
		
			Go
		
	
	
	
			
		
		
	
	
			38 lines
		
	
	
		
			909 B
		
	
	
	
		
			Go
		
	
	
	
// Copyright 2016 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 appengine !linux,!darwin,!freebsd,!openbsd,!netbsd
 | 
						|
 | 
						|
package fastwalk
 | 
						|
 | 
						|
import (
 | 
						|
	"io/ioutil"
 | 
						|
	"os"
 | 
						|
)
 | 
						|
 | 
						|
// readDir calls fn for each directory entry in dirName.
 | 
						|
// It does not descend into directories or follow symlinks.
 | 
						|
// If fn returns a non-nil error, readDir returns with that error
 | 
						|
// immediately.
 | 
						|
func readDir(dirName string, fn func(dirName, entName string, typ os.FileMode) error) error {
 | 
						|
	fis, err := ioutil.ReadDir(dirName)
 | 
						|
	if err != nil {
 | 
						|
		return err
 | 
						|
	}
 | 
						|
	skipFiles := false
 | 
						|
	for _, fi := range fis {
 | 
						|
		if fi.Mode().IsRegular() && skipFiles {
 | 
						|
			continue
 | 
						|
		}
 | 
						|
		if err := fn(dirName, fi.Name(), fi.Mode()&os.ModeType); err != nil {
 | 
						|
			if err == SkipFiles {
 | 
						|
				skipFiles = true
 | 
						|
				continue
 | 
						|
			}
 | 
						|
			return err
 | 
						|
		}
 | 
						|
	}
 | 
						|
	return nil
 | 
						|
}
 |