Extracts a file from a cabinet or cabinet set.
This extracts a compressed file in a cabinet and writes it to the given filename.
The MS-DOS filename of the file, mscabd_file::filename, is NOT USED by extract(). The caller must examine this MS-DOS filename, copy and change it as necessary, create directories as necessary, and provide the correct filename as a parameter, which will be passed unchanged to the decompressor's mspack_system::open()
If the file belongs to a split folder in a multi-part cabinet set, and not enough parts of the cabinet set have been loaded and appended or prepended, an error will be returned immediately.