mirror of
https://github.com/aaru-dps/libaaruformat.git
synced 2025-12-16 19:24:40 +00:00
Namespace functions.
This commit is contained in:
@@ -72,41 +72,41 @@
|
||||
#define FORCE_INLINE static inline __attribute__((always_inline))
|
||||
#endif
|
||||
|
||||
AARU_EXPORT int AARU_CALL identify(const char* filename);
|
||||
AARU_EXPORT int AARU_CALL aaruf_identify(const char* filename);
|
||||
|
||||
AARU_EXPORT int AARU_CALL identifyStream(FILE* imageStream);
|
||||
AARU_EXPORT int AARU_CALL aaruf_identify_stream(FILE* imageStream);
|
||||
|
||||
AARU_EXPORT void* AARU_CALL open(const char* filepath);
|
||||
AARU_EXPORT void* AARU_CALL aaruf_open(const char* filepath);
|
||||
|
||||
AARU_EXPORT int AARU_CALL close(void* context);
|
||||
AARU_EXPORT int AARU_CALL aaruf_close(void* context);
|
||||
|
||||
AARU_EXPORT int32_t AARU_CALL read_media_tag(void* context, uint8_t* data, int32_t tag, uint32_t* length);
|
||||
AARU_EXPORT int32_t AARU_CALL aaruf_read_media_tag(void* context, uint8_t* data, int32_t tag, uint32_t* length);
|
||||
|
||||
AARU_EXPORT void* AARU_CALL crc64_init(uint64_t polynomial, uint64_t seed);
|
||||
AARU_EXPORT void* AARU_CALL aaruf_crc64_init(uint64_t polynomial, uint64_t seed);
|
||||
|
||||
AARU_EXPORT void* AARU_CALL crc64_init_ecma(void);
|
||||
AARU_EXPORT void* AARU_CALL aaruf_crc64_init_ecma(void);
|
||||
|
||||
AARU_EXPORT void AARU_CALL crc64_update(void* context, const uint8_t* data, size_t len);
|
||||
AARU_EXPORT void AARU_CALL aaruf_crc64_update(void* context, const uint8_t* data, size_t len);
|
||||
|
||||
AARU_EXPORT uint64_t AARU_CALL crc64_final(void* context);
|
||||
AARU_EXPORT uint64_t AARU_CALL aaruf_crc64_final(void* context);
|
||||
|
||||
AARU_EXPORT uint64_t AARU_CALL crc64_data(const uint8_t* data, size_t len, uint64_t polynomial, uint64_t seed);
|
||||
AARU_EXPORT uint64_t AARU_CALL aaruf_crc64_data(const uint8_t* data, size_t len, uint64_t polynomial, uint64_t seed);
|
||||
|
||||
AARU_EXPORT uint64_t AARU_CALL crc64_data_ecma(const uint8_t* data, size_t len);
|
||||
AARU_EXPORT uint64_t AARU_CALL aaruf_crc64_data_ecma(const uint8_t* data, size_t len);
|
||||
|
||||
AARU_EXPORT int32_t AARU_CALL read_sector(void* context, uint64_t sectorAddress, uint8_t* data, uint32_t* length);
|
||||
AARU_EXPORT int32_t AARU_CALL aaruf_read_sector(void* context, uint64_t sectorAddress, uint8_t* data, uint32_t* length);
|
||||
|
||||
AARU_EXPORT int32_t AARU_CALL cst_transform(const uint8_t* interleaved, uint8_t* sequential, size_t length);
|
||||
AARU_EXPORT int32_t AARU_CALL aaruf_cst_transform(const uint8_t* interleaved, uint8_t* sequential, size_t length);
|
||||
|
||||
AARU_EXPORT int32_t AARU_CALL cst_untransform(const uint8_t* sequential, uint8_t* interleaved, size_t length);
|
||||
AARU_EXPORT int32_t AARU_CALL aaruf_cst_untransform(const uint8_t* sequential, uint8_t* interleaved, size_t length);
|
||||
|
||||
AARU_LOCAL void* AARU_CALL ecc_cd_init();
|
||||
AARU_EXPORT void* AARU_CALL aaruf_ecc_cd_init();
|
||||
|
||||
AARU_EXPORT bool AARU_CALL ecc_cd_is_suffix_correct(void* context, const uint8_t* sector);
|
||||
AARU_EXPORT bool AARU_CALL aaruf_ecc_cd_is_suffix_correct(void* context, const uint8_t* sector);
|
||||
|
||||
AARU_EXPORT bool AARU_CALL ecc_cd_is_suffix_correct_mode2(void* context, const uint8_t* sector);
|
||||
AARU_EXPORT bool AARU_CALL aaruf_ecc_cd_is_suffix_correct_mode2(void* context, const uint8_t* sector);
|
||||
|
||||
AARU_EXPORT bool AARU_CALL ecc_cd_check(void* context,
|
||||
AARU_EXPORT bool AARU_CALL aaruf_ecc_cd_check(void* context,
|
||||
const uint8_t* address,
|
||||
const uint8_t* data,
|
||||
uint32_t majorCount,
|
||||
@@ -118,7 +118,7 @@ AARU_EXPORT bool AARU_CALL ecc_cd_check(void* context,
|
||||
int32_t dataOffset,
|
||||
int32_t eccOffset);
|
||||
|
||||
AARU_EXPORT void AARU_CALL ecc_cd_write(void* context,
|
||||
AARU_EXPORT void AARU_CALL aaruf_ecc_cd_write(void* context,
|
||||
const uint8_t* address,
|
||||
const uint8_t* data,
|
||||
uint32_t majorCount,
|
||||
@@ -130,7 +130,7 @@ AARU_EXPORT void AARU_CALL ecc_cd_write(void* context,
|
||||
int32_t dataOffset,
|
||||
int32_t eccOffset);
|
||||
|
||||
AARU_EXPORT void AARU_CALL ecc_cd_write_sector(void* context,
|
||||
AARU_EXPORT void AARU_CALL aaruf_ecc_cd_write_sector(void* context,
|
||||
const uint8_t* address,
|
||||
const uint8_t* data,
|
||||
uint8_t* ecc,
|
||||
@@ -138,19 +138,19 @@ AARU_EXPORT void AARU_CALL ecc_cd_write_sector(void* context,
|
||||
int32_t dataOffset,
|
||||
int32_t eccOffset);
|
||||
|
||||
AARU_LOCAL void AARU_CALL cd_lba_to_msf(int64_t pos, uint8_t* minute, uint8_t* second, uint8_t* frame);
|
||||
AARU_LOCAL void AARU_CALL aaruf_cd_lba_to_msf(int64_t pos, uint8_t* minute, uint8_t* second, uint8_t* frame);
|
||||
|
||||
AARU_EXPORT void AARU_CALL ecc_cd_reconstruct_prefix(uint8_t* sector, uint8_t type, int64_t lba);
|
||||
AARU_EXPORT void AARU_CALL aaruf_ecc_cd_reconstruct_prefix(uint8_t* sector, uint8_t type, int64_t lba);
|
||||
|
||||
AARU_EXPORT void AARU_CALL ecc_cd_reconstruct(void* context, uint8_t* sector, uint8_t type);
|
||||
AARU_EXPORT void AARU_CALL aaruf_ecc_cd_reconstruct(void* context, uint8_t* sector, uint8_t type);
|
||||
|
||||
AARU_EXPORT uint32_t AARU_CALL edc_cd_compute(void* context, uint32_t edc, const uint8_t* src, int size, int pos);
|
||||
AARU_EXPORT uint32_t AARU_CALL aaruf_edc_cd_compute(void* context, uint32_t edc, const uint8_t* src, int size, int pos);
|
||||
|
||||
AARU_EXPORT int32_t AARU_CALL
|
||||
read_track_sector(void* context, uint8_t* data, uint64_t sectorAddress, uint32_t* length, uint8_t track);
|
||||
aaruf_read_track_sector(void* context, uint8_t* data, uint64_t sectorAddress, uint32_t* length, uint8_t track);
|
||||
|
||||
AARU_LOCAL int32_t AARU_CALL GetMediaTagTypeForDataType(int32_t type);
|
||||
AARU_LOCAL int32_t AARU_CALL aaruf_get_media_tag_type_for_datatype(int32_t type);
|
||||
|
||||
AARU_LOCAL int32_t AARU_CALL GetXmlMediaType(int32_t type);
|
||||
AARU_LOCAL int32_t AARU_CALL aaruf_get_xml_mediatype(int32_t type);
|
||||
|
||||
#endif // LIBAARUFORMAT_DECLS_H
|
||||
|
||||
@@ -36,7 +36,7 @@
|
||||
#include <stdio.h>
|
||||
#include <sys/mman.h>
|
||||
|
||||
int close(void* context)
|
||||
int aaruf_close(void* context)
|
||||
{
|
||||
int i;
|
||||
|
||||
|
||||
14
src/crc64.c
14
src/crc64.c
@@ -35,7 +35,7 @@
|
||||
#include <stdint.h>
|
||||
#include <string.h>
|
||||
|
||||
void* crc64_init(uint64_t polynomial, uint64_t seed)
|
||||
void* aaruf_crc64_init(uint64_t polynomial, uint64_t seed)
|
||||
{
|
||||
Crc64Context* ctx;
|
||||
int i, j;
|
||||
@@ -64,9 +64,9 @@ void* crc64_init(uint64_t polynomial, uint64_t seed)
|
||||
return ctx;
|
||||
}
|
||||
|
||||
void* crc64_init_ecma(void) { return crc64_init(CRC64_ECMA_POLY, CRC64_ECMA_SEED); }
|
||||
void* aaruf_crc64_init_ecma(void) { return aaruf_crc64_init(CRC64_ECMA_POLY, CRC64_ECMA_SEED); }
|
||||
|
||||
void crc64_update(void* context, const uint8_t* data, size_t len)
|
||||
void aaruf_crc64_update(void* context, const uint8_t* data, size_t len)
|
||||
{
|
||||
Crc64Context* ctx = context;
|
||||
size_t i;
|
||||
@@ -74,14 +74,14 @@ void crc64_update(void* context, const uint8_t* data, size_t len)
|
||||
for(i = 0; i < len; i++) ctx->hashInt = (ctx->hashInt >> 8) ^ ctx->table[data[i] ^ (ctx->hashInt & 0xFF)];
|
||||
}
|
||||
|
||||
uint64_t crc64_final(void* context)
|
||||
uint64_t aaruf_crc64_final(void* context)
|
||||
{
|
||||
Crc64Context* ctx = context;
|
||||
|
||||
return ctx->hashInt ^ ctx->finalSeed;
|
||||
}
|
||||
|
||||
uint64_t crc64_data(const uint8_t* data, size_t len, uint64_t polynomial, uint64_t seed)
|
||||
uint64_t aaruf_crc64_data(const uint8_t* data, size_t len, uint64_t polynomial, uint64_t seed)
|
||||
{
|
||||
uint64_t table[256];
|
||||
uint64_t hashInt = seed;
|
||||
@@ -105,7 +105,7 @@ uint64_t crc64_data(const uint8_t* data, size_t len, uint64_t polynomial, uint64
|
||||
return hashInt ^ seed;
|
||||
}
|
||||
|
||||
uint64_t crc64_data_ecma(const uint8_t* data, size_t len)
|
||||
uint64_t aaruf_crc64_data_ecma(const uint8_t* data, size_t len)
|
||||
{
|
||||
return crc64_data(data, len, CRC64_ECMA_POLY, CRC64_ECMA_SEED);
|
||||
return aaruf_crc64_data(data, len, CRC64_ECMA_POLY, CRC64_ECMA_SEED);
|
||||
}
|
||||
|
||||
@@ -35,7 +35,7 @@
|
||||
#include <stdint.h>
|
||||
#include <string.h>
|
||||
|
||||
int32_t cst_transform(const uint8_t* interleaved, uint8_t* sequential, size_t length)
|
||||
int32_t aaruf_cst_transform(const uint8_t* interleaved, uint8_t* sequential, size_t length)
|
||||
{
|
||||
uint8_t *p, *q, *r, *s, *t, *u, *v, *w;
|
||||
size_t qStart;
|
||||
@@ -169,7 +169,7 @@ int32_t cst_transform(const uint8_t* interleaved, uint8_t* sequential, size_t le
|
||||
return AARUF_STATUS_OK;
|
||||
}
|
||||
|
||||
int32_t cst_untransform(const uint8_t* sequential, uint8_t* interleaved, size_t length)
|
||||
int32_t aaruf_cst_untransform(const uint8_t* sequential, uint8_t* interleaved, size_t length)
|
||||
{
|
||||
uint8_t *p, *q, *r, *s, *t, *u, *v, *w;
|
||||
size_t qStart;
|
||||
|
||||
44
src/ecc_cd.c
44
src/ecc_cd.c
@@ -37,7 +37,7 @@
|
||||
#include <stdint.h>
|
||||
#include <string.h>
|
||||
|
||||
void* ecc_cd_init()
|
||||
void* aaruf_ecc_cd_init()
|
||||
{
|
||||
CdEccContext* context;
|
||||
uint32_t edc, i, j;
|
||||
@@ -87,7 +87,7 @@ void* ecc_cd_init()
|
||||
return context;
|
||||
}
|
||||
|
||||
bool ecc_cd_is_suffix_correct(void* context, const uint8_t* sector)
|
||||
bool aaruf_ecc_cd_is_suffix_correct(void* context, const uint8_t* sector)
|
||||
{
|
||||
CdEccContext* ctx;
|
||||
uint32_t storedEdc, edc, calculatedEdc;
|
||||
@@ -105,10 +105,10 @@ bool ecc_cd_is_suffix_correct(void* context, const uint8_t* sector)
|
||||
sector[0x819] != 0x00 || sector[0x81A] != 0x00 || sector[0x81B] != 0x00)
|
||||
return false;
|
||||
|
||||
bool correctEccP = ecc_cd_check(context, sector, sector, 86, 24, 2, 86, sector, 0xC, 0x10, 0x81C);
|
||||
bool correctEccP = aaruf_ecc_cd_check(context, sector, sector, 86, 24, 2, 86, sector, 0xC, 0x10, 0x81C);
|
||||
if(!correctEccP) return false;
|
||||
|
||||
bool correctEccQ = ecc_cd_check(context, sector, sector, 52, 43, 86, 88, sector, 0xC, 0x10, 0x81C + 0xAC);
|
||||
bool correctEccQ = aaruf_ecc_cd_check(context, sector, sector, 52, 43, 86, 88, sector, 0xC, 0x10, 0x81C + 0xAC);
|
||||
if(!correctEccQ) return false;
|
||||
|
||||
storedEdc = sector[0x810]; // TODO: Check casting
|
||||
@@ -121,7 +121,7 @@ bool ecc_cd_is_suffix_correct(void* context, const uint8_t* sector)
|
||||
return calculatedEdc == storedEdc;
|
||||
}
|
||||
|
||||
bool ecc_cd_is_suffix_correct_mode2(void* context, const uint8_t* sector)
|
||||
bool aaruf_ecc_cd_is_suffix_correct_mode2(void* context, const uint8_t* sector)
|
||||
{
|
||||
CdEccContext* ctx;
|
||||
uint32_t storedEdc, edc, calculatedEdc;
|
||||
@@ -136,10 +136,10 @@ bool ecc_cd_is_suffix_correct_mode2(void* context, const uint8_t* sector)
|
||||
|
||||
memset(&zeroaddress, 4, sizeof(uint8_t));
|
||||
|
||||
bool correctEccP = ecc_cd_check(context, zeroaddress, sector, 86, 24, 2, 86, sector, 0, 0x10, 0x81C);
|
||||
bool correctEccP = aaruf_ecc_cd_check(context, zeroaddress, sector, 86, 24, 2, 86, sector, 0, 0x10, 0x81C);
|
||||
if(!correctEccP) return false;
|
||||
|
||||
bool correctEccQ = ecc_cd_check(context, zeroaddress, sector, 52, 43, 86, 88, sector, 0, 0x10, 0x81C + 0xAC);
|
||||
bool correctEccQ = aaruf_ecc_cd_check(context, zeroaddress, sector, 52, 43, 86, 88, sector, 0, 0x10, 0x81C + 0xAC);
|
||||
if(!correctEccQ) return false;
|
||||
|
||||
storedEdc = sector[0x818]; // TODO: Check cast
|
||||
@@ -152,7 +152,7 @@ bool ecc_cd_is_suffix_correct_mode2(void* context, const uint8_t* sector)
|
||||
return calculatedEdc == storedEdc;
|
||||
}
|
||||
|
||||
bool ecc_cd_check(void* context,
|
||||
bool aaruf_ecc_cd_check(void* context,
|
||||
const uint8_t* address,
|
||||
const uint8_t* data,
|
||||
uint32_t majorCount,
|
||||
@@ -197,7 +197,7 @@ bool ecc_cd_check(void* context,
|
||||
return true;
|
||||
}
|
||||
|
||||
void ecc_cd_write(void* context,
|
||||
void aaruf_ecc_cd_write(void* context,
|
||||
const uint8_t* address,
|
||||
const uint8_t* data,
|
||||
uint32_t majorCount,
|
||||
@@ -242,7 +242,7 @@ void ecc_cd_write(void* context,
|
||||
}
|
||||
}
|
||||
|
||||
void ecc_cd_write_sector(void* context,
|
||||
void aaruf_ecc_cd_write_sector(void* context,
|
||||
const uint8_t* address,
|
||||
const uint8_t* data,
|
||||
uint8_t* ecc,
|
||||
@@ -250,18 +250,18 @@ void ecc_cd_write_sector(void* context,
|
||||
int32_t dataOffset,
|
||||
int32_t eccOffset)
|
||||
{
|
||||
ecc_cd_write(context, address, data, 86, 24, 2, 86, ecc, addressOffset, dataOffset, eccOffset); // P
|
||||
ecc_cd_write(context, address, data, 52, 43, 86, 88, ecc, addressOffset, dataOffset, eccOffset + 0xAC); // Q
|
||||
aaruf_ecc_cd_write(context, address, data, 86, 24, 2, 86, ecc, addressOffset, dataOffset, eccOffset); // P
|
||||
aaruf_ecc_cd_write(context, address, data, 52, 43, 86, 88, ecc, addressOffset, dataOffset, eccOffset + 0xAC); // Q
|
||||
}
|
||||
|
||||
void cd_lba_to_msf(int64_t pos, uint8_t* minute, uint8_t* second, uint8_t* frame)
|
||||
void aaruf_cd_lba_to_msf(int64_t pos, uint8_t* minute, uint8_t* second, uint8_t* frame)
|
||||
{
|
||||
*minute = (uint8_t)((pos + 150) / 75 / 60);
|
||||
*second = (uint8_t)((pos + 150) / 75 % 60);
|
||||
*frame = (uint8_t)((pos + 150) % 75);
|
||||
}
|
||||
|
||||
void ecc_cd_reconstruct_prefix(uint8_t* sector, // must point to a full 2352-byte sector
|
||||
void aaruf_ecc_cd_reconstruct_prefix(uint8_t* sector, // must point to a full 2352-byte sector
|
||||
uint8_t type,
|
||||
int64_t lba)
|
||||
{
|
||||
@@ -285,7 +285,7 @@ void ecc_cd_reconstruct_prefix(uint8_t* sector, // must point to a full 2352-byt
|
||||
sector[0x00A] = 0xFF;
|
||||
sector[0x00B] = 0x00;
|
||||
|
||||
cd_lba_to_msf(lba, &minute, &second, &frame);
|
||||
aaruf_cd_lba_to_msf(lba, &minute, &second, &frame);
|
||||
|
||||
sector[0x00C] = (uint8_t)(((minute / 10) << 4) + minute % 10);
|
||||
sector[0x00D] = (uint8_t)(((second / 10) << 4) + second % 10);
|
||||
@@ -318,7 +318,7 @@ void ecc_cd_reconstruct_prefix(uint8_t* sector, // must point to a full 2352-byt
|
||||
}
|
||||
}
|
||||
|
||||
void ecc_cd_reconstruct(void* context,
|
||||
void aaruf_ecc_cd_reconstruct(void* context,
|
||||
uint8_t* sector, // must point to a full 2352-byte sector
|
||||
uint8_t type)
|
||||
{
|
||||
@@ -339,15 +339,15 @@ void ecc_cd_reconstruct(void* context,
|
||||
// Compute EDC
|
||||
//
|
||||
case CdMode1:
|
||||
computedEdc = edc_cd_compute(context, 0, sector, 0x810, 0);
|
||||
computedEdc = aaruf_edc_cd_compute(context, 0, sector, 0x810, 0);
|
||||
memcpy(sector + 0x810, &computedEdc, 4);
|
||||
break;
|
||||
case CdMode2Form1:
|
||||
computedEdc = edc_cd_compute(context, 0, sector, 0x808, 0x10);
|
||||
computedEdc = aaruf_edc_cd_compute(context, 0, sector, 0x808, 0x10);
|
||||
memcpy(sector + 0x818, &computedEdc, 4);
|
||||
break;
|
||||
case CdMode2Form2:
|
||||
computedEdc = edc_cd_compute(context, 0, sector, 0x91C, 0x10);
|
||||
computedEdc = aaruf_edc_cd_compute(context, 0, sector, 0x91C, 0x10);
|
||||
memcpy(sector + 0x92C, &computedEdc, 4);
|
||||
break;
|
||||
default: return;
|
||||
@@ -372,9 +372,9 @@ void ecc_cd_reconstruct(void* context,
|
||||
sector[0x819] = 0x00;
|
||||
sector[0x81A] = 0x00;
|
||||
sector[0x81B] = 0x00;
|
||||
ecc_cd_write_sector(context, sector, sector, sector, 0xC, 0x10, 0x81C);
|
||||
aaruf_ecc_cd_write_sector(context, sector, sector, sector, 0xC, 0x10, 0x81C);
|
||||
break;
|
||||
case CdMode2Form1: ecc_cd_write_sector(context, zeroaddress, sector, sector, 0, 0x10, 0x81C); break;
|
||||
case CdMode2Form1: aaruf_ecc_cd_write_sector(context, zeroaddress, sector, sector, 0, 0x10, 0x81C); break;
|
||||
default: return;
|
||||
}
|
||||
|
||||
@@ -383,7 +383,7 @@ void ecc_cd_reconstruct(void* context,
|
||||
//
|
||||
}
|
||||
|
||||
uint32_t edc_cd_compute(void* context, uint32_t edc, const uint8_t* src, int size, int pos)
|
||||
uint32_t aaruf_edc_cd_compute(void* context, uint32_t edc, const uint8_t* src, int size, int pos)
|
||||
{
|
||||
CdEccContext* ctx;
|
||||
|
||||
|
||||
@@ -34,7 +34,7 @@
|
||||
#include <aaruformat.h>
|
||||
|
||||
// Converts between image data type and aaru media tag type
|
||||
int32_t GetMediaTagTypeForDataType(int32_t type)
|
||||
int32_t aaruf_get_media_tag_type_for_datatype(int32_t type)
|
||||
{
|
||||
switch(type)
|
||||
{
|
||||
@@ -112,7 +112,7 @@ int32_t GetMediaTagTypeForDataType(int32_t type)
|
||||
}
|
||||
|
||||
// Get the CICM XML media type from AARU media type
|
||||
int32_t GetXmlMediaType(int32_t type)
|
||||
int32_t aaruf_get_xml_mediatype(int32_t type)
|
||||
{
|
||||
switch(type)
|
||||
{
|
||||
|
||||
@@ -37,11 +37,11 @@
|
||||
//! Identifies a file as aaruformat, using path
|
||||
/*!
|
||||
*
|
||||
* @param filename path to the file to identify
|
||||
* @param filename path to the file to aaruf_identify
|
||||
* @return If positive, confidence value, with 100 being maximum confidentiality, and 0 not recognizing the file.
|
||||
* If negative, error value
|
||||
*/
|
||||
int identify(const char* filename)
|
||||
int aaruf_identify(const char* filename)
|
||||
{
|
||||
FILE* stream;
|
||||
|
||||
@@ -49,7 +49,7 @@ int identify(const char* filename)
|
||||
|
||||
if(stream == NULL) return errno;
|
||||
|
||||
int ret = identifyStream(stream);
|
||||
int ret = aaruf_identify_stream(stream);
|
||||
|
||||
fclose(stream);
|
||||
|
||||
@@ -59,11 +59,11 @@ int identify(const char* filename)
|
||||
//! Identifies a file as aaruformat, using an already existing stream
|
||||
/*!
|
||||
*
|
||||
* @param imageStream stream of the file to identify
|
||||
* @param imageStream stream of the file to aaruf_identify
|
||||
* @return If positive, confidence value, with 100 being maximum confidentiality, and 0 not recognizing the file.
|
||||
* If negative, error value
|
||||
*/
|
||||
int identifyStream(FILE* imageStream)
|
||||
int aaruf_identify_stream(FILE* imageStream)
|
||||
{
|
||||
fseek(imageStream, 0, SEEK_SET);
|
||||
|
||||
|
||||
18
src/open.c
18
src/open.c
@@ -38,7 +38,7 @@
|
||||
#include <string.h>
|
||||
#include <sys/mman.h>
|
||||
|
||||
void* open(const char* filepath)
|
||||
void* aaruf_open(const char* filepath)
|
||||
{
|
||||
aaruformatContext* ctx;
|
||||
int errorNo;
|
||||
@@ -290,7 +290,7 @@ void* open(const char* filepath)
|
||||
break;
|
||||
}
|
||||
|
||||
crc64 = crc64_data_ecma(data, blockHeader.length);
|
||||
crc64 = aaruf_crc64_data_ecma(data, blockHeader.length);
|
||||
if(crc64 != blockHeader.crc64)
|
||||
{
|
||||
fprintf(stderr,
|
||||
@@ -373,7 +373,7 @@ void* open(const char* filepath)
|
||||
}
|
||||
memset(mediaTag, 0, sizeof(dataLinkedList));
|
||||
|
||||
mediaTag->type = GetMediaTagTypeForDataType(blockHeader.type);
|
||||
mediaTag->type = aaruf_get_media_tag_type_for_datatype(blockHeader.type);
|
||||
mediaTag->data = data;
|
||||
mediaTag->length = blockHeader.length;
|
||||
|
||||
@@ -759,8 +759,8 @@ void* open(const char* filepath)
|
||||
fprintf(stderr, "libaaruformat: Could not read metadata block, continuing...");
|
||||
}
|
||||
|
||||
crc64 =
|
||||
crc64_data_ecma((const uint8_t*)ctx->trackEntries, ctx->tracksHeader.entries * sizeof(TrackEntry));
|
||||
crc64 = aaruf_crc64_data_ecma((const uint8_t*)ctx->trackEntries,
|
||||
ctx->tracksHeader.entries * sizeof(TrackEntry));
|
||||
if(crc64 != ctx->tracksHeader.crc64)
|
||||
{
|
||||
fprintf(stderr,
|
||||
@@ -874,7 +874,7 @@ void* open(const char* filepath)
|
||||
|
||||
if(readBytes == ctx->dumpHardwareHeader.length)
|
||||
{
|
||||
crc64 = crc64_data_ecma(data, ctx->dumpHardwareHeader.length);
|
||||
crc64 = aaruf_crc64_data_ecma(data, ctx->dumpHardwareHeader.length);
|
||||
if(crc64 != ctx->dumpHardwareHeader.crc64)
|
||||
{
|
||||
free(data);
|
||||
@@ -1143,13 +1143,13 @@ void* open(const char* filepath)
|
||||
if(!foundUserDataDdt)
|
||||
{
|
||||
fprintf(stderr, "libaaruformat: Could not find user data deduplication table, aborting...");
|
||||
close(ctx);
|
||||
aaruf_close(ctx);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
ctx->imageInfo.CreationTime = ctx->header.creationTime;
|
||||
ctx->imageInfo.LastModificationTime = ctx->header.lastWrittenTime;
|
||||
ctx->imageInfo.XmlMediaType = GetXmlMediaType(ctx->header.mediaType);
|
||||
ctx->imageInfo.XmlMediaType = aaruf_get_xml_mediatype(ctx->header.mediaType);
|
||||
|
||||
if(ctx->geometryBlock.identifier != GeometryBlock && ctx->imageInfo.XmlMediaType == BlockMedia)
|
||||
{
|
||||
@@ -1170,7 +1170,7 @@ void* open(const char* filepath)
|
||||
// TODO: Cache tracks and sessions?
|
||||
|
||||
// Initialize ECC for Compact Disc
|
||||
ctx->eccCdContext = (CdEccContext*)ecc_cd_init();
|
||||
ctx->eccCdContext = (CdEccContext*)aaruf_ecc_cd_init();
|
||||
|
||||
ctx->magic = AARU_MAGIC;
|
||||
ctx->libraryMajorVersion = LIBAARUFORMAT_MAJOR_VERSION;
|
||||
|
||||
28
src/read.c
28
src/read.c
@@ -34,7 +34,7 @@
|
||||
#include <malloc.h>
|
||||
#include <string.h>
|
||||
|
||||
int32_t read_media_tag(void* context, uint8_t* data, int32_t tag, uint32_t* length)
|
||||
int32_t aaruf_read_media_tag(void* context, uint8_t* data, int32_t tag, uint32_t* length)
|
||||
{
|
||||
aaruformatContext* ctx;
|
||||
dataLinkedList* item;
|
||||
@@ -69,7 +69,7 @@ int32_t read_media_tag(void* context, uint8_t* data, int32_t tag, uint32_t* leng
|
||||
return AARUF_ERROR_MEDIA_TAG_NOT_PRESENT;
|
||||
}
|
||||
|
||||
int32_t read_sector(void* context, uint64_t sectorAddress, uint8_t* data, uint32_t* length)
|
||||
int32_t aaruf_read_sector(void* context, uint64_t sectorAddress, uint8_t* data, uint32_t* length)
|
||||
{
|
||||
aaruformatContext* ctx;
|
||||
uint64_t ddtEntry;
|
||||
@@ -148,7 +148,7 @@ int32_t read_sector(void* context, uint64_t sectorAddress, uint8_t* data, uint32
|
||||
return AARUF_STATUS_OK;
|
||||
}
|
||||
|
||||
int32_t read_track_sector(void* context, uint8_t* data, uint64_t sectorAddress, uint32_t* length, uint8_t track)
|
||||
int32_t aaruf_read_track_sector(void* context, uint8_t* data, uint64_t sectorAddress, uint32_t* length, uint8_t track)
|
||||
{
|
||||
aaruformatContext* ctx;
|
||||
int i;
|
||||
@@ -165,7 +165,7 @@ int32_t read_track_sector(void* context, uint8_t* data, uint64_t sectorAddress,
|
||||
for(i = 0; i < ctx->numberOfDataTracks; i++)
|
||||
{
|
||||
if(ctx->dataTracks[i].sequence == track)
|
||||
{ return read_sector(context, ctx->dataTracks[i].start + sectorAddress, data, length); }
|
||||
{ return aaruf_read_sector(context, ctx->dataTracks[i].start + sectorAddress, data, length); }
|
||||
}
|
||||
|
||||
return AARUF_ERROR_TRACK_NOT_FOUND;
|
||||
@@ -199,16 +199,16 @@ int32_t read_sector_long(void* context, uint8_t* data, uint64_t sectorAddress, u
|
||||
}
|
||||
if((ctx->sectorSuffix == NULL || ctx->sectorPrefix == NULL) &&
|
||||
(ctx->sectorSuffixCorrected == NULL || ctx->sectorPrefixCorrected == NULL))
|
||||
return read_sector(context, sectorAddress, data, length);
|
||||
return aaruf_read_sector(context, sectorAddress, data, length);
|
||||
|
||||
bareLength = 0;
|
||||
read_sector(context, sectorAddress, NULL, &bareLength);
|
||||
aaruf_read_sector(context, sectorAddress, NULL, &bareLength);
|
||||
|
||||
bareData = (uint8_t*)malloc(bareLength);
|
||||
|
||||
if(bareData == NULL) return AARUF_ERROR_NOT_ENOUGH_MEMORY;
|
||||
|
||||
res = read_sector(context, sectorAddress, bareData, &bareLength);
|
||||
res = aaruf_read_sector(context, sectorAddress, bareData, &bareLength);
|
||||
|
||||
if(res < AARUF_STATUS_OK) return res;
|
||||
|
||||
@@ -239,7 +239,7 @@ int32_t read_sector_long(void* context, uint8_t* data, uint64_t sectorAddress, u
|
||||
{
|
||||
if((ctx->sectorPrefixDdt[sectorAddress] & CD_XFIX_MASK) == Correct)
|
||||
{
|
||||
ecc_cd_reconstruct_prefix(data, trk.type, sectorAddress);
|
||||
aaruf_ecc_cd_reconstruct_prefix(data, trk.type, sectorAddress);
|
||||
res = AARUF_STATUS_OK;
|
||||
}
|
||||
else if((ctx->sectorPrefixDdt[sectorAddress] & CD_XFIX_MASK) == NotDumped)
|
||||
@@ -263,7 +263,7 @@ int32_t read_sector_long(void* context, uint8_t* data, uint64_t sectorAddress, u
|
||||
{
|
||||
if((ctx->sectorSuffixDdt[sectorAddress] & CD_XFIX_MASK) == Correct)
|
||||
{
|
||||
ecc_cd_reconstruct(ctx->eccCdContext, data, trk.type);
|
||||
aaruf_ecc_cd_reconstruct(ctx->eccCdContext, data, trk.type);
|
||||
res = AARUF_STATUS_OK;
|
||||
}
|
||||
else if((ctx->sectorSuffixDdt[sectorAddress] & CD_XFIX_MASK) == NotDumped)
|
||||
@@ -291,7 +291,7 @@ int32_t read_sector_long(void* context, uint8_t* data, uint64_t sectorAddress, u
|
||||
{
|
||||
if((ctx->sectorPrefixDdt[sectorAddress] & CD_XFIX_MASK) == Correct)
|
||||
{
|
||||
ecc_cd_reconstruct_prefix(data, trk.type, sectorAddress);
|
||||
aaruf_ecc_cd_reconstruct_prefix(data, trk.type, sectorAddress);
|
||||
res = AARUF_STATUS_OK;
|
||||
}
|
||||
else if((ctx->sectorPrefixDdt[sectorAddress] & CD_XFIX_MASK) == NotDumped)
|
||||
@@ -316,14 +316,14 @@ int32_t read_sector_long(void* context, uint8_t* data, uint64_t sectorAddress, u
|
||||
if((ctx->sectorSuffixDdt[sectorAddress] & CD_XFIX_MASK) == Mode2Form1Ok)
|
||||
{
|
||||
memcpy(data + 24, bareData, 2048);
|
||||
ecc_cd_reconstruct(ctx->eccCdContext, data, CdMode2Form1);
|
||||
aaruf_ecc_cd_reconstruct(ctx->eccCdContext, data, CdMode2Form1);
|
||||
}
|
||||
else if((ctx->sectorSuffixDdt[sectorAddress] & CD_XFIX_MASK) == Mode2Form2Ok ||
|
||||
(ctx->sectorSuffixDdt[sectorAddress] & CD_XFIX_MASK) == Mode2Form2NoCrc)
|
||||
{
|
||||
memcpy(data + 24, bareData, 2324);
|
||||
if((ctx->sectorSuffixDdt[sectorAddress] & CD_XFIX_MASK) == Mode2Form2Ok)
|
||||
ecc_cd_reconstruct(ctx->eccCdContext, data, CdMode2Form2);
|
||||
aaruf_ecc_cd_reconstruct(ctx->eccCdContext, data, CdMode2Form2);
|
||||
}
|
||||
else if((ctx->sectorSuffixDdt[sectorAddress] & CD_XFIX_MASK) == NotDumped)
|
||||
{
|
||||
@@ -353,7 +353,7 @@ int32_t read_sector_long(void* context, uint8_t* data, uint64_t sectorAddress, u
|
||||
case AppleSonyDS:
|
||||
case AppleWidget:
|
||||
case PriamDataTower:
|
||||
if(ctx->sectorSubchannel == NULL) return read_sector(context, sectorAddress, data, length);
|
||||
if(ctx->sectorSubchannel == NULL) return aaruf_read_sector(context, sectorAddress, data, length);
|
||||
|
||||
switch(ctx->imageInfo.MediaType)
|
||||
{
|
||||
@@ -378,7 +378,7 @@ int32_t read_sector_long(void* context, uint8_t* data, uint64_t sectorAddress, u
|
||||
|
||||
if(bareData == NULL) return AARUF_ERROR_NOT_ENOUGH_MEMORY;
|
||||
|
||||
res = read_sector(context, sectorAddress, bareData, &bareLength);
|
||||
res = aaruf_read_sector(context, sectorAddress, bareData, &bareLength);
|
||||
|
||||
if(bareLength != 512) return res;
|
||||
|
||||
|
||||
@@ -61,78 +61,78 @@ class crc64Fixture : public ::testing::Test
|
||||
|
||||
TEST_F(crc64Fixture, crc64_auto)
|
||||
{
|
||||
void* ctx = crc64_init_ecma();
|
||||
void* ctx = aaruf_crc64_init_ecma();
|
||||
uint64_t crc;
|
||||
|
||||
EXPECT_NE(ctx, nullptr);
|
||||
|
||||
crc64_update(ctx, buffer, 1048576);
|
||||
crc = crc64_final(ctx);
|
||||
aaruf_crc64_update(ctx, buffer, 1048576);
|
||||
crc = aaruf_crc64_final(ctx);
|
||||
|
||||
EXPECT_EQ(crc, EXPECTED_CRC64);
|
||||
}
|
||||
|
||||
TEST_F(crc64Fixture, crc64_auto_misaligned)
|
||||
{
|
||||
void* ctx = crc64_init_ecma();
|
||||
void* ctx = aaruf_crc64_init_ecma();
|
||||
uint64_t crc;
|
||||
|
||||
EXPECT_NE(ctx, nullptr);
|
||||
|
||||
crc64_update(ctx, buffer_misaligned + 1, 1048576);
|
||||
crc = crc64_final(ctx);
|
||||
aaruf_crc64_update(ctx, buffer_misaligned + 1, 1048576);
|
||||
crc = aaruf_crc64_final(ctx);
|
||||
|
||||
EXPECT_EQ(crc, EXPECTED_CRC64);
|
||||
}
|
||||
|
||||
TEST_F(crc64Fixture, crc64_auto_15bytes)
|
||||
{
|
||||
void* ctx = crc64_init_ecma();
|
||||
void* ctx = aaruf_crc64_init_ecma();
|
||||
uint64_t crc;
|
||||
|
||||
EXPECT_NE(ctx, nullptr);
|
||||
|
||||
crc64_update(ctx, buffer, 15);
|
||||
crc = crc64_final(ctx);
|
||||
aaruf_crc64_update(ctx, buffer, 15);
|
||||
crc = aaruf_crc64_final(ctx);
|
||||
|
||||
EXPECT_EQ(crc, EXPECTED_CRC64_15BYTES);
|
||||
}
|
||||
|
||||
TEST_F(crc64Fixture, crc64_auto_31bytes)
|
||||
{
|
||||
void* ctx = crc64_init_ecma();
|
||||
void* ctx = aaruf_crc64_init_ecma();
|
||||
uint64_t crc;
|
||||
|
||||
EXPECT_NE(ctx, nullptr);
|
||||
|
||||
crc64_update(ctx, buffer, 31);
|
||||
crc = crc64_final(ctx);
|
||||
aaruf_crc64_update(ctx, buffer, 31);
|
||||
crc = aaruf_crc64_final(ctx);
|
||||
|
||||
EXPECT_EQ(crc, EXPECTED_CRC64_31BYTES);
|
||||
}
|
||||
|
||||
TEST_F(crc64Fixture, crc64_auto_63bytes)
|
||||
{
|
||||
void* ctx = crc64_init_ecma();
|
||||
void* ctx = aaruf_crc64_init_ecma();
|
||||
uint64_t crc;
|
||||
|
||||
EXPECT_NE(ctx, nullptr);
|
||||
|
||||
crc64_update(ctx, buffer, 63);
|
||||
crc = crc64_final(ctx);
|
||||
aaruf_crc64_update(ctx, buffer, 63);
|
||||
crc = aaruf_crc64_final(ctx);
|
||||
|
||||
EXPECT_EQ(crc, EXPECTED_CRC64_63BYTES);
|
||||
}
|
||||
|
||||
TEST_F(crc64Fixture, crc64_auto_2352bytes)
|
||||
{
|
||||
void* ctx = crc64_init_ecma();
|
||||
void* ctx = aaruf_crc64_init_ecma();
|
||||
uint64_t crc;
|
||||
|
||||
EXPECT_NE(ctx, nullptr);
|
||||
|
||||
crc64_update(ctx, buffer, 2352);
|
||||
crc = crc64_final(ctx);
|
||||
aaruf_crc64_update(ctx, buffer, 2352);
|
||||
crc = aaruf_crc64_final(ctx);
|
||||
|
||||
EXPECT_EQ(crc, EXPECTED_CRC64_2352BYTES);
|
||||
}
|
||||
Reference in New Issue
Block a user