Mikhail Romanko 13a4452758
Some checks failed
CI / build-and-analyze (push) Failing after 33s
Initial commit
2026-07-26 09:43:07 +03:00
2026-07-26 09:43:07 +03:00
2026-07-26 09:43:07 +03:00
2026-07-26 09:43:07 +03:00
2026-07-26 09:43:07 +03:00
2026-07-26 09:43:07 +03:00
2026-07-26 09:43:07 +03:00
2026-07-26 09:43:07 +03:00
2026-07-26 09:43:07 +03:00
2026-07-26 09:43:07 +03:00
2026-07-26 09:43:07 +03:00
2026-07-26 09:43:07 +03:00
2026-07-26 09:43:07 +03:00
2026-07-26 09:43:07 +03:00

CgeFile - File Access Library for C

A lightweight, dependency-free C library providing a consistent interface for file operations across different operating systems. The library abstracts platform-specific details and offers a unified API for reading, writing, and manipulating files

Features

  • Cross-platform compatibility (Linux, macOS, Windows, POSIX systems)
  • Multiple file modes (read, write, read/write, append, truncate, create, existence checking)
  • Flexible seeking (relative, absolute, end-based positioning)
  • Comprehensive error handling with detailed error codes
  • File metadata retrieval (size, current position, flags)
  • Peek functionality (read data without advancing the file pointer)
  • Buffering and flushing (control data persistence)
  • EOF detection and error clearing

Usage Example

#include "CgeFile.h"
#include <stdio.h>
#include <string.h>

int main(void) {
    int result;
    CgeFile *file = CgeFileNew("example.txt", CGE_FILE_READWRITE | CGE_FILE_CREATE, &result);
    if (!file) {
        fprintf(stderr, "Failed to open file: error code %d\n", result);
        return 1;
    }

    const char *data = "Hello, CgeFile!";
    size_t written;
    if (!CgeFileWrite(file, data, strlen(data), &written)) {
        fprintf(stderr, "Write failed\n");
        CgeFileFree(file);
        return 1;
    }

    char buffer[100];
    size_t actual;
    if (CgeFileSeek(file, 0, CGE_FILE_SET) &&
        CgeFileRead(file, buffer, sizeof(buffer) - 1, &actual)) {
        buffer[actual] = '\0';
        printf("Read: %s\n", buffer);
    }

    CgeFileFree(file);
    return 0;
}

Build Systems

  • CMake: supports Linux, macOS, Windows (MSVC, MinGW)
  • Makefile.posix: for GCC/Clang on POSIX systems
  • Makefile.mingw: for MinGW on Windows
  • Makefile.win32: for MSVC with NMake

Builds a static library. No shared library or external dependencies

Portability

  • Standard compliance: written in C89 + stdint.h
  • No dynamic memory allocation: all memory management is explicit
  • No external dependencies: relies only on standard C libraries

License

0BSD - a permissive license with no attribution required.

Description
C File Access Library
Readme 0BSD 40 KiB
Languages
C 94.6%
CMake 5.4%