You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

366 lines
9.8 KiB
C

2 years ago
/****************************************************************************
* FileName : DSFileSystem.h *
* Programmer : AAAwen *
* Writen at : 2005.05.10 *
* Version : 1.0 *
* Description: define filesystem of flash *
* Last modify: 2005.05.10 *
****************************************************************************/
#ifndef __DSFILESYSTEM_H_ICL__
#define __DSFILESYSTEM_H_ICL__
#include "basetype.h"
#include <stdio.h>
//typedef char* HDSFILE;
/*!
2 years ago
*/
#define SEEK_CLR_RCNT SEEK_END+10
#define SEEK_CUR_EX SEEK_END+11
// 修改DS中的配置文件系统
2 years ago
#define DS_FILESYSTEM_ADDR 0x3b0000
#define DS_FILESYSTEM_LEN (0x50000-4)
#define DS_SECTION_OUT -1 // 段名称长度越限
#define DS_SECTION_NOEXIST 0 // 段名称不存在
#define DS_SECTION_EXIST 1 // 段名称存在
#define DS_SECTION_SEARCH 2 // 段名称查找
2 years ago
typedef struct tsgDSFILE
{
/*!
2 years ago
*/
long m_lContentLen;
/*!
2 years ago
*/
long m_lOffset;
/*!
2 years ago
*/
long m_lReadCount;
// 增加优化配置文件读取项
2 years ago
/*!
2 years ago
*/
long m_lSectionOk;
/*!
2 years ago
*/
long m_lSectionLines;
/*!
2 years ago
*/
long m_lSectionLinesAddFlag;
/*!
2 years ago
*/
long m_lSectionOffset;
/*!
2 years ago
*/
char m_szSection[64];
/*!
2 years ago
*/
char *m_pContent;
}DSFILE, *HDSFILE;
#ifdef OS_WINDOWS
#pragma pack (push,1)
typedef struct tagDSFILESYSTEMHEAD
{
/*!
2 years ago
*/
int m_iFiles;
/*!
2 years ago
\note
=this+m_iOffset
2 years ago
*/
int m_iOffset;
}DSFILESYSTEMHEAD;
typedef struct tagDSFILEHEAD
{
/*!
(+)
2 years ago
*/
int m_iFileSize;
/*!
2 years ago
*/
int m_iOffset;
/*!
2 years ago
*/
int m_iFileNameLen;
/*!
2 years ago
*/
char m_FileName[1];
}DSFILEHEAD, *pDSFILEHEAD;
typedef struct tagFILECONTENT
{
long m_lContentLen;
long m_lOffset;
char m_pContent[1];
}FILECONTENT, *pFILECONTENT;
#pragma pack (pop)
#else
typedef struct tagDSFILESYSTEMHEAD
{
/*!
2 years ago
*/
int m_iFiles ;
/*!
2 years ago
\note
=this+m_iOffset
2 years ago
*/
int m_iOffset ;
}DSFILESYSTEMHEAD;
typedef struct tagDSFILEHEAD
{
/*!
(+)
2 years ago
*/
int m_iFileSize ;
/*!
2 years ago
*/
int m_iOffset ;
/*!
2 years ago
*/
int m_iFileNameLen ;
/*!
2 years ago
*/
char m_FileName[1] ;
}DSFILEHEAD, *pDSFILEHEAD;
typedef struct tagFILECONTENT
{
long m_lContentLen ;
long m_lOffset ;
char m_pContent[1] ;
}FILECONTENT, *pFILECONTENT;
#endif
/*!
\brief
\param szFileName --
\param ppDestMem --
\retval --
2 years ago
\note
0\n
pDestMem使
2 years ago
*/
long LoadFile(const char *szFileName, char **ppDestMem);
/*!
\brief
\param szFileName --
\param ppDestMem --
\param pFSAddr --
\retval --
2 years ago
\note
0\n
pDestMem使
2 years ago
*/
long LoadFileInDSFS(const char *szFileName, char **ppDestMem, BYTE *pFSAddr);
/*!
\brief
\param stream --
\param offset -- origin
\param origin --
\retval -- 0
2 years ago
*/
DSLIB_API int DS_Seek(FILECONTENT *stream, long offset, int origin);
DSLIB_API char *DS_Gets(char *pDest, int iDestMax, FILECONTENT *stream);
/*!
\brief
\param fp --
\retval --
2 years ago
*/
DSLIB_API int GetFileLen(FILE *fp);
/*!
\brief
\param szFileName --
\retval --
2 years ago
\note
0\n
pDestMem使
2 years ago
*/
DSLIB_API HDSFILE DSOpenFile(const char *szFileName);
DSLIB_API HDSFILE DSOpenFileEx(const char *szFileName);
/*!
\brief
\param szRootDir --
\param szFileName --
\retval --
2 years ago
\note
0\n
pDestMem使
pc
1
2 years ago
*/
DSLIB_API HDSFILE DSOpenFileEx3(const char *szRootDir, const char *szFileName);
DSLIB_API HDSFILE DSOpenFileEx2(const char *szRootDir, const char *szFSName, const char *szFileName);
/*!
\brief
\param hFile --
2 years ago
\note
0\n
pDestMem使
2 years ago
*/
DSLIB_API BOOL DSCloseFile(HDSFILE hFile);
/*!
\brief
\param buffer --
\param size --
\param count --
\param hFile --
\retval --
2 years ago
*/
DSLIB_API size_t DSfread(void *buffer, size_t size, size_t count, HDSFILE hFile);
/*!
\brief ()
\param string --
\param origin --
\param hFile --
\retval --
2 years ago
*/
DSLIB_API char *DSfgets(char *string, int iMaxSize, HDSFILE hFile);
/*!
\brief ()
\param string --
\param origin --
\param hFile --
\param ioffset --
\retval --
2 years ago
\note
,
2 years ago
*/
DSLIB_API char *DSfgetsEx(char *string, int iMaxSize, HDSFILE hFile);
/*!
\brief
\param hFile --
\retval --
2 years ago
*/
DSLIB_API int DSfgetreadcount(HDSFILE hFile);
/*!
\brief
\param hFile --
\param offset -- origin
\param origin --
\retval -- 0
2 years ago
*/
DSLIB_API int DSfseek(HDSFILE hFile, long offset, int origin);
/*!
\brief
\param hFile --
\retval -- 0
2 years ago
*/
DSLIB_API int DSfeof(HDSFILE hFile);
/*!
\brief
\param hFile --
\retval -- 0
2 years ago
*/
DSLIB_API int DSfeofEx(HDSFILE hFile);
/*!
\brief
\param hFile --
\retval -- 0,
2 years ago
*/
DSLIB_API int DSfeob(HDSFILE hFile);
/*!
\brief
\param hFile --
\retval --
2 years ago
*/
DSLIB_API int DSftell(HDSFILE hFile);
DSLIB_API int DSHaveSection(char *pSection, HDSFILE hFile);
DSLIB_API int DSSaveSectionOffset(HDSFILE hFile);
DSLIB_API int DSRestoreSectionOffset(HDSFILE hFile);
DSLIB_API int DSAddSectionLines(int iLines, HDSFILE hFile);
DSLIB_API int DSSubSectionLines(int iLines, HDSFILE hFile);
DSLIB_API int DSSetSectionLinesAddFlag(int iFlag, HDSFILE hFile);
DSLIB_API int DSSectionisOver(int iReadLines, HDSFILE hFile);
/*!
\brief
\param szListFileName --
\param szDestFileName --
\param szDestDir --
\retval -- TRUE
2 years ago
\note
2 years ago
*/
DSLIB_API BOOL FsCombinAllFile(const char *szListFileName, const char *szDestFileName, const char *szDestDir);
/*!
\brief
\param szCombinFile --
\param szDestDir --
\retval -- TRUE
2 years ago
*/
DSLIB_API BOOL FsSplitAllFile(const char *szCombinFile, const char *szDestDir);
//测试用
2 years ago
/*!
\brief ()
\param szCombinFile --
\retval -- TRUE
2 years ago
*/
DSLIB_API BYTE *FsReadCombinFile(const char *szCombinFile);
DSLIB_API BYTE *FsReadCombinFileEx(const char *szCombinFile);
/*!
\brief
\param szFileSystem --
\param ppDestBuf --
\retval -- TRUE
2 years ago
*/
DSLIB_API BOOL FsLoadFileSystem(const char *szFileSystem, BYTE **ppDestBuf);
/*!
\brief
\param ppDestBuf --
\retval -- TRUE
2 years ago
*/
DSLIB_API BOOL FsUnLoadFileSystem(BYTE **ppDestBuf);
/*!
\brief
\param szPath --
\param szFileSystem --
\retval -- TRUE
2 years ago
*/
DSLIB_API BOOL FsDirFileName(const char *szPath, const char *szFileSystem);
DSLIB_API void FsDispHead(const char *szName, const char *szFileSystem);
BOOL FsNetToHost(BYTE *pFSBuf);
BOOL FsHostToNet(BYTE *pFSBuf);
void DispMemoryData(const BYTE *pu8Addr, int iLen, int iNumofLine);
#endif