Directory handling is very similar to file handling in the Mjølner System. Files and directories have similar properties like name, path, etc. Files are special since the contents typically are characters that can be read and written, directories are special since the contents are files and directories. These similar and special properties are both modeled in the file and directory libraries.
When using the directory library, a directory is simply declared as
A directory can be given a name:
And it can be tested for existence, content, entries, and be scanned:
The following program shows a simple use of directory: The directory with the path given as argument is scanned, and the names of all the entries are printed.
ORIGIN '~beta/basiclib/directory'; ---program: descriptor--- (# d: @directory; do (if noOfArguments <> 2//true then 'Usage: '->puttext; 1->arguments->puttext; ' path'->putline; stop; if); (* set name of directory *) 2->arguments->d.name; (* print name of directory *) newline; d.name->puttext; (* test for content *) (if d.empty//true then ' is empty.'->putline; else ' is not empty.'->putline; if); 'It contains the following '->puttext; d.noOfEntries->putint; ' entries: '->putline; (* scan the entries *) d.scanEntries (# (* found refers to the current entry *) do found.path->putline; #); newline; #)
This program also checks for the number of arguments. If the number of arguments is not 2, then an error message is printed, and stop is called. stop is defined in the basic environment betaenv, and when called, terminates the execution.
Below we show the output of ListDir on the current working directory:
| Libraries Tutorial | © 1994-2002 Mjølner Informatics | [Modified: Thursday October 19th 2000 at 14:10]
 |