All pastes #572964 Raw Edit

Untitled

public c v1 · immutable
·published 2007-06-17 23:11 UTC
rendered paste body
#include <stdio.h>#include <stdlib.h>#include <string.h>#include <stdint.h>struct FileHeader {  uint32_t magic_number;  uint32_t fileLength;} header; void performFileIO(const char *infile){  FILE *FileIn, *FileOut;  char inBuffer[BUFSIZ];  char tempBuffer[4];  int position = 0;  // marks the header of a file found within the input file  const unsigned char pattern[] = {0xFF, 0x57, 0x50, 0x43};  // properly open the binary file for reading  FileIn = fopen(infile, "rb");  if (FileIn == NULL) {    printf("The file could not be opened, please check your file and location before trying again.\n");    exit(1);  }  printf("Enter the name and path for the output file: ");  gets(inBuffer);  FileOut = fopen(inBuffer, "w+b");  // position the file marker at the beginning of file  fseek(FileIn, 0, SEEK_SET);   while (!feof(FileIn))  {    position++;    if (fgetc(FileIn) == pattern[0]) {      tempBuffer[0] = pattern[0];      fread(tempBuffer + 1, sizeof(pattern) - 1, 1, FileIn);      if (memcmp(pattern, tempBuffer, sizeof(pattern)) == 0) {        printf("Match Found.\n");        // now that match is found load pattern into struct        header.magic_number = (int)pattern;        fseek(FileIn, 21, SEEK_CUR); // find the file size        fread(tempBuffer, sizeof(pattern), 1, FileIn); // four byte size of file found        // after finding filesize load it into struct        header.fileLength = (int)tempBuffer;        // retract to the pattern header        fseek(FileIn, -25, SEEK_CUR);        fread(&header, sizeof(struct FileHeader), 1, FileIn);        //fread(tempPtr, sizeof(char), fileLength, FileIn);        //fread(tempptr, sizeof(char), sizeof((int)*tempBuffer), FileIn);  // read up to the full length of file        //sprintf(outStringData, "%-5i\tOffset: %-12i\tSize: %02x%02x%02x%02x\n", currentFile++, position - 1,        //tempBuffer[0], tempBuffer[1], tempBuffer[2], tempBuffer[3]);        //fwrite(outStringData, sizeof(char), strlen(outStringData), FileOut);        //fwrite(tempptr, sizeof(*tempBuffer), strlen(tempptr), FileOut);        //fwrite(tempptr, sizeof(char), sizeof((int)*tempBuffer), FileOut);        //fwrite(tempptr, sizeof(char), fileLength, FileOut);        fwrite(&header, sizeof(struct FileHeader), 1, FileOut);        break;        continue;      }      fseek(FileIn, -3, SEEK_CUR);    }  }  // close the files and at the same time flush the buffers  fclose(FileIn);  fclose(FileOut);}// program entry pointint main(int argc, char *argv[]){  char buffer[BUFSIZ];  printf("Please enter the name and path of the binary file: ");  gets(buffer);  performFileIO(buffer);  printf("\n Done!\n Press enter to exit\n");  getchar();  return 0;}