(* This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain one at https://mozilla.org/MPL/2.0/. *) module type FILE* = extern var stdin*: ^FILE := extern stdout*: ^FILE := extern stderr*: ^FILE := extern proc fopen*(pathname, mode: ^const Word8) -> ^FILE extern proc fclose*(stream: ^FILE) -> Int extern proc fseek*(stream: ^FILE; off: Int; whence: Int) -> Int extern proc rewind*(stream: ^FILE) extern proc ftell*(stream: ^FILE) -> Int extern proc fflush*(stream: ^FILE) -> Int extern proc fread*#[T](ptr: ^T; size: Word; nmemb: Word; stream: ^FILE) -> Word extern proc fwrite*#[T](ptr: ^const T; size: Word; nitems: Word; stream: ^FILE) -> Word extern proc fputc*(c: Int; stream: ^FILE) -> Word extern proc perror*(s: ^const Word8) extern proc puts*(s: ^const Word8) -> Int extern proc putchar*(c: Int) -> Int extern proc sprintf*(str: ^Word8; format: ^const Word8) #{varargs} -> Int extern proc fprintf*(stream: ^FILE; format: ^const Word8) #{varargs} -> Int extern proc fdopen*(fildes: Int; mode: ^const Word8) -> ^FILE extern end.