git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@2162 6f19259b-4bc3-4df7-8a09-765794883524
		
			
				
	
	
		
			175 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			175 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/*++
 | 
						|
 | 
						|
Copyright (c)  2004-2006 Intel Corporation. All rights reserved
 | 
						|
This program and the accompanying materials are licensed and made available
 | 
						|
under the terms and conditions of the BSD License which accompanies this
 | 
						|
distribution.  The full text of the license may be found at
 | 
						|
http://opensource.org/licenses/bsd-license.php
 | 
						|
 | 
						|
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
 | 
						|
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
 | 
						|
 | 
						|
 | 
						|
Module Name:
 | 
						|
 | 
						|
  Strip.c
 | 
						|
 | 
						|
Abstract:
 | 
						|
 | 
						|
  Quick Exe2Bin equivalent.
 | 
						|
 | 
						|
--*/
 | 
						|
 | 
						|
#include <stdio.h>
 | 
						|
#include <memory.h>
 | 
						|
#include <string.h>
 | 
						|
#include <stdlib.h>
 | 
						|
 | 
						|
#define UTILITY_NAME  "Strip"
 | 
						|
#define UTILITY_MAJOR_VERSION 1
 | 
						|
#define UTILITY_MINOR_VERSION 1
 | 
						|
 | 
						|
 | 
						|
void 
 | 
						|
Version(
 | 
						|
  void
 | 
						|
  )
 | 
						|
/*++
 | 
						|
 | 
						|
Routine Description:
 | 
						|
 | 
						|
  Print out version information for Strip.
 | 
						|
 | 
						|
Arguments:
 | 
						|
 | 
						|
  None
 | 
						|
  
 | 
						|
Returns:
 | 
						|
 | 
						|
  None
 | 
						|
  
 | 
						|
--*/ 
 | 
						|
{
 | 
						|
  printf ("%s v%d.%d -EDK Utility to Convert EXE to BIN\n", UTILITY_NAME, UTILITY_MAJOR_VERSION, UTILITY_MINOR_VERSION);
 | 
						|
  printf ("Copyright (c) 2005-2006 Intel Corporation. All rights reserved.\n");
 | 
						|
}
 | 
						|
 | 
						|
void 
 | 
						|
Usage(
 | 
						|
  void
 | 
						|
  )
 | 
						|
/*++
 | 
						|
 | 
						|
Routine Description:
 | 
						|
 | 
						|
  Print out usage information for Strip.
 | 
						|
 | 
						|
Arguments:
 | 
						|
 | 
						|
  None
 | 
						|
  
 | 
						|
Returns:
 | 
						|
 | 
						|
  None
 | 
						|
  
 | 
						|
--*/ 
 | 
						|
{
 | 
						|
  Version();
 | 
						|
  printf ("\nUsage: %s InputFile OutputFile\n", UTILITY_NAME);
 | 
						|
}
 | 
						|
 | 
						|
int
 | 
						|
main (
 | 
						|
  int  argc,
 | 
						|
  char *argv[]
 | 
						|
  )
 | 
						|
/*++
 | 
						|
 | 
						|
Routine Description:
 | 
						|
 | 
						|
  Converts executable files to binary files.
 | 
						|
 | 
						|
Arguments:
 | 
						|
 | 
						|
  argc   - Number of command line arguments
 | 
						|
  argv[] - Array of pointers to the command line arguments
 | 
						|
 | 
						|
Returns:
 | 
						|
 | 
						|
  Zero     - Function completed successfully.
 | 
						|
  Non-zero - Function exited with errors.
 | 
						|
 | 
						|
--*/
 | 
						|
{
 | 
						|
  FILE  *InFile;
 | 
						|
  FILE  *OutFile;
 | 
						|
  int   Index;
 | 
						|
  int   FileSize;
 | 
						|
  char  *Buffer;
 | 
						|
  char  *Ptrx;
 | 
						|
  
 | 
						|
  if (argc < 1) {
 | 
						|
    Usage();
 | 
						|
    return -1;
 | 
						|
  }
 | 
						|
  
 | 
						|
  if ((strcmp(argv[1], "-h") == 0) || (strcmp(argv[1], "--help") == 0) ||
 | 
						|
      (strcmp(argv[1], "-?") == 0) || (strcmp(argv[1], "/?") == 0)) {
 | 
						|
    Usage();
 | 
						|
    return 0;
 | 
						|
  }
 | 
						|
  
 | 
						|
  if ((strcmp(argv[1], "-V") == 0) || (strcmp(argv[1], "--version") == 0)) {
 | 
						|
    Version();
 | 
						|
    return 0;
 | 
						|
  }
 | 
						|
  
 | 
						|
  if (argc < 3) {
 | 
						|
    Usage();
 | 
						|
    return -1;
 | 
						|
  }
 | 
						|
 | 
						|
  InFile  = fopen (argv[1], "rb");
 | 
						|
  OutFile = fopen (argv[2], "wb");
 | 
						|
 | 
						|
  if (!InFile) {
 | 
						|
    printf ("Unable to open input file, exit\n");
 | 
						|
    return -1;
 | 
						|
  }
 | 
						|
 | 
						|
  if (OutFile == NULL) {
 | 
						|
    printf ("Unable to open output file, exit.\n");
 | 
						|
    return -1;
 | 
						|
  }
 | 
						|
 | 
						|
  fseek (InFile, 0, SEEK_END);
 | 
						|
  FileSize = ftell (InFile);
 | 
						|
 | 
						|
  if (FileSize < 0x200) {
 | 
						|
    printf ("%d is not a legal file size, exit\n", FileSize);
 | 
						|
    return -1;
 | 
						|
  }
 | 
						|
 | 
						|
  fseek (InFile, 0, SEEK_SET);
 | 
						|
 | 
						|
  Buffer = (char *) malloc (FileSize);
 | 
						|
  if (Buffer == NULL) {
 | 
						|
    printf ("Error: Out of resources.\n");
 | 
						|
    return -1;
 | 
						|
  }
 | 
						|
 | 
						|
  fread (Buffer, 1, FileSize, InFile);
 | 
						|
 | 
						|
  Ptrx  = Buffer + 0x200;
 | 
						|
 | 
						|
  Index = FileSize - 0x200;
 | 
						|
 | 
						|
  fwrite (Ptrx, Index, 1, OutFile);
 | 
						|
 | 
						|
  fclose (InFile);
 | 
						|
  fclose (OutFile);
 | 
						|
  free (Buffer);
 | 
						|
 | 
						|
  return 0;
 | 
						|
}
 |