2026-07-26 09:37:43 +03:00
|
|
|
#ifndef CGE_FILE_H
|
|
|
|
|
#define CGE_FILE_H
|
|
|
|
|
|
|
|
|
|
#include <stdint.h>
|
|
|
|
|
#include <stddef.h>
|
|
|
|
|
|
|
|
|
|
enum CgeFileMode {
|
|
|
|
|
CGE_FILE_READ = (1 << 0),
|
|
|
|
|
CGE_FILE_WRITE = (1 << 1),
|
|
|
|
|
CGE_FILE_READWRITE = (1 << 0) | (1 << 1),
|
|
|
|
|
CGE_FILE_APPEND = (1 << 4),
|
|
|
|
|
CGE_FILE_TRUNCATE = (1 << 5),
|
|
|
|
|
CGE_FILE_CREATE = (1 << 6),
|
|
|
|
|
CGE_FILE_EXIST = (1 << 7),
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
enum CgeFileSeek {
|
|
|
|
|
CGE_FILE_SET,
|
|
|
|
|
CGE_FILE_CUR,
|
|
|
|
|
CGE_FILE_END,
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
enum CgeFileFlags {
|
|
|
|
|
CGE_FILE_OK = (1 << 0),
|
|
|
|
|
CGE_FILE_ERROR = (1 << 1),
|
|
|
|
|
CGE_FILE_EOF = (1 << 2),
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
enum CgeFileCode {
|
|
|
|
|
CGE_FILE_EOK, /* Success */
|
|
|
|
|
CGE_FILE_EUNKNOWN, /* Unknown or unexpected error */
|
|
|
|
|
CGE_FILE_EOOM, /* Out of memory */
|
|
|
|
|
CGE_FILE_ENOSPC, /* No space left on device */
|
|
|
|
|
CGE_FILE_EINVAL, /* Invalid mode/flag combination */
|
|
|
|
|
CGE_FILE_ENOENT, /* No such file or directory */
|
|
|
|
|
CGE_FILE_EACCES, /* Permission denied */
|
|
|
|
|
CGE_FILE_EROFS, /* Read-only file system */
|
|
|
|
|
CGE_FILE_EEXIST, /* File already exists */
|
|
|
|
|
CGE_FILE_EISDIR, /* Is a directory */
|
|
|
|
|
CGE_FILE_EMFILE, /* Too many open files */
|
|
|
|
|
CGE_FILE_ENAMETOOLONG /* File name too long */
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
typedef struct CgeFile CgeFile;
|
|
|
|
|
|
|
|
|
|
CgeFile *CgeFileNew(const char *path, int mode, int *result);
|
|
|
|
|
void CgeFileFree(CgeFile *file);
|
2026-07-26 19:22:05 +03:00
|
|
|
int CgeFileRead(CgeFile *file, void *buffer, size_t size, size_t *actual);
|
|
|
|
|
int CgeFileWrite(CgeFile *file, const void *buffer, size_t size,
|
2026-07-26 09:37:43 +03:00
|
|
|
size_t *actual);
|
2026-07-26 19:22:05 +03:00
|
|
|
int CgeFilePeek(CgeFile *file, void *buffer, size_t size, size_t *actual);
|
2026-07-26 09:37:43 +03:00
|
|
|
int CgeFileTell(CgeFile *file, int64_t *offset);
|
|
|
|
|
int CgeFileSeek(CgeFile *file, int64_t offset, int whence);
|
|
|
|
|
int CgeFileFlush(CgeFile *file);
|
|
|
|
|
int CgeFileSize(CgeFile *file, int64_t *size);
|
|
|
|
|
int CgeFileFlags(CgeFile *file, int *flags);
|
|
|
|
|
int CgeFileError(CgeFile *file);
|
|
|
|
|
int CgeFileEndOfFile(CgeFile *file);
|
|
|
|
|
int CgeFileClear(CgeFile *file);
|
|
|
|
|
int CgeFileErrorCode(CgeFile *file);
|
|
|
|
|
|
|
|
|
|
#endif /* CGE_FILE_H */
|