_stdio.h - vx32 - Local 9vx git repository for patches.
 (HTM) git clone git://r-36.net/vx32
 (DIR) Log
 (DIR) Files
 (DIR) Refs
       ---
       _stdio.h (4180B)
       ---
            1 #ifndef _STDIO_H
            2 #define _STDIO_H
            3 
            4 #include <sys/types.h>
            5 #include <stddef.h>
            6 #include <stdarg.h>
            7 
            8 
            9 typedef struct {
           10         int fd;                        // Underlying file descriptor
           11 
           12         unsigned char bufmode;        // Buffering mode
           13         unsigned char eofflag;        // End-of-file indicator
           14         unsigned char errflag;        // Error indicator
           15 
           16         unsigned char *obuf;        // Output buffer
           17         unsigned opos;                // Write position in output buffer
           18         unsigned omax;                // Size of output buffer
           19 
           20         unsigned char *ibuf;        // Input buffer
           21         unsigned ipos;                // Read position in input buffer
           22         unsigned ilim;                // Read limit in input buffer
           23         unsigned imax;                // Size of input buffer
           24 
           25         int append;                // Always append to end of file
           26         int isstring;                // is constant string
           27         unsigned ioffset;        // offset of last read
           28 } FILE;
           29 
           30 typedef signed long long fpos_t;
           31 
           32 #define EOF                (-1)        // End-of-file return value.
           33 
           34 #ifndef SEEK_SET
           35 #define SEEK_SET        0        // Seek relative to start-of-file.
           36 #define SEEK_CUR        1        // Seek relative to current position.
           37 #define SEEK_END        2        // Seek relative to end-of-file.
           38 #endif
           39 
           40 #define BUFSIZ                1024        // Standard I/O buffer size
           41 
           42 #define _IOFBF                0        // Input/output fully buffered.
           43 #define _IOLBF                1        // Input/output line buffered.
           44 #define _IONBF                2        // Input/output unbuffered.
           45 
           46 
           47 // Standard I/O streams
           48 extern FILE __stdin, __stdout, __stderr;
           49 #define stdin (&__stdin)
           50 #define stdout (&__stdout)
           51 #define stderr (&__stderr)
           52 
           53 
           54 #define L_tmpnam        20
           55 
           56 
           57 // File handling
           58 FILE *fopen(const char *path, const char *mode);
           59 FILE *fdopen(int fildes, const char *mode);
           60 FILE *freopen(const char *path, const char *mode, FILE *stream);
           61 int fclose(FILE *fp);
           62 
           63 // Temporary files
           64 FILE *tmpfile(void);
           65 char *tmpnam(char *buf);
           66 
           67 // Character output
           68 int fputc(int c, FILE *f);
           69 int putc(int c, FILE *f);
           70 int putchar(int c);
           71 #define putc(c,f)        ((f)->opos < (f)->omax && (c) != '\n' \
           72                                 ? (int)((f)->obuf[(f)->opos++] = (c)) \
           73                                 : fputc(c,f))
           74 #define putchar(c)        putc(c, stdout)
           75 
           76 // Unformatted output
           77 int fputs(const char *s, FILE *f);
           78 int puts(const char *s);
           79 size_t fwrite(const void *__restrict buf, size_t eltsize, size_t nelts,
           80                 FILE *__restrict f);
           81 
           82 // Formatted output
           83 int printf(const char *format, ...);
           84 int fprintf(FILE *f, const char *fmt, ...);
           85 int sprintf(char *buf, const char *fmt, ...);
           86 int snprintf(char *buf, int n, const char *fmt, ...);
           87 
           88 int vprintf(const char *format, va_list ap);
           89 int vfprintf(FILE *f, const char *fmt, va_list ap);
           90 int vsprintf(char *buf, const char *fmt, va_list ap);
           91 int vsnprintf(char *buf, int n, const char *fmt, va_list ap);
           92 
           93 // Character input
           94 int fgetc(FILE *f);
           95 int getc(FILE *f);
           96 int getchar(void);
           97 int ungetc(int c, FILE *f);
           98 #define getc(f)                ((f)->ipos < (f)->ilim \
           99                                 ? (int)((f)->ibuf[(f)->ipos++]) \
          100                                 : fgetc(f))
          101 #define getchar()        getc(stdin)
          102 int ungetc(int, FILE*);
          103 
          104 // Unformatted input
          105 char *gets(char *s);
          106 char *fgets(char *s, int size, FILE *stream);
          107 size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);
          108 
          109 // Formatted input
          110 int scanf(const char *__restrict format, ... );
          111 int fscanf(FILE *__restrict f, const char *__restrict format, ... );
          112 int sscanf(const char *__restrict str, const char *__restrict format, ... );
          113 
          114 int vscanf(const char *__restrict format, va_list);
          115 int vfscanf(FILE *__restrict f, const char *__restrict format, va_list);
          116 int vsscanf(const char *__restrict str, const char *__restrict format, va_list);
          117 
          118 // Seek position
          119 int fseek(FILE *stream, long offset, int whence);
          120 long ftell(FILE *stream);
          121 void rewind(FILE *stream);
          122 int fgetpos(FILE *__restrict f, fpos_t *__restrict pos);
          123 int fsetpos(FILE *f, const fpos_t *pos);
          124 
          125 off_t ftello(FILE *stream);
          126 
          127 // Error/EOF handling
          128 int feof(FILE *f);
          129 int ferror(FILE *f);
          130 void clearerr(FILE *f);
          131 #define feof(f)                ((int)(f)->eofflag)
          132 #define ferror(f)        ((int)(f)->errflag)
          133 #define clearerror(f)        ((void)((f)->errflag = 0))
          134 
          135 // Buffer management
          136 int fflush(FILE *f);
          137 void setbuf(FILE *__restrict f, char *__restrict buf);
          138 int setvbuf(FILE *__restrict f, char *__restrict buf, int type, size_t size);
          139 
          140 // Misc
          141 #define fileno(f)        ((f)->fd)
          142 
          143 void perror(const char*);
          144 int remove(const char*);
          145 
          146 // File management
          147 int remove(const char *path);
          148 int rename(const char *from, const char *to);
          149 
          150 #define FILENAME_MAX 1024
          151 
          152 #endif        // _STDIO_H