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 } |