.\" Automatically generated by Pandoc 3.4 .\" .TH "ALLEGRO_FILE_INTERFACE" "3" "" "Allegro reference manual" .SH NAME ALLEGRO_FILE_INTERFACE \- Allegro 5 API .SH SYNOPSIS .IP .EX #include \f[B]\f[R] \f[B]typedef\f[R] \f[B]struct\f[R] ALLEGRO_FILE_INTERFACE .EE .SH DESCRIPTION A structure containing function pointers to handle a type of \[lq]file\[rq], real or virtual. See the full discussion in al_set_new_file_interface(3). .PP The fields are: .IP .EX void* (*fi_fopen)(const char *path, const char *mode); bool (*fi_fclose)(ALLEGRO_FILE *f); size_t (*fi_fread)(ALLEGRO_FILE *f, void *ptr, size_t size); size_t (*fi_fwrite)(ALLEGRO_FILE *f, const void *ptr, size_t size); bool (*fi_fflush)(ALLEGRO_FILE *f); int64_t (*fi_ftell)(ALLEGRO_FILE *f); bool (*fi_fseek)(ALLEGRO_FILE *f, int64_t offset, int whence); bool (*fi_feof)(ALLEGRO_FILE *f); int (*fi_ferror)(ALLEGRO_FILE *f); const char * (*fi_ferrmsg)(ALLEGRO_FILE *f); void (*fi_fclearerr)(ALLEGRO_FILE *f); int (*fi_fungetc)(ALLEGRO_FILE *f, int c); off_t (*fi_fsize)(ALLEGRO_FILE *f); .EE .PP The fi_open function must allocate memory for whatever userdata structure it needs. The pointer to that memory must be returned; it will then be associated with the file. The other functions can access that data by calling al_get_file_userdata(3) on the file handle. If fi_open returns NULL then al_fopen(3) will also return NULL. .PP The fi_fclose function must clean up and free the userdata, but Allegro will free the ALLEGRO_FILE(3) handle. .PP If fi_fungetc is NULL, then Allegro\[cq]s default implementation of a 16 char long buffer will be used.