The main purpose of scconfig is to detect system specific settings and store them in a comfortable way for later processing. Each setting has an unique name and a value. The storage mimics standard UNIX file systems to some extents: names of the settings are like file names and "file content" is the actual data associated with the setting. This allows scconfig to organize settings in a tree, where "directory" names are separated by dashes. However, this is not a true tree storage, rather a list of hash tables. Each toplevel directory has its own hash table that stores all further subdirectories and files. The root directory is /. There is no setting stored outside of this tree structure. Thus a unique setting name /arg/fstools/cp (path) is split up to "/arg/" (first level directory) and "fstools/cp" (filename). If there's a hash defined for the given first level directory, filename is looked up there. A special feature is linking first level directories so that "/foo/" and "/bar/" would point to the same hash table. This means accessing filenames under any of the linked first level directories would result in addressing the same file. This feature is used when the host system is the target system to ensure that /host/ is the same as /target/ without the hassle of duplicating data and maintaining sync. There is a "CWD" defined, if a path doesn't start with slash, it is appended to CWD and the resulting path will be used as the full path. CWD must start with slash but may contain more than one slashes.