diff --git a/_demo/readdir/main.go b/_demo/readdir/main.go new file mode 100644 index 00000000..ed394e64 --- /dev/null +++ b/_demo/readdir/main.go @@ -0,0 +1,19 @@ +package main + +import ( + "fmt" + "os" +) + +func main() { + entries, err := os.ReadDir("../") + if err != nil { + panic(err) + } + if len(entries) == 0 { + panic("No files found") + } + for _, e := range entries { + fmt.Printf("%s isDir[%t]\n", e.Name(), e.IsDir()) + } +} diff --git a/runtime/internal/lib/os/dir.go b/runtime/internal/lib/os/dir.go index 4eb102ed..37840e62 100644 --- a/runtime/internal/lib/os/dir.go +++ b/runtime/internal/lib/os/dir.go @@ -120,6 +120,14 @@ func direntNamePtr(name any) *byte { return name case []byte: return &name[0] + case [1024]int8: + return (*byte)(unsafe.Pointer(&name[0])) + case [512]int8: + return (*byte)(unsafe.Pointer(&name[0])) + case [256]int8: + return (*byte)(unsafe.Pointer(&name[0])) + case [256]uint8: + return (*byte)(unsafe.Pointer(&name[0])) default: panic("invalid type") }