vendor/github.com/spf13/afero/basepath.go
changeset 256 6d9efbef00a9
parent 242 2a9ec03fe5a1
child 260 445e01aede7e
equal deleted inserted replaced
255:4f153a23adab 256:6d9efbef00a9
    81 		return &os.PathError{Op: "chmod", Path: name, Err: err}
    81 		return &os.PathError{Op: "chmod", Path: name, Err: err}
    82 	}
    82 	}
    83 	return b.source.Chmod(name, mode)
    83 	return b.source.Chmod(name, mode)
    84 }
    84 }
    85 
    85 
       
    86 func (b *BasePathFs) Chown(name string, uid, gid int) (err error) {
       
    87 	if name, err = b.RealPath(name); err != nil {
       
    88 		return &os.PathError{Op: "chown", Path: name, Err: err}
       
    89 	}
       
    90 	return b.source.Chown(name, uid, gid)
       
    91 }
       
    92 
    86 func (b *BasePathFs) Name() string {
    93 func (b *BasePathFs) Name() string {
    87 	return "BasePathFs"
    94 	return "BasePathFs"
    88 }
    95 }
    89 
    96 
    90 func (b *BasePathFs) Stat(name string) (fi os.FileInfo, err error) {
    97 func (b *BasePathFs) Stat(name string) (fi os.FileInfo, err error) {
   175 	}
   182 	}
   176 	fi, err := b.source.Stat(name)
   183 	fi, err := b.source.Stat(name)
   177 	return fi, false, err
   184 	return fi, false, err
   178 }
   185 }
   179 
   186 
   180 // vim: ts=4 sw=4 noexpandtab nolist syn=go
   187 func (b *BasePathFs) SymlinkIfPossible(oldname, newname string) error {
       
   188 	oldname, err := b.RealPath(oldname)
       
   189 	if err != nil {
       
   190 		return &os.LinkError{Op: "symlink", Old: oldname, New: newname, Err: err}
       
   191 	}
       
   192 	newname, err = b.RealPath(newname)
       
   193 	if err != nil {
       
   194 		return &os.LinkError{Op: "symlink", Old: oldname, New: newname, Err: err}
       
   195 	}
       
   196 	if linker, ok := b.source.(Linker); ok {
       
   197 		return linker.SymlinkIfPossible(oldname, newname)
       
   198 	}
       
   199 	return &os.LinkError{Op: "symlink", Old: oldname, New: newname, Err: ErrNoSymlink}
       
   200 }
       
   201 
       
   202 func (b *BasePathFs) ReadlinkIfPossible(name string) (string, error) {
       
   203 	name, err := b.RealPath(name)
       
   204 	if err != nil {
       
   205 		return "", &os.PathError{Op: "readlink", Path: name, Err: err}
       
   206 	}
       
   207 	if reader, ok := b.source.(LinkReader); ok {
       
   208 		return reader.ReadlinkIfPossible(name)
       
   209 	}
       
   210 	return "", &os.PathError{Op: "readlink", Path: name, Err: ErrNoReadlink}
       
   211 }