git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@2262 6f19259b-4bc3-4df7-8a09-765794883524
		
			
				
	
	
		
			186 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			186 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/*
 | 
						|
 | 
						|
Copyright (c)  1999-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.
 | 
						|
 | 
						|
*/
 | 
						|
 | 
						|
// GC_TODO: fix comment to start with /*++
 | 
						|
#include "stdio.h"
 | 
						|
#include "string.h"
 | 
						|
#include "stdlib.h"
 | 
						|
 | 
						|
//
 | 
						|
// Utility Name
 | 
						|
//
 | 
						|
#define UTILITY_NAME  "SplitFile"
 | 
						|
 | 
						|
//
 | 
						|
// Utility version information
 | 
						|
//
 | 
						|
#define UTILITY_MAJOR_VERSION 0
 | 
						|
#define UTILITY_MINOR_VERSION 1
 | 
						|
 | 
						|
void
 | 
						|
Version (
 | 
						|
  void
 | 
						|
  )
 | 
						|
/*++
 | 
						|
 | 
						|
Routine Description:
 | 
						|
 | 
						|
  Displays the standard utility information to SDTOUT
 | 
						|
 | 
						|
Arguments:
 | 
						|
 | 
						|
  None
 | 
						|
 | 
						|
Returns:
 | 
						|
 | 
						|
  None
 | 
						|
 | 
						|
--*/
 | 
						|
{
 | 
						|
  printf ("%s v%d.%d -Utility to break a file into two pieces at the request offset.\n", UTILITY_NAME, UTILITY_MAJOR_VERSION, UTILITY_MINOR_VERSION);
 | 
						|
  printf ("Copyright (c) 1999-2007 Intel Corporation. All rights reserved.\n");
 | 
						|
}
 | 
						|
 | 
						|
void
 | 
						|
Usage (
 | 
						|
  void
 | 
						|
  )
 | 
						|
/*++
 | 
						|
 | 
						|
Routine Description:
 | 
						|
 | 
						|
  GC_TODO: Add function description
 | 
						|
 | 
						|
Arguments:
 | 
						|
 | 
						|
 | 
						|
Returns:
 | 
						|
 | 
						|
  GC_TODO: add return values
 | 
						|
 | 
						|
--*/
 | 
						|
{
 | 
						|
  Version();
 | 
						|
  printf ("\nUsage: \n\
 | 
						|
   SplitFile Filename Offset\n\
 | 
						|
     where:\n\
 | 
						|
       Filename: Input file to split\n\
 | 
						|
       Offset: offset at which to split file\n\
 | 
						|
   The output files will be named <Filename>1 and <Filename>2 with \n\
 | 
						|
   <Filename> being given as the input file name.\n");
 | 
						|
}
 | 
						|
 | 
						|
int
 | 
						|
main (
 | 
						|
  int argc,
 | 
						|
  char*argv[]
 | 
						|
  )
 | 
						|
/*++
 | 
						|
 | 
						|
Routine Description:
 | 
						|
 | 
						|
  GC_TODO: Add function description
 | 
						|
 | 
						|
Arguments:
 | 
						|
 | 
						|
  argc  - GC_TODO: add argument description
 | 
						|
  ]     - GC_TODO: add argument description
 | 
						|
 | 
						|
Returns:
 | 
						|
 | 
						|
  GC_TODO: add return values
 | 
						|
 | 
						|
--*/
 | 
						|
{
 | 
						|
  FILE          *In;
 | 
						|
 | 
						|
  FILE          *Out1;
 | 
						|
 | 
						|
  FILE          *Out2;
 | 
						|
  char          OutName1[512];
 | 
						|
  char          OutName2[512];
 | 
						|
  unsigned long Index;
 | 
						|
  unsigned long splitpoint;
 | 
						|
  char          CharC;
 | 
						|
 | 
						|
  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 -1;
 | 
						|
  }
 | 
						|
  
 | 
						|
  if ((strcmp(argv[1], "-V") == 0) || (strcmp(argv[1], "--version") == 0)) {
 | 
						|
    Version();
 | 
						|
    return -1;
 | 
						|
  }
 | 
						|
  
 | 
						|
  if (argc != 3) {
 | 
						|
    Usage ();
 | 
						|
    return -1;
 | 
						|
  }
 | 
						|
 | 
						|
  In = fopen (argv[1], "rb");
 | 
						|
  if (In == NULL) {
 | 
						|
    printf ("Unable to open file \"%s\"\n", argv[1]);
 | 
						|
    return -1;
 | 
						|
  }
 | 
						|
 | 
						|
  strncpy (OutName1, argv[1], 510);
 | 
						|
  strncpy (OutName2, argv[1], 510);
 | 
						|
  strcat (OutName1, "1");
 | 
						|
  strcat (OutName2, "2");
 | 
						|
 | 
						|
  Out1 = fopen (OutName1, "wb");
 | 
						|
  if (Out1 == NULL) {
 | 
						|
    printf ("Unable to open file \"%s\"\n", OutName1);
 | 
						|
    return -1;
 | 
						|
  }
 | 
						|
 | 
						|
  Out2 = fopen (OutName2, "wb");
 | 
						|
  if (Out2 == NULL) {
 | 
						|
    printf ("Unable to open file \"%s\"\n", OutName2);
 | 
						|
    return -1;
 | 
						|
  }
 | 
						|
 | 
						|
  splitpoint = atoi (argv[2]);
 | 
						|
 | 
						|
  for (Index = 0; Index < splitpoint; Index++) {
 | 
						|
    CharC = (char) fgetc (In);
 | 
						|
    if (feof (In)) {
 | 
						|
      break;
 | 
						|
    }
 | 
						|
 | 
						|
    fputc (CharC, Out1);
 | 
						|
  }
 | 
						|
 | 
						|
  for (;;) {
 | 
						|
    CharC = (char) fgetc (In);
 | 
						|
    if (feof (In)) {
 | 
						|
      break;
 | 
						|
    }
 | 
						|
 | 
						|
    fputc (CharC, Out2);
 | 
						|
  }
 | 
						|
 | 
						|
  fclose (In);
 | 
						|
  fclose (Out1);
 | 
						|
  fclose (Out2);
 | 
						|
 | 
						|
  return 0;
 | 
						|
}
 |