Compare commits

..

3 Commits

Author SHA1 Message Date
Caleb Gardner 0a2ced9072 Merge pull request #11 from tri-adam/path-fix
fix: handle paths with special characters
2022-04-22 04:25:42 -05:00
Adam Hughes a908d69987 fix: handle paths with special characters
Use direct comparison of filenames rather than path.Match, which gives
characters such as '[' special meaning, resulting in unexpected failures
when calling Open, ReadDir, Stat, or Sub.
2022-04-22 05:02:57 +00:00
Caleb Gardner 6ada4f3b49 Create FUNDING.yml 2021-12-31 00:35:04 -06:00
2 changed files with 7 additions and 4 deletions
+3
View File
@@ -0,0 +1,3 @@
# These are supported funding model platforms
github: CalebQ42
+4 -4
View File
@@ -50,7 +50,7 @@ func (f FS) Open(name string) (fs.File, error) {
return &File{i: f.i, r: f.r, parent: f.parent, name: f.name}, nil return &File{i: f.i, r: f.r, parent: f.parent, name: f.name}, nil
} }
for i := 0; i < len(f.entries); i++ { for i := 0; i < len(f.entries); i++ {
if match, _ := path.Match(split[0], f.entries[i].Name); match { if split[0] == f.entries[i].Name {
if len(split) == 1 { if len(split) == 1 {
return f.r.newFileFromDirEntry(f.entries[i], &f) return f.r.newFileFromDirEntry(f.entries[i], &f)
} }
@@ -193,7 +193,7 @@ func (f FS) ReadDir(name string) ([]fs.DirEntry, error) {
return f.ReadDir(-1) return f.ReadDir(-1)
} }
for i := 0; i < len(f.entries); i++ { for i := 0; i < len(f.entries); i++ {
if match, _ := path.Match(split[0], f.entries[i].Name); match { if split[0] == f.entries[i].Name {
if len(split) == 1 { if len(split) == 1 {
in, err := f.r.getInodeFromEntry(f.entries[i]) in, err := f.r.getInodeFromEntry(f.entries[i])
if err != nil { if err != nil {
@@ -313,7 +313,7 @@ func (f FS) Stat(name string) (fs.FileInfo, error) {
return f.Stat() return f.Stat()
} }
for i := 0; i < len(f.entries); i++ { for i := 0; i < len(f.entries); i++ {
if match, _ := path.Match(split[0], f.entries[i].Name); match { if split[0] == f.entries[i].Name {
if len(split) == 1 { if len(split) == 1 {
in, err := f.r.getInodeFromEntry(f.entries[i]) in, err := f.r.getInodeFromEntry(f.entries[i])
if err != nil { if err != nil {
@@ -399,7 +399,7 @@ func (f FS) Sub(dir string) (fs.FS, error) {
return f, nil return f, nil
} }
for i := 0; i < len(f.entries); i++ { for i := 0; i < len(f.entries); i++ {
if match, _ := path.Match(split[0], f.entries[i].Name); match { if split[0] == f.entries[i].Name {
if len(split) == 1 { if len(split) == 1 {
in, err := f.r.getInodeFromEntry(f.entries[i]) in, err := f.r.getInodeFromEntry(f.entries[i])
if err != nil { if err != nil {