patch: fmt, os, runtime, syscall, time
This commit is contained in:
@@ -24,17 +24,13 @@ import (
|
||||
"github.com/goplus/llgo/c/os"
|
||||
)
|
||||
|
||||
func errnoErr(errno c.Int) error {
|
||||
panic("todo")
|
||||
}
|
||||
|
||||
func Getcwd(buf []byte) (n int, err error) {
|
||||
ptr := unsafe.Pointer(unsafe.SliceData(buf))
|
||||
ret := os.Getcwd(ptr, uintptr(len(buf)))
|
||||
if ret != nil {
|
||||
return int(c.Strlen(ret)), nil
|
||||
}
|
||||
return 0, errnoErr(os.Errno)
|
||||
return 0, Errno(os.Errno)
|
||||
}
|
||||
|
||||
func Getwd() (string, error) {
|
||||
@@ -42,5 +38,57 @@ func Getwd() (string, error) {
|
||||
if wd != nil {
|
||||
return c.GoString(wd), nil
|
||||
}
|
||||
return "", errnoErr(os.Errno)
|
||||
return "", Errno(os.Errno)
|
||||
}
|
||||
|
||||
func Getenv(key string) (value string, found bool) {
|
||||
ret := os.Getenv(c.AllocaCStr(key))
|
||||
if ret != nil {
|
||||
return c.GoString(ret), true
|
||||
}
|
||||
return "", false
|
||||
}
|
||||
|
||||
func Getpid() (pid int) {
|
||||
return int(os.Getpid())
|
||||
}
|
||||
|
||||
func Kill(pid int, signum Signal) (err error) {
|
||||
ret := os.Kill(c.Int(pid), c.Int(signum))
|
||||
if ret == 0 {
|
||||
return nil
|
||||
}
|
||||
return Errno(os.Errno)
|
||||
}
|
||||
|
||||
func Open(path string, mode int, perm uint32) (fd int, err error) {
|
||||
ret := os.Open(c.AllocaCStr(path), c.Int(mode), os.ModeT(perm))
|
||||
if ret >= 0 {
|
||||
return int(ret), nil
|
||||
}
|
||||
return 0, Errno(os.Errno)
|
||||
}
|
||||
|
||||
func Seek(fd int, offset int64, whence int) (newoffset int64, err error) {
|
||||
ret := os.Lseek(c.Int(fd), os.OffT(offset), c.Int(whence))
|
||||
if ret >= 0 {
|
||||
return int64(ret), nil
|
||||
}
|
||||
return -1, Errno(os.Errno)
|
||||
}
|
||||
|
||||
func Read(fd int, p []byte) (n int, err error) {
|
||||
ret := os.Read(c.Int(fd), unsafe.Pointer(unsafe.SliceData(p)), uintptr(len(p)))
|
||||
if ret >= 0 {
|
||||
return ret, nil // TODO(xsw): confirm err == nil (not io.EOF) when ret == 0
|
||||
}
|
||||
return 0, Errno(os.Errno)
|
||||
}
|
||||
|
||||
func Close(fd int) (err error) {
|
||||
ret := os.Close(c.Int(fd))
|
||||
if ret == 0 {
|
||||
return nil
|
||||
}
|
||||
return Errno(os.Errno)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user