A library of functions implementing a useful file system. Necessary functions (you decide the exact details of the parameters, but it must be easy and convenient to use the functions in a normal program). Top priority: + format Initialise a new disc (or reinitialise an existing one), preparing it for its first use. + open Given a file name, and an indication of whether the file is to be opened for reading or writing. Check that the file is accessible and prepare it for access, creating a suitably sized buffer. + close Exactly what close normally does to a file. + readchar Fail if the file is not open for reading. If the buffer has no unread content left, refill it from the file first. Return the next unread character from the buffer. When at the end of the file, return some sensible value to signify that fact. + writechar Fail if the file is not open for writing. If the buffer is full, empty it into the file first. Put the supplied character into the buffer. + length Return the length (in bytes) of the file. After that: + add a function for deleting a file + add support for listing a directory + add support for creating and using sub-directories + with just readchar and writechar, you can read and write any kind of data to a file, but it isn't very convenient. Provide some convenient user-level access functions, such as read_number, read_line, write_number, write_string.