X-Git-Url: https://git.m6w6.name/?p=m6w6%2Fext-psi;a=blobdiff_plain;f=psi.d%2Fstdio.psi;h=d4d5945276de9007da5abcb1a1425da86dcf087c;hp=1e136cef1caaa8101152fac63c3bd6134843ba57;hb=c0873cbbe9e5a83305adbc2bbd94aede5437f33d;hpb=e16c15d5936c3b57b05e49570fb9526920de8188 diff --git a/psi.d/stdio.psi b/psi.d/stdio.psi index 1e136ce..d4d5945 100644 --- a/psi.d/stdio.psi +++ b/psi.d/stdio.psi @@ -1,72 +1,66 @@ -// extern FILE *fopen(char *path, char *mode); +#include + function psi\fopen(string $path, string $mode) : object { let path = pathval($path); let mode = strval($mode); - return to_object(*fopen); + return fopen(path, mode) + as to_object(fopen); } -// extern int fclose(FILE *stream); function psi\fclose(object $stream) : int { let stream = objval($stream); - return to_int(fclose); + return fclose(stream) as to_int(fclose); } -// extern size_t fread(void *buf, size_t len, size_t n, FILE *stream); function psi\fread(object $stream, string &$data = NULL, int $len = 1, int $n = 8192) : int { let len = intval($len); let n = intval($n); let stream = objval($stream); let buf = calloc(n, len); - return to_int(fread); + pre_assert stream != NULL; + return fread(buf, len, n, stream) as to_int(fread); set $data = to_string(buf, fread * len); } -// extern int feof(FILE *stream); function psi\feof(object $stream) : int { let stream = objval($stream); - return to_int(feof); + return feof(stream) as to_int(feof); } -// extern int fileno(FILE *stream); function psi\fileno(object $stream) : int { let stream = objval($stream); - return to_int(fileno); + return fileno(stream) as to_int(fileno); } -// extern int ferror(FILE *stream); function psi\ferror(object $stream) : int { let stream = objval($stream); - return to_int(ferror); + return ferror(stream) as to_int(ferror); } -// extern void clearerr(FILE *stream); function psi\clearerr(object $stream) : void { let stream = objval($stream); - return void(clearerr); + return clearerr(stream) as void(clearerr); } -// extern int fseek(FILE *stream, long offset, int whence); function psi\fseek(object $stream, int $offset, int $whence) : int { let stream = objval($stream); let offset = intval($offset); let whence = intval($whence); - return to_int(fseek); + return fseek(stream, offset, whence) as to_int(fseek); } -//extern long ftell(FILE *stream); function psi\ftell(object $stream) : int { let stream = objval($stream); - return to_int(ftell); + return ftell(stream) as to_int(ftell); } -// extern void rewind(FILE *stream); function psi\rewind(object $stream) : void { let stream = objval($stream); - return void(rewind); + return rewind(stream) as void(rewind); } -extern int printf(const char *fmt, ...); function psi\printf(string $fmt, mixed ...$args) : int { - let fmt = strval($fmt); - return to_int(printf); + let format = strval($fmt); + return printf(format) as to_int(printf); } +