The Linux ext2 filesystem is a basic implementation of the UNIX SysV filesystem, with no journaling (ext3 and ext4 filesystems add journaling capabilities).
Your software will work with an ext2 filesystem contained within a Windows file (also known as filesystem-in-a-file, or loopback filesystem).
Each of the programs in your project should take the name of the loopback file as the first command-line parameter.
One program in your project must copy a file from the ext2 filesystem to a Windows location specified on the command line. A second program must copy files in the opposite direction (from Windows to ext2). A third program should take a directory in the ext2 filesystem and list all files in the system.
Things it should do:
* Your program must correctly copy files from ext2 to Windows without corrupting either filesystem, and display directory contents from the ext2 filesystem.
*Your program must also write to an ext2 filesystem in addition to the above requirements. Written files must be readable from Linux.
* Your program must do the above requirements; in addition, copying files into ext2 should be done cleanly (i.e., it should not cause issues with Linux' fsck).
* Have the directory list program provide the same information as a UNIX long listing (e.g., ls -l). You do not need to convert UID or GID to a user name.