Library: File system utilities (OMVFS)
Import : omvfs.xmd

export external function describe
                value string path
        on      value directory on-dir optional
        into    write-only string attributes

Argument definitions

The path of the file or directory to be described.
A vfs.directory object. If this parameter is specified, the path parameter is interpreted relative to the vfs.directory and must be expressed as a relative URL.
A string or stream shelf of variable size into which the attributes of the file or directory will be placed.


You can use vfs.describe to obtain a description of a file or a directory.

The attributes shelf returned by this function contains the following keyed items.

  1. "name" (fully qualified file or directory name)
  2. "size" (file size in bytes)
  3. "atime"" (last accessed time in OmniMark date format)
  4. "mtime" (last modified time in OmniMark date format)
  5. "ctime" (last status change time in OmniMark date format)
  6. "isdir" (1 if this is a directory, 0 if it is a file)
  7. "permissions" (integer representation of file/dir permissions)
  8. "owner" (username of owner)
  9. "group" (group of file/dir)

The following program prints out the attributes of the specified directory and interprets the "permissions" attribute to determine if user writing is permitted:

  import "omvfs.xmd" prefixed by vfs.
     local string attr variable
     vfs.describe "c:\foo\bar\" into attr
     repeat over attr
        output key of attr || ": " || attr || "%n"
     do when attr{"isdir"} = 1
        output "This is a directory%n"
        output "This is a file%n"
     output "User write permission: "
     do when attr{"permissions"} mask vfs.permit-user-write > 0
        output "YES%n"
        output "NO%n"

You can determine the value of any one permission by masking the value of the "permissions" attribute with the appropriate vfs permission constant. These constants are described in vfs.change-permissions. If the value returned is 0 then the permission is not set. If a non-zero value is returned, the permission is set.


The following exceptions may occur:


If the drive containing the file or directory being described is a read-only drive (for example, a CD-ROM), the atime may be zero.

If a particular attribute item is not supported by a the file system protocol you are using, it is returned as an empty string.