Skip to content

File API

knot126 edited this page Sep 14, 2023 · 6 revisions
typedef uint16_t DgFileFlags;

/* Public API */
DgError DgFileLoad(DgStorage *storage, DgStoragePath path, size_t *size, void **buffer);
DgError DgFileSave(DgStorage *storage, DgStoragePath path, size_t size, void *buffer);
DgError DgFileAppend(DgStorage *storage, DgStoragePath path, size_t size, void *buffer);

Example usage

#include "error.h"
#include "file.h"

void example(void) {
    void *buffer;
    size_t buffer_length;
    
    // NULL to use default storage configuration
    DgError result = DgFileLoad(NULL, "assets://somefile.txt", &buffer_length, &buffer);
    
    if (DgErrorFatal(result)) {
        DgLog(DG_LOG_ERROR, "Ahh! Failed to load file stream!!");
    }
    
    // ... maybe do something with the file ...
    
    DgFileSave(NULL, "assets://otherfile.txt", buffer_length, buffer);
}

void load_adverts(size_t size, void *buffer) {
    // Using storage with HTTP file loading
    DgError error = DgFileLoad(NULL, "https://192.168.1.134:8000/get-ads", &size, &buffer);
    
    switch (error) {
        case DG_ERROR_SUCCESSFUL: break;
        case DG_ERROR_NOT_FOUND: DgLog(DG_LOG_ERROR, "Ads file was not found!"); break;
        case DG_ERROR_NOT_CONNECTED: DgLog(DG_LOG_ERROR, "Could not connect to ads server!"); break;
        default: DgLog(DG_LOG_ERROR, "There was an error loading ads!"); break;
    }
}
Clone this wiki locally