|  | ============================= | 
|  | StdIO Functions in LLVM-libc | 
|  | ============================= | 
|  |  | 
|  | ------- | 
|  | Summary | 
|  | ------- | 
|  |  | 
|  | This document tracks the status of the implementation of stdio functions in LLVM | 
|  | Libc. | 
|  |  | 
|  | --------------- | 
|  | Source location | 
|  | --------------- | 
|  |  | 
|  | -   The main source for string functions is located at: | 
|  | ``libc/src/stdio`` with subdirectories for internal implementations. | 
|  |  | 
|  | --------------------- | 
|  | Implementation Status | 
|  | --------------------- | 
|  |  | 
|  | Formatted Input/Output Functions | 
|  | ================================ | 
|  |  | 
|  | These functions take in format strings and arguments of various types and | 
|  | convert either to or from those arguments. These functions are the current focus | 
|  | (owner: michaelrj). | 
|  |  | 
|  | =============  ========= | 
|  | Function_Name  Available | 
|  | =============  ========= | 
|  | \*printf       WIP | 
|  | \*scanf | 
|  | =============  ========= | 
|  |  | 
|  | ``FILE`` Access | 
|  | =============== | 
|  |  | 
|  | These functions are used to interact with the ``FILE`` object type, which is an | 
|  | I/O stream, often used to represent a file on the host's hard drive. Currently | 
|  | the ``FILE`` object is only available on linux. | 
|  |  | 
|  | =============  ========= | 
|  | Function_Name  Available | 
|  | =============  ========= | 
|  | fopen          YES | 
|  | freopen | 
|  | fclose         YES | 
|  | fflush         YES | 
|  | setbuf | 
|  | setvbuf | 
|  | ftell | 
|  | fgetpos | 
|  | fseek          YES | 
|  | fsetpos | 
|  | rewind | 
|  | tmpfile | 
|  | clearerr       YES | 
|  | feof           YES | 
|  | ferror         YES | 
|  | flockfile      YES | 
|  | funlockfile    YES | 
|  | =============  ========= | 
|  |  | 
|  | Operations on system files | 
|  | ========================== | 
|  |  | 
|  | These functions operate on files on the host's system, without using the | 
|  | ``FILE`` object type. They only take the name of the file being operated on. | 
|  |  | 
|  | =============  ========= | 
|  | Function_Name  Available | 
|  | =============  ========= | 
|  | remove | 
|  | rename | 
|  | tmpnam | 
|  | =============  ========= | 
|  |  | 
|  | Unformatted ``FILE`` Input/Output Functions | 
|  | =========================================== | 
|  |  | 
|  | The ``gets`` function was removed in C11 for having no bounds checking and | 
|  | therefor being impossible to use safely. | 
|  |  | 
|  | =============  ========= | 
|  | Function_Name  Available | 
|  | =============  ========= | 
|  | (f)getc | 
|  | fgets | 
|  | getchar | 
|  | fread          YES | 
|  | (f)putc | 
|  | (f)puts | 
|  | putchar | 
|  | fwrite         YES | 
|  | ungetc | 
|  | =============  ========= |