NewAPI/FileSystems
From Allegro Wiki
< NewAPI
Preliminary draft of 4.3 fshooks api. -- Tomasu 21:01, May 5, 2007 (MDT)
Note: Not up to date, but much of the api has been committed to Allegro 4.9 svn.
Contents |
Virtual File System
This allows resources to be loaded up, regardless of how they are stored. For example, a plug in could be written to access files in zip archive or direct from a webserver. See also RWOps in the SDL.
Functions
System Paths
Filesystem Handles
- ALLEGRO_FS_ENTRY *al_fs_create_handle(ALLEGRO_CONST char *path);
- void al_fs_destroy_handle(ALLEGRO_FS_ENTRY *handle);
- int32_t al_fs_open_handle(ALLEGRO_FS_ENTRY *handle, ALLEGRO_CONST char *mode);
- int32_t al_fs_close_handle(ALLEGRO_FS_ENTRY *handle);
File handling
- ALLEGRO_FS_ENTRY *al_fs_entry_open(const char *path, const char *mode);
- void al_fs_entry_name(ALLEGRO_FS_ENTRY *fp, size_t, char *fn);
- int32_t al_fs_entry_close(ALLEGRO_FS_ENTRY *fp);
- ssize_t al_fs_entry_read(void *ptr, size_t size, ALLEGRO_FS_ENTRY *fp);
- ssize_t al_fs_entry_write(const void *ptr, size_t size, ALLEGRO_FS_ENTRY *fp);
- int32_t al_fs_entry_flush(ALLEGRO_FS_ENTRY *fp);
- int32_t al_fs_entry_seek(ALLEGRO_FS_ENTRY *fp, uint32_t offset, uint32_t whence);
- int32_t al_fs_entry_tell(ALLEGRO_FS_ENTRY *fp);
- int32_t al_fs_entry_error(ALLEGRO_FS_ENTRY *fp);
- int32_t al_fs_entry_eof(ALLEGRO_FS_ENTRY *fp);
Entry stat info
Handle based
- uint32_t al_fs_entry_mode(ALLEGRO_FS_ENTRY *st);
- time_t al_fs_entry_atime(ALLEGRO_FS_ENTRY *st);
- time_t al_fs_entry_mtime(ALLEGRO_FS_ENTRY *st);
- time_t al_fs_entry_ctime(ALLEGRO_FS_ENTRY *st);
- size_t al_fs_entry_size(ALLEGRO_FS_ENTRY *st);
Path based
- uint32_t al_fs_stat_mode(ALLEGRO_CONST char *);
- time_t al_fs_stat_atime(ALLEGRO_CONST char *);
- time_t al_fs_stat_mtime(ALLEGRO_CONST char *);
- time_t al_fs_stat_ctime(ALLEGRO_CONST char *);
- size_t al_fs_stat_size(ALLEGRO_CONST char *);
Directory handling
- ALLEGRO_FS_ENTRY *al_fs_opendir(const char *path);
- int32_t al_fs_closedir(ALLEGRO_FS_ENTRY *dir);
- int32_t al_fs_readdir(ALLEGRO_FS_ENTRY *dir, size_t size, char *name);
Search Path
- int32_t al_fs_add_search_path(const char *path);
- int32_t al_fs_search_path_count();
- int32_t al_fs_get_search_path(uint32_t idx, char *dest, size_t len);
Find
- char ** al_fs_find_ex(char *path, ALLEGRO_FILTER_PROC filter, void *, ALLEGRO_SORT_PROC sort, void *);
- char ** al_fs_find(char *path, ALLEGRO_FS_FILTER filter, ALLEGRO_FS_SORT sort);
- void al_fs_free_list(char **);
Types
Structs
Base type for filesystem entries, dirs and files. Gets extended by driver implementations.
Enums
Anonymous Enums
enum {
ALLEGRO_MKTEMP_UNLINK_NEVER = 0,
ALLEGRO_MKTEMP_UNLINK_NOW = 1,
ALLEGRO_MKTEMP_UNLINK_ON_CLOSE = 2,
};
enum {
ALLEGRO_FM_READ = 1,
ALLEGRO_FM_WRITE = 1 << 1,
ALLEGRO_FM_EXECUTE = 1 << 2,
ALLEGRO_FM_HIDDEN = 1 << 3,
ALLEGRO_FM_ISFILE = 1 << 4,
ALLEGRO_FM_ISDIR = 1 << 5,
};
enum {
ALLEGRO_SEEK_SET = 0,
ALLEGRO_SEEK_CUR,
ALLEGRO_SEEK_END
};
enum {
ALLEGRO_FS_HOOK_CREATE_HANDLE = 0,
ALLEGRO_FS_HOOK_DESTROY_HANDLE,
ALLEGRO_FS_HOOK_OPEN_HANDLE,
ALLEGRO_FS_HOOK_CLOSE_HANDLE,
ALLEGRO_FS_HOOK_ENTRY_OPEN,
ALLEGRO_FS_HOOK_ENTRY_CLOSE,
ALLEGRO_FS_HOOK_ENTRY_READ,
ALLEGRO_FS_HOOK_ENTRY_WRITE,
ALLEGRO_FS_HOOK_ENTRY_FLUSH,
ALLEGRO_FS_HOOK_ENTRY_SEEK,
ALLEGRO_FS_HOOK_ENTRY_TELL,
ALLEGRO_FS_HOOK_ENTRY_ERROR,
ALLEGRO_FS_HOOK_ENTRY_EOF,
ALLEGRO_FS_HOOK_ENTRY_NAME,
ALLEGRO_FS_HOOK_ENTRY_STAT,
ALLEGRO_FS_HOOK_OPENDIR,
ALLEGRO_FS_HOOK_CLOSEDIR,
ALLEGRO_FS_HOOK_READDIR,
ALLEGRO_FS_HOOK_MKTEMP,
ALLEGRO_FS_HOOK_GETCWD,
ALLEGRO_FS_HOOK_CHDIR,
ALLEGRO_FS_HOOK_ADD_SEARCH_PATH,
ALLEGRO_FS_HOOK_SEARCH_PATH_COUNT,
ALLEGRO_FS_HOOK_GET_SEARCH_PATH,
ALLEGRO_FS_HOOK_ENTRY_MODE,
ALLEGRO_FS_HOOK_ENTRY_ATIME,
ALLEGRO_FS_HOOK_ENTRY_MTIME,
ALLEGRO_FS_HOOK_ENTRY_CTIME,
ALLEGRO_FS_HOOK_ENTRY_SIZE,
ALLEGRO_FS_HOOK_ENTRY_EXISTS,
ALLEGRO_FS_HOOK_ENTRY_UNLINK,
ALLEGRO_FS_HOOK_PATH_TO_SYS,
ALLEGRO_FS_HOOK_PATH_TO_UNI, /* universal */
ALLEGRO_FS_HOOK_DRIVE_SEP,
ALLEGRO_FS_HOOK_PATH_SEP,
ALLEGRO_FS_HOOK_STAT_MODE,
ALLEGRO_FS_HOOK_STAT_ATIME,
ALLEGRO_FS_HOOK_STAT_MTIME,
ALLEGRO_FS_HOOK_STAT_CTIME,
ALLEGRO_FS_HOOK_STAT_SIZE,
ALLEGRO_FS_HOOK_EXISTS,
ALLEGRO_FS_HOOK_UNLINK,
ALLEGRO_FS_HOOK_LAST /* must be last */
};
-- Tomasu 21:01, May 5, 2007 (MDT)
