vbtkitutils/src/UnixUtils.i3


Copyright (C) 1994, Digital Equipment Corp.
 The UnixUtils interface contain assorted procedures that
   access the Unix file system.  These calls should eventually
   be subsumed by the Modula-3 core libraries. 

INTERFACE UnixUtils;

IMPORT TextList, Ctypes, Utypes;

PROCEDURE Directory (dirname: TEXT): TextList.T RAISES {Error};
Return a list of all the files in the named directory. Raise an exception if opendir(3) returns NULL, which happens ``if the specified filename can not be accessed, or if insufficient memory is available to open the directory file.''

EXCEPTION Error(TEXT);
The argument to the Error exception is strerror(errno) converted to TEXT.

PROCEDURE IsDirectory (pathname: TEXT): BOOLEAN;
Does pathname specify a directory?

PROCEDURE ProbeFile (file: TEXT; error: BOOLEAN): BOOLEAN
  RAISES {Error};
If file exists, return TRUE. Otherwise, if error is TRUE, raise an exception. Otherwise return FALSE.

TYPE Seconds = Utypes.time_t;
This is an INTEGER representing the number of seconds since January 1, 1970 GMT.

PROCEDURE FileModifyTime (file: TEXT): Seconds;
When was file last modified? Return the st_mtime from the call to stat(2).

PROCEDURE GetWD (): TEXT RAISES {Error};
Return the value of calling getwd(3), raising the exception if getwd reports any problems.

TYPE AccessMode = {Execute, Write, Read};

PROCEDURE Accessible (file: TEXT; modes := SET OF AccessMode {}): BOOLEAN;
Test whether file can be accessed according to modes. For details, see the manpage for access(2). The default value of modes will test whether the directories leading to the file can be searched and whether the file exists.

<* EXTERNAL *> PROCEDURE access (path: Ctypes.char_star; mode: Ctypes.int):
  Ctypes.int;

END UnixUtils.

interface Utypes is in: