Question: Topics: Low-Level Files in C. For this assignment, you need only write a single-file C program. Your program will: Obtain the following (in order) from
Topics: Low-Level Files in C.
For this assignment, you need only write a single-file C program. Your program will:
Obtain the following (in order) from the command line:
A mode argument:
-c create a new archive file (Mandatory)
-a append more files to an existing archive file (Mandatory)
-e explode an existing archive file (Mandatory)
-cr create recursive a new archive file (Optional)
A path argument:
Specifies the directory (as either a relative path to the current working directory or an absolute path) that contains the files to be archived ( -c -cr ) or to serve as the root of the exploded archive ( -e )
A file argument:
Specifies the name of the archive file that is to be created / or added to. Note: by default this file will be in the current working directory, however by pre-pending a path this file can be anywhere you wish.
Based on the command line arguments does one of the following:
Create: Create a new archive file ( file ) that, for each regular (non-hidden) file in the directory specified by ( path ), contains the data required to restore the file's:
Name
Data
Access Permissions
Append: same as Create, but you open an existing achieve file in append mode
Explode: Create a regular file in the directory specified by ( path ), for each archived file in the archive file ( file ), such that it has the same name, access permission and is an exact copy of the original file that was archived.
Create Recursive: same as Create, but you also recurse into each sub-directory
If you are looking for more fun consider (any combination of):
Encrypt the files as you write them into the archive
Compress the files as you write them into the archive
Proper care (error reporting / program termination) when opening, creating, files and directories is required.
Sample Runs:
% ./archive -c . my_archive
archiving .
Done my_archive as been created
% ./archive -a . my_archive
archiving .
Done my_archive as been appended to
% ./archive -e ./explode_test my_archive
exploding to ./explode_test
Done my_archive as been exploded
% ./archive -cr ./classes my_archive
archiving ./classes
archiving ./classes/CS351
archiving ./classes/CS351/Progs
archiving ./classes/CS317
Done my_archive as been created
Step by Step Solution
There are 3 Steps involved in it
Get step-by-step solutions from verified subject matter experts
