home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Frozen Fish 1: Amiga
/
FrozenFish-Apr94.iso
/
bbs
/
alib
/
d7xx
/
d744
/
fo2.lha
/
FO2
/
Sources_FO2
/
MoveHderB.c
< prev
next >
Wrap
C/C++ Source or Header
|
1992-10-12
|
2KB
|
104 lines
#include "defs.h"
Prototype MoveHderB(WORD oB,WORD nB,WORD *datafree,WORD UDB[],WORD *i);
/* MoveHderB déplace le Header spécifié du bloc lB au bloc nB.
nB: nouveau n° de bloc.
oB: ancien n° de bloc.
*/
MoveHderB(oB,nB,datafree,UDB,i)
WORD oB,nB,*datafree;
WORD UDB[],*i;
{
struct SFileHderB *dlistB,*fhB;
struct FileHeaderB *adr;
struct DiskList *hdb;
struct FileHeaderB *adrh;
struct DataB *AdrD;
WORD n,ret,ext,bloc,*nflB;
WORD gfree;
BYTE first;
#ifdef DEBUG
printf("in MoveHderB() oB: %d, nB: %d,datafree: %d\n",oB,nB,*datafree);
#endif
dlistB=whereB(oB);
if (dlistB==0) NotSet(oB,4);
else
{
if (dlistB->dl_Type!=-1) return(0);
adr=(struct FileHeaderB *)dlistB->dl_AdrB;
/* On change le HeaderKey du bloc */
adr->HeaderKey=nB;
dlistB->dl_Bloc2=nB;
/* On change tous les DatasB en conséquence */
gfree=nB+1;
first=1;
for (n=71;n!=-1;n--)
{
if (adr->DataTable[n])
{
if ( (dlistB->dl_Data==1) && (CLI==0) ) /* bloc de data ds gestion */
{
AdrD=ModifyDataHder((WORD)adr->DataTable[n],nB,gfree,adr->HeaderKey);
adr->DataTable[n]=gfree;
if (first) {adr->FirstDataB=gfree; first=0;}
gfree++;
if (n) ModifyDataNext(AdrD,gfree);
else ModifyDataNext(AdrD,gfree+1);
}
else
{
AdrD=ModifyDataHder(adr->DataTable[n],nB,*datafree,adr->HeaderKey);
adr->DataTable[n]=*datafree;
if (first) {adr->FirstDataB=*datafree; first=0;}
Inc(datafree);
if (n) ModifyDataNext(AdrD,*datafree);
else
{
if (FLnog) ModifyDataNext(AdrD,Nextdfree(datafree));
else ModifyDataNext(AdrD,*datafree);
}
}
}
}
if (adr->Extension)
{
if (FLnog)
{
nflB=datafree;
ext=*datafree;
}
else
{
nflB=&gfree;
ext=gfree;
}
if (CLI) /* pas de .info dans les blocs de gestion */
{
ModifyFList(adr->Extension,nB,nflB,datafree,0);
}
else
if (dlistB->dl_Data==1) /* si .info alors ds les blocs de gestion */
{
ModifyFList(adr->Extension,nB,nflB,&gfree,1);
}
else
{
ModifyFList(adr->Extension,nB,nflB,datafree,0);
}
adr->Extension=ext;
}
}
return(gfree);
}