Here is the my second post regarding the same pset problem: recover.c. Running checks.......
:) recover.c exists.
:) recover.c compiles.
:) handles lack of forensic image
:( recovers 000.jpg correctly
expected exit code 0, not 2
:( recovers middle images correctly
expected exit code 0, not 2
:( recovers 015.jpg correctly
expected exit code 0, not 2
I really don't understand the meaning? expected an exit code of 0, not 2. Could somebody help me out with this?
#include <stdio.h>
#include <stdlib.h> // malloc()
#include <stdint.h>
int main(int argc, char *argv[])
{
// ensure proper usage
if (argc != 2)
{
fprintf(stderr, "Usage: ./recover image\n");
return 1;
}
// open input file
char *infile = argv[1];
FILE *inptr = fopen(infile, "r");
if (inptr != NULL)
{
fprintf(stderr, "Could not open %s.\n", infile);
return 2;
}
typedef uint8_t BYTE;//unsigned integer data type
BYTE buffer[512];
int i = 0;// filename sequential number
char* filename = NULL;
int number = 0;//# of recovered images
FILE *img;
while(fread(buffer, 512, 1, inptr) ==1)
{
if(buffer[0] == 0xff && buffer[1] == 0xd8 && buffer[2] == 0xff && (buffer[3] & 0xf0) == 0xe0)
{
if(number >0)
{
fclose(img);
}
sprintf(filename, "%03i.jpg", i);
img = fopen(filename, "w");
//fwrite(buffer, 512, 1, img);
i++;
number++;
}
else if(number > 0)
{
fwrite(buffer, 512, 1, img);
}
}
fclose(inptr);
fclose(img);
}