/*
 * gfx_pal_fsave — сохранить палитру pal_num (0..3) в файл: 256 записей
 * по 4 байта (B, G, R, 0 — родной формат BIOS $A4), итого 1024 байта.
 * Пишется чанками по 64 записи через общий буфер.  0 — OK; -1 + errno.
 */
#include <fcntl.h>
#include <unistd.h>
#include "../_bgi.h"

int gfx_pal_fsave(uint8_t pal_num, const char *path)
{
    uint8_t k, start = 0;
    int fd, rc = 0;

    fd = creat(path, 0);
    if (fd < 0)
        return -1;

    for (k = 0; k < 4; k++) {
        gfx_pal_get(pal_num, start, _GFX_PAL_CHUNK, _gfx_pal_buf);
        if (write(fd, _gfx_pal_buf, _GFX_PAL_CHUNK * 4)
                != _GFX_PAL_CHUNK * 4) {
            rc = -1;
            break;
        }
        start += _GFX_PAL_CHUNK;
    }
    close(fd);
    return rc;
}
