The UnixMisc interface provides miscellaneous Unix-related services. 
INTERFACEUnixMisc ; IMPORT Ctypes, File, IP, OSError, Pathname, Ustat, Utypes, Word; TYPE SignalHandler = PROCEDURE (sig: Ctypes.int); PROCEDURE AppendAlways(file: File.T) RAISES {OSError.E};
Mark the underlying file descriptor so that writes always append to the end of the file.
PROCEDURE FStat(file: File.T;
                VAR statbuf: Ustat.struct_stat)
  RAISES {OSError.E};
Gets the status of the given file.
PROCEDURE GetHostAddrs(host: TEXT): REF ARRAY OF IP.Address;
Returns an array containing all of a host's IP addresses. Returns NIL if the name lookup fails. Not re-entrant.
PROCEDURE GetHostName(): TEXT
  RAISES {OSError.E};
 Returns the host name as obtained from Unix.gethostname(). PROCEDURE GetLogin(): TEXT;
 Returns the user's login name, or NIL if it is not known. 
PROCEDURE GetMode(path: Pathname.T): Utypes.mode_t
  RAISES {OSError.E};
Returns the file mode for the given file.
PROCEDURE GetUmask(): Utypes.mode_t;
Returns the umask setting.
PROCEDURE MapFile(p: Pathname.T;
                  VAR statbuf: Ustat.struct_stat): ADDRESS
  RAISES {OSError.E};
 Maps the given file into memory with a read-only shared mapping.
   Fills in statbuf with the status information of the file.
   Returns the address of the mapped region.  It is a checked runtime
   error to attempt to map anything but a regular file. PROCEDURE MaskMode(mode: Utypes.mode_t; umask := -1): Utypes.mode_t;
 Returns the given mode, as modified by the umask value.  If it
   is defaulted, then the program's umask setting is used. 
PROCEDURE ReadLink(path: Pathname.T): TEXT
  RAISES {OSError.E};
Reads the given symbolic link and returns it as text.
<* EXTERNAL "setsid" *> PROCEDURE SetSID(): Utypes.pid_t;
Set session-ID.
<* EXTERNAL "UnixMiscSigIsIgnored" *> PROCEDURE SigIsIgnored(sig: Ctypes.int): BOOLEAN;
Reports whether a given signal is currently set up to be ignored.
<* EXTERNAL "UnixMiscSignal" *>
PROCEDURE Signal(sig: Ctypes.int;
                 func: SignalHandler): SignalHandler;
Like the standard C signal() function, except it disables thread scheduling when the handler is executing.
PROCEDURE Stat(path: Pathname.T;
               VAR statbuf: Ustat.struct_stat)
  RAISES {OSError.E};
Gets the status of the given file.
PROCEDURE Unmap(adr: ADDRESS; size: Word.T) RAISES {OSError.E};
Unmaps the given address range.
END UnixMisc.