workaround for old libffi
[m6w6/ext-psi] / psi.d / stdio.psi
1 // extern FILE *fopen(char *path, char *mode);
2 function psi\fopen(string $path, string $mode) : object {
3 let path = pathval($path);
4 let mode = strval($mode);
5 return to_object(*fopen);
6 }
7
8 // extern int fclose(FILE *stream);
9 function psi\fclose(object $stream) : int {
10 let stream = objval($stream);
11 return to_int(fclose);
12 }
13
14 // extern size_t fread(void *buf, size_t len, size_t n, FILE *stream);
15 function psi\fread(object $stream, string &$data = NULL, int $len = 1, int $n = 8192) : int {
16 let len = intval($len);
17 let n = intval($n);
18 let stream = objval($stream);
19 let buf = calloc(n, len);
20 return to_int(fread);
21 set $data = to_string(buf, fread * len);
22 }
23
24 // extern int feof(FILE *stream);
25 function psi\feof(object $stream) : int {
26 let stream = objval($stream);
27 return to_int(feof);
28 }
29
30 // extern int fileno(FILE *stream);
31 function psi\fileno(object $stream) : int {
32 let stream = objval($stream);
33 return to_int(fileno);
34 }
35
36 // extern int ferror(FILE *stream);
37 function psi\ferror(object $stream) : int {
38 let stream = objval($stream);
39 return to_int(ferror);
40 }
41
42 // extern void clearerr(FILE *stream);
43 function psi\clearerr(object $stream) : void {
44 let stream = objval($stream);
45 return void(clearerr);
46 }
47
48 // extern int fseek(FILE *stream, long offset, int whence);
49 function psi\fseek(object $stream, int $offset, int $whence) : int {
50 let stream = objval($stream);
51 let offset = intval($offset);
52 let whence = intval($whence);
53 return to_int(fseek);
54 }
55
56 //extern long ftell(FILE *stream);
57 function psi\ftell(object $stream) : int {
58 let stream = objval($stream);
59 return to_int(ftell);
60 }
61
62 // extern void rewind(FILE *stream);
63 function psi\rewind(object $stream) : void {
64 let stream = objval($stream);
65 return void(rewind);
66 }
67
68 //extern int printf(const char *fmt, ...);
69 function psi\printf(string $fmt, mixed ...$args) : int {
70 let fmt = strval($fmt);
71 return to_int(printf);
72 }