@@ -37,9 +37,20 @@ type (
37
37
Remove (name string ) error
38
38
}
39
39
SymlinkFS interface {
40
+ LinkStater
41
+ LinkMaker
42
+ LinkReader
43
+ }
44
+ LinkStater interface {
40
45
fs.FS
41
46
Lstat (name string ) (fs.FileInfo , error )
47
+ }
48
+ LinkMaker interface {
49
+ fs.FS
42
50
Symlink (oldname , newname string ) error
51
+ }
52
+ LinkReader interface {
53
+ fs.FS
43
54
Readlink (name string ) (string , error )
44
55
}
45
56
RenameFS interface {
@@ -153,23 +164,23 @@ func Remove(fsys fs.FS, name string) error {
153
164
}
154
165
155
166
func Lstat (fsys fs.FS , name string ) (fs.FileInfo , error ) {
156
- if fsys , ok := fsys .(SymlinkFS ); ok {
167
+ if fsys , ok := fsys .(LinkStater ); ok {
157
168
return fsys .Lstat (name )
158
169
}
159
170
const op = "lstat"
160
171
return nil , unsupportedOpErr (op , name )
161
172
}
162
173
163
174
func Symlink (fsys fs.FS , oldname , newname string ) error {
164
- if fsys , ok := fsys .(SymlinkFS ); ok {
175
+ if fsys , ok := fsys .(LinkMaker ); ok {
165
176
return fsys .Symlink (oldname , newname )
166
177
}
167
178
const op = "symlink"
168
179
return unsupportedOpErr2 (op , oldname , newname )
169
180
}
170
181
171
182
func Readlink (fsys fs.FS , name string ) (string , error ) {
172
- if fsys , ok := fsys .(SymlinkFS ); ok {
183
+ if fsys , ok := fsys .(LinkReader ); ok {
173
184
return fsys .Readlink (name )
174
185
}
175
186
const op = "readlink"
0 commit comments