mirror of
https://github.com/hanzoai/yaegi.git
synced 2026-10-01 00:49:47 +00:00
Currently, yaegi uses the `filepath` package to join paths. However, this has issues: YAEGI uses an `fs.FS` internally for source code access, and `fs` specifies that `/` separated paths must be used. On Unix systems, this obviously makes no difference; but on Windows, with a non-default FS, this causes errors (since YAEGI creates `\` separated paths, but the FS expects `/` separated paths). Furthermore, generally speaking, Golang import paths and the like are always `/` separated anyway, regardless of OS. To clear this up, this PR changes path handling to `/` separated paths. This has the advantage of being accepted by all OS (even Windows will accept `/` separated paths). Paths passed by the user to `CompilePath` or similar are changed to `/` separators, if necessary.
31 lines
319 B
Go
31 lines
319 B
Go
package main
|
|
|
|
import (
|
|
"io"
|
|
"log"
|
|
"os"
|
|
)
|
|
|
|
type DBReader interface {
|
|
io.ReadCloser
|
|
io.ReaderAt
|
|
}
|
|
|
|
type DB struct {
|
|
f DBReader
|
|
}
|
|
|
|
func main() {
|
|
f, err := os.Open(os.DevNull)
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
d := &DB{f}
|
|
data := make([]byte, 1)
|
|
_, _ = d.f.ReadAt(data, 0)
|
|
println("bye")
|
|
}
|
|
|
|
// Output:
|
|
// bye
|