git » fp-git.git » commit c736906

minor changes

author ecalot
2005-03-23 10:50:27 UTC
committer ecalot
2005-03-23 10:50:27 UTC
parent 422674d7d499b15b24dac54dcb8b45fbc2368fef

minor changes

PR/src/lib/layers/dat.c +16 -23

diff --git a/PR/src/lib/layers/dat.c b/PR/src/lib/layers/dat.c
index b4a2f57..8c4d109 100644
--- a/PR/src/lib/layers/dat.c
+++ b/PR/src/lib/layers/dat.c
@@ -34,6 +34,7 @@ dat.c: Princed Resources : DAT library
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
+#include "pr.h"
 
 #include "disk.h"
 #include "dat.h"
@@ -69,17 +70,8 @@ int mReadBeginDatFile(unsigned short int *numberOfItems,const char* vFiledat){
 
 	/* Open file */
 	readDatFileSize=mLoadFileArray(vFiledat,&readDatFile);
-	if (!readDatFileSize) 
-	{
-		fprintf(stderr, "mReadBeginDatFile: %s not found\n", vFiledat);
-		return 0;
-	}
-	if (readDatFileSize<=6)
-	{
-		fprintf(stderr, "mReadBeginDatFile: File too short\n");
-		free(readDatFile);
-		return 0;
-	}
+	if (!readDatFileSize) return 0;
+	if (readDatFileSize<=6) {free(readDatFile);return 0;}
 
 	readDatFilePoint=readDatFile;
 
@@ -89,7 +81,6 @@ int mReadBeginDatFile(unsigned short int *numberOfItems,const char* vFiledat){
 	indexSize=array2short(readDatFilePoint);
 
 	if ((indexOffset>readDatFileSize)&&((indexOffset+indexSize)!=readDatFileSize)) {
-		fprintf(stderr, "mReadBeginDatFile: Invalid format\n");
 		free(readDatFile);
 		return 0; /* this is not a valid prince dat file */
 	}
@@ -111,14 +102,13 @@ int mReadBeginDatFile(unsigned short int *numberOfItems,const char* vFiledat){
 }
 
 int mReadFileInDatFile(int k,unsigned char* *data,unsigned long  int *size) {
-	int ok=1; /* TODO: rename mRead* for mRead* and mWrite for mWrite */
+	int ok=1;
 	unsigned short int id;
 
 	/* for each archived file the index is read */
-	id=array2short(indexPointer+ofk+k*recordSize);
-	
-	offset=array2long(indexPointer+ofk+k*recordSize+2);
-	*size= array2short(indexPointer+ofk+k*recordSize+6);
+	id=    array2short(indexPointer+ofk+k*recordSize);/*(indexPointer[ofk+k*recordSize])+(indexPointer[ofk+k*recordSize+1]<<8);*/
+	offset=array2long(indexPointer+ofk+k*recordSize+2);/*indexPointer[ofk+k*recordSize+2])+(indexPointer[ofk+k*recordSize+3]<<8)+(indexPointer[ofk+k*recordSize+4]<<16)+(indexPointer[ofk+k*recordSize+5]<<24);*/
+	*size= array2short(indexPointer+ofk+k*recordSize+6)+1;/*indexPointer[ofk+k*recordSize+6])+(indexPointer[ofk+k*recordSize+7]<<8)+1;*/
 	if ((!pop1)&&(!(indexPointer[ofk+k*recordSize+8]==0x40)&&(!indexPointer[ofk+k*recordSize+9])&&(!indexPointer[ofk+k*recordSize+10]))) return -1;
 	if (offset+indexSize>readDatFileSize) return -1;
 	*data=readDatFile+offset;
@@ -136,10 +126,10 @@ int mReadInitResource(tResource** res,const unsigned char* data,long size) {
 		(*res)->palette=0;
 		(*res)->number=0;
 		(*res)->size=(unsigned short int)size;
-		(*res)->offset=(unsigned short)offset; /* TODO delete this line */
-		/* (*res)->type=verifyHeader(data,(unsigned short int)size); */
+		/* (*res)->offset=(unsigned short)offset; TODO delete this line */
+		(*res)->type=verifyHeader(data,(unsigned short int)size);
 	} else { /* If resource type is invalid or 0, the type will be decided by PR */
-		if (!((*res)->type)) (*res)->type=0; /*verifyHeader(data,(unsigned short int)size);*/
+		if (!((*res)->type)) (*res)->type=verifyHeader(data,(unsigned short int)size);
 	}
 	return 0;
 }
@@ -162,8 +152,11 @@ int mWriteBeginDatFile(const char* vFile, int optionflag) {
 			 0 File couldn't be open
 
 	*/
-	if (writeOpen(vFile,&writeDatFile,optionflag)) {
-		fseek(writeDatFile,6,SEEK_SET);
+	if (writeOpen(vFile,&writeDatFile,optionflag|backup_flag)) {
+		short fill=0;
+		fwriteshort(&fill,writeDatFile); /* Fill the file with 6 starting null bytes */
+		fwriteshort(&fill,writeDatFile); /* Fill the file with 6 starting null bytes */
+		fwriteshort(&fill,writeDatFile); /* Fill the file with 6 starting null bytes */
 		return 1;
 	} else {
 		return 0;
@@ -184,7 +177,7 @@ void mWriteInitResource(tResource** res) {
 void mWriteFileInDatFile(const unsigned char* data, int size) {
 	/*
 		Adds a data resource to a dat file keeping
-		abstractly the checksum ver	ifications
+		abstractly the checksum verifications
 	*/
 
 	/* Declare variables */