mirror of
https://github.com/tinygo-org/tinygo.git
synced 2026-08-22 21:39:01 +00:00
os: add File.Chdir support
We should really be using syscall.Fchdir here, but this is a fix to get Go 1.24 working.
This commit is contained in:
committed by
Ron Evans
parent
c2eaa495df
commit
cdea833b5c
@@ -318,6 +318,17 @@ func (f *File) Chmod(mode FileMode) (err error) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Chdir changes the current working directory to the file, which must be a
|
||||||
|
// directory. If there is an error, it will be of type *PathError.
|
||||||
|
func (f *File) Chdir() (err error) {
|
||||||
|
if f.handle == nil {
|
||||||
|
err = ErrClosed
|
||||||
|
} else {
|
||||||
|
err = f.chdir()
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
// LinkError records an error during a link or symlink or rename system call and
|
// LinkError records an error during a link or symlink or rename system call and
|
||||||
// the paths that caused it.
|
// the paths that caused it.
|
||||||
type LinkError struct {
|
type LinkError struct {
|
||||||
|
|||||||
@@ -159,3 +159,7 @@ func (f *File) Truncate(size int64) (err error) {
|
|||||||
func (f *File) chmod(mode FileMode) error {
|
func (f *File) chmod(mode FileMode) error {
|
||||||
return ErrUnsupported
|
return ErrUnsupported
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (f *File) chdir() error {
|
||||||
|
return ErrNotImplemented
|
||||||
|
}
|
||||||
|
|||||||
@@ -166,6 +166,22 @@ func (f *File) chmod(mode FileMode) error {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (f *File) chdir() error {
|
||||||
|
if f.handle == nil {
|
||||||
|
return ErrClosed
|
||||||
|
}
|
||||||
|
|
||||||
|
// TODO: use syscall.Fchdir instead
|
||||||
|
longName := fixLongPath(f.name)
|
||||||
|
e := ignoringEINTR(func() error {
|
||||||
|
return syscall.Chdir(longName)
|
||||||
|
})
|
||||||
|
if e != nil {
|
||||||
|
return &PathError{Op: "chdir", Path: f.name, Err: e}
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
// ReadAt reads up to len(b) bytes from the File starting at the given absolute offset.
|
// ReadAt reads up to len(b) bytes from the File starting at the given absolute offset.
|
||||||
// It returns the number of bytes read and any error encountered, possibly io.EOF.
|
// It returns the number of bytes read and any error encountered, possibly io.EOF.
|
||||||
// At end of file, Pread returns 0, io.EOF.
|
// At end of file, Pread returns 0, io.EOF.
|
||||||
|
|||||||
@@ -146,3 +146,7 @@ func isWindowsNulName(name string) bool {
|
|||||||
func (f *File) chmod(mode FileMode) error {
|
func (f *File) chmod(mode FileMode) error {
|
||||||
return ErrNotImplemented
|
return ErrNotImplemented
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (f *File) chdir() error {
|
||||||
|
return ErrNotImplemented
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user