home *** CD-ROM | disk | FTP | other *** search
Modula Definition | 1994-05-14 | 18.0 KB | 632 lines |
- DEFINITION MODULE POSIX1;
- __DEF_SWITCHES__
- #ifdef HM2
- #ifdef __LONG_WHOLE__
- (*$!i+: Modul muss mit $i- uebersetzt werden! *)
- (*$!w+: Modul muss mit $w- uebersetzt werden! *)
- #else
- (*$!i-: Modul muss mit $i+ uebersetzt werden! *)
- (*$!w-: Modul muss mit $w+ uebersetzt werden! *)
- #endif
- #endif
- #if no_reexport
- # error *** compiler does not allow reexporting!
- #endif
- (****************************************************************************)
- (* Das Modul fasst alle POSIX.1-Aufrufe, -Typen und -Konstanten und ein paar*)
- (* weitere Definitionen, die zwar nicht POSIX sind, aber fuer die Ausfueh- *)
- (* rung der Prozeduren benoetigt werden, aus den unterliegenden Modulen zu- *)
- (* sammen. Fuer Leute, die lieber aus einem einzigen Modul importieren wol- *)
- (* len, und deren Compiler den Reexport erlaubt. *)
- (* Fuer die Beschreibung der Funktionen sollten die entsprechenden Defini- *)
- (* tionsmodule konsultiert werden. *)
- (* -------------------------------------------------------------------------*)
- (* 14-Mai-94, Holger Kleinschmidt & Ulrich Kaiser *)
- (****************************************************************************)
- #if !ISO_proc_const
- FROM SYSTEM IMPORT ADDRESS;
- FROM PORTAB IMPORT SIGNEDLONG,UNSIGNEDWORD;
- FROM types IMPORT int,StrPtr,StrArray;
- #endif
- IMPORT types,e,loc,tim,file,dir,proc,sys,term,sig,jump;
-
- (*===========================================================================*)
- (* Modul: 'e' *)
- (*===========================================================================*)
- (*
- VAR
- errno : int; -- kann als Variable nicht reexportiert werden.
- *)
-
- CONST
- E2BIG = e.E2BIG;
- EACCES = e.EACCES;
- EAGAIN = e.EAGAIN;
- EBADF = e.EBADF;
- EBUSY = e.EBUSY;
- ECHILD = e.ECHILD;
- EDEADLK = e.EDEADLK;
- EDOM = e.EDOM;
- EEXIST = e.EEXIST;
- EFAULT = e.EFAULT;
- EFBIG = e.EFBIG;
- EINTR = e.EINTR;
- EINVAL = e.EINVAL;
- EIO = e.EIO;
- EISDIR = e.EISDIR;
- EMFILE = e.EMFILE;
- EMLINK = e.EMLINK;
- ENAMETOOLONG = e.ENAMETOOLONG;
- ENFILE = e.ENFILE;
- ENODEV = e.ENODEV;
- ENOENT = e.ENOENT;
- ENOEXEC = e.ENOEXEC;
- ENOLCK = e.ENOLCK;
- ENOMEM = e.ENOMEM;
- ENOSPC = e.ENOSPC;
- ENOSYS = e.ENOSYS;
- ENOTDIR = e.ENOTDIR;
- ENOTEMPTY = e.ENOTEMPTY;
- ENOTTY = e.ENOTTY;
- ENXIO = e.ENXIO;
- EPERM = e.EPERM;
- EPIPE = e.EPIPE;
- ERANGE = e.ERANGE;
- EROFS = e.EROFS;
- ESPIPE = e.ESPIPE;
- ESRCH = e.ESRCH;
- EXDEV = e.EXDEV;
- ELOOP = e.ELOOP;
-
- (*===========================================================================*)
- (* Modul: 'types' *)
- (*===========================================================================*)
-
- CONST
- NULL = types.NULL;
-
- CONST
- PosixArgMax = types.PosixArgMax;
- PosixChildMax = types.PosixChildMax;
- PosixLinkMax = types.PosixLinkMax;
- PosixMaxCanon = types.PosixMaxCanon;
- PosixMaxInput = types.PosixMaxInput;
- PosixNameMax = types.PosixNameMax;
- PosixNGroupsMax = types.PosixNGroupsMax;
- PosixOpenMax = types.PosixOpenMax;
- PosixPathMax = types.PosixPathMax;
- PosixPipeBuf = types.PosixPipeBuf;
- PosixStreamMax = types.PosixStreamMax;
- PosixSsizeMax = types.PosixSsizeMax;
-
- CONST
- ClkTck = types.ClkTck;
- NGroupsMax = types.NGroupsMax;
- SsizeMax = types.SsizeMax;
-
- TYPE
- uidT = types.uidT;
- gidT = types.gidT;
- inoT = types.inoT;
- timeT = types.timeT;
- offT = types.offT;
- sizeT = types.sizeT;
- ssizeT = types.ssizeT;
- devT = types.devT;
- nlinkT = types.nlinkT;
- pidT = types.pidT;
- clockT = types.clockT;
-
- (*===========================================================================*)
- (* Modul: 'tim' *)
- (*===========================================================================*)
- (*
- VAR
- tzname : TZstr; -- kann als Variable nicht reexportiert werden.
- *)
-
- TYPE
- TmRec = tim.TmRec;
- TmPtr = tim.TmPtr;
-
- #if ISO_proc_const
- CONST
- tzset = tim.tzset;
- localtime = tim.localtime;
- gmtime = tim.gmtime;
- asctime = tim.asctime;
- ctime = tim.ctime;
- mktime = tim.mktime;
- strftime = tim.strftime;
- #else
- VAR (* READ ONLY! *)
- tzset : PROCEDURE;
- localtime : PROCEDURE(timeT):TmPtr;
- gmtime : PROCEDURE(timeT):TmPtr;
- asctime : PROCEDURE(TmPtr):StrPtr;
- ctime : PROCEDURE(timeT):StrPtr;
- mktime : PROCEDURE(TmPtr):timeT;
- strftime : PROCEDURE(StrPtr,sizeT,StrPtr,TmPtr):sizeT;
- #endif
-
- (*===========================================================================*)
- (* Modul: 'file' *)
- (*===========================================================================*)
-
- TYPE
- FileModes = file.FileModes;
- modeT = file.modeT;
-
- CONST
- sIRWXU = file.sIRWXU;
- sIRWXG = file.sIRWXG;
- sIRWXO = file.sIRWXO;
-
- CONST
- sIFMT = file.sIFMT;
- sIFCHR = file.sIFCHR;
- sIFDIR = file.sIFDIR;
- sIFBLK = file.sIFBLK;
- sIFREG = file.sIFREG;
- sIFIFO = file.sIFIFO;
- sIFLNK = file.sIFLNK;
-
- TYPE
- StatRec = file.StatRec;
-
- TYPE
- AccessModes = file.AccessModes;
- AccessMode = file.AccessMode;
-
- CONST
- fOK = file.fOK;
-
- TYPE
- UTimBuf = file.UTimBuf;
- UTimPtr = file.UTimPtr;
-
- TYPE
- OpenModes = file.OpenModes;
- OpenMode = file.OpenMode;
-
- CONST
- oACCMODE = file.oACCMODE;
-
- oRDONLY = file.oRDONLY;
- oWRONLY = file.oWRONLY;
- oRDWR = file.oRDWR;
-
- TYPE
- SeekMode = file.SeekMode;
-
- TYPE
- FDFlags = file.FDFlags;
- FDFlag = file.FDFlag;
-
- TYPE
- FcntlCmd = file.FcntlCmd;
-
- TYPE
- LockType = file.LockType;
-
- TYPE
- FlockRec = file.FlockRec;
-
- TYPE
- FcntlArg = file.FcntlArg;
-
-
- TYPE
- PipeBuf = file.PipeBuf;
-
- CONST
- StdinFileNo = file.StdinFileNo;
- StdoutFileNo = file.StdoutFileNo;
- StderrFileNo = file.StderrFileNo;
-
-
- #if ISO_proc_const
- CONST
- creat = file.creat;
- open = file.open;
- fcntl = file.fcntl;
- close = file.close;
- read = file.read;
- write = file.write;
- lseek = file.lseek;
- ftruncate = file.ftruncate;
- dup = file.dup;
- dup2 = file.dup2;
- umask = file.umask;
- chmod = file.chmod;
- chown = file.chown;
- utime = file.utime;
- stat = file.stat;
- fstat = file.fstat;
- lstat = file.lstat;
- sISCHR = file.sISCHR;
- sISDIR = file.sISDIR;
- sISBLK = file.sISBLK;
- sISREG = file.sISREG;
- sISFIFO = file.sISFIFO;
- sISLNK = file.sISLNK;
- access = file.access;
- pipe = file.pipe;
- #else
- VAR (* READ ONLY! *)
- creat : PROCEDURE(REF ARRAY OF CHAR,modeT):int;
- open : PROCEDURE(REF ARRAY OF CHAR,OpenMode,modeT):int;
- fcntl : PROCEDURE(int,FcntlCmd,VAR FcntlArg):int;
- close : PROCEDURE(int):types.int;
- read : PROCEDURE(int,ADDRESS,sizeT):ssizeT;
- write : PROCEDURE(int,ADDRESS,sizeT):ssizeT;
- lseek : PROCEDURE(int,offT,SeekMode):offT;
- ftruncate : PROCEDURE(int,offT):int;
- dup : PROCEDURE(int):int;
- dup2 : PROCEDURE(int,int):int;
- umask : PROCEDURE(modeT):modeT;
- chmod : PROCEDURE(REF ARRAY OF CHAR,modeT):int;
- chown : PROCEDURE(REF ARRAY OF CHAR,uidT,gidT):int;
- utime : PROCEDURE(REF ARRAY OF CHAR,UTimPtr):int;
- stat : PROCEDURE(REF ARRAY OF CHAR,VAR StatRec):int;
- fstat : PROCEDURE(int,VAR StatRec):int;
- lstat : PROCEDURE(REF ARRAY OF CHAR,VAR StatRec):int;
- sISCHR : PROCEDURE(modeT):BOOLEAN;
- sISDIR : PROCEDURE(modeT):BOOLEAN;
- sISBLK : PROCEDURE(modeT):BOOLEAN;
- sISREG : PROCEDURE(modeT):BOOLEAN;
- sISFIFO : PROCEDURE(modeT):BOOLEAN;
- sISLNK : PROCEDURE(modeT):BOOLEAN;
- access : PROCEDURE(REF ARRAY OF CHAR,AccessMode):int;
- pipe : PROCEDURE(VAR PipeBuf):int;
- #endif
-
- (*===========================================================================*)
- (* Modul: 'dir' *)
- (*===========================================================================*)
-
- TYPE
- DIR = dir.DIR;
- DirentPtr = dir.DirentPtr;
- DirentRec = dir.DirentRec;
-
- #if ISO_proc_const
- CONST
- mkdir = dir.mkdir;
- rmdir = dir.rmdir;
- link = dir.link;
- unlink = dir.unlink;
- rename = dir.rename;
- opendir = dir.opendir;
- readdir = dir.readdir;
- rewinddir = dir.rewinddir;
- closedir = dir.closedir;
- symlink = dir.symlink;
- readlink = dir.readlink;
- #else
- VAR (* READ ONLY! *)
- mkdir : PROCEDURE(REF ARRAY OF CHAR,modeT):int;
- rmdir : PROCEDURE(REF ARRAY OF CHAR):int;
- link : PROCEDURE(REF ARRAY OF CHAR,REF ARRAY OF CHAR):int;
- unlink : PROCEDURE(REF ARRAY OF CHAR):int;
- rename : PROCEDURE(REF ARRAY OF CHAR,REF ARRAY OF CHAR):int;
- opendir : PROCEDURE(REF ARRAY OF CHAR):DIR;
- readdir : PROCEDURE(DIR):DirentPtr;
- rewinddir : PROCEDURE(DIR);
- closedir : PROCEDURE(VAR DIR):int;
- symlink : PROCEDURE(REF ARRAY OF CHAR,REF ARRAY OF CHAR):int;
- readlink : PROCEDURE(REF ARRAY OF CHAR,StrPtr,sizeT):int;
- #endif
-
- (*===========================================================================*)
- (* Modul: 'proc' *)
- (*===========================================================================*)
-
- TYPE
- WaitVal = proc.WaitVal;
- WaitOptions = proc.WaitOptions;
- WaitOption = proc.WaitOption;
-
- TYPE
- TmsRec = proc.TmsRec;
-
- #if ISO_proc_const
- CONST
- chdir = proc.chdir;
- getcwd = proc.getcwd;
- getlogin = proc.getlogin;
- getpid = proc.getpid;
- getppid = proc.getppid;
- getuid = proc.getuid;
- getgid = proc.getgid;
- geteuid = proc.geteuid;
- getegid = proc.getegid;
- setuid = proc.setuid;
- setgid = proc.setgid;
- seteuid = proc.seteuid;
- setegid = proc.setegid;
- getpgrp = proc.getpgrp;
- setpgid = proc.setpgid;
- setsid = proc.setsid;
- fork = proc.fork;
- execve = proc.execve;
- execv = proc.execv;
- execvp = proc.execvp;
- waitpid = proc.waitpid;
- wait = proc.wait;
- WIFEXITED = proc.WIFEXITED;
- WEXITSTATUS = proc.WEXITSTATUS;
- WIFSIGNALED = proc.WIFSIGNALED;
- WTERMSIG = proc.WTERMSIG;
- WIFSTOPPED = proc.WIFSTOPPED;
- WSTOPSIG = proc.WSTOPSIG;
- times = proc.times;
- Exit = proc.Exit;
- #else
- VAR (* READ ONLY! *)
- chdir : PROCEDURE(REF ARRAY OF CHAR):int;
- getcwd : PROCEDURE(StrPtr,sizeT):StrPtr;
- getlogin : PROCEDURE():StrPtr;
- getpid : PROCEDURE():pidT;
- getppid : PROCEDURE():pidT;
- getuid : PROCEDURE():uidT;
- getgid : PROCEDURE():gidT;
- geteuid : PROCEDURE():uidT;
- getegid : PROCEDURE():gidT;
- setuid : PROCEDURE(uidT):int;
- setgid : PROCEDURE(gidT):int;
- seteuid : PROCEDURE(uidT):int;
- setegid : PROCEDURE(gidT):int;
- getpgrp : PROCEDURE():pidT;
- setpgid : PROCEDURE(pidT,pidT):int;
- setsid : PROCEDURE():pidT;
- fork : PROCEDURE():pidT;
- execve : PROCEDURE(REF ARRAY OF CHAR,StrArray,StrArray):int;
- execv : PROCEDURE(REF ARRAY OF CHAR,StrArray):int;
- execvp : PROCEDURE(REF ARRAY OF CHAR,StrArray):int;
- waitpid : PROCEDURE(pidT,VAR WaitVal,WaitOption):pidT;
- wait : PROCEDURE(VAR WaitVal):pidT;
- WIFEXITED : PROCEDURE(WaitVal):BOOLEAN;
- WEXITSTATUS : PROCEDURE(WaitVal):int;
- WIFSIGNALED : PROCEDURE(WaitVal):BOOLEAN;
- WTERMSIG : PROCEDURE(WaitVal):int;
- WIFSTOPPED : PROCEDURE(WaitVal):BOOLEAN;
- WSTOPSIG : PROCEDURE(WaitVal):int;
- times : PROCEDURE(VAR TmsRec):clockT;
- Exit : PROCEDURE(int);
- #endif
-
- (*===========================================================================*)
- (* Modul: 'term' *)
- (*===========================================================================*)
-
- CONST
- LCtermid = term.LCtermid;
-
- TYPE
- tciflags = term.tciflags;
- tciflagT = term.tciflagT;
-
- TYPE
- tcoflags = term.tcoflags;
- tcoflagT = term.tcoflagT;
-
- TYPE
- tccflags = term.tccflags;
- tccflagT = term.tccflagT;
-
- TYPE
- tclflags = term.tclflags;
- tclflagT = term.tclflagT;
-
- TYPE
- speedT = term.speedT;
-
- TYPE
- ccT = term.ccT;
- ccIdx = term.ccIdx;
-
- CONST
- NCCS = term.NCCS;
-
- CONST
- CR = term.CR;
- NL = term.NL;
-
- TYPE
- TermiosRec = term.TermiosRec;
-
- TYPE
- AttrActions = term.AttrActions;
-
- TYPE
- FlowActions = term.FlowActions;
-
- TYPE
- QueueTypes = term.QueueTypes;
-
-
- #if ISO_proc_const
- CONST
- isatty = term.isatty;
- ttyname = term.ttyname;
- ctermid = term.ctermid;
- cfgetispeed = term.cfgetispeed;
- cfgetospeed = term.cfgetospeed;
- cfsetispeed = term.cfsetispeed;
- cfsetospeed = term.cfsetospeed;
- tcgetattr = term.tcgetattr;
- tcsetattr = term.tcsetattr;
- tcsendbreak = term.tcsendbreak;
- tcdrain = term.tcdrain;
- tcflow = term.tcflow;
- tcflush = term.tcflush;
- tcgetpgrp = term.tcgetpgrp;
- tcsetpgrp = term.tcsetpgrp;
- #else
- VAR (* READ ONLY! *)
- isatty : PROCEDURE(int):int;
- ttyname : PROCEDURE(int):StrPtr;
- ctermid : PROCEDURE(StrPtr):StrPtr;
- cfgetispeed : PROCEDURE(TermiosRec):speedT;
- cfsetispeed : PROCEDURE(TermiosRec,speedT):int;
- cfgetospeed : PROCEDURE(TermiosRec):speedT;
- cfsetospeed : PROCEDURE(TermiosRec,speedT):int;
- tcgetattr : PROCEDURE(int,VAR TermiosRec):int;
- tcsetattr : PROCEDURE(int,AttrActions,TermiosRec):int;
- tcsendbreak : PROCEDURE(int,int):int;
- tcdrain : PROCEDURE(int):int;
- tcflow : PROCEDURE(int,FlowActions):int;
- tcflush : PROCEDURE(int,QueueTypes):int;
- tcgetpgrp : PROCEDURE(int):pidT;
- tcsetpgrp : PROCEDURE(int,pidT):int;
- #endif
-
- (*===========================================================================*)
- (* Modul: 'sig' *)
- (*===========================================================================*)
-
- CONST
- SigDfl = sig.SigDfl;
- SigIgn = sig.SigIgn;
-
- CONST
- SIGHUP = sig.SIGHUP;
- SIGINT = sig.SIGINT;
- SIGQUIT = sig.SIGQUIT;
- SIGILL = sig.SIGILL;
- SIGABRT = sig.SIGABRT;
- SIGFPE = sig.SIGFPE;
- SIGKILL = sig.SIGKILL;
- SIGSEGV = sig.SIGSEGV;
- SIGPIPE = sig.SIGPIPE;
- SIGALRM = sig.SIGALRM;
- SIGTERM = sig.SIGTERM;
- SIGSTOP = sig.SIGSTOP;
- SIGTSTP = sig.SIGTSTP;
- SIGCONT = sig.SIGCONT;
- SIGCHLD = sig.SIGCHLD;
- SIGTTIN = sig.SIGTTIN;
- SIGTTOU = sig.SIGTTOU;
- SIGUSR1 = sig.SIGUSR1;
- SIGUSR2 = sig.SIGUSR2;
-
- TYPE
- SigsetPtr = sig.SigsetPtr;
-
- TYPE
- sigsetT = sig.sigsetT;
-
- TYPE
- SigHandler = sig.SigHandler;
-
- TYPE
- SignalHandler = sig.SignalHandler;
-
- TYPE
- SaFlag = sig.SaFlag;
- SaFlags = sig.SaFlags;
-
- TYPE
- SigactionPtr = sig.SigactionPtr;
- SigactionRec = sig.SigactionRec;
-
- TYPE
- SigBlockType = sig.SigBlockType;
-
- #if ISO_proc_const
- CONST
- sigemptyset = sig.sigemptyset;
- sigfillset = sig.sigfillset;
- sigaddset = sig.sigaddset;
- sigdelset = sig.sigdelset;
- sigismember = sig.sigismember;
- sigaction = sig.sigaction;
- sigprocmask = sig.sigprocmask;
- sigpending = sig.sigpending;
- kill = sig.kill;
- pause = sig.pause;
- sigsuspend = sig.sigsuspend;
- sleep = sig.sleep;
- alarm = sig.alarm;
- #else
- VAR (* READ ONLY! *)
- sigemptyset : PROCEDURE(VAR sigsetT);
- sigfillset : PROCEDURE(VAR sigsetT);
- sigaddset : PROCEDURE(VAR sigsetT,int):int;
- sigdelset : PROCEDURE(VAR sigsetT,int):int;
- sigismember : PROCEDURE(sigsetT,int):int;
- sigaction : PROCEDURE(int,SigactionPtr,SigactionPtr):int;
- sigprocmask : PROCEDURE(SigBlockType,SigsetPtr,SigsetPtr):int;
- sigpending : PROCEDURE(VAR sigsetT):int;
- kill : PROCEDURE(pidT,int):int;
- pause : PROCEDURE;
- sigsuspend : PROCEDURE(sigsetT);
- sleep : PROCEDURE(CARDINAL):CARDINAL;
- alarm : PROCEDURE(CARDINAL):CARDINAL;
- #endif
-
- (*===========================================================================*)
- (* Modul: 'sys' *)
- (*===========================================================================*)
-
- TYPE
- PConfVal = sys.PConfVal;
- SConfVal = sys.SConfVal;
-
- TYPE
- UtsnameRec = sys.UtsnameRec;
-
- #if ISO_proc_const
- CONST
- uname = sys.uname;
- pathconf = sys.pathconf;
- sysconf = sys.sysconf;
- time = sys.time;
- #else
- VAR (* READ ONLY! *)
- uname : PROCEDURE(VAR UtsnameRec):int;
- pathconf : PROCEDURE(REF ARRAY OF CHAR,PConfVal):SIGNEDLONG;
- sysconf : PROCEDURE(SConfVal):SIGNEDLONG;
- time : PROCEDURE(ADDRESS):timeT;
- #endif
-
- (*===========================================================================*)
- (* Modul: 'jump' *)
- (*===========================================================================*)
-
- TYPE
- JmpBuf = jump.JmpBuf;
- SigJmpBuf = jump.SigJmpBuf;
-
- #if ISO_proc_const
- CONST
- setjmp = jump.setjmp;
- longjmp = jump.longjmp;
- sigsetjmp = jump.sigsetjmp;
- siglongjmp = jump.siglongjmp;
- #else
- VAR (* READ ONLY! *)
- setjmp : PROCEDURE(VAR JmpBuf):int;
- longjmp : PROCEDURE(VAR JmpBuf,int);
- sigsetjmp : PROCEDURE(VAR SigJmpBuf,UNSIGNEDWORD):int;
- siglongjmp : PROCEDURE(VAR SigJmpBuf,int);
- #endif
-
- (*===========================================================================*)
- (* Modul: 'loc' *)
- (*===========================================================================*)
-
- TYPE
- LcType = loc.LcType;
-
- #if ISO_proc_const
- CONST
- setlocale = loc.setlocale;
- #else
- VAR (* READ ONLY! *)
- setlocale : PROCEDURE(LcType,StrPtr):StrPtr;
- #endif
-
- END POSIX1.
-