Files
Sprinter-SDCC/applications/Volkov/include/sc_tree.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

44 lines
1.3 KiB
C

/* sc_tree.h — пошаговый BFS-обход дерева для рекурсивных файловых jobs. */
#ifndef SC_TREE_H
#define SC_TREE_H
#include <stdint.h>
#include "sc_copy.h"
#include "sc_entry.h"
#define SC_TREE_STEP_ERROR (-1)
#define SC_TREE_STEP_DONE 0
#define SC_TREE_STEP_FILE 1
#define SC_TREE_STEP_DIRECTORY 2
#define SC_TREE_STEP_SCAN_DIR 3
typedef struct {
uint8_t block;
uint8_t page;
uint8_t active;
uint8_t scan_state;
uint16_t head;
uint16_t tail;
uint16_t current;
uint16_t reverse;
uint16_t created_directories;
uint16_t files_seen;
int error;
} ScTreeJob;
int sc_tree_begin(ScTreeJob *job, ScCopyJob *copy) __banked;
int sc_tree_add_root(ScTreeJob *job, ScCopyJob *copy,
const char *source_base, const char *target_base,
const char *name) __banked;
int sc_tree_add_delete_root(ScTreeJob *job, const char *name) __banked;
int sc_tree_next(ScTreeJob *job, ScCopyJob *copy,
const char *source_base, const char *target_base,
ScDirEntry *entry) __banked;
int sc_tree_delete_next(ScTreeJob *job, ScCopyJob *copy,
const char *source_base,
ScDirEntry *entry) __banked;
int sc_tree_finish(ScTreeJob *job, ScCopyJob *copy) __banked;
#endif