Files
Sprinter-SDCC/applications/Volkov/include/sc_copy.h
T
snark13 8e389c03f8 Volkov: добавить Sprinter Commander
Реализовать двухпанельный Commander от платформенного PoC до этапов P6-P20: EMM-каталог, сортировку и выбор, операции с файлами и деревьями, транзакционное копирование, метаданные, политику конфликтов и предварительную проверку свободного места.

Добавить проектную документацию, HDD/MAME-сценарии и проверенные артефакты. Расширить libc операцией bank_write_page, исправлением режима O_RDONLY и связанными регрессионными проверками.
2026-09-10 10:45:30 +03:00

60 lines
2.1 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/* sc_copy.h — состояние безопасного однофайлового copy-job PoC. */
#ifndef SC_COPY_H
#define SC_COPY_H
#include <stdint.h>
#define SC_COPY_PATH_CAPACITY 256u
#define SC_COPY_CHUNK_SIZE 4096u
#define SC_COPY_IDLE 0u
#define SC_COPY_RUNNING 1u
#define SC_COPY_DONE 2u
#define SC_COPY_CANCELLED 3u
#define SC_COPY_ERROR 4u
#define SC_COPY_STEP_ERROR (-1)
#define SC_COPY_STEP_DONE 0
#define SC_COPY_STEP_MORE 1 /* нужен ещё шаг; done==total означает pre-commit */
typedef struct {
char source_path[SC_COPY_PATH_CAPACITY];
char target_path[SC_COPY_PATH_CAPACITY];
char temp_path[SC_COPY_PATH_CAPACITY];
uint32_t total;
uint32_t done;
uint16_t source_date;
uint16_t source_time;
int source_fd;
int temp_fd;
int error;
uint8_t page;
uint8_t state;
uint8_t temp_exists;
uint8_t source_attr;
uint8_t existing_attr;
uint8_t preserve_metadata;
uint8_t replace_existing;
uint8_t committed;
} ScCopyJob;
int sc_copy_begin(ScCopyJob *job, const char *source_dir,
const char *target_dir, const char *name,
uint32_t size, uint8_t page) __banked;
/* source_name и target_name могут различаться; replace включает backup/rollback. */
int sc_copy_begin_policy(ScCopyJob *job, const char *source_dir,
const char *target_dir, const char *source_name,
const char *target_name, uint32_t size,
uint8_t page, uint8_t replace) __banked;
/* Для tree-job: CWD уже равен source-dir, а target_path подготовлен целиком. */
int sc_copy_begin_prepared(ScCopyJob *job, const char *name,
uint32_t size, uint8_t page) __banked;
int sc_copy_begin_prepared_policy(ScCopyJob *job, const char *name,
uint32_t size, uint8_t page,
uint8_t replace) __banked;
int sc_copy_step(ScCopyJob *job) __banked;
void sc_copy_cancel(ScCopyJob *job) __banked;
#endif