english
version "1.0"
identify "%Z%%M% %I% %E%"

#: Copyright (c) 1995-2005 by Wayne C. Gramlich.
#, All rights reserved.

module file_system

#: The {file_system} type provides overall access to the file system
#, in an operating system independent fashion.  For now, it only
#, makes sense to have exactly {file_system} type per progarm.
#, Later on, when remote file systems get implemented, it will
#, make sense have multiple {file_system} objects.

define file_system			#: File system information
    record
	buffer string			#: Temporary {string} buffer
	is_unix logical			#: {true}=>UNIX; {false}=>Windows
	login file_name			#: Login file name (i.e. `~')
	new_line string			#: New-line separator
	relative file_name		#: Relative file name (i.e. `.')
	root file_name			#: Root file name (i.e. `/')
	separator character		#: Level separator character
	system system			#: System object to use
	table set[file_name]		#: Table of unique {file_name}'s
	temporary file_name		#: Temporary {file_name} for lookup
    generate allocate, erase, identical, print



#: {file_system} procedures:

procedure create@file_system
    takes
	system system
    returns file_system

    #: This procedure will create and return a {file_system} object
    #, In general, this procedure should only  be called from with
    #, the {system} module and fetched via {file_system_get}@{system}().
    #, The only time it makes sense call this procedure is if an
    #, application that deals with more than one file system is being
    #, constructed.