/* | |
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; | |
} |