Files
befpc/begui/begui/imports/pascal/beutils.pas

305 lines
8.0 KiB
ObjectPascal

unit beutils;
interface
{$PACKRECORDS C}
const
LIBROOT = 'root';
LIBBE = 'be';
LIBBEGUI = 'begui';
_BEEP_FLAGS = 0;
{----- From types.h -------------------------------------------}
type
blkcnt_t = int64;
blksize_t = longint;
fsblkcnt_t = int64;
fsfilcnt_t = int64;
ino_t = int64;
cnt_t = longint;
mode_t = dword;
nlink_t = longint;
dev_t = longint;
off_t = int64;
pid_t = longint;
uid_t = dword;
gid_t = dword;
umode_t = dword;
daddr_t = longint;
{ bsd }
u_char = byte;
u_short = word;
u_int = dword;
u_long = dword;
{ sysv }
unchar = byte;
ushort = word;
uint = dword;
ulong = dword;
caddr_t = char;
{--------------------------------------------------------------}
{----- From fcntl.h (posix) ----------------------------------}
const
F_DUPFD = $0001;
F_GETFD = $0002;
F_SETFD = $0004;
F_GETFL = $0008;
F_SETFL = $0010;
F_GETLK = $0020;
F_RDLCK = $0040;
F_SETLK = $0080;
F_SETLKW = $0100;
F_UNLCK = $0200;
F_WRLCK = $0400;
const
O_RDONLY = 0; { read only }
O_WRONLY = 1; { write only }
O_RDWR = 2; { read and write }
O_RWMASK = 3; { Mask to get open mode }
O_CLOEXEC = $0040; { close fd on exec }
O_NONBLOCK = $0080; { non blocking io }
O_EXCL = $0100; { exclusive creat }
O_CREAT = $0200; { create and open file }
O_TRUNC = $0400; { open with truncation }
O_APPEND = $0800; { to end of file }
O_NOCTTY = $1000; { currently unsupported }
O_NOTRAVERSE = $2000; { do not traverse leaf link }
O_ACCMODE = $0003; { currently unsupported }
O_TEXT = $4000; { CR-LF translation }
O_BINARY = $8000; { no translation }
const
FD_CLOEXEC = 1;
const
{ #define O_DSYNC XXXdbg }
{ #define O_RSYNC XXXdbg }
{ #define O_SYNC XXXdbg }
S_IREAD = $0100; { owner may read }
S_IWRITE = $0080; { owner may write }
type
flock = record
l_type : smallint;
l_whence : smallint;
l_start : off_t;
l_len : off_t;
l_pid : pid_t;
end;
function creat(path:Pchar; mode:mode_t):longint;cdecl; external LIBROOT;
//function open(pathname:Pchar; oflags:longint; args:array of const):longint; cdecl; external LIBROOT;
function open(pathname:Pchar; oflags:longint):longint; cdecl; external LIBROOT;
{ the third argument is the permissions of the created file when O_CREAT is passed in oflags }
//function fcntl(fd:longint; op:longint; args: array of const):longint; cdecl; external LIBROOT;
function fcntl(fd:longint; op:longint):longint; cdecl; external LIBROOT;
{------------------------------------------------------------- }
{----- Shorthand type formats -------------------------------- }
type
int8 = char;
uint8 = byte;
int16 = smallint;
uint16 = word;
int32 = longint;
int64 = comp;
uint32 = dword;
uint64 = qword;
uchar = byte;
unichar = word;
//Volatile types unsupported
//--------------------------
//typedef volatile signed char vint8;
//typedef volatile unsigned char vuint8;
//typedef volatile short vint16;
//typedef volatile unsigned short vuint16;
//typedef volatile long vint32;
//typedef volatile unsigned long vuint32;
//typedef volatile long long vint64;
//typedef volatile unsigned long long vuint64;
//typedef volatile long vlong;
//typedef volatile int vint;
//typedef volatile short vshort;
//typedef volatile char vchar;
//typedef volatile unsigned long vulong;
//typedef volatile unsigned int vuint;
//typedef volatile unsigned short vushort;
//typedef volatile unsigned char vuchar;
{------------------------------------------------------------- }
{----- Descriptive formats ----------------------------------- }
type
status_t = int32;
bigtime_t = comp;
type_code = uint32;
perform_code = uint32;
{----------------------------------------------------- }
{----- min and max comparisons ----------------------- }
{----- min() and max() won't work in C++ ------------- }
{ was #define dname(params) para_def_expr }
{ argument types are unknown }
{ return type might be wrong }
function min_c(a,b : longint) : longint;
{ was #define dname(params) para_def_expr }
{ argument types are unknown }
{ return type might be wrong }
function max_c(a,b : longint) : longint;
{ was #define dname(params) para_def_expr }
{ argument types are unknown }
{ return type might be wrong }
function min(a,b : longint) : longint;
{ was #define dname(params) para_def_expr }
{ argument types are unknown }
{ return type might be wrong }
function max(a,b : longint) : longint;
{----------------------------------------------------- }
{----- Grandfathering -------------------------------- }
type
bool = byte;
const
bool_false = 0;
bool_true = 1;
const
NULL = 0;
{----LIMITS-------------------------------- }
const
NAME_MAX = 256;
SYMLINK_MAX = 16;
MAXPATHLEN = 1024; //guess...
const
B_FILE_NAME_LENGTH = NAME_MAX;
B_PATH_NAME_LENGTH = MAXPATHLEN;
B_ATTR_NAME_LENGTH = B_FILE_NAME_LENGTH - 1;
B_MIME_TYPE_LENGTH = B_ATTR_NAME_LENGTH - 15;
B_MAX_SYMLINKS = SYMLINK_MAX;
{----FILE OPEN MODES-------------------------------- }
const
B_READ_ONLY = O_RDONLY; { read only }
B_WRITE_ONLY = O_WRONLY; { write only }
B_READ_WRITE = O_RDWR; { read and write }
B_FAIL_IF_EXISTS = O_EXCL; { exclusive create }
B_CREATE_FILE = O_CREAT; { create the file }
B_ERASE_FILE = O_TRUNC; { erase the file's data }
B_OPEN_AT_END = O_APPEND; { point to the end of the data }
{--------------------------------------------------------------- }
{----- Atomic functions; old value is returned ----------------- }
//function atomic_add(value:Pvint32; addvalue:int32):int32;cdecl; external LIBROOT;
//function atomic_and(value:Pvint32; andvalue:int32):int32;cdecl; external LIBROOT;
//function atomic_or(value:Pvint32; orvalue:int32):int32;cdecl; external LIBROOT;
{----- Other stuff --------------------------------------------- }
function get_stack_frame:pointer;cdecl; external LIBROOT;
{----- From SupportDef.h ----------------------------------------}
{ unlock function, NULL if lock failed }
{ error if "unlock_func" is NULL }
{ locked object if "unlock_func" is non-NULL }
type
lock_status_t = record
unlock_func : procedure (data:pointer);cdecl;
value : record
case longint of
0 : ( error : status_t );
1 : ( data : pointer );
end;
end;
const
BEEP_SOUND = 'Beep';
STARTUP_SOUND = 'Startup';
NEWEMAIL_SOUND = 'New E-mail';
{----- From Beep.h ----------------------------------------------}
//because of the was libbe was compiled, FPC can't link to the exported
//functions from it!! Had to wrap these to get things to work.
function beep: status_t; cdecl; external LIBBEGUI name 'beapi_beep';
function system_beep(event_name:Pchar): status_t; cdecl; external LIBBEGUI name 'beapi_system_beep';
function add_system_beep_event(event_name:Pchar; flags:uint32):status_t; cdecl; external LIBBEGUI name 'beapi_add_system_beep_event';
implementation
{ was #define dname(params) para_def_expr }
{ argument types are unknown }
{ return type might be wrong }
function min_c(a,b : longint) : longint;
var
if_local1 : longint;
(* result types are not known *)
begin
if b > a then
if_local1:=b
else if_local1:=a;
min_c := if_local1;
end;
{ was #define dname(params) para_def_expr }
{ argument types are unknown }
{ return type might be wrong }
function max_c(a,b : longint) : longint;
var
if_local1 : longint;
(* result types are not known *)
begin
if b > a then
if_local1:=a
else if_local1:=b;
max_c := if_local1;
end;
{ was #define dname(params) para_def_expr }
{ argument types are unknown }
{ return type might be wrong }
function min(a,b : longint) : longint;
var
if_local1 : longint;
(* result types are not known *)
begin
if b > a then
if_local1:=b
else if_local1:=a;
min:=if_local1;
end;
function max(a,b : longint) : longint;
var
if_local1 : longint;
(* result types are not known *)
begin
if b > a then
if_local1:=a
else if_local1:=b;
max:=if_local1;
end;
end.