aboutsummaryrefslogtreecommitdiff
path: root/int21dos.h
diff options
context:
space:
mode:
authorJavier <dev.git@javispedro.com>2022-04-30 13:36:08 +0200
committerJavier <dev.git@javispedro.com>2022-04-30 13:36:08 +0200
commit7f2b85a2131718fd39b49737a5d945fb3ae7bde7 (patch)
tree918ee14faa96643db58b4b2464e1cddce5958bba /int21dos.h
parent66955fce6cc5b39cf3007d20dcc816a3607edd74 (diff)
downloadvbados-7f2b85a2131718fd39b49737a5d945fb3ae7bde7.tar.gz
vbados-7f2b85a2131718fd39b49737a5d945fb3ae7bde7.zip
save findfirst/findnext state in sdb, support concurrent calls
fd xcopy at least uses this. since we don't have a findclose call, we may leak the dir fd if the program does not finish reading the entire directory
Diffstat (limited to 'int21dos.h')
-rw-r--r--int21dos.h27
1 files changed, 23 insertions, 4 deletions
diff --git a/int21dos.h b/int21dos.h
index 329ef8b..af22fea 100644
--- a/int21dos.h
+++ b/int21dos.h
@@ -202,8 +202,15 @@ typedef _Packed struct dos_system_file_table_entry {
} DOSSFT;
STATIC_ASSERT(sizeof(DOSSFT) == 43);
+enum dos_sft_dev_flags {
+ DOS_SFT_FLAG_NETWORK = 0x8000,
+ DOS_SFT_FLAG_TIME_SET = 0x4000,
+ DOS_SFT_FLAG_CLEAN = 0x0040,
+ DOS_SFT_DRIVE_MASK = 0x001F
+};
+
typedef _Packed struct dos_search_data_block {
- char drive_letter;
+ uint8_t drive;
char search_templ[11];
uint8_t search_attr;
uint16_t dir_entry;
@@ -212,6 +219,11 @@ typedef _Packed struct dos_search_data_block {
} DOSSDB;
STATIC_ASSERT(sizeof(DOSSDB) == 21);
+enum dos_sdb_drive_flags {
+ DOS_SDB_DRIVE_FLAG_NETWORK = 0x80,
+ DOS_SDB_DRIVE_MASK = 0x1F
+};
+
typedef _Packed struct dos_lock_params {
uint32_t start_offset;
uint32_t region_size;
@@ -362,9 +374,16 @@ enum OPENEX_ACTIONS {
};
enum OPENEX_MODE {
- OPENEX_MODE_READ = 0,
- OPENEX_MODE_WRITE = 1,
- OPENEX_MODE_RDWR = 2
+ OPENEX_MODE_READ = 0,
+ OPENEX_MODE_WRITE = 1,
+ OPENEX_MODE_RDWR = 2,
+ OPENEX_MODE_MASK = 3,
+ OPENEX_SHARE_COMPAT = 0x00,
+ OPENEX_SHARE_DENYALL = 0x10,
+ OPENEX_SHARE_DENYWRITE = 0x20,
+ OPENEX_SHARE_DENYREAD = 0x30,
+ OPENEX_SHARE_DENYNONE = 0x40,
+ OPENEX_SHARE_MASK = 0x70,
};
enum OPENEX_RESULT {