diff --git a/package/PikaStdLib/PikaStdData.pyi b/package/PikaStdLib/PikaStdData.pyi index 0ef96aa6d..4f7fa030d 100644 --- a/package/PikaStdLib/PikaStdData.pyi +++ b/package/PikaStdLib/PikaStdData.pyi @@ -155,7 +155,7 @@ class ByteArray: class FILEIO: def init(self, path: str, mode: str) -> int: ... - def read(self, size: int) -> any: ... + def read(self, *size) -> any: ... def write(self, s: any) -> int: ... def close(self): ... def seek(self, offset: int, *fromwhere) -> int: ... diff --git a/package/PikaStdLib/PikaStdData_FILEIO.c b/package/PikaStdLib/PikaStdData_FILEIO.c index a3d668ea9..b2c4f80e9 100644 --- a/package/PikaStdLib/PikaStdData_FILEIO.c +++ b/package/PikaStdLib/PikaStdData_FILEIO.c @@ -25,7 +25,13 @@ void PikaStdData_FILEIO_close(PikaObj* self) { obj_setPtr(self, "_f", NULL); } -Arg* PikaStdData_FILEIO_read(PikaObj* self, int size) { +Arg* PikaStdData_FILEIO_read(PikaObj* self, PikaTuple* size_) { + int size = 0; + if (pikaTuple_getSize(size_) == 0) { + size = -1; + }else{ + size = pikaTuple_getInt(size_, 0); + } if (size <= 0) { /* read all */ size = PIKA_READ_FILE_BUFF_SIZE; diff --git a/port/linux/package/pikascript/PikaStdData.pyi b/port/linux/package/pikascript/PikaStdData.pyi index 0ef96aa6d..4f7fa030d 100644 --- a/port/linux/package/pikascript/PikaStdData.pyi +++ b/port/linux/package/pikascript/PikaStdData.pyi @@ -155,7 +155,7 @@ class ByteArray: class FILEIO: def init(self, path: str, mode: str) -> int: ... - def read(self, size: int) -> any: ... + def read(self, *size) -> any: ... def write(self, s: any) -> int: ... def close(self): ... def seek(self, offset: int, *fromwhere) -> int: ... diff --git a/port/linux/package/pikascript/pikascript-lib/PikaStdLib/PikaStdData_FILEIO.c b/port/linux/package/pikascript/pikascript-lib/PikaStdLib/PikaStdData_FILEIO.c index a3d668ea9..b2c4f80e9 100644 --- a/port/linux/package/pikascript/pikascript-lib/PikaStdLib/PikaStdData_FILEIO.c +++ b/port/linux/package/pikascript/pikascript-lib/PikaStdLib/PikaStdData_FILEIO.c @@ -25,7 +25,13 @@ void PikaStdData_FILEIO_close(PikaObj* self) { obj_setPtr(self, "_f", NULL); } -Arg* PikaStdData_FILEIO_read(PikaObj* self, int size) { +Arg* PikaStdData_FILEIO_read(PikaObj* self, PikaTuple* size_) { + int size = 0; + if (pikaTuple_getSize(size_) == 0) { + size = -1; + }else{ + size = pikaTuple_getInt(size_, 0); + } if (size <= 0) { /* read all */ size = PIKA_READ_FILE_BUFF_SIZE;