{$I DIRECT.INC}
Program FilePack;
Uses Crt, GenTypes, ConfigRt, skaShit, GenSubs;
Var confnum,currareas:string;
totareas,counter,currarea,i1:integer;
udindexfile,udindexbak:file of udindexrec;
udrecfile:file of udrec;
{$I ANSIS.SKA}
Procedure Show(S : String);
Begin
gotoxy(3,wherey);
skawrite('|07.,:$½%'' |07'+S);
End;
Procedure GetTotAreas;
Var arecfile:string;
arecrec:file of arearec;
arecs:arearec;
Begin;
totareas:=0;
assign(arecrec,Cfg.DataDir+'areadir.'+confnum);
reset(arecrec);
if ioresult=0 then begin
while not eof(arecrec) do begin
read(arecrec,arecs);
inc(totareas);
end;
close(arecrec);
end else begin
writeLn;
show('sorry but conference #'+confNum+' doesnt exist, halting|CR|CR');
halt(0);
end;
end;
Procedure ReadAndWrite;
Var udinfo:udrec;
uddesc:udindexrec;
udnewindex:file of udindexrec;
pointer:longint;
a:integer;
Begin;
assign(udindexfile,Cfg.DataDir+'areaind'+confnum+'.bak');
assign(udrecfile,Cfg.DataDir+'area'+currareas+'.'+confnum);
assign(udnewindex,Cfg.DataDir+'areaindx.'+confnum);
reset(udnewindex);
if ioresult<>0 then rewrite(udnewindex);
reset(udrecfile);
reset(udindexfile);
a:=0;
while not eof(udrecfile) do begin
seek(udrecfile,a);
read(udrecfile,udinfo);
pointer:=udinfo.indexptr;
seek(udindexfile,pointer);
read(udindexfile,uddesc);
udinfo.indexptr:=counter;
seek(udrecfile,a);
write(udrecfile,udinfo);
seek(udnewindex,counter);
write(udnewindex,uddesc);
inc(a);
inc(counter);
end;
close(udindexfile);
close(udnewindex);
close(udrecfile);
end;
Begin;
if paramstr(1)='' then
begin
clrscr;
move (header12,mem[$b800:0000],sizeof(header12));
writeln;
textcolor(7);
gotoxy(13,9); writeln('infusion filearea packer - (c)copyright skaboy101 1998');
writeln;
show('Usage - '+paramStr(0)+' <conference_number(s)>|CR');
halt(5);
end;
ReadCfg(False);
clrscr;
move (header12,mem[$b800:0000],sizeof(header12));
writeln;
textcolor(7);
gotoxy(13,9);
writeln('infusion fileconf packer - (c)copyright skaboy101 1998');
for i1:=1 to paramcount do begin
confnum:=paramstr(i1);
counter:=0;
GetTotAreas;
writeln;
show('compressing conference '+confnum+' ....');
assign(udindexbak,Cfg.DataDir+'areaind'+confnum+'.bak');
reset(udindexbak);
if ioresult=0 then erase(udindexbak);
assign(udindexfile,Cfg.DataDir+'areaindx.'+confnum);
rename(udindexfile,Cfg.DataDir+'areaind'+confnum+'.bak');
close(udindexfile);
currarea:=0;
while currarea<totareas do begin
for currarea:=0 to totareas do begin
str(currarea,currareas);
assign(udrecfile,Cfg.DataDir+'area'+currareas+'.'+confnum);
reset(udrecfile);
if ioresult=0 then begin
close(udrecfile);
readandwrite;
end;
end;
end;
assign(udindexbak,Cfg.DataDir+'areaind'+confnum+'.bak');
reset(udindexbak);
if ioresult=0 then erase(udindexbak);
write(' done');
end;
writeln;
end.