Files
Sprinter-SDCC/libc/include/fcntl.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

41 lines
1.5 KiB
C

/*
* fcntl.h — open / creat for Sprinter ESTEX.
*
* Флаги унаследованы от исторического Sprinter C API: младшие биты задают
* RDONLY=2, WRONLY=1, RDWR=3 (это НЕ POSIX-нумерация). open() переводит их
* в соглашение ESTEX OPEN $11; нулевой access mode принимается как RDONLY
* для совместимости с кодом, ожидающим POSIX O_RDONLY=0.
*
* The other flags map onto ESTEX calls like this:
* O_CREAT + O_EXCL → $0B (CREATE_NEW, fails if exists)
* O_CREAT + O_TRUNC → $0A (CREATE, truncates existing)
* O_CREAT alone → try $11 (OPEN); on ENOENT fall back to $0A
* no O_CREAT → $11 (OPEN, fails if missing)
* O_APPEND → after open, $15 lseek(0, SEEK_END)
*/
#ifndef FCNTL_H
#define FCNTL_H
#ifndef _STD_SEEK_
#define _STD_SEEK_
/* constants to be used as 3rd argument for "fseek" function */
#define SEEK_SET 0
#define SEEK_CUR 1
#define SEEK_END 2
#endif
/* Definition "open flags" */
#define O_WRONLY 0x01 /* 0 file write only */
#define O_RDONLY 0x02 /* 1 file read only */
#define O_RDWR 0x03 /* 1,0 file read/write */
#define O_TRUNC 0x04 /* 2 open with truncation */
#define O_CREAT 0x08 /* 3 create and open file */
#define O_EXCL 0x10 /* 4 exclusive open */
#define O_APPEND 0x20 /* 5 to end of file */
int open (const char *path, int flags);
int creat(const char *path, int mode); /* mode arg ignored on Sprinter */
#endif