Repository URL to install this package:
|
Version:
3.0.0 ▾
|
{$ifdef NDS_INTERFACE}
(*
------------------------------------------------------------------------------
libc file handling types and routines
------------------------------------------------------------------------------
*)
type
_FILE = record
firstCluster: cuint;
length: cuint;
curPos: cuint;
curClus: cuint; // Current cluster to read from
curSect: integer; // Current sector within cluster
curByte: integer; // Current byte within sector
readBuffer: array [0..511] of byte; // Buffer used for unaligned reads
appClus: cuint; // Cluster to append to
appSect: integer; // Sector within cluster for appending
appByte: integer; // Byte within sector for appending
read: boolean; // Can read from file
write: boolean; // Can write to file
append: boolean; // Can append to file
inUse: boolean; // This file is open
dirEntSector: cuint; // The sector where the directory entry is stored
dirEntOffset: integer; // The offset within the directory sector
end;
P_FILE = ^_FILE;
const
SEEK_SET = 0;
SEEK_CUR = 1;
SEEK_END = 2;
(*
------------------------------------------------------------------------------
Directory iterator for mantaining state between dir* calls
------------------------------------------------------------------------------
*)
type
DIR_ITER = record
device: cint;
dirStruct: pointer;
end;
PDIR_ITER = ^DIR_ITER;
stat = packed record
st_dev: cint;
st_ino: cuint;
st_mode : cuint;
st_nlink : cushort;
st_uid : cushort;
st_gid : cushort;
st_rdev : cint;
st_size : clong;
st_atime : clong;
st_spare1: clong;
st_mtime: clong;
st_spare2: clong;
st_ctime: clong;
st_spare3: clong;
st_blksize: clong;
st_blocks: clong;
st_spare4: array [0..1] of clong;
end;
TStat = stat;
PStat = ^stat;
const
S_IFMT = $F000;
S_IFDIR = $4000;
S_IFCHR = $2000;
S_IFBLK = $6000;
S_IFREG = $8000;
S_IFIFO = $1000;
S_IFLNK = $A000;
S_IFSOCK = $C000;
S_ISUID = $800;
S_ISGID = $400;
S_ISVTX = $200;
S_IREAD = $100;
S_IWRITE = $80;
S_IEXEC = $40;
NAME_MAX = 767;
type
dirent = record
d_ino: cint;
d_name: array [0..NAME_MAX] of char;
end;
PDirent = ^dirent;
PPDirent = ^PDirent;
DIR = record
position: cint32;
dirData: PDIR_ITER;
fileData: dirent;
end;
PDIR = ^DIR;
function diropen(const path: pchar): PDIR_ITER; cdecl; external;
function dirreset(dirState: PDIR_ITER): cint; cdecl; external;
function dirnext(dirState: PDIR_ITER; filename: pchar; filestat: Pstat): cint; cdecl; external;
function dirclose(dirState: PDIR_ITER): cint; cdecl; external;
(* File handling *)
function fopen(filename: Pchar; modes: Pchar): P_FILE; cdecl; external;
function fread(ptr: pointer; size: longint; n: longint; stream: P_FILE): longint; cdecl; external;
function fread(var ptr; size: longint; n: longint; var stream: _FILE): longint; cdecl; external;
function fwrite(ptr: pointer; size: longint; n: longint; s: P_FILE): longint; cdecl; external;
function fwrite(var ptr; size: longint; n: longint; var s: _FILE): longint; cdecl; external;
function ftell(stream: P_FILE): longint; cdecl; external;
function ftell(var stream: _FILE): longint; cdecl; external;
function fseek(stream: P_FILE; off: longint; whence: longint): longint; cdecl; external;
function fseek(var stream: _FILE; off: longint; whence: longint): longint; cdecl; external;
function fclose(stream: P_FILE): longint; cdecl; external;
function fclose(var stream: _FILE): longint; cdecl; external;
function isatty(fildes: longint): longint; cdecl; external;
function fileno(para1: P_FILE): longint; cdecl; external;
function fileno(var para1: _FILE): longint; cdecl; external;
function fstat(fildes: longint; buf: PStat): longint; cdecl; external;
function fstat(fildes: longint; var buf: TStat): longint; cdecl; external;
function _stat(__file:Pchar; var __buf:Tstat):longint; cdecl; external name 'stat';
function ftruncate(fildes: longint; len: longint): longint; cdecl; external;
function unlink(path: Pchar): longint; cdecl; external;
function rename(para1: Pchar; para2: Pchar): longint; cdecl; external;
{$endif NDS_INTERFACE}