ðíOberon10.Scn.Fnt Oberon10i.Scn.FntþlN' ' œ¹CîÔ9 C>oW] <Z„-#" %#" q:  Oberon10b.Scn.FntoߊGzuSMODULE Unix; (* js 9.5.94 *) (*---------------------------------------------------------* * Copyright (c) 1990-1996 ETH Z…rich. All Rights Reserved. * Oberon is a trademark of Institut f…r Computersysteme, ETH Z…rich. *---------------------------------------------------------*) (* HP-UX 9.0 Version *) IMPORT S := SYSTEM; CONST fdSetSize* = 8*32; stdin* = 0; stdout* =1; stderr* = 2; numArgRegs = 4; (* *) (* flag sets *) rdonly* = 0H; wronly* = 1H; rdwr* = 2H; creat* = 100H; trunc* = 80000H; (* Posix error numbers *) EPERM* = 1; (* Not super-user *) ENOENT* = 2; (* No such file or directory *) ESRCH* = 3; (* No such process *) EINTR* = 4; (* Interrupted system call *) EIO* = 5; (* I/O error *) ENXIO* = 6; (* No such device or address *) E2BIG* = 7; (* Arg list too long *) ENOEXEC* = 8; (* Exec format error *) EBADF* = 9; (* Bad file number *) ECHILD* = 10; (* No children *) EAGAIN* = 11; (* No more processes *) ENOMEM* = 12; (* Not enough core *) EACCES* = 13; (* Permission denied *) EFAULT* = 14; (* Bad address *) ENOTBLK* = 15; (* Block device required *) EBUSY* = 16; (* Mount device busy *) EEXIST* = 17; (* File exists *) EXDEV* = 18; (* Cross-device link *) ENODEV* = 19; (* No such device *) ENOTDIR* = 20; (* Not a directory*) EISDIR* = 21; (* Is a directory *) EINVAL* = 22; (* Invalid argument *) ENFILE* = 23; (* File table overflow *) EMFILE* = 24; (* Too many open files *) ENOTTY* = 25; (* Not a typewriter *) ETXTBSY* = 26; (* Text file busy *) EFBIG* = 27; (* File too large *) ENOSPC* = 28; (* No space left on device *) ESPIPE* = 29; (* Illegal seek *) EROFS* = 30; (* Read-only file system *) EMLINK* = 31; (* Too many links *) EPIPE* = 32; (* Broken pipe *) ENOMSG* = 35; (* No message of desired type *) EIDRM* = 36; (* Identifier removed *) EDEADLK* = 45; (* A deadlock would occur *) ENOLCK* = 46; (* System record lock table was full *) EILSEQ* = 47; (* Illegal byte sequence *) ENOTEMPTY* = 247; (* Directory not empty *) ENAMETOOLONG* = 248; (* File name too long *) ENOSYS* = 251; (* Function not implemented *) TYPE (* *) Status* = RECORD dev*, ino*: LONGINT; mode*, nlink*, reserved1*, reserved2*: INTEGER; rdev*, size*: LONGINT; atime*, spare1*, mtime*, spare2*, ctime*, spare3*: LONGINT; blksize, blocks, pad: LONGINT; netdev, netio : LONGINT; cnode, rcnode, netsite, sftype: INTEGER; realdev: LONGINT; basemode, spareshort: INTEGER; uid*, gid*: LONGINT; spare4: ARRAY 3 OF LONGINT; END; (* *) FdSet* = RECORD w*: ARRAY fdSetSize DIV 32 OF LONGINT END; Timeval* = RECORD sec*, usec*: LONGINT END; ITimerVal* = RECORD interval*, value*: Timeval END; (* *) Timezone* = RECORD minuteswest*, dsttime*: LONGINT END; (* *) TmPtr* = POINTER TO Tm; Tm* = RECORD sec*, min*, hour*, mday*, mon*, year*, wday*, yday*, isdst*: LONGINT END; TmsPtr* = POINTER TO Tms; Tms* = RECORD uTime*, sTime*: LONGINT; cuTime*, csTime*: LONGINT; END; (* *) Rusage* = RECORD utime*, stime*: Timeval; maxrss*, ixrss*, idrss*, isrss*, minflt*, majflt*, nswap*, inblock*, oublock*, ioch*, msgsnd*, msgrcv*, nsignals*, nvcsw*, nivcsw*: LONGINT END; (* *) SaveState* = RECORD grs*: ARRAY 32 OF LONGINT; (* * grs[0] = flags, grs[2] = rp, * grs[23] = arg3, grs[24] = arg2, grs[25] = arg1, grs[26] = arg0, * grs[27] = dp, grs[28] = ret0, grs[29] = ret1, grs[30] = sp *) cr11, pcoqHead*, pcsqHead, pcoqTail, pcsqTail : LONGINT; cr15, cr19, cr20, cr21, cr22: LONGINT; cpuState : LONGINT; sr4, sr0, sr1, sr2, sr3, sr5, sr6, sr7: LONGINT; cr0, cr8, cr9, cr10, cr12, cr13, cr24, cr25, cr26: LONGINT; mpsfuHigh, mpsfuLow, mpsfuOvflo: LONGINT; pad: LONGINT; frs*: ARRAY 32 OF LONGREAL; cr16, cr23: LONGINT; END; (* *) FrameMarker = RECORD edp, esr4, erp, crp, sl, clup, ep, psp : LONGINT; END; (* *) SigContextPtr* = POINTER TO SigContext; SigLocal* = RECORD sysCall, onStack, mask: LONGINT; sysCallAction, eoSys: CHAR; error: INTEGER; rVal1, rVal2: LONGINT; arg*: ARRAY numArgRegs OF LONGINT; ss* : SaveState; END; SigContext* = RECORD sl*: SigLocal; args*: ARRAY numArgRegs OF LONGINT; sfm*: FrameMarker; END; (* *) JmpBuf* = RECORD data: ARRAY 50 OF LONGINT; END; (* *) SignalHandler* = PROCEDURE(sig, code: LONGINT; scp: SigContextPtr); SigVector* = RECORD handler*: LONGINT; (* SignalHandler *) mask*: LONGINT; flags*: LONGINT; END; SigAction* = RECORD handler*: SignalHandler; mask*: ARRAY 8 OF LONGINT; flags*: LONGINT; END; SigStack* = RECORD sp*, onstack* : LONGINT END; (* *) Utsname* = RECORD sysname*, nodename*, release*, version*, machine*: ARRAY 9 OF CHAR; idnumber*: ARRAY 15 OF CHAR; END; (* *) MallInfoDesc* = RECORD arena*: LONGINT; (* total space in arena *) ordblks*: LONGINT; (* number of ordinary blocks *) smblks*: LONGINT; (* number of small blocks *) hblks*: LONGINT; (* number of holding blocks *) hblkhd*: LONGINT; (* space in holding block headers *) usmblks*: LONGINT; (* space in small blocks in use *) fsmblks*: LONGINT; (* space in free small blocks *) uordblks*: LONGINT; (* space in ordinary blocks in use *) fordblks*: LONGINT; (* space in free ordinary blocks *) keepcost*: LONGINT; (* cost of enabling keep option *) END; (* *) DirEnt* = POINTER TO DirEntDesc; DirEntDesc* = RECORD ino*: LONGINT; (* file number of entry *) reclen*: INTEGER; (* length of this record *) namlen*: INTEGER; (* length of string in d_name *) name*: ARRAY 256 OF CHAR; (* name must be no longer than this *) END; Dir* = POINTER TO RECORD fd*: LONGINT; (* file descriptor *) loc*: LONGINT; size*: LONGINT; bbase*: LONGINT; entno*: LONGINT; (* directory entry number *) bsize*: LONGINT; (* buffer size *) buf: LONGINT; (* char *, malloc'ed buffer *) END; EnvVar* = POINTER TO RECORD name*: ARRAY 1024 OF CHAR END; VAR (* the first variable is initialized by the boot loader *) dlsymc-: PROCEDURE(handle, name, adr: LONGINT); dlopenc-: PROCEDURE(lib, mode : LONGINT): LONGINT; dlclosec-: PROCEDURE(handle: LONGINT); Malloc-: PROCEDURE(size: LONGINT): LONGINT; MallInfoC-: PROCEDURE(infoAdr: LONGINT); Calloc-: PROCEDURE(nelem, elsize: LONGINT): LONGINT; Free-: PROCEDURE(ptr: LONGINT); System-: PROCEDURE (cmdAdr, len: LONGINT); Time-: PROCEDURE (tloc: LONGINT): LONGINT; Times-: PROCEDURE (tmsBuf: LONGINT): LONGINT; Localtime-: PROCEDURE (clock: LONGINT): TmPtr; Getenv-: PROCEDURE (nameAdr, len: LONGINT): EnvVar; Getcwd-: PROCEDURE(pathnameAdr, len: LONGINT): LONGINT; Exit-: PROCEDURE(status: LONGINT); Atexit-: PROCEDURE(p: LONGINT): LONGINT; Sigsetjmp-: PROCEDURE(env: JmpBuf; savemask: LONGINT): LONGINT; Siglongjmp-: PROCEDURE(env: JmpBuf; val: LONGINT); Sysconf-: PROCEDURE(name: LONGINT): LONGINT; Uname-: PROCEDURE(namePtr: LONGINT): LONGINT; Fork-: PROCEDURE (): LONGINT; Read-: PROCEDURE (fd, adr, n: LONGINT): LONGINT; Write-: PROCEDURE (fd, adr, n: LONGINT): LONGINT; Open-: PROCEDURE (nameadr: LONGINT; flag, mode: LONGINT): LONGINT; Close-: PROCEDURE(fd: LONGINT): LONGINT; Creat-: PROCEDURE(nameadr, mode: LONGINT): LONGINT; Link-: PROCEDURE(name1adr, name2adr: LONGINT): LONGINT; Unlink-: PROCEDURE(nameadr: LONGINT): LONGINT; Execv-: PROCEDURE(nameadr, argv: LONGINT): LONGINT; Chdir-: PROCEDURE(nameadr: LONGINT): LONGINT; Mknod-: PROCEDURE(nameadr, mode, dev: LONGINT); Chmod-: PROCEDURE(nameadr: LONGINT; mode: LONGINT); Chown-: PROCEDURE(nameadr, owner, group: LONGINT); Brk-: PROCEDURE(adr: LONGINT): LONGINT; Lseek-: PROCEDURE(fd, offset, origin: LONGINT) : LONGINT; Getpid-: PROCEDURE(): LONGINT; Mount-: PROCEDURE(specialadr, nameadr, rwflag, type, optionadr: LONGINT): LONGINT; Umount-: PROCEDURE(dev: INTEGER): LONGINT; Getuid-: PROCEDURE(): LONGINT; Ptrace-: PROCEDURE(cmd, pid, addr, data: LONGINT): LONGINT; Access-: PROCEDURE(nameadr: LONGINT; mode: LONGINT): LONGINT; Sync-: PROCEDURE(); Kill-: PROCEDURE(pid, sig: LONGINT): LONGINT; Stat-: PROCEDURE(nameadr: LONGINT; statbufAdr: LONGINT): LONGINT; Lstat-: PROCEDURE(nameadr: LONGINT; statbufAdr: LONGINT); Dup-: PROCEDURE(fd: LONGINT): LONGINT; Pipe-: PROCEDURE(fildesAdr: LONGINT): LONGINT; Profil-: PROCEDURE(buffadr, bufsiz, offset, scale: LONGINT); Getgid-: PROCEDURE(): LONGINT; Acct-: PROCEDURE(fileadr: LONGINT); Ioctl-: PROCEDURE(d, request, argpadr: LONGINT): LONGINT; Reboot-: PROCEDURE(howto: LONGINT); Symlink-: PROCEDURE(name1adr, name2adr: LONGINT); Readlink-: PROCEDURE(pathadr, bufadr, bufsize: LONGINT): LONGINT; Execve-: PROCEDURE(nameadr, argv, envp: LONGINT); Umask-: PROCEDURE(numask: LONGINT): LONGINT; Chroot-: PROCEDURE(dirnameadr: LONGINT); Fstat-: PROCEDURE(fd: LONGINT; statbufAdr: LONGINT): LONGINT; Vfork-: PROCEDURE(): LONGINT; Sbrk-: PROCEDURE(incr: LONGINT): LONGINT; Mprotect-: PROCEDURE(addr, len , prot: LONGINT): LONGINT; Vhangup-: PROCEDURE(); Getgroups-: PROCEDURE(gidsetsize, gidsetadr: LONGINT); Setgroups-: PROCEDURE(ngroups, gidsetadr: LONGINT); Getpgrp-: PROCEDURE(pid: LONGINT): LONGINT; Setpgrp-: PROCEDURE(pid, pgrp: LONGINT): LONGINT; Setitimer-: PROCEDURE(which, valueadr, ovalueadr: LONGINT); Wait-: PROCEDURE(statusadr: LONGINT): LONGINT; Wait3-: PROCEDURE(statusadr, options, rusageadr: LONGINT): LONGINT; Swapon-: PROCEDURE(special: LONGINT); Getitimer-: PROCEDURE(which, valueadr: LONGINT); Gethostname-: PROCEDURE(nameadr, namelen: LONGINT); Sethostname-: PROCEDURE(nameadr, namelen: LONGINT); Dup2-: PROCEDURE(newd, oldd: LONGINT): LONGINT; Fcntl-: PROCEDURE(fd, request, arg: LONGINT): LONGINT; Select-: PROCEDURE(nfds, readfdsadr, writefdsadr, execptfdsadr, timeoutadr: LONGINT): LONGINT; Fsync-: PROCEDURE(fd: LONGINT): LONGINT; Setpriority-: PROCEDURE(which, who, prio: LONGINT); Socket-: PROCEDURE(af, type, protocol: LONGINT): LONGINT; Connect-: PROCEDURE(s, nameadr, namelen: LONGINT); Accept-: PROCEDURE(s, addradr, addrlenadr: LONGINT): LONGINT; Getpriority-: PROCEDURE(which, who: LONGINT): LONGINT; Send-: PROCEDURE(s, msgadr, len, flags: LONGINT): LONGINT; Recv-: PROCEDURE(s, bufadr, len, flags: LONGINT): LONGINT; Bind-: PROCEDURE(s, nameadr, namelen: LONGINT); Setsockopt-: PROCEDURE(s, level, optname, optvaladr, optlen: LONGINT); Listen-: PROCEDURE(s, backlog: LONGINT); Sigblock-: PROCEDURE(mask: LONGINT); Sigvector-: PROCEDURE(sig, act, oldact: LONGINT); Sigaction-: PROCEDURE(sig, act, oldact: LONGINT); Sigsetmask-: PROCEDURE(mask: LONGINT): LONGINT; Sigpause-: PROCEDURE(sigmask: LONGINT); Sigstack-: PROCEDURE(ssadr, ossadr: LONGINT); Recvmsg-: PROCEDURE(s, msg, flags: LONGINT): LONGINT; Sendmsg-: PROCEDURE(s, msg, flags: LONGINT): LONGINT; Gettimeofday-: PROCEDURE(tpadr, tzpadr: LONGINT); Getsockopt-: PROCEDURE(s, level, optname, optvaladr, optlenadr: LONGINT); Readv-: PROCEDURE(d, iovadr, iovcnt: LONGINT): LONGINT; Writev-: PROCEDURE(d, bufadr, nbytes: LONGINT); Settimeofday-: PROCEDURE(tpadr, tzpadr: LONGINT); Fchown-: PROCEDURE(fd, owner, group: LONGINT); Fchmod-: PROCEDURE(fd, mode: LONGINT): LONGINT; Recvfrom-: PROCEDURE(s, bufadr, len, flags, fromadr, fromlenadr: LONGINT): LONGINT; Rename-: PROCEDURE(from, to: LONGINT): LONGINT; Truncate-: PROCEDURE(pathadr, length: LONGINT); Ftruncate-: PROCEDURE(fd, length: LONGINT): LONGINT; LockF-: PROCEDURE (fd, function, size: LONGINT); Sendto-: PROCEDURE(s, msgadr, len, flags, toadr, tolen: LONGINT): LONGINT; Shutdown-: PROCEDURE(s, how: LONGINT); Socketpair-: PROCEDURE(d, type, protocol, svadr: LONGINT); Mkdir-: PROCEDURE(pathadr, mode: LONGINT); Rmdir-: PROCEDURE(pathadr: LONGINT); Getpeername-: PROCEDURE(s, nameadr, namelenadr: LONGINT); Gethostid-: PROCEDURE(): LONGINT; Sethostid-: PROCEDURE(hostid: LONGINT); Getrlimit-: PROCEDURE(resource, rlpadr: LONGINT); Setrlimit-: PROCEDURE(resource, rlpadr: LONGINT); Getsockname-: PROCEDURE(s, nameadr, namelenadr: LONGINT); Cacheflush-: PROCEDURE(addradr, nbytes: LONGINT); Waitpid-: PROCEDURE(pid, status, options: LONGINT): LONGINT; OpenDir-: PROCEDURE(dirNameAdr: LONGINT): LONGINT; ReadDir-: PROCEDURE(dirp: LONGINT): LONGINT; CloseDir-: PROCEDURE(dirp: LONGINT): LONGINT; TmpNam-: PROCEDURE(s: LONGINT): LONGINT; errnoAdr : LONGINT; shlibPath : ARRAY 256 OF CHAR; PROCEDURE Errno* (): LONGINT; VAR value : LONGINT; BEGIN S.GET (errnoAdr, value); RETURN value; END Errno; PROCEDURE dlopen* (lib: ARRAY OF CHAR; mode: LONGINT): LONGINT; VAR i, j, k : LONGINT; path : ARRAY 256 OF CHAR; handle : LONGINT; BEGIN COPY (lib, path); handle := dlopenc(S.ADR(path), mode); IF (lib[0] # "/") & (handle = 0) THEN (* Search with path *) i := 0; WHILE shlibPath[i] = " " DO INC(i) END; LOOP j := 0; WHILE (shlibPath[i] > " ") DO path[j] := shlibPath[i]; INC(i); INC(j); END; IF path[j-1] # "/" THEN path[j] := "/"; INC(j); END; k := 0; WHILE lib[k] > " " DO path[j] := lib[k]; INC(j); INC(k); END; path[j] := 0X; handle := dlopenc(S.ADR(path), mode); WHILE shlibPath[i] = " " DO INC(i) END; IF (shlibPath[i] = 0X) OR (handle # 0) THEN EXIT END; END; END; RETURN handle; END dlopen; PROCEDURE dlsym* (handle: LONGINT; symbol: ARRAY OF CHAR; VAR adr: LONGINT); BEGIN dlsymc(handle, S.ADR(symbol), S.ADR(adr)); END dlsym; PROCEDURE dlclose*(handle: LONGINT); BEGIN dlclosec(handle) END dlclose; PROCEDURE Init*; VAR i, adr: LONGINT; ch : CHAR; libHandle : LONGINT; BEGIN dlsym(0, "SHLPATH", S.VAL(LONGINT, adr)); IF adr = 0 THEN shlibPath := "/lib /usr/lib /usr/lib/X11R5 /usr/lib/X11R4" ELSE i := 0; REPEAT S.GET(adr, ch); IF ch = ":" THEN ch := " " END; shlibPath[i] := ch; INC(i); INC(adr) UNTIL ch = 0X END; dlsym(0, "dlopen", S.VAL(LONGINT, dlopenc)); dlsym(0, "dlclose", S.VAL(LONGINT, dlclosec)); libHandle := dlopen ("libc.sl", 0); dlsym(libHandle, "malloc", S.VAL(LONGINT, Malloc)); dlsym(libHandle, "mallinfoC", S.VAL(LONGINT, MallInfoC)); dlsym(libHandle, "calloc", S.VAL(LONGINT, Calloc)); dlsym(libHandle, "free", S.VAL(LONGINT, Free)); dlsym(libHandle, "system", S.VAL(LONGINT, System)); dlsym(libHandle, "time", S.VAL(LONGINT, Time)); dlsym(libHandle, "times", S.VAL(LONGINT, Times)); dlsym(libHandle, "localtime", S.VAL(LONGINT, Localtime)); dlsym(libHandle, "getenv", S.VAL(LONGINT, Getenv)); dlsym(libHandle, "getcwd", S.VAL(LONGINT, Getcwd)); dlsym(libHandle, "exit", S.VAL(LONGINT, Exit)); dlsym(libHandle, "atexit", S.VAL(LONGINT, Atexit)); dlsym(libHandle, "sigsetjmp", S.VAL(LONGINT, Sigsetjmp)); dlsym(libHandle, "siglongjmp", S.VAL(LONGINT, Siglongjmp)); dlsym(libHandle, "sysconf", S.VAL(LONGINT, Sysconf)); dlsym(libHandle, "uname", S.VAL(LONGINT, Uname)); dlsym(libHandle, "fork", S.VAL(LONGINT, Fork)); dlsym(libHandle, "read", S.VAL(LONGINT, Read)); dlsym(libHandle, "write", S.VAL(LONGINT, Write)); dlsym(libHandle, "open", S.VAL(LONGINT, Open)); dlsym(libHandle, "close", S.VAL(LONGINT, Close)); dlsym(libHandle, "creat", S.VAL(LONGINT, Creat)); dlsym(libHandle, "link", S.VAL(LONGINT, Link)); dlsym(libHandle, "unlink", S.VAL(LONGINT, Unlink)); dlsym(libHandle, "execv", S.VAL(LONGINT, Execv)); dlsym(libHandle, "chdir", S.VAL(LONGINT, Chdir)); dlsym(libHandle, "mknod", S.VAL(LONGINT, Mknod)); dlsym(libHandle, "chmod", S.VAL(LONGINT, Chmod)); dlsym(libHandle, "chown", S.VAL(LONGINT, Chown)); dlsym(libHandle, "brk", S.VAL(LONGINT, Brk)); dlsym(libHandle, "lseek", S.VAL(LONGINT, Lseek)); dlsym(libHandle, "getpid", S.VAL(LONGINT, Getpid)); dlsym(libHandle, "mount", S.VAL(LONGINT, Mount)); dlsym(libHandle, "umount", S.VAL(LONGINT, Umount)); dlsym(libHandle, "getuid", S.VAL(LONGINT, Getuid)); dlsym(libHandle, "ptrace", S.VAL(LONGINT, Ptrace)); dlsym(libHandle, "access", S.VAL(LONGINT, Access)); dlsym(libHandle, "sync", S.VAL(LONGINT, Sync)); dlsym(libHandle, "kill", S.VAL(LONGINT, Kill)); dlsym(libHandle, "stat", S.VAL(LONGINT, Stat)); dlsym(libHandle, "lstat", S.VAL(LONGINT, Lstat)); dlsym(libHandle, "dup", S.VAL(LONGINT, Dup)); dlsym(libHandle, "pipe", S.VAL(LONGINT, Pipe)); dlsym(libHandle, "profil", S.VAL(LONGINT, Profil)); dlsym(libHandle, "getgid", S.VAL(LONGINT, Getgid)); dlsym(libHandle, "acct", S.VAL(LONGINT, Acct)); dlsym(libHandle, "ioctl", S.VAL(LONGINT, Ioctl)); dlsym(libHandle, "reboot", S.VAL(LONGINT, Reboot)); dlsym(libHandle, "symlink", S.VAL(LONGINT, Symlink)); dlsym(libHandle, "readlink", S.VAL(LONGINT, Readlink)); dlsym(libHandle, "execve", S.VAL(LONGINT, Execve)); dlsym(libHandle, "umask", S.VAL(LONGINT, Umask)); dlsym(libHandle, "chroot", S.VAL(LONGINT, Chroot)); dlsym(libHandle, "fstat", S.VAL(LONGINT, Fstat)); dlsym(libHandle, "vfork", S.VAL(LONGINT, Vfork)); dlsym(libHandle, "sbrk", S.VAL(LONGINT, Sbrk)); dlsym(libHandle, "mprotect", S.VAL(LONGINT, Mprotect)); dlsym(libHandle, "vhangup", S.VAL(LONGINT, Vhangup)); dlsym(libHandle, "getgroups", S.VAL(LONGINT, Getgroups)); dlsym(libHandle, "setgroups", S.VAL(LONGINT, Setgroups)); dlsym(libHandle, "getpgrp", S.VAL(LONGINT, Getpgrp)); dlsym(libHandle, "setpgrp", S.VAL(LONGINT, Setpgrp)); dlsym(libHandle, "setitimer", S.VAL(LONGINT, Setitimer)); dlsym(libHandle, "wait", S.VAL(LONGINT, Wait)); dlsym(libHandle, "wait3", S.VAL(LONGINT, Wait3)); dlsym(libHandle, "swapon", S.VAL(LONGINT, Swapon)); dlsym(libHandle, "getitimer", S.VAL(LONGINT, Getitimer)); dlsym(libHandle, "gethostname", S.VAL(LONGINT, Gethostname)); dlsym(libHandle, "sethostname", S.VAL(LONGINT, Sethostname)); dlsym(libHandle, "dup2", S.VAL(LONGINT, Dup2)); dlsym(libHandle, "fcntl", S.VAL(LONGINT, Fcntl)); dlsym(libHandle, "select", S.VAL(LONGINT, Select)); dlsym(libHandle, "fsync", S.VAL(LONGINT, Fsync)); dlsym(libHandle, "setpriority", S.VAL(LONGINT, Setpriority)); dlsym(libHandle, "socket", S.VAL(LONGINT, Socket)); dlsym(libHandle, "connect", S.VAL(LONGINT, Connect)); dlsym(libHandle, "accept", S.VAL(LONGINT, Accept)); dlsym(libHandle, "getpriority", S.VAL(LONGINT, Getpriority)); dlsym(libHandle, "send", S.VAL(LONGINT, Send)); dlsym(libHandle, "recv", S.VAL(LONGINT, Recv)); dlsym(libHandle, "bind", S.VAL(LONGINT, Bind)); dlsym(libHandle, "setsockopt", S.VAL(LONGINT, Setsockopt)); dlsym(libHandle, "listen", S.VAL(LONGINT, Listen)); dlsym(libHandle, "sigblock", S.VAL(LONGINT, Sigblock)); dlsym(libHandle, "sigaction", S.VAL(LONGINT, Sigaction)); dlsym(libHandle, "sigvector", S.VAL(LONGINT, Sigvector)); dlsym(libHandle, "sigsetmask", S.VAL(LONGINT, Sigsetmask)); dlsym(libHandle, "sigpause", S.VAL(LONGINT, Sigpause)); dlsym(libHandle, "sigstack", S.VAL(LONGINT, Sigstack)); dlsym(libHandle, "recvmsg", S.VAL(LONGINT, Recvmsg)); dlsym(libHandle, "sendmsg", S.VAL(LONGINT, Sendmsg)); dlsym(libHandle, "gettimeofday", S.VAL(LONGINT, Gettimeofday)); dlsym(libHandle, "getsockopt", S.VAL(LONGINT, Getsockopt)); dlsym(libHandle, "readv", S.VAL(LONGINT, Readv)); dlsym(libHandle, "writev", S.VAL(LONGINT, Writev)); dlsym(libHandle, "settimeofday", S.VAL(LONGINT, Settimeofday)); dlsym(libHandle, "fchown", S.VAL(LONGINT, Fchown)); dlsym(libHandle, "fchmod", S.VAL(LONGINT, Fchmod)); dlsym(libHandle, "recvfrom", S.VAL(LONGINT, Recvfrom)); dlsym(libHandle, "rename", S.VAL(LONGINT, Rename)); dlsym(libHandle, "truncate", S.VAL(LONGINT, Truncate)); dlsym(libHandle, "ftruncate", S.VAL(LONGINT, Ftruncate)); dlsym(libHandle, "lockf", S.VAL(LONGINT, LockF)); dlsym(libHandle, "sendto", S.VAL(LONGINT, Sendto)); dlsym(libHandle, "shutdown", S.VAL(LONGINT, Shutdown)); dlsym(libHandle, "socketpair", S.VAL(LONGINT, Socketpair)); dlsym(libHandle, "mkdir", S.VAL(LONGINT, Mkdir)); dlsym(libHandle, "rmdir", S.VAL(LONGINT, Rmdir)); dlsym(libHandle, "opendir", S.VAL(LONGINT, OpenDir)); dlsym(libHandle, "readdir", S.VAL(LONGINT, ReadDir)); dlsym(libHandle, "closedir", S.VAL(LONGINT, CloseDir)); dlsym(libHandle, "getpeername", S.VAL(LONGINT, Getpeername)); dlsym(libHandle, "gethostid", S.VAL(LONGINT, Gethostid)); dlsym(libHandle, "sethostid", S.VAL(LONGINT, Sethostid)); dlsym(libHandle, "getrlimit", S.VAL(LONGINT, Getrlimit)); dlsym(libHandle, "setrlimit", S.VAL(LONGINT, Setrlimit)); dlsym(libHandle, "getsockname", S.VAL(LONGINT, Getsockname)); dlsym(libHandle, "waitpid", S.VAL(LONGINT, Waitpid)); dlsym(libHandle, "tmpnam", S.VAL(LONGINT, TmpNam)); dlsym(libHandle, "errno", S.VAL(LONGINT, errnoAdr)); dlsym(0, "flush_cache", S.VAL(LONGINT, Cacheflush)); dlclose (libHandle); END Init; END Unix.