Files
CgeFile/File.c

41 lines
781 B
C
Raw Normal View History

2026-07-26 09:37:43 +03:00
#include "CgeFile.h"
2026-08-08 16:47:24 +03:00
#include <assert.h>
2026-07-26 09:37:43 +03:00
int CgeFileError(CgeFile *file) {
int flags;
2026-08-08 16:47:24 +03:00
assert(file != NULL);
2026-07-26 09:37:43 +03:00
CgeFileFlags(file, &flags);
return flags & CGE_FILE_ERROR;
}
int CgeFileEndOfFile(CgeFile *file) {
int flags;
2026-08-08 16:47:24 +03:00
assert(file != NULL);
2026-07-26 09:37:43 +03:00
CgeFileFlags(file, &flags);
return flags & CGE_FILE_EOF;
}
int CgeFilePeek(CgeFile *file, void *buffer, size_t size, size_t *actual) {
2026-07-26 09:37:43 +03:00
int64_t pos;
size_t n = 0;
2026-08-08 16:47:24 +03:00
assert(file != NULL);
assert(buffer != NULL);
2026-07-26 09:37:43 +03:00
if (CgeFileError(file) || CgeFileEndOfFile(file))
return 0;
if (!CgeFileTell(file, &pos) ||
!CgeFileRead(file, buffer, size, &n) ||
!CgeFileSeek(file, pos, CGE_FILE_SET))
return 0;
2026-08-08 16:47:24 +03:00
if (actual)
*actual = n;
2026-07-26 09:37:43 +03:00
return 1;
}