diff options
| author | Ondřej Surý <ondrej@sury.org> | 2011-09-13 13:11:55 +0200 | 
|---|---|---|
| committer | Ondřej Surý <ondrej@sury.org> | 2011-09-13 13:11:55 +0200 | 
| commit | 80f18fc933cf3f3e829c5455a1023d69f7b86e52 (patch) | |
| tree | 4b825dc642cb6eb9a060e54bf8d69288fbee4904 /src/pkg/os/path.go | |
| parent | 28592ee1ea1f5cdffcf85472f9de0285d928cf12 (diff) | |
| download | golang-80f18fc933cf3f3e829c5455a1023d69f7b86e52.tar.gz | |
Imported Upstream version 60
Diffstat (limited to 'src/pkg/os/path.go')
| -rw-r--r-- | src/pkg/os/path.go | 119 | 
1 files changed, 0 insertions, 119 deletions
| diff --git a/src/pkg/os/path.go b/src/pkg/os/path.go deleted file mode 100644 index 7b93036aa..000000000 --- a/src/pkg/os/path.go +++ /dev/null @@ -1,119 +0,0 @@ -// 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. - -package os - - -// MkdirAll creates a directory named path, -// along with any necessary parents, and returns nil, -// or else returns an error. -// The permission bits perm are used for all -// directories that MkdirAll creates. -// If path is already a directory, MkdirAll does nothing -// and returns nil. -func MkdirAll(path string, perm uint32) Error { -	// If path exists, stop with success or error. -	dir, err := Stat(path) -	if err == nil { -		if dir.IsDirectory() { -			return nil -		} -		return &PathError{"mkdir", path, ENOTDIR} -	} - -	// Doesn't already exist; make sure parent does. -	i := len(path) -	for i > 0 && IsPathSeparator(path[i-1]) { // Skip trailing path separator. -		i-- -	} - -	j := i -	for j > 0 && !IsPathSeparator(path[j-1]) { // Scan backward over element. -		j-- -	} - -	if j > 1 { -		// Create parent -		err = MkdirAll(path[0:j-1], perm) -		if err != nil { -			return err -		} -	} - -	// Now parent exists, try to create. -	err = Mkdir(path, perm) -	if err != nil { -		// Handle arguments like "foo/." by -		// double-checking that directory doesn't exist. -		dir, err1 := Lstat(path) -		if err1 == nil && dir.IsDirectory() { -			return nil -		} -		return err -	} -	return nil -} - -// RemoveAll removes path and any children it contains. -// It removes everything it can but returns the first error -// it encounters.  If the path does not exist, RemoveAll -// returns nil (no error). -func RemoveAll(path string) Error { -	// Simple case: if Remove works, we're done. -	err := Remove(path) -	if err == nil { -		return nil -	} - -	// Otherwise, is this a directory we need to recurse into? -	dir, serr := Lstat(path) -	if serr != nil { -		if serr, ok := serr.(*PathError); ok && serr.Error == ENOENT { -			return nil -		} -		return serr -	} -	if !dir.IsDirectory() { -		// Not a directory; return the error from Remove. -		return err -	} - -	// Directory. -	fd, err := Open(path) -	if err != nil { -		return err -	} - -	// Remove contents & return first error. -	err = nil -	for { -		names, err1 := fd.Readdirnames(100) -		for _, name := range names { -			err1 := RemoveAll(path + string(PathSeparator) + name) -			if err == nil { -				err = err1 -			} -		} -		if err1 == EOF { -			break -		} -		// If Readdirnames returned an error, use it. -		if err == nil { -			err = err1 -		} -		if len(names) == 0 { -			break -		} -	} - -	// Close directory, because windows won't remove opened directory. -	fd.Close() - -	// Remove directory. -	err1 := Remove(path) -	if err == nil { -		err = err1 -	} -	return err -} | 
