summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuc Verhaegen <lverhaegen@ridcully.suse.de>2009-01-08 15:46:22 +0100
committerLuc Verhaegen <lverhaegen@ridcully.suse.de>2009-01-08 15:46:22 +0100
commit21de70b7633c2a3bbc4349558b938aed466f746b (patch)
tree5a7147faaa068111acb1312b29c822825b8299ac
parentd2151b17f4a1c1173ac511b3929ad9b0af5ee0db (diff)
Fix up retrieval of AMIBIOS header for v95.
Also delete two unused structures.
-rw-r--r--src/amideco.c40
1 files changed, 12 insertions, 28 deletions
diff --git a/src/amideco.c b/src/amideco.c
index 561f4e3..44fa77a 100644
--- a/src/amideco.c
+++ b/src/amideco.c
@@ -52,6 +52,7 @@
#define BLOCK 0x8000
typedef struct {
+ char AMIBIOSC[8];
uint8_t Version[4];
uint16_t CRCLen;
uint32_t CRC32;
@@ -77,23 +78,6 @@ typedef struct
typedef struct
{
- uint8_t HeadLen;
- uint8_t HeadCrc;
- uint8_t Method[5];
- uint32_t PackLen;
- uint32_t RealLen;
- uint32_t TStamp;
- uint8_t Attr;
- uint8_t Level;
- uint8_t FilenameLen;
- uint8_t FileName[12];
- uint16_t CRC16;
- uint8_t DOS;
- uint16_t Empty;
-} LZHHead;
-
-typedef struct
-{
uint16_t PackLenLo;
uint16_t PackLenHi;
uint16_t RealLenLo;
@@ -109,13 +93,6 @@ typedef struct
char Year[2];
} AMIDATE;
-typedef struct
-{
- uint32_t Offset;
- uint8_t ModID;
- uint8_t IsPacked;
-} AMIHEAD94;
-
#define SftName "AmiBIOSDeco"
#define SftEMail "Anton Borisov, anton.borisov@gmail.com"
@@ -689,7 +666,7 @@ main(int argc, char *argv[])
{
FILE *ptx;
uint32_t fLen;
- ABCTag abc;
+ int ABCOffset;
char Date[9];
uint32_t Offset;
uint8_t AMIVer = 0;
@@ -741,13 +718,16 @@ main(int argc, char *argv[])
uint32_t RealRead;
fseek(ptx, i, SEEK_SET);
+
RealRead = fread(BufBlk, 1, BLOCK, ptx);
- if ((i = FoundAt(ptx, BufBlk, Temp, RealRead)) != 0) {
- fseek(ptx, i + 8, SEEK_SET);
- fread(&abc, 1, sizeof(abc), ptx);
+
+ ABCOffset = FoundAt(ptx, BufBlk, Temp, RealRead);
+ if (ABCOffset != 0) {
+ printf("AMIBIOS 95 header found at offset 0x%08X\n", ABCOffset);
AMIVer = 95;
break;
}
+
i = ftell(ptx) - 0x100;
}
@@ -787,6 +767,10 @@ main(int argc, char *argv[])
case 95:
{
uint32_t ConstOff;
+ ABCTag abc;
+
+ fseek(ptx, ABCOffset, SEEK_SET);
+ fread(&abc, 1, sizeof(abc), ptx);
printf("\nAMI95 Version\t\t: %.4s", abc.Version);
printf("\nPacked Data\t: %X (%u bytes)", (uint32_t) abc.CRCLen * 8, (uint32_t) abc.CRCLen * 8);