Files
CgeFile/CgeFile.h

63 lines
2.0 KiB
C
Raw Permalink Normal View History

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);
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);
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 */