426 lines
8.0 KiB
C++
426 lines
8.0 KiB
C++
//--------------------------------------------------------------------------
|
||
// Miscellaneous functions
|
||
// Box Files
|
||
//
|
||
// Gary Liddon @ Probe
|
||
// 21/11/92
|
||
//
|
||
// (c)1992-1998 Gary Robert Liddon
|
||
//
|
||
//--------------------------------------------------------------------------
|
||
|
||
|
||
//--------------------------------------------------------------------------
|
||
// Includes
|
||
// --------
|
||
#include "gtypes.h"
|
||
#include <vector>
|
||
#include <io.h>
|
||
#include <string.h>
|
||
#include <conio.h>
|
||
|
||
#include <fstream>
|
||
|
||
#include "misc.hpp"
|
||
#include "gfname.hpp"
|
||
|
||
using namespace std;
|
||
|
||
/*----------------------------------------------------------------------
|
||
Function:
|
||
Purpose:
|
||
Params:
|
||
Returns:
|
||
---------------------------------------------------------------------- */
|
||
|
||
|
||
bool copyFile(char const * Dest,char const * Source,bool Overwrite)
|
||
{
|
||
ifstream InFile;
|
||
vector<u8> Data;
|
||
|
||
int Size;
|
||
|
||
Size=FileSize(Source);
|
||
|
||
if (Size >= 0)
|
||
{
|
||
Data.resize(Size);
|
||
|
||
ifstream In;
|
||
In.open(Source,ios::binary);
|
||
In.read((char *)(&Data[0]),Size);
|
||
In.close();
|
||
|
||
if (In)
|
||
{
|
||
ofstream OutFile;
|
||
int OpenMode;
|
||
|
||
OpenMode=ios::binary;
|
||
|
||
if (Overwrite)
|
||
OpenMode|=ios::trunc;
|
||
|
||
OutFile.open(Dest,OpenMode);
|
||
|
||
if (OutFile)
|
||
{
|
||
OutFile.write((char*)&Data[0],Data.size());
|
||
OutFile.close();
|
||
}
|
||
else
|
||
GObject::Error(ERR_FATAL,"Unable to open out file %s",Dest);
|
||
}
|
||
else
|
||
GObject::Error(ERR_FATAL,"Unable to open in file %s",Source);
|
||
}
|
||
|
||
return(true);
|
||
}
|
||
|
||
int FileCycler::DoCycle(char const *Spec,bool Recurse)
|
||
{
|
||
int FileNum=0;
|
||
int Handle;
|
||
GFName InName(Spec);
|
||
char * Speccy;
|
||
|
||
if(!(Speccy=strdup(Spec)))
|
||
GObject::Error(ERM_OUTOFMEM);
|
||
|
||
_finddata_t FindBlock;
|
||
|
||
/* Do dirs first */
|
||
|
||
if (Recurse)
|
||
{
|
||
GFName DirName(Spec);
|
||
|
||
DirName.File("*");
|
||
DirName.Ext("*");
|
||
|
||
if ((Handle = _findfirst((char *) DirName.FullName(),&FindBlock))!=-1)
|
||
{
|
||
BOOL Done;
|
||
|
||
Done=FALSE;
|
||
|
||
while (!Done)
|
||
{
|
||
if (FindBlock.attrib&_A_SUBDIR)
|
||
{
|
||
if (strcmp(FindBlock.name,".") && strcmp(FindBlock.name,".."))
|
||
{
|
||
GFName TempName(InName.FullName());
|
||
|
||
if (TempName.Dir())
|
||
{
|
||
char * NewSub;
|
||
|
||
if (!(NewSub=new char [strlen(TempName.Dir()) +strlen (FindBlock.name)+1+2] ))
|
||
GObject::Error(ERM_OUTOFMEM);
|
||
|
||
sprintf(NewSub,"%s\\%s",TempName.Dir(),FindBlock.name);
|
||
|
||
TempName.Dir(NewSub);
|
||
|
||
delete NewSub;
|
||
}
|
||
else
|
||
TempName.Dir(FindBlock.name);
|
||
|
||
DoCycle(TempName.FullName(),Recurse);
|
||
}
|
||
}
|
||
Done=_findnext(Handle,&FindBlock);
|
||
}
|
||
}
|
||
}
|
||
|
||
if ((Handle = _findfirst(Speccy,&FindBlock))!=-1)
|
||
{
|
||
BOOL Done;
|
||
Done=FALSE;
|
||
|
||
while (!Done)
|
||
{
|
||
|
||
if (!(FindBlock.attrib&_A_SUBDIR))
|
||
{
|
||
GFName TempName(InName.FullName());
|
||
GFName Temp2(FindBlock.name);
|
||
TempName.File(Temp2.File());
|
||
TempName.Ext(Temp2.Ext());
|
||
FileCallback(TempName.FullName(),FileNum++);
|
||
}
|
||
|
||
Done=_findnext(Handle,&FindBlock);
|
||
}
|
||
}
|
||
|
||
free(Speccy);
|
||
|
||
return FileNum;
|
||
}
|
||
|
||
|
||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
// Cycle through files of a particular spec, Returns Number of Files found
|
||
// <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
int CycleFiles(char const *Spec,void (*Func)(char const *Fname,int Num),BOOL Recurse)
|
||
{
|
||
int FileNum=0;
|
||
int Handle;
|
||
GFName InName(Spec);
|
||
char * Speccy;
|
||
|
||
if(!(Speccy=strdup(Spec)))
|
||
GObject::Error(ERM_OUTOFMEM);
|
||
|
||
_finddata_t FindBlock;
|
||
|
||
/* Do dirs first */
|
||
|
||
if (Recurse)
|
||
{
|
||
GFName DirName(Spec);
|
||
|
||
DirName.File("*");
|
||
DirName.Ext("*");
|
||
|
||
if ((Handle = _findfirst((char *) DirName.FullName(),&FindBlock))!=-1)
|
||
{
|
||
BOOL Done;
|
||
|
||
Done=FALSE;
|
||
|
||
while (!Done)
|
||
{
|
||
if (FindBlock.attrib&_A_SUBDIR)
|
||
{
|
||
if (strcmp(FindBlock.name,".") && strcmp(FindBlock.name,".."))
|
||
{
|
||
GFName TempName(InName.FullName());
|
||
|
||
if (TempName.Dir())
|
||
{
|
||
char * NewSub;
|
||
|
||
if (!(NewSub=new char [strlen(TempName.Dir()) +strlen (FindBlock.name)+1+2] ))
|
||
GObject::Error(ERM_OUTOFMEM);
|
||
|
||
sprintf(NewSub,"%s\\%s",TempName.Dir(),FindBlock.name);
|
||
|
||
TempName.Dir(NewSub);
|
||
|
||
delete NewSub;
|
||
}
|
||
else
|
||
TempName.Dir(FindBlock.name);
|
||
|
||
CycleFiles(TempName.FullName(),Func,Recurse);
|
||
}
|
||
}
|
||
Done=_findnext(Handle,&FindBlock);
|
||
}
|
||
}
|
||
}
|
||
|
||
if ((Handle = _findfirst(Speccy,&FindBlock))!=-1)
|
||
{
|
||
BOOL Done;
|
||
Done=FALSE;
|
||
|
||
while (!Done)
|
||
{
|
||
|
||
if (!(FindBlock.attrib&_A_SUBDIR))
|
||
{
|
||
GFName TempName(InName.FullName());
|
||
GFName Temp2(FindBlock.name);
|
||
TempName.File(Temp2.File());
|
||
TempName.Ext(Temp2.Ext());
|
||
Func(TempName.FullName(),FileNum++);
|
||
}
|
||
|
||
Done=_findnext(Handle,&FindBlock);
|
||
}
|
||
}
|
||
|
||
free(Speccy);
|
||
|
||
return FileNum;
|
||
}
|
||
|
||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
// Get Switch Info
|
||
// <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
BOOL SwitchInfo(char *String)
|
||
{
|
||
if (strlen(String)!=3 || (String[2] != '+' && String[2] != '-'))
|
||
{
|
||
GObject::Error(ERR_FATAL,"%s option formatted incorrectly",String);
|
||
return 0;
|
||
}
|
||
else
|
||
return String[2]=='+' ? 1 : 0;
|
||
}
|
||
|
||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
// Command Line Constructor
|
||
// <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
CommandLine::CommandLine(int argc,char **argv,char *(*Func)(char *String,int Num))
|
||
{
|
||
LastItem=NULL;
|
||
InStream=NULL;
|
||
CommandItem=0;
|
||
|
||
if (!(LastItem=new char[1000]))
|
||
Error(ERM_OUTOFMEM);
|
||
|
||
MyArgc=argc;
|
||
MyArgv=argv;
|
||
|
||
GetNextItem(); // Skip progname
|
||
|
||
int x=0;
|
||
|
||
char *SpamString;
|
||
|
||
while ((SpamString=GetNextItem()))
|
||
{
|
||
Func(SpamString,x);
|
||
x++;
|
||
}
|
||
}
|
||
|
||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
// Command Line Destructor
|
||
// <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
CommandLine::~CommandLine()
|
||
{
|
||
if (InStream)
|
||
delete InStream;
|
||
|
||
if (LastItem)
|
||
delete LastItem;
|
||
}
|
||
|
||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
// Get The Next Item in the Commandline string
|
||
// <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
char *CommandLine::GetNextItem()
|
||
{
|
||
char *RetStuff=NULL;
|
||
|
||
if (!InStream)
|
||
RetStuff=GetNextCommandLineItem();
|
||
else
|
||
RetStuff=GetNextScriptFileItem();
|
||
|
||
return RetStuff;
|
||
}
|
||
|
||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
// Get The Next Item in the Argv list
|
||
// <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
char *CommandLine::GetNextCommandLineItem()
|
||
{
|
||
char *RetStuff=NULL;
|
||
|
||
if (CommandItem!=MyArgc)
|
||
{
|
||
strcpy(LastItem,MyArgv[CommandItem]);
|
||
RetStuff=LastItem;
|
||
|
||
CommandItem++;
|
||
|
||
if (*RetStuff=='@')
|
||
{
|
||
if (InStream)
|
||
delete InStream;
|
||
|
||
if (!(InStream = new ifstream (&RetStuff[1])))
|
||
Error(ERM_OUTOFMEM);
|
||
|
||
if (!(*InStream))
|
||
Error(ERR_FATAL,"Cannot open script file %s",&RetStuff[1]);
|
||
|
||
if (!(RetStuff=GetNextScriptFileItem()))
|
||
RetStuff=GetNextCommandLineItem();
|
||
}
|
||
}
|
||
|
||
return RetStuff;
|
||
}
|
||
|
||
|
||
|
||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
// Get The Next Item from the currently open script file
|
||
// <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
char *CommandLine::GetNextScriptFileItem()
|
||
{
|
||
char *RetStuff=NULL;
|
||
|
||
(*InStream)>>LastItem;
|
||
|
||
if (InStream->eof())
|
||
{
|
||
delete InStream;
|
||
InStream=NULL;
|
||
RetStuff=GetNextCommandLineItem();
|
||
}
|
||
else
|
||
RetStuff=LastItem;
|
||
|
||
return RetStuff;
|
||
}
|
||
|
||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
// Does this file exist?
|
||
// <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
bool FileExists(const char *String)
|
||
{
|
||
ifstream InStream;
|
||
bool RetVal;
|
||
|
||
InStream.open(String,ios::in);
|
||
if (InStream)
|
||
RetVal=true;
|
||
else
|
||
RetVal=false;
|
||
|
||
InStream.close();
|
||
return(RetVal);
|
||
}
|
||
|
||
|
||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
// What is the size of this file?
|
||
// <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
int FileSize(const char *String)
|
||
{
|
||
ifstream InStream;
|
||
int RetVal;
|
||
|
||
RetVal=-1;
|
||
|
||
InStream.open(String,ios::in);
|
||
|
||
if (InStream)
|
||
{
|
||
InStream.seekg(0,ios::end);
|
||
RetVal=InStream.tellg();
|
||
InStream.close();
|
||
}
|
||
|
||
return(RetVal);
|
||
}
|
||
|
||
|
||
|
||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
//ends
|