mirror of https://github.com/ventoy/Ventoy.git
575 lines
13 KiB
C
575 lines
13 KiB
C
|
/******************************************************************************
|
|||
|
* bios_9660.h
|
|||
|
*
|
|||
|
* Copyright (c) 2020, longpanda <admin@ventoy.net>
|
|||
|
*
|
|||
|
* This program is free software; you can redistribute it and/or
|
|||
|
* modify it under the terms of the GNU General Public License as
|
|||
|
* published by the Free Software Foundation; either version 3 of the
|
|||
|
* License, or (at your option) any later version.
|
|||
|
*
|
|||
|
* This program is distributed in the hope that it will be useful, but
|
|||
|
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
|||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|||
|
* General Public License for more details.
|
|||
|
*
|
|||
|
* You should have received a copy of the GNU General Public License
|
|||
|
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
|||
|
*
|
|||
|
*/
|
|||
|
|
|||
|
#ifndef __BISO_9660_H__
|
|||
|
#define __BISO_9660_H__
|
|||
|
|
|||
|
#define BISO_SECTOR_SIZE 2048
|
|||
|
|
|||
|
#define BISO_BLOCK_SIZE 2048
|
|||
|
|
|||
|
#define BISO_SYSTEM_AREA_SIZE (16 * BISO_SECTOR_SIZE)
|
|||
|
|
|||
|
/* Volume Descriptor */
|
|||
|
#define BISO_VD_TYPE_BOOT 0
|
|||
|
#define BISO_VD_TYPE_PVD 1
|
|||
|
#define BISO_VD_TYPE_SVD 2
|
|||
|
#define BISO_VD_TYPE_PART 3
|
|||
|
#define BISO_VD_TYPE_END 255
|
|||
|
|
|||
|
#define BISO_VD_ID "CD001"
|
|||
|
|
|||
|
#define BISO_USED_SECTOR_NUM(uiFileSize) \
|
|||
|
(uiFileSize / BISO_SECTOR_SIZE) + ((uiFileSize % BISO_SECTOR_SIZE > 0) ? 1 : 0)
|
|||
|
|
|||
|
#define BISO_9660_IS_CURRENT(pstDirRecord) \
|
|||
|
(((1 == pstDirRecord->ucNameLen) && (0x0 == pstDirRecord->szName[0])) ? BOOL_TRUE : BOOL_FALSE)
|
|||
|
|
|||
|
#define BISO_9660_IS_PARENT(pstDirRecord) \
|
|||
|
(((1 == pstDirRecord->ucNameLen) && (0x1 == pstDirRecord->szName[0])) ? BOOL_TRUE : BOOL_FALSE)
|
|||
|
|
|||
|
#define BISO_9600_FREE_STAT(pstDir) \
|
|||
|
{ \
|
|||
|
if (NULL != pstDir->pstDirStat) \
|
|||
|
{ \
|
|||
|
BISO_FREE(pstDir->pstDirStat); \
|
|||
|
}\
|
|||
|
}
|
|||
|
|
|||
|
#define BISO_9600_FREE_POSIX(pstDir) \
|
|||
|
{ \
|
|||
|
if (NULL != pstDir->pstPosixInfo) \
|
|||
|
{ \
|
|||
|
if (NULL != pstDir->pstPosixInfo->pcLinkSrc) \
|
|||
|
{ \
|
|||
|
BISO_FREE(pstDir->pstPosixInfo->pcLinkSrc); \
|
|||
|
} \
|
|||
|
BISO_FREE(pstDir->pstPosixInfo); \
|
|||
|
} \
|
|||
|
}
|
|||
|
|
|||
|
#define BISO_9600_FREE_DIRTREE(pstDir) \
|
|||
|
{ \
|
|||
|
BISO_9600_FREE_STAT(pstDir); \
|
|||
|
BISO_9600_FREE_POSIX(pstDir); \
|
|||
|
BISO_FREE(pstDir); \
|
|||
|
}
|
|||
|
|
|||
|
#if (__BYTE_ORDER == __LITTLE_ENDIAN)
|
|||
|
|
|||
|
#define BISO_DEF_723(usData) \
|
|||
|
UINT16 usData;\
|
|||
|
UINT16 usData##Swap;
|
|||
|
|
|||
|
#define BISO_DEF_733(uiData) \
|
|||
|
UINT32 uiData;\
|
|||
|
UINT32 uiData##Swap;
|
|||
|
|
|||
|
#define BISO_PATHTBL_LOCATION(pstPVD) (pstPVD->uiTypeLPathTblLoc)
|
|||
|
|
|||
|
#elif (__BYTE_ORDER == __BIG_ENDIAN)
|
|||
|
|
|||
|
#define BISO_DEF_723(usData) \
|
|||
|
UINT16 usData##Swap;\
|
|||
|
UINT16 usData;
|
|||
|
|
|||
|
#define BISO_DEF_733(uiData) \
|
|||
|
UINT32 uiData##Swap;\
|
|||
|
UINT32 uiData;
|
|||
|
|
|||
|
#define BISO_PATHTBL_LOCATION(pstPVD) (pstPVD->uiTypeMPathTblLoc)
|
|||
|
|
|||
|
#else
|
|||
|
#error ("you must first define __BYTE_ORDER !!!")
|
|||
|
#endif
|
|||
|
|
|||
|
#pragma pack(1)
|
|||
|
|
|||
|
typedef struct tagBISO_DATE_915
|
|||
|
{
|
|||
|
UCHAR ucYear; /* 1900+ */
|
|||
|
UCHAR ucMonth;
|
|||
|
UCHAR ucDay;
|
|||
|
UCHAR ucHour;
|
|||
|
UCHAR ucMin;
|
|||
|
UCHAR ucSec;
|
|||
|
CHAR cTimeZone;
|
|||
|
}BISO_DATE_915_S;
|
|||
|
|
|||
|
typedef struct tagBISO_PATH_TABLE
|
|||
|
{
|
|||
|
UCHAR ucDirNameLen;
|
|||
|
|
|||
|
UCHAR ucExtAttrRecordLen;
|
|||
|
|
|||
|
UINT32 uiExtent;
|
|||
|
|
|||
|
UINT16 usParentDirNum;
|
|||
|
|
|||
|
CHAR szDirName[1];
|
|||
|
|
|||
|
/* UCHAR ucPadding; */
|
|||
|
}BISO_PATH_TABLE_S;
|
|||
|
|
|||
|
#define BISO_9660_PATH_LEN(pstPath) (pstPath->ucDirNameLen + 8 + (pstPath->ucDirNameLen & 0x01))
|
|||
|
|
|||
|
typedef struct tagBISO_DIR_RECORD
|
|||
|
{
|
|||
|
UCHAR ucLength;
|
|||
|
|
|||
|
UCHAR ucExtAttrLen;
|
|||
|
|
|||
|
BISO_DEF_733(uiExtent)
|
|||
|
|
|||
|
BISO_DEF_733(uiSize)
|
|||
|
|
|||
|
BISO_DATE_915_S stDate;
|
|||
|
|
|||
|
UCHAR ucFlags;
|
|||
|
|
|||
|
UCHAR ucFileUnitSize;
|
|||
|
|
|||
|
UCHAR ucInterLeave;
|
|||
|
|
|||
|
BISO_DEF_723(uiVolumeSeqNum)
|
|||
|
|
|||
|
UCHAR ucNameLen;
|
|||
|
|
|||
|
CHAR szName[1];
|
|||
|
|
|||
|
/* UCHAR aucSystemUse[xxxx] */
|
|||
|
}BISO_DIR_RECORD_S;
|
|||
|
|
|||
|
#define BISO_DIR_RECORD_IS_PATH(pstDirRecord) \
|
|||
|
((1 == ((pstDirRecord->ucFlags >> 1) & 0x01)) ? BOOL_TRUE : BOOL_FALSE)
|
|||
|
|
|||
|
typedef struct tagBISO_VOLUME_DESC
|
|||
|
{
|
|||
|
UCHAR ucType;
|
|||
|
|
|||
|
CHAR szId[5];
|
|||
|
|
|||
|
UCHAR ucVersion;
|
|||
|
|
|||
|
UCHAR ucData[2041];
|
|||
|
}BISO_VD_S;
|
|||
|
|
|||
|
typedef struct tagBISO_PRIMARY_VOLUME_DESC
|
|||
|
{
|
|||
|
UCHAR ucType;
|
|||
|
|
|||
|
CHAR szId[5];
|
|||
|
|
|||
|
/* ucVersion: version [ISODCL ( 7, 7)] */
|
|||
|
UCHAR ucVersion;
|
|||
|
|
|||
|
/* ucResv1: unused1 [ISODCL ( 8, 8)] */
|
|||
|
UCHAR ucResv1;
|
|||
|
|
|||
|
/*
|
|||
|
* szSystemId[32]: system_id [ISODCL ( 9, 40)]
|
|||
|
*/
|
|||
|
CHAR szSystemId[32];
|
|||
|
|
|||
|
/* szVolumeId[32]: volume_id [ISODCL ( 41, 72)] */
|
|||
|
CHAR szVolumeId[32];
|
|||
|
|
|||
|
/* aucResv2[8]: unused2 [ISODCL ( 73, 80)] */
|
|||
|
UCHAR aucResv2[8];
|
|||
|
|
|||
|
BISO_DEF_733(uiVolumeSpace)
|
|||
|
|
|||
|
/* aucResv3[32]: unused3 [ISODCL ( 89, 120)] */
|
|||
|
UCHAR aucResv3[32];
|
|||
|
|
|||
|
BISO_DEF_723(usVolumeSet)
|
|||
|
|
|||
|
/*
|
|||
|
* usVolumeSeq: volume_sequence_number [ISODCL (125, 128)]
|
|||
|
*/
|
|||
|
BISO_DEF_723(usVolumeSeq)
|
|||
|
|
|||
|
/*
|
|||
|
* usBlockSize: logical_block_size [ISODCL (129, 132)]
|
|||
|
*/
|
|||
|
BISO_DEF_723(usBlockSize)
|
|||
|
|
|||
|
/*
|
|||
|
* uiPathTblSize: path_table_size [ISODCL (133, 140)]
|
|||
|
*/
|
|||
|
BISO_DEF_733(uiPathTblSize)
|
|||
|
|
|||
|
UINT32 uiTypeLPathTblLoc;
|
|||
|
|
|||
|
UINT32 uiOptTypeLPathTblLoc;
|
|||
|
|
|||
|
UINT32 uiTypeMPathTblLoc;
|
|||
|
|
|||
|
UINT32 uiOptTypeMPathTblLoc;
|
|||
|
|
|||
|
BISO_DIR_RECORD_S stRootDirRecord;
|
|||
|
|
|||
|
/* szVolumeSetId: volume_set_id [ISODCL (191, 318)] */
|
|||
|
CHAR szVolumeSetId[128];
|
|||
|
|
|||
|
/* szPublisherId: publisher_id [ISODCL (319, 446)] */
|
|||
|
CHAR szPublisherId[128];
|
|||
|
|
|||
|
/* szPreparerId: preparer_id [ISODCL (447, 574)] */
|
|||
|
CHAR szPreparerId[128];
|
|||
|
|
|||
|
/* szApplicationId: application_id [ISODCL (575, 702)] */
|
|||
|
CHAR szApplicationId[128];
|
|||
|
|
|||
|
/* szCopyrightFileId: copyright_file_id [ISODCL (703, 739)] [1] */
|
|||
|
CHAR szCopyrightFileId[37];
|
|||
|
|
|||
|
/* szAbstractFileId: abstract_file_id [ISODCL (740, 776)] */
|
|||
|
CHAR szAbstractFileId[37];
|
|||
|
|
|||
|
/* szBibliographicFileId: bibliographic_file_id [ISODCL (777, 813)] */
|
|||
|
CHAR szBibliographicFileId[37];
|
|||
|
|
|||
|
/* szCreationDate: creation_date [ISODCL (814, 830)] */
|
|||
|
CHAR szCreationDate[17];
|
|||
|
|
|||
|
/* szModifyDate: modification_date [ISODCL (831, 847)] */
|
|||
|
CHAR szModifyDate[17];
|
|||
|
|
|||
|
/* szExpirationDate: expiration_date [ISODCL (848, 864)] */
|
|||
|
CHAR szExpirationDate[17];
|
|||
|
|
|||
|
/* szEffectiveDate: effective_date [ISODCL (865, 881)] */
|
|||
|
CHAR szEffectiveDate[17];
|
|||
|
|
|||
|
/* ucFileStructVer: file_structure_version [ISODCL (882, 882)] */
|
|||
|
UCHAR ucFileStructVer;
|
|||
|
|
|||
|
/* ucResv4: unused4 [ISODCL (883, 883)] */
|
|||
|
UCHAR ucResv4;
|
|||
|
|
|||
|
/* aucApplicationData: application_data [ISODCL (884, 1395)] */
|
|||
|
UCHAR aucApplicationData[512];
|
|||
|
|
|||
|
/* ucResv5: unused5 [ISODCL (1396, 2048)] */
|
|||
|
UCHAR aucResv5[653];
|
|||
|
}BISO_PVD_S;
|
|||
|
|
|||
|
typedef struct tagBISO_SUPPLEMENTARY_VOLUME_DESC
|
|||
|
{
|
|||
|
UCHAR ucType;
|
|||
|
|
|||
|
/*
|
|||
|
* szId[5]: id [ISODCL ( 2, 6)]
|
|||
|
*/
|
|||
|
CHAR szId[5];
|
|||
|
|
|||
|
/* ucVersion: version [ISODCL ( 7, 7)] */
|
|||
|
UCHAR ucVersion;
|
|||
|
|
|||
|
/*
|
|||
|
* ucFlags: flags [ISODCL ( 8, 8)]
|
|||
|
*/
|
|||
|
UCHAR ucFlags;
|
|||
|
|
|||
|
/*
|
|||
|
* szSystemId[32]: system_id [ISODCL ( 9, 40)]
|
|||
|
*/
|
|||
|
CHAR szSystemId[32];
|
|||
|
|
|||
|
/* szVolumeId[32]: volume_id [ISODCL ( 41, 72)] 名称, 注意[1] */
|
|||
|
CHAR szVolumeId[32];
|
|||
|
|
|||
|
/* aucResv2[8]: unused2 [ISODCL ( 73, 80)] */
|
|||
|
UCHAR aucResv2[8];
|
|||
|
|
|||
|
/*
|
|||
|
* uiVolumeSpace: volume_space_size [ISODCL ( 81, 88)]
|
|||
|
*/
|
|||
|
BISO_DEF_733(uiVolumeSpace)
|
|||
|
|
|||
|
/* aucEscape[32]: escape [ISODCL ( 89, 120)] */
|
|||
|
UCHAR aucEscape[32];
|
|||
|
|
|||
|
/*
|
|||
|
* usVolumeSet: volume_set_size [ISODCL (121, 124)]
|
|||
|
*/
|
|||
|
BISO_DEF_723(usVolumeSet)
|
|||
|
|
|||
|
/*
|
|||
|
* usVolumeSeq: volume_sequence_number [ISODCL (125, 128)]
|
|||
|
*/
|
|||
|
BISO_DEF_723(usVolumeSeq)
|
|||
|
|
|||
|
/*
|
|||
|
* usBlockSize: logical_block_size [ISODCL (129, 132)]
|
|||
|
*/
|
|||
|
BISO_DEF_723(usBlockSize)
|
|||
|
|
|||
|
BISO_DEF_733(uiPathTblSize)
|
|||
|
|
|||
|
UINT32 uiTypeLPathTblLoc;
|
|||
|
|
|||
|
UINT32 uiOptTypeLPathTblLoc;
|
|||
|
|
|||
|
UINT32 uiTypeMPathTblLoc;
|
|||
|
|
|||
|
UINT32 uiOptTypeMPathTblLoc;
|
|||
|
|
|||
|
BISO_DIR_RECORD_S stRootDirRecord;
|
|||
|
|
|||
|
/* szVolumeSetId: volume_set_id [ISODCL (191, 318)] */
|
|||
|
CHAR szVolumeSetId[128];
|
|||
|
|
|||
|
/* szPublisherId: publisher_id [ISODCL (319, 446)] */
|
|||
|
CHAR szPublisherId[128];
|
|||
|
|
|||
|
/* szPreparerId: preparer_id [ISODCL (447, 574)] */
|
|||
|
CHAR szPreparerId[128];
|
|||
|
|
|||
|
/* szApplicationId: application_id [ISODCL (575, 702)] */
|
|||
|
CHAR szApplicationId[128];
|
|||
|
|
|||
|
/* szCopyrightFileId: copyright_file_id [ISODCL (703, 739)] */
|
|||
|
CHAR szCopyrightFileId[37];
|
|||
|
|
|||
|
/* szAbstractFileId: abstract_file_id [ISODCL (740, 776)]*/
|
|||
|
CHAR szAbstractFileId[37];
|
|||
|
|
|||
|
/* szBibliographicFileId: bibliographic_file_id [ISODCL (777, 813)] */
|
|||
|
CHAR szBibliographicFileId[37];
|
|||
|
|
|||
|
/* szCreationDate: creation_date [ISODCL (814, 830)]*/
|
|||
|
CHAR szCreationDate[17];
|
|||
|
|
|||
|
/* szModifyDate: modification_date [ISODCL (831, 847)] */
|
|||
|
CHAR szModifyDate[17];
|
|||
|
|
|||
|
/* szExpirationDate: expiration_date [ISODCL (848, 864)] */
|
|||
|
CHAR szExpirationDate[17];
|
|||
|
|
|||
|
/* szEffectiveDate: effective_date [ISODCL (865, 881)] */
|
|||
|
CHAR szEffectiveDate[17];
|
|||
|
|
|||
|
/* ucFileStructVer: file_structure_version [ISODCL (882, 882)] */
|
|||
|
UCHAR ucFileStructVer;
|
|||
|
|
|||
|
/* ucResv4: unused4 [ISODCL (883, 883)] */
|
|||
|
UCHAR ucResv4;
|
|||
|
|
|||
|
/* aucApplicationData: application_data [ISODCL (884, 1395)] */
|
|||
|
UCHAR aucApplicationData[512];
|
|||
|
|
|||
|
/* ucResv5: unused5 [ISODCL (1396, 2048)] */
|
|||
|
UCHAR aucResv5[653];
|
|||
|
}BISO_SVD_S;
|
|||
|
|
|||
|
typedef struct tagBISO_BOOT_DESC
|
|||
|
{
|
|||
|
UCHAR ucType;
|
|||
|
/*
|
|||
|
* szId[5]: id [ISODCL ( 2, 6)]
|
|||
|
*/
|
|||
|
CHAR szId[5];
|
|||
|
|
|||
|
/* ucVersion: version [ISODCL ( 7, 7)] */
|
|||
|
UCHAR ucVersion;
|
|||
|
|
|||
|
CHAR szBootSystemId[32];
|
|||
|
|
|||
|
UCHAR aucResv[32];
|
|||
|
|
|||
|
UINT32 uiBootCatlogStart;
|
|||
|
|
|||
|
UCHAR aucBootData[1972];
|
|||
|
}BISO_BVD_S;
|
|||
|
|
|||
|
typedef struct tagBISO_EXTATTR_RECORD
|
|||
|
{
|
|||
|
BISO_DEF_723(usOwnerId)
|
|||
|
BISO_DEF_723(usGroupId)
|
|||
|
|
|||
|
USHORT usPermission;
|
|||
|
|
|||
|
CHAR szFileCreateDate[17];
|
|||
|
CHAR szFileModifyDate[17];
|
|||
|
CHAR szFileExpirationDate[17];
|
|||
|
CHAR szFileEffectiveDate[17];
|
|||
|
|
|||
|
UCHAR ucRecordFormat;
|
|||
|
|
|||
|
UCHAR ucRecordAttr;
|
|||
|
|
|||
|
BISO_DEF_723(usRecordLen)
|
|||
|
|
|||
|
CHAR szSystemId[32];
|
|||
|
|
|||
|
UCHAR aucSystemData[64];
|
|||
|
|
|||
|
UCHAR ucRecordVersion;
|
|||
|
|
|||
|
UCHAR ucEscapeLen;
|
|||
|
|
|||
|
UCHAR aucResv[64];
|
|||
|
|
|||
|
BISO_DEF_723(usAppDataLen)
|
|||
|
|
|||
|
/* UCHAR aucAppData[xxx]; */
|
|||
|
/* UCHAR aucEscape[xxx]; */
|
|||
|
}BISO_EXTATTR_RECORD_S;
|
|||
|
|
|||
|
#pragma pack()
|
|||
|
|
|||
|
typedef struct tagBISO_VD_NODE
|
|||
|
{
|
|||
|
BISO_DLL_NODE_S stNode;
|
|||
|
BISO_VD_S stVD;
|
|||
|
}BISO_VD_NODE_S;
|
|||
|
|
|||
|
typedef struct tagBISO_POSIX_INFO
|
|||
|
{
|
|||
|
BOOL_T bHasNMEntry;
|
|||
|
UINT uiPosixFileMode;
|
|||
|
UINT uiPosixFileLink;
|
|||
|
UINT uiPosixFileUserId;
|
|||
|
UINT uiPosixFileGroupId;
|
|||
|
UINT uiPosixFileSNO;
|
|||
|
UINT64 ui64DevNum;
|
|||
|
BISO_DATE_S stCreateTime;
|
|||
|
BISO_DATE_S stModifyTime;
|
|||
|
BISO_DATE_S stLastAccessTime;
|
|||
|
BISO_DATE_S stLastAttrChangeTime;
|
|||
|
BISO_DATE_S stLastBackupTime;
|
|||
|
BISO_DATE_S stExpirationTime;
|
|||
|
BISO_DATE_S stEffectiveTime;
|
|||
|
|
|||
|
UINT uiLinkLen;
|
|||
|
CHAR *pcLinkSrc;
|
|||
|
}BISO_POSIX_INFO_S;
|
|||
|
|
|||
|
typedef struct tagBISO_SVD_DIR_TREE
|
|||
|
{
|
|||
|
struct tagBISO_SVD_DIR_TREE *pstParent;
|
|||
|
struct tagBISO_SVD_DIR_TREE *pstNext;
|
|||
|
struct tagBISO_SVD_DIR_TREE *pstChild;
|
|||
|
|
|||
|
UINT uiExtent;
|
|||
|
UINT uiSize;
|
|||
|
|
|||
|
UINT64 ui64FileRecordOffset;
|
|||
|
struct tagBISO_SVD_DIR_TREE *pstFileList;
|
|||
|
}BISO_SVD_DIR_TREE_S;
|
|||
|
|
|||
|
typedef struct tagBISO_DIR_TREE
|
|||
|
{
|
|||
|
struct tagBISO_DIR_TREE *pstParent;
|
|||
|
struct tagBISO_DIR_TREE *pstNext;
|
|||
|
struct tagBISO_DIR_TREE *pstChild;
|
|||
|
|
|||
|
USHORT usNameLen;
|
|||
|
CHAR szName[300];
|
|||
|
UINT uiPathTblId;
|
|||
|
UINT uiExtent;
|
|||
|
UINT uiSize;
|
|||
|
|
|||
|
UINT64 ui64FileRecordOffset;
|
|||
|
|
|||
|
BISO_DIR_STAT_S *pstDirStat;
|
|||
|
|
|||
|
BISO_POSIX_INFO_S *pstPosixInfo;
|
|||
|
|
|||
|
struct tagBISO_DIR_TREE *pstFileList;
|
|||
|
}BISO_DIR_TREE_S;
|
|||
|
|
|||
|
#define BISO_DIR_TREE_IS_SYMLINK(pstDirTree) \
|
|||
|
(((NULL != pstDirTree->pstPosixInfo) && \
|
|||
|
(NULL != pstDirTree->pstPosixInfo->pcLinkSrc)) ? BOOL_TRUE : BOOL_FALSE)
|
|||
|
|
|||
|
typedef struct tagBISO_PARSER
|
|||
|
{
|
|||
|
CHAR szFileName[1024];
|
|||
|
|
|||
|
BISO_PVD_S *pstPVD;
|
|||
|
BISO_SVD_S *pstSVD;
|
|||
|
BISO_BVD_S *pstBVD;
|
|||
|
BISO_DLL_S stVDList;
|
|||
|
|
|||
|
UCHAR *pucPathTable;
|
|||
|
|
|||
|
UINT uiElToritoLen;
|
|||
|
UCHAR *pucElToritoEntry;
|
|||
|
|
|||
|
UCHAR ucRRIPVersion;
|
|||
|
UCHAR ucRRIPSkipLen;
|
|||
|
|
|||
|
BISO_DIR_TREE_S stDirTree;
|
|||
|
|
|||
|
BISO_SVD_DIR_TREE_S stSVDDirTree;
|
|||
|
}BISO_PARSER_S;
|
|||
|
|
|||
|
ULONG BISO_9660_OpenImage
|
|||
|
(
|
|||
|
IN BOOL_T bParseSVDDirTree,
|
|||
|
IN CONST CHAR *pcFileName,
|
|||
|
OUT BISO_PARSER_S *pstParser
|
|||
|
);
|
|||
|
BISO_PARSER_S * BISO_9660_CreateParser(VOID);
|
|||
|
VOID BISO_9660_DestroyParser(INOUT BISO_PARSER_S *pstParser);
|
|||
|
ULONG BISO_9660_ParseDate84261
|
|||
|
(
|
|||
|
IN CONST CHAR *pcDate,
|
|||
|
OUT BISO_DATE_S *pstDate
|
|||
|
);
|
|||
|
VOID BISO_9660_FmtDate84261(IN time_t ulTime, IN UINT uiBufSize, OUT CHAR *pcDate);
|
|||
|
VOID BISO_9660_FillDfsStack
|
|||
|
(
|
|||
|
IN BISO_DIR_TREE_S *pstTop,
|
|||
|
INOUT BISO_QUEUE_S *pstQueue
|
|||
|
);
|
|||
|
ULONG BISO_9660_ExtractFile
|
|||
|
(
|
|||
|
IN BISO_FILE_S *pstFile,
|
|||
|
IN CONST CHAR *pcDstFullPath,
|
|||
|
IN CONST BISO_DIR_TREE_S *pstFileNode,
|
|||
|
IN CONST BISO_EXTRACT_CTRL_S *pstCtrl
|
|||
|
);
|
|||
|
|
|||
|
/* 拼接路径 */
|
|||
|
#define BISO_EXTRACE_CAT_PATH(szFullPath, uiCurPos, szName, NameLen) \
|
|||
|
{\
|
|||
|
memcpy(szFullPath + uiCurPos, szName, NameLen); \
|
|||
|
uiCurPos += NameLen; \
|
|||
|
szFullPath[uiCurPos++] = '/'; \
|
|||
|
szFullPath[uiCurPos] = 0; \
|
|||
|
}
|
|||
|
|
|||
|
/* 检查结果返回 */
|
|||
|
#define BISO_9660_CHECK_RET(ulRet, pstFile) \
|
|||
|
if (BISO_SUCCESS != ulRet) \
|
|||
|
{ \
|
|||
|
BISO_PLAT_CloseFile(pstFile); \
|
|||
|
return ulRet; \
|
|||
|
}
|
|||
|
|
|||
|
BISO_DIR_TREE_S * BISO_UTIL_FindLinkTgt(IN BISO_DIR_TREE_S *pstCurNode);
|
|||
|
|
|||
|
#endif /* __BISO_9660_H__ */
|
|||
|
|