File and Time Extensions for TinyScheme (FTX) 1.0  [August, 2004]

Based on the TinyScheme Extensions (TSX) 1.1  [September, 2002]
(c) 2002 Manuel Heras-Gilsanz (manuel@heras-gilsanz.com)

This software is subject to the license terms contained in the
LICENSE file.


TSX FUNCTIONS

TSX incorporates the following functions:

*File system (included if HAVE_FILESYSTEM is defined in tsx.h)

Scheme already defines functions to read and write files. These
functions allow access to the filesystem to check if a certain
file exists, to get its size, etc.

In addition to these functions, a string constant DIR-SEPARATOR
has been defined. It should be used in scripts which build file
names that include one or more directories to keep the scripts
portable to different operating systems.

(file-exists? filename)
        filename: string

        This function returns #t if the indicated file exists, and
        #f if it does not exist or if it is not accessible to the
        requesting user. Accessibility is based on the real user
        and group ID rather than the effective user ID and group ID.

(file-type filename)
        filename: string

        This function returns a value based on the file type. It
        returns FILE_TYPE_FILE (1) for regular files, FILE_TYPE_DIR
        (2) for directories, and FILE_TYPE_LINK (3) for symbolic
        links. The value FILE_TYPE_OTHER (0) is returned if the file
        is of some other type, does not exist, or if the user does
        not have sufficient privileges to allow the file type to be
        determined.

(file-size filename)
        filename: string

        This function returns the size (in bytes) of the
        indicated file, or #f if the file does not exists or
        is not accessible to the requesting user.

(file-delete filename)
        filename: string

        Removes the specified file. It returns #t if the operation
        succeeds, or #f otherwise (e.g., because the file is
        read-only, or because the file does not exist).

(dir-open-stream path)
        path: string

        Opens a "directory stream" on the provided directory path.
        This stream will provide all the files within the directory,
        using the function read-dir-entry. The stream should be closed
        at the end with dir-close-stream.

(dir-read-entry dirstream)
        dirstream: directory stream, obtained with dir-open-stream.

        It returns the name of the following directory entry, or eof
        if all the entries were provided. Check the return value with
        with eof-object?.

(dir-rewind dirstream)
        dirstream: directory stream, obtained with dir-open-stream.

        Resets the given directory stream. The next call to dir-read-entry
        will return the first entry again. It returns #t if the operation
        succeeds, or #f otherwise (ie. dirstream not valid)..

(dir-close-stream dirstream) 
        dirstream: directory stream, obtained with dir-open-stream.

        Close directory stream. No further calls to read-dir-entry should
        be performed.

(dir-make dirname . mode)
       dirname: string
       mode: integer representing permissions

       Create the directory specified, setting the directory permissions based
       upon the optional mode argument (taking into account the current
       umask). If no mode is specified then use the default (umask)
       permissions. Returns #t if the operation succeeds, otherwise #f.
       Possible reasons for failure are that the directory already exists,
       the user is not authorized to create it, or the mode is incorrectly
       specified).

*Time (available if HAVE_TIME is defined in tsx.h)

(time)
        Returns the current local time, as a list of integer
        containing:
          (year month day-of-month hour min sec millisec)
        The year is expressed as an offset from 1900.

(gettimeofday)
        Returns a list containing the number of seconds from
        the beginning of the day, and microseconds within the
        current second.

(usleep microsec)
        microsec: integer

        Suspends execution of the calling thread during the
        specified number of microseconds.


END

