1.1 --- a/templates/native/io.c Sat Nov 06 17:06:01 2021 +0100
1.2 +++ b/templates/native/io.c Sun Nov 07 01:18:51 2021 +0100
1.3 @@ -31,31 +31,31 @@
1.4
1.5 /* Input/output. */
1.6
1.7 -__attr __fn_native_io_fclose(__attr __self, __attr fp)
1.8 +__attr __fn_native_io_fclose(__attr __stack, __attr __self, __attr fp)
1.9 {
1.10 /* fp interpreted as FILE reference */
1.11 FILE *f = (FILE *) fp.datavalue;
1.12
1.13 errno = 0;
1.14 if (fclose(f))
1.15 - __raise_io_error(__new_int(errno));
1.16 + __raise_io_error(__new_int(__stack, errno));
1.17
1.18 return __builtins___none_None;
1.19 }
1.20
1.21 -__attr __fn_native_io_fflush(__attr __self, __attr fp)
1.22 +__attr __fn_native_io_fflush(__attr __stack, __attr __self, __attr fp)
1.23 {
1.24 /* fp interpreted as FILE reference */
1.25 FILE *f = (FILE *) fp.datavalue;
1.26
1.27 errno = 0;
1.28 if (fflush(f))
1.29 - __raise_io_error(__new_int(errno));
1.30 + __raise_io_error(__new_int(__stack, errno));
1.31
1.32 return __builtins___none_None;
1.33 }
1.34
1.35 -__attr __fn_native_io_fopen(__attr __self, __attr filename, __attr mode)
1.36 +__attr __fn_native_io_fopen(__attr __stack, __attr __self, __attr filename, __attr mode)
1.37 {
1.38 /* filename.__data__ interpreted as string */
1.39 char *fn = __load_via_object(__VALUE(filename), __data__).strvalue;
1.40 @@ -70,7 +70,7 @@
1.41 /* Produce an exception if the operation failed. */
1.42
1.43 if (f == NULL)
1.44 - __raise_io_error(__new_int(errno));
1.45 + __raise_io_error(__new_int(__stack, errno));
1.46
1.47 /* Return the __data__ attribute. */
1.48
1.49 @@ -85,7 +85,7 @@
1.50 return __builtins___none_None;
1.51 }
1.52
1.53 -__attr __fn_native_io_fdopen(__attr __self, __attr fd, __attr mode)
1.54 +__attr __fn_native_io_fdopen(__attr __stack, __attr __self, __attr fd, __attr mode)
1.55 {
1.56 /* fd interpreted as int */
1.57 int i = __TOINT(fd);
1.58 @@ -100,7 +100,7 @@
1.59 /* Produce an exception if the operation failed. */
1.60
1.61 if (f == NULL)
1.62 - __raise_io_error(__new_int(errno));
1.63 + __raise_io_error(__new_int(__stack, errno));
1.64
1.65 /* Return the __data__ attribute. */
1.66
1.67 @@ -115,7 +115,7 @@
1.68 return __builtins___none_None;
1.69 }
1.70
1.71 -__attr __fn_native_io_fread(__attr __self, __attr fp, __attr size)
1.72 +__attr __fn_native_io_fread(__attr __stack, __attr __self, __attr fp, __attr size)
1.73 {
1.74 /* fp interpreted as FILE reference */
1.75 FILE *f = (FILE *) fp.datavalue;
1.76 @@ -133,7 +133,7 @@
1.77 if (feof(f) && (have_read == 0))
1.78 __raise_eof_error();
1.79 else if ((error = ferror(f)))
1.80 - __raise_io_error(__new_int(error));
1.81 + __raise_io_error(__new_int(__stack, error));
1.82 }
1.83
1.84 /* Reserve space for a new string. */
1.85 @@ -143,7 +143,7 @@
1.86 return __new_str(s, have_read);
1.87 }
1.88
1.89 -__attr __fn_native_io_fwrite(__attr __self, __attr fp, __attr str)
1.90 +__attr __fn_native_io_fwrite(__attr __stack, __attr __self, __attr fp, __attr str)
1.91 {
1.92 /* fp interpreted as FILE reference */
1.93 FILE *f = (FILE *) fp.datavalue;
1.94 @@ -159,25 +159,25 @@
1.95 if (feof(f))
1.96 __raise_eof_error();
1.97 else if ((error = ferror(f)))
1.98 - __raise_io_error(__new_int(error));
1.99 + __raise_io_error(__new_int(__stack, error));
1.100 }
1.101
1.102 return __builtins___none_None;
1.103 }
1.104
1.105 -__attr __fn_native_io_close(__attr __self, __attr fd)
1.106 +__attr __fn_native_io_close(__attr __stack, __attr __self, __attr fd)
1.107 {
1.108 /* fd interpreted as int */
1.109 int i = __TOINT(fd);
1.110
1.111 errno = 0;
1.112 if (close(i) == -1)
1.113 - __raise_io_error(__new_int(errno));
1.114 + __raise_io_error(__new_int(__stack, errno));
1.115
1.116 return __builtins___none_None;
1.117 }
1.118
1.119 -__attr __fn_native_io_read(__attr __self, __attr fd, __attr n)
1.120 +__attr __fn_native_io_read(__attr __stack, __attr __self, __attr fd, __attr n)
1.121 {
1.122 /* fd interpreted as int */
1.123 int i = __TOINT(fd);
1.124 @@ -191,7 +191,7 @@
1.125 have_read = read(i, buf, to_read * sizeof(char));
1.126
1.127 if (have_read == -1)
1.128 - __raise_io_error(__new_int(errno));
1.129 + __raise_io_error(__new_int(__stack, errno));
1.130
1.131 /* Reserve space for a new string. */
1.132
1.133 @@ -200,7 +200,7 @@
1.134 return __new_str(s, have_read);
1.135 }
1.136
1.137 -__attr __fn_native_io_write(__attr __self, __attr fd, __attr str)
1.138 +__attr __fn_native_io_write(__attr __stack, __attr __self, __attr fd, __attr str)
1.139 {
1.140 /* fd interpreted as int */
1.141 int i = __TOINT(fd);
1.142 @@ -214,9 +214,9 @@
1.143 have_written = write(i, s, sizeof(char) * size);
1.144
1.145 if (have_written == -1)
1.146 - __raise_io_error(__new_int(errno));
1.147 + __raise_io_error(__new_int(__stack, errno));
1.148
1.149 - return __new_int(have_written);
1.150 + return __new_int(__stack, have_written);
1.151 }
1.152
1.153 /* Module initialisation. */