Computer Science 102 Short Program 2 Due 4 February 11:59PM For this program the ONLY authorized source of assistance is Dr. Westall or the TA's. ANY OTHER DISCUSSION of the program no matter how "high level" or "peripheral" (e.g. Have you started/finished it yet?) is STRICTLY FORBIDDEN. Any student who observes improper behavior is encouraged to report it to Dr. Westall. Reports that can be verified will be rewarded with a 20 point bonus on the assignment for the student doing the reporting and an F for the course for the student being reported!! Adhere to the following programming standards. Violations will lead to deductions. (1) no function should be longer than 30 lines code + whitespace. (2) the maximum nesting level in any function is ONE (3) code lines should not extend beyond column 72 (4) no more that one statement may be written on a single line (5) use reasonably descriptive names for variables and functions (6) package all functions into a single source code module named camera.c (7) your program should compile without any warnings with gcc -Wall (8) indenting should be consistent with logical nesting (9) diagnostic / debug prints should be disabled/deleted in your submission. The assns/sp2 subdirectory contains a sample main1.c along with header files ray.h rayhdrs.h rayfuns.h and a makefile. DO NOT MODIFY ANY OF THESE FILES!!! You will supply camera.c, list.c, and vector.h from previous work. You will write model.c and material.c in this assignment. Sample input and output files are sample.txt and sample.out Please ensure your output is at least as nicely formatted as sample.out. As before, ALL output MUST go to the stderr file. Your program must build correctly when you enter the command make Phase 1 of your mission here to create the model.c function that will drive the loading of the model definition and the dumping of the model definition. A skeleton of the required code can be found in the notes in the area of page 45-47. For this assignment you will need to be able to load and dump a SINGLE ENTITY type: material Prototypes of the functions that will live in model.c live in rayhdrs.h. In phase 2 you will build material.c. For each material definition in the input file, model_load will call the material_init() function which will malloc() an new material_t, parse the attributes reading the values into the material_t structure, and then add the material_t to the model->mats list. After ALL of the material definitions have been loaded the main() function will invoke model_dump() which will invoke material_dump. material_dump() will process each item on the material list producing the formatted listing.