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

1 Expert Approved Answer
Step: 1 Unlock blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Databases Questions!