127 lines
3.4 KiB
C
127 lines
3.4 KiB
C
#define D_CMP_Input_VariableDefine
|
|
|
|
#include "CMP_CPA.h"
|
|
#include "ErmCmp.h"
|
|
#include "CMP_File.h"
|
|
#include "CMP_Pub.h"
|
|
#include "CMP_DIFF.h"
|
|
#include "CMP_LZSS.h"
|
|
|
|
#define C_TemporaryFile "Temp.tmp"
|
|
|
|
/**************************************************************************/
|
|
void CMP_fn_vFirstInit()
|
|
{
|
|
Erm_M_InitErrMsg(CMP);
|
|
}
|
|
/**************************************************************************/
|
|
void CMP_fn_vCompressFile(char *_szFileName,unsigned char _ucCompressMethod)
|
|
{
|
|
rename(_szFileName,C_TemporaryFile);
|
|
CMP_fn_vCompressFileIn(C_TemporaryFile,_szFileName,_ucCompressMethod);
|
|
DeleteFile(C_TemporaryFile);
|
|
}
|
|
/**************************************************************************/
|
|
void CMP_fn_vCompressFileIn(char *_szInputFileName,char *_szOutputFileName,unsigned char _ucCompressMethod)
|
|
{
|
|
#if defined(D_CMP_LZSS)
|
|
if (_ucCompressMethod==D_CMP_LZSS)
|
|
{
|
|
FILE *p_stInputFile = NULL;
|
|
tdstBitFile *p_stOutputBitFile = NULL;
|
|
|
|
p_stInputFile = M_p_stOpenInput(_szInputFileName);
|
|
if (p_stInputFile!=NULL)
|
|
{
|
|
p_stOutputBitFile = CMP_fn_p_stOpenOutputBitFile(_szOutputFileName);
|
|
if (p_stOutputBitFile!=NULL)
|
|
{
|
|
CMP_LZSS_fn_vCompressFile(p_stInputFile,p_stOutputBitFile);
|
|
CMP_fn_vCloseOutputBitFile(p_stOutputBitFile);
|
|
}
|
|
M_vCloseInput(p_stInputFile);
|
|
}
|
|
}
|
|
#endif /* D_CMP_LZSS */
|
|
|
|
#if defined(D_CMP_DIFF)
|
|
if (_ucCompressMethod==D_CMP_DIFF)
|
|
{
|
|
FILE *p_stInputFile = NULL;
|
|
FILE *p_stOutputFile = NULL;
|
|
|
|
p_stInputFile = M_p_stOpenInput(_szInputFileName);
|
|
if (p_stInputFile!=NULL)
|
|
{
|
|
p_stOutputFile = M_p_stOpenOutput(_szOutputFileName);
|
|
|
|
if (p_stOutputFile!=NULL)
|
|
{
|
|
CMP_DIFF_fn_vCompressFile(p_stInputFile,p_stOutputFile);
|
|
M_vCloseOutput(p_stOutputFile);
|
|
}
|
|
M_vCloseInput(p_stInputFile);
|
|
}
|
|
}
|
|
#endif /* D_CMP_DIFF */
|
|
}
|
|
/**************************************************************************/
|
|
unsigned char CMP_fn_bExpandFile(char *_szFileName,unsigned char _ucCompressMethod)
|
|
{
|
|
unsigned char ucReturn = TRUE;
|
|
rename(_szFileName,C_TemporaryFile);
|
|
ucReturn = CMP_fn_bExpandFileIn(C_TemporaryFile,_szFileName,_ucCompressMethod);
|
|
DeleteFile(C_TemporaryFile);
|
|
|
|
return(ucReturn);
|
|
}
|
|
/**************************************************************************/
|
|
unsigned char CMP_fn_bExpandFileIn(char *_szInputFileName,char *_szOutputFileName,unsigned char _ucCompressMethod)
|
|
{
|
|
unsigned char ucReturn = FALSE;
|
|
|
|
#if defined(D_CMP_LZSS)
|
|
if (_ucCompressMethod==D_CMP_LZSS)
|
|
{
|
|
tdstBitFile *p_stInputBitFile = NULL;
|
|
FILE *p_stOutputFile = NULL;
|
|
|
|
p_stInputBitFile = CMP_fn_p_stOpenInputBitFile(_szInputFileName);
|
|
if (p_stInputBitFile!=NULL)
|
|
{
|
|
p_stOutputFile = M_p_stOpenOutput(_szOutputFileName);
|
|
if (p_stOutputFile!=NULL)
|
|
{
|
|
CMP_LZSS_fn_vExpandFile(p_stInputBitFile,p_stOutputFile);
|
|
ucReturn = TRUE;
|
|
M_vCloseOutput(p_stOutputFile);
|
|
}
|
|
CMP_fn_vCloseInputBitFile(p_stInputBitFile);
|
|
}
|
|
}
|
|
#endif /* D_CMP_LZSS */
|
|
|
|
#if defined(D_CMP_DIFF)
|
|
if (_ucCompressMethod==D_CMP_DIFF)
|
|
{
|
|
FILE *p_stInputFile = NULL;
|
|
FILE *p_stOutputFile = NULL;
|
|
|
|
p_stInputFile = M_p_stOpenInput(_szInputFileName);
|
|
if (p_stInputFile!=NULL)
|
|
{
|
|
p_stOutputFile = M_p_stOpenOutput(_szOutputFileName);
|
|
if (p_stOutputFile!=NULL)
|
|
{
|
|
CMP_DIFF_fn_vExpandFile(p_stInputFile,p_stOutputFile);
|
|
ucReturn = TRUE;
|
|
M_vCloseOutput(p_stOutputFile);
|
|
}
|
|
M_vCloseInput(p_stInputFile);
|
|
}
|
|
}
|
|
#endif /* D_CMP_DIFF */
|
|
return(ucReturn);
|
|
}
|
|
/**************************************************************************/
|