2000-11-24 21:35:11 -08:00
|
|
|
|
{$A+,B+,E+,F+,I+,L+,N-,O+,R-,S+,V-}
|
2000-11-17 16:33:00 -08:00
|
|
|
|
{$M 32150,0,0} { Declared here suffices for all Units as well! }
|
|
|
|
|
|
|
|
|
|
uses
|
|
|
|
|
crt,dos,
|
|
|
|
|
myio;
|
|
|
|
|
|
|
|
|
|
{$I rec16e1.pas}
|
|
|
|
|
|
|
|
|
|
var a,b,lastss,gp,sp:astr;
|
|
|
|
|
h,i,j,k,savx,savy:integer;
|
|
|
|
|
c:char;
|
|
|
|
|
found:boolean;
|
|
|
|
|
dta:string[44];
|
|
|
|
|
eelevel:integer;
|
|
|
|
|
wind:windowrec;
|
|
|
|
|
dirinfo:searchrec;
|
|
|
|
|
|
|
|
|
|
fil_pkunpak,fil_pkzip,fil_errlog:astr;
|
|
|
|
|
zip_comments:astr;
|
|
|
|
|
errlog,batfile,zipcommentsfile:text;
|
|
|
|
|
ok:boolean;
|
|
|
|
|
pl,rn,lrn:integer;
|
|
|
|
|
fn,lfn:astr;
|
|
|
|
|
fbases_to_convert,arcs_to_convert:integer;
|
|
|
|
|
arcs_succ_converted:integer;
|
|
|
|
|
|
|
|
|
|
systatf:file of systatrec;
|
|
|
|
|
systat:systatrec;
|
|
|
|
|
ulf:file of ulrec;
|
|
|
|
|
ulff:file of ulfrec;
|
|
|
|
|
ulr:ulrec;
|
|
|
|
|
ulfr:ulfrec;
|
|
|
|
|
|
|
|
|
|
procedure ffile(fn:astr);
|
|
|
|
|
begin
|
|
|
|
|
findfirst(fn,anyfile,dirinfo);
|
|
|
|
|
found:=(doserror=0);
|
|
|
|
|
end;
|
|
|
|
|
|
|
|
|
|
procedure nfile;
|
|
|
|
|
var r:registers;
|
|
|
|
|
begin
|
|
|
|
|
findnext(dirinfo);
|
|
|
|
|
found:=(doserror=0);
|
|
|
|
|
end;
|
|
|
|
|
|
|
|
|
|
function tch(i:astr):astr;
|
|
|
|
|
begin
|
|
|
|
|
if length(i)>2 then i:=copy(i,length(i)-1,2) else
|
|
|
|
|
if length(i)=1 then i:='0'+i;
|
|
|
|
|
tch:=i;
|
|
|
|
|
end;
|
|
|
|
|
|
2001-03-02 14:07:42 -08:00
|
|
|
|
{rcg11272000 dunno if this is even used, but it won't fly under Linux.}
|
|
|
|
|
{ below is a working implementation, Y2K fixes included.}
|
|
|
|
|
{
|
2000-11-17 16:33:00 -08:00
|
|
|
|
function date:astr;
|
|
|
|
|
var reg:registers;
|
|
|
|
|
m,d,y:string[4];
|
|
|
|
|
begin
|
|
|
|
|
reg.ax:=$2a00; msdos(Dos.Registers(reg)); str(reg.cx,y); str(reg.dx mod 256,d);
|
|
|
|
|
str(reg.dx shr 8,m);
|
|
|
|
|
date:=tch(m)+'/'+tch(d)+'/'+tch(y);
|
|
|
|
|
end;
|
2001-03-02 14:07:42 -08:00
|
|
|
|
}
|
2000-11-17 16:33:00 -08:00
|
|
|
|
|
2001-03-02 14:07:42 -08:00
|
|
|
|
function date:string;
|
|
|
|
|
var
|
|
|
|
|
{rcg11272000 unused variable.}
|
|
|
|
|
{r:registers;}
|
|
|
|
|
|
|
|
|
|
{rcg11272000 Y2K-proofing.}
|
|
|
|
|
{y,m,d:string[3];}
|
|
|
|
|
m,d:string[3];
|
|
|
|
|
y:string[5];
|
|
|
|
|
yy,mm,dd,dow:word;
|
|
|
|
|
|
|
|
|
|
begin
|
|
|
|
|
getdate(yy,mm,dd,dow);
|
|
|
|
|
{rcg11272000 Y2K-proofing.}
|
|
|
|
|
{str(yy-1900,y); str(mm,m); str(dd,d);}
|
|
|
|
|
str(yy,y); str(mm,m); str(dd,d);
|
|
|
|
|
date:=tch(m)+'/'+tch(d)+'/'+y;
|
|
|
|
|
end;
|
|
|
|
|
|
|
|
|
|
{rcg11272000 dunno if this is even used, but it won't fly under Linux.}
|
|
|
|
|
{ below is a working implementation.}
|
|
|
|
|
{
|
2000-11-17 16:33:00 -08:00
|
|
|
|
function time:astr;
|
|
|
|
|
var reg:registers;
|
|
|
|
|
h,m,s:string[4];
|
|
|
|
|
begin
|
|
|
|
|
reg.ax:=$2c00; intr($21,Dos.Registers(reg));
|
|
|
|
|
str(reg.cx shr 8,h); str(reg.cx mod 256,m); str(reg.dx shr 8,s);
|
|
|
|
|
time:=tch(h)+':'+tch(m)+':'+tch(s);
|
|
|
|
|
end;
|
2001-03-02 14:07:42 -08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function time:string;
|
|
|
|
|
var h,m,s:string[3];
|
|
|
|
|
hh,mm,ss,ss100:word;
|
|
|
|
|
begin
|
|
|
|
|
gettime(hh,mm,ss,ss100);
|
|
|
|
|
str(hh,h); str(mm,m); str(ss,s);
|
|
|
|
|
time:=tch(h)+':'+tch(m)+':'+tch(s);
|
|
|
|
|
end;
|
2000-11-17 16:33:00 -08:00
|
|
|
|
|
|
|
|
|
function value(I:astr):integer;
|
|
|
|
|
var n,n1:integer;
|
|
|
|
|
begin
|
|
|
|
|
val(i,n,n1);
|
|
|
|
|
if n1<>0 then begin
|
|
|
|
|
i:=copy(i,1,n1-1);
|
|
|
|
|
val(i,n,n1)
|
|
|
|
|
end;
|
|
|
|
|
value:=n;
|
|
|
|
|
if i='' then value:=0;
|
|
|
|
|
end;
|
|
|
|
|
|
|
|
|
|
function cstr(i:integer):astr;
|
|
|
|
|
var c:astr;
|
|
|
|
|
begin
|
|
|
|
|
str(i,c);
|
|
|
|
|
cstr:=c;
|
|
|
|
|
end;
|
|
|
|
|
|
|
|
|
|
function allcaps(s:astr):astr; (* returns a COMPLETELY capitalized string *)
|
|
|
|
|
var i:integer;
|
|
|
|
|
begin
|
|
|
|
|
for i:=1 to length(s) do
|
|
|
|
|
s[i]:=upcase(s[i]);
|
|
|
|
|
allcaps:=s;
|
|
|
|
|
end;
|
|
|
|
|
|
|
|
|
|
procedure star(s:astr);
|
|
|
|
|
begin
|
|
|
|
|
textcolor(9); write('<27> ');
|
|
|
|
|
textcolor(11); writeln(s);
|
|
|
|
|
end;
|
|
|
|
|
|
|
|
|
|
procedure exitnow;
|
|
|
|
|
begin
|
|
|
|
|
CursorOn;
|
|
|
|
|
removewindow(wind);
|
|
|
|
|
gotoxy(savx,savy);
|
|
|
|
|
chdir(sp);
|
|
|
|
|
halt(eelevel);
|
|
|
|
|
end;
|
|
|
|
|
|
|
|
|
|
procedure ee(s:astr);
|
|
|
|
|
begin
|
|
|
|
|
clrscr;
|
|
|
|
|
textcolor(4); writeln('ERROR:');
|
|
|
|
|
writeln;
|
|
|
|
|
textcolor(15); write(' '+s);
|
|
|
|
|
gotoxy(1,15);
|
|
|
|
|
textcolor(14); write('Hit any key to exit');
|
|
|
|
|
CursorOff;
|
|
|
|
|
repeat until keypressed;
|
|
|
|
|
read(kbd,c);
|
|
|
|
|
eelevel:=1;
|
|
|
|
|
exitnow;
|
|
|
|
|
end;
|
|
|
|
|
|
|
|
|
|
procedure ss(s:astr);
|
|
|
|
|
begin
|
|
|
|
|
lastss:=allcaps(s);
|
|
|
|
|
star('Searching for "'+lastss+'"');
|
|
|
|
|
end;
|
|
|
|
|
|
|
|
|
|
procedure cantopen;
|
|
|
|
|
begin
|
|
|
|
|
ee('Unable to open "'+lastss+'"');
|
|
|
|
|
end;
|
|
|
|
|
|
|
|
|
|
procedure alignpathname(var s:astr);
|
|
|
|
|
begin
|
2000-11-24 21:35:11 -08:00
|
|
|
|
{rcg11242000 DOSisms.}
|
|
|
|
|
{
|
2000-11-17 16:33:00 -08:00
|
|
|
|
if copy(s,length(s),1)<>'\' then s:=s+'\';
|
|
|
|
|
while (copy(s,length(s)-1,2)='\\') and (length(s)>2) do
|
2000-11-24 21:35:11 -08:00
|
|
|
|
}
|
|
|
|
|
if copy(s,length(s),1)<>'/' then s:=s+'/';
|
|
|
|
|
while (copy(s,length(s)-1,2)='//') and (length(s)>2) do
|
2000-11-17 16:33:00 -08:00
|
|
|
|
s:=copy(s,1,length(s)-1);
|
|
|
|
|
end;
|
|
|
|
|
|
|
|
|
|
function c2(i:integer):astr;
|
|
|
|
|
var s:astr;
|
|
|
|
|
begin
|
|
|
|
|
str(i,s);
|
|
|
|
|
if length(s)>2 then s:=copy(s,length(s)-1,2)
|
|
|
|
|
else if length(s)=1 then s:='0'+s;
|
|
|
|
|
c2:=s;
|
|
|
|
|
end;
|
|
|
|
|
|
|
|
|
|
function stripname(i:astr):astr;
|
|
|
|
|
var i1:astr; n:integer;
|
|
|
|
|
|
|
|
|
|
function nextn:integer;
|
|
|
|
|
var n:integer;
|
|
|
|
|
begin
|
|
|
|
|
n:=pos(':',i1);
|
|
|
|
|
if n=0 then
|
|
|
|
|
n:=pos('\',i1);
|
|
|
|
|
if n=0 then
|
|
|
|
|
n:=pos('/',i1);
|
|
|
|
|
nextn:=n;
|
|
|
|
|
end;
|
|
|
|
|
|
|
|
|
|
begin
|
|
|
|
|
i1:=i;
|
|
|
|
|
while nextn<>0 do
|
|
|
|
|
i1:=copy(i1,nextn+1,80);
|
|
|
|
|
stripname:=i1;
|
|
|
|
|
end;
|
|
|
|
|
|
|
|
|
|
function fit(f1,f2:astr):boolean;
|
|
|
|
|
var tf:boolean; c:integer;
|
|
|
|
|
begin
|
|
|
|
|
tf:=TRUE;
|
|
|
|
|
for c:=1 to 12 do
|
|
|
|
|
if (f1[c]<>f2[c]) and (f1[c]<>'?') then tf:=FALSE;
|
|
|
|
|
fit:=tf;
|
|
|
|
|
end;
|
|
|
|
|
|
|
|
|
|
function align(fn:astr):astr;
|
|
|
|
|
var f,e,t:astr;
|
|
|
|
|
c,c1:integer;
|
|
|
|
|
begin
|
|
|
|
|
c:=pos('.',fn);
|
|
|
|
|
if c=0 then begin
|
|
|
|
|
f:=fn; e:=' ';
|
|
|
|
|
end else begin
|
|
|
|
|
f:=copy(fn,1,c-1); e:=copy(fn,c+1,3);
|
|
|
|
|
end;
|
|
|
|
|
while length(f)<8 do f:=f+' ';
|
|
|
|
|
while length(e)<3 do e:=e+' ';
|
|
|
|
|
if length(f)>8 then f:=copy(f,1,8);
|
|
|
|
|
if length(e)>3 then e:=copy(e,1,3);
|
|
|
|
|
c:=pos('*',f); if c<>0 then for c1:=c to 8 do f[c1]:='?';
|
|
|
|
|
c:=pos('*',e); if c<>0 then for c1:=c to 3 do e[c1]:='?';
|
|
|
|
|
c:=pos(' ',f); if c<>0 then for c1:=c to 8 do f[c1]:=' ';
|
|
|
|
|
c:=pos(' ',e); if c<>0 then for c1:=c to 3 do e[c1]:=' ';
|
|
|
|
|
align:=f+'.'+e;
|
|
|
|
|
end;
|
|
|
|
|
|
|
|
|
|
procedure fiscan(var pl:integer);
|
|
|
|
|
var f:ulfrec;
|
|
|
|
|
begin
|
|
|
|
|
assign(ulff,systat.gfilepath+ulr.filename+'.DIR');
|
|
|
|
|
{$I-} reset(ulff); {$I+}
|
|
|
|
|
if ioresult<>0 then begin
|
|
|
|
|
rewrite(ulff);
|
|
|
|
|
f.blocks:=0;
|
|
|
|
|
write(ulff,f);
|
|
|
|
|
end;
|
|
|
|
|
seek(ulff,0);
|
|
|
|
|
read(ulff,f);
|
|
|
|
|
pl:=f.blocks;
|
|
|
|
|
end;
|
|
|
|
|
|
|
|
|
|
procedure recno(fn:astr; var pl,rn:integer);
|
|
|
|
|
var c:integer;
|
|
|
|
|
f:ulfrec;
|
|
|
|
|
begin
|
|
|
|
|
fn:=align(fn);
|
|
|
|
|
fiscan(pl);
|
|
|
|
|
rn:=0; c:=1;
|
|
|
|
|
while (c<=pl) and (rn=0) do begin
|
|
|
|
|
seek(ulff,c); read(ulff,f);
|
|
|
|
|
if pos('.',f.filename)<>9 then begin
|
|
|
|
|
f.filename:=align(f.filename);
|
|
|
|
|
seek(ulff,c); write(ulff,f);
|
|
|
|
|
end;
|
|
|
|
|
if fit(fn,f.filename) then rn:=c;
|
|
|
|
|
inc(c);
|
|
|
|
|
end;
|
|
|
|
|
lrn:=rn;
|
|
|
|
|
lfn:=fn;
|
|
|
|
|
end;
|
|
|
|
|
|
|
|
|
|
procedure nrecno(fn:astr; var pl,rn:integer);
|
|
|
|
|
var c:integer;
|
|
|
|
|
f:ulfrec;
|
|
|
|
|
begin
|
|
|
|
|
rn:=0;
|
|
|
|
|
if (lrn<pl) and (lrn>=0) then begin
|
|
|
|
|
c:=lrn+1;
|
|
|
|
|
while (c<=pl) and (rn=0) do begin
|
|
|
|
|
seek(ulff,c); read(ulff,f);
|
|
|
|
|
if pos('.',f.filename)<>9 then begin
|
|
|
|
|
f.filename:=align(f.filename);
|
|
|
|
|
seek(ulff,c); write(ulff,f);
|
|
|
|
|
end;
|
|
|
|
|
if fit(lfn,f.filename) then rn:=c;
|
|
|
|
|
inc(c);
|
|
|
|
|
end;
|
|
|
|
|
lrn:=rn;
|
|
|
|
|
end;
|
|
|
|
|
end;
|
|
|
|
|
|
|
|
|
|
procedure readulr(b:integer);
|
|
|
|
|
begin
|
|
|
|
|
seek(ulf,b); read(ulf,ulr);
|
|
|
|
|
end;
|
|
|
|
|
|
|
|
|
|
procedure elog(s:astr);
|
|
|
|
|
begin
|
|
|
|
|
writeln(errlog,s);
|
|
|
|
|
end;
|
|
|
|
|
|
|
|
|
|
procedure scan_file_bases;
|
|
|
|
|
begin
|
|
|
|
|
gotoxy(1,1);
|
|
|
|
|
star('Scanning file bases...');
|
|
|
|
|
fbases_to_convert:=0; arcs_to_convert:=0;
|
|
|
|
|
|
|
|
|
|
for i:=0 to filesize(ulf)-1 do begin
|
|
|
|
|
readulr(i);
|
|
|
|
|
recno('*.ARC',pl,rn);
|
|
|
|
|
while (fn<>'') and (rn<>0) do begin
|
|
|
|
|
inc(arcs_to_convert);
|
|
|
|
|
nrecno('*.ARC',pl,rn);
|
|
|
|
|
end;
|
|
|
|
|
close(ulff);
|
|
|
|
|
inc(fbases_to_convert);
|
|
|
|
|
gotoxy(1,2);
|
|
|
|
|
star('Total file bases to convert: '+cstr(fbases_to_convert));
|
|
|
|
|
end;
|
|
|
|
|
|
|
|
|
|
gotoxy(1,1);
|
|
|
|
|
star('Total file bases to convert: '+cstr(fbases_to_convert));
|
|
|
|
|
star('Total .ARC files to convert: '+cstr(arcs_to_convert));
|
|
|
|
|
elog('Total file bases to convert: '+cstr(fbases_to_convert));
|
|
|
|
|
elog('Total .ARC files to convert: '+cstr(arcs_to_convert));
|
|
|
|
|
elog('');
|
|
|
|
|
end;
|
|
|
|
|
|
|
|
|
|
procedure conv_file_bases;
|
|
|
|
|
var arcf:astr;
|
|
|
|
|
f:file of byte;
|
|
|
|
|
dwind:windowrec;
|
|
|
|
|
sx,sy:integer;
|
|
|
|
|
oldsiz,newsiz,toldsiz,tnewsiz,ttoldsiz,ttnewsiz:real;
|
|
|
|
|
numarcs,numsuccarcs:integer;
|
|
|
|
|
begin
|
|
|
|
|
gotoxy(1,4);
|
|
|
|
|
star('Converting file bases...');
|
|
|
|
|
arcs_succ_converted:=0;
|
|
|
|
|
|
|
|
|
|
ttoldsiz:=0.0; ttnewsiz:=0.0;
|
|
|
|
|
|
|
|
|
|
for i:=0 to filesize(ulf)-1 do begin
|
|
|
|
|
toldsiz:=0.0; tnewsiz:=0.0; numarcs:=0; numsuccarcs:=0;
|
|
|
|
|
gotoxy(1,5);
|
|
|
|
|
star('Converting file base: '+cstr(i));
|
|
|
|
|
readulr(i);
|
|
|
|
|
recno('*.ARC',pl,rn);
|
|
|
|
|
while (fn<>'') and (rn<>0) do begin
|
|
|
|
|
seek(ulff,rn); read(ulff,ulfr);
|
|
|
|
|
arcf:=copy(ulfr.filename,1,8);
|
|
|
|
|
if pos(' ',arcf)>0 then arcf:=copy(arcf,1,pos(' ',arcf)-1);
|
|
|
|
|
arcf:=ulr.dlpath+arcf;
|
|
|
|
|
|
|
|
|
|
gotoxy(1,6); clreol; star('Converting file: '+arcf+'.ARC');
|
|
|
|
|
|
|
|
|
|
inc(numarcs);
|
|
|
|
|
assign(f,arcf+'.ARC');
|
|
|
|
|
{$I-} reset(f); {$I+}
|
|
|
|
|
if ioresult<>0 then begin
|
|
|
|
|
elog(arcf+'.ARC: File not found.');
|
|
|
|
|
end else begin
|
|
|
|
|
{rcg11172000 don't have LONGfilesize()...}
|
|
|
|
|
{oldsiz:=longfilesize(f);}
|
|
|
|
|
oldsiz:=filesize(f);
|
|
|
|
|
close(f);
|
|
|
|
|
ttoldsiz:=ttoldsiz+oldsiz; toldsiz:=toldsiz+oldsiz;
|
|
|
|
|
|
|
|
|
|
sx:=wherex; sy:=wherey;
|
|
|
|
|
savescreen(dwind,1,1,80,25);
|
|
|
|
|
window(1,1,80,25); gotoxy(1,1);
|
|
|
|
|
exec(getenv('COMSPEC'),'/c temp$$$.bat '+arcf+' >nul');
|
|
|
|
|
removewindow(dwind);
|
|
|
|
|
window(11,6,71,20); textbackground(1); textcolor(9); gotoxy(sx,sy);
|
|
|
|
|
|
|
|
|
|
assign(f,arcf+'.ZIP');
|
|
|
|
|
{$I-} reset(f); {$I+}
|
|
|
|
|
if ioresult<>0 then begin
|
|
|
|
|
elog(arcf+'.ARC: Incomplete conversion.');
|
|
|
|
|
end else begin
|
|
|
|
|
{rcg11172000 don't have LONGfilesize()...}
|
|
|
|
|
{newsiz:=longfilesize(f);}
|
|
|
|
|
newsiz:=filesize(f);
|
|
|
|
|
close(f);
|
|
|
|
|
ttnewsiz:=ttnewsiz+newsiz; tnewsiz:=tnewsiz+newsiz;
|
|
|
|
|
if newsiz=0 then begin
|
|
|
|
|
elog(arcf+'.ARC: Incomplete conversion.');
|
|
|
|
|
end else begin
|
|
|
|
|
assign(f,arcf+'.ARC');
|
|
|
|
|
{$I-} erase(f); {$I+}
|
|
|
|
|
if ioresult<>0 then elog(arcf+'.ARC: Unable to delete.');
|
|
|
|
|
|
|
|
|
|
ulfr.filename:=align(stripname(arcf+'.ZIP'));
|
|
|
|
|
ulfr.blocks:=trunc((newsiz+127.0)/128.0);
|
|
|
|
|
seek(ulff,rn); write(ulff,ulfr);
|
|
|
|
|
inc(arcs_succ_converted);
|
|
|
|
|
inc(numsuccarcs);
|
|
|
|
|
end;
|
|
|
|
|
end;
|
|
|
|
|
chdir('A2Z.$$$');
|
|
|
|
|
if ioresult=0 then begin
|
|
|
|
|
ffile('*.*');
|
|
|
|
|
if found then
|
|
|
|
|
repeat
|
|
|
|
|
if (dirinfo.attr and Directory=0) then begin
|
|
|
|
|
assign(f,dirinfo.name);
|
|
|
|
|
{$I-} erase(f); {$I+}
|
|
|
|
|
end;
|
|
|
|
|
nfile;
|
|
|
|
|
until not found;
|
|
|
|
|
chdir('..');
|
|
|
|
|
end;
|
|
|
|
|
end;
|
|
|
|
|
|
|
|
|
|
nrecno('*.ARC',pl,rn);
|
|
|
|
|
end;
|
|
|
|
|
close(ulff);
|
|
|
|
|
if numarcs<>0 then begin
|
|
|
|
|
elog('File base '+cstr(i)+': '+cstr(numsuccarcs)+' of '+cstr(numarcs)+' .ARC files successfully converted.');
|
|
|
|
|
elog(' Old .ARC file size: '+cstr(trunc((toldsiz+0.1)/1024.0))+
|
|
|
|
|
'k / New size: '+cstr(trunc((tnewsiz+0.1)/1024.0))+
|
|
|
|
|
'k / Saved: '+cstr(trunc((toldsiz-tnewsiz+0.1)/1024.0))+'k.');
|
|
|
|
|
end else
|
|
|
|
|
elog('File base '+cstr(i)+': No .ARC files.');
|
|
|
|
|
end;
|
|
|
|
|
|
|
|
|
|
writeln;
|
|
|
|
|
star('Total .ARC files successfully converted: '+cstr(arcs_succ_converted)+'.');
|
|
|
|
|
|
|
|
|
|
elog('');
|
|
|
|
|
elog('Total .ARC files successfully converted: '+cstr(arcs_succ_converted)+'.');
|
|
|
|
|
elog('Old .ARC file size: '+cstr(trunc((ttoldsiz+0.1)/1024.0))+
|
|
|
|
|
'k / New size: '+cstr(trunc((ttnewsiz+0.1)/1024.0))+
|
|
|
|
|
'k / Saved: '+cstr(trunc((ttoldsiz-ttnewsiz+0.1)/1024.0))+'k.');
|
|
|
|
|
end;
|
|
|
|
|
|
|
|
|
|
begin
|
|
|
|
|
infield_out_fgrd:=15;
|
|
|
|
|
infield_out_bkgd:=1;
|
|
|
|
|
infield_inp_fgrd:=0;
|
|
|
|
|
infield_inp_bkgd:=7;
|
|
|
|
|
|
|
|
|
|
eelevel:=0;
|
|
|
|
|
|
|
|
|
|
getdir(0,sp);
|
|
|
|
|
|
|
|
|
|
savx:=wherex; savy:=wherey;
|
|
|
|
|
setwindow(wind,10,3,72,21,9,1,1);
|
|
|
|
|
clrscr;
|
|
|
|
|
textcolor(15); write('CONVERSION UTILITY for Telegard '+ver+': ');
|
|
|
|
|
textcolor(10); write('.ARC');
|
|
|
|
|
textcolor(4); write(' <10><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ');
|
|
|
|
|
textcolor(9); write('.ZIP');
|
|
|
|
|
writeln;
|
|
|
|
|
textcolor(9); for i:=1 to 69 do write('<27>');
|
|
|
|
|
window(11,6,71,20); clrscr;
|
|
|
|
|
textcolor(15);
|
|
|
|
|
{-----------------------------------------------------------}
|
|
|
|
|
writeln('This program is provided to convert ALL of the .ARC files on');
|
|
|
|
|
writeln('your Telegard v'+ver+' BBS to the newer .ZIP format. PKZIP.EXE');
|
|
|
|
|
writeln('and PKUNPAK.EXE/PKXARC.EXE are required for operation, and');
|
|
|
|
|
writeln('should be somewhere on the PATH.');
|
|
|
|
|
writeln;
|
|
|
|
|
writeln('This program will abort if it is NOT being executed from');
|
|
|
|
|
writeln('your main BBS directory, with STATUS.DAT in it.');
|
|
|
|
|
gotoxy(1,15);
|
|
|
|
|
CursorOff;
|
|
|
|
|
textcolor(14); write('Hit <ESC> to abort now, any other key to continue');
|
|
|
|
|
repeat until keypressed;
|
|
|
|
|
read(kbd,c);
|
|
|
|
|
if c=#27 then exitnow;
|
|
|
|
|
CursorOn;
|
|
|
|
|
|
|
|
|
|
assign(systatf,'status.dat');
|
|
|
|
|
{$I-} reset(systatf); {$I+}
|
|
|
|
|
if ioresult<>0 then ee('STATUS.DAT: File not found.');
|
|
|
|
|
read(systatf,systat); close(systatf);
|
|
|
|
|
|
|
|
|
|
assign(ulf,systat.gfilepath+'uploads.dat');
|
|
|
|
|
{$I-} reset(ulf); {$I+}
|
|
|
|
|
if ioresult<>0 then ee(systat.gfilepath+'UPLOADS.DAT: File not found.');
|
|
|
|
|
|
|
|
|
|
{$I-} rmdir('A2Z.$$$'); {$I+}
|
|
|
|
|
if ioresult=0 then CursorOn; {do nothing}
|
|
|
|
|
{$I-} mkdir('A2Z.$$$'); {$I+}
|
|
|
|
|
if ioresult<>0 then ee('A2Z.$$$: Unable to create directory.');
|
|
|
|
|
|
|
|
|
|
assign(batfile,'temp$$$.bat');
|
|
|
|
|
{$I-} rewrite(batfile); {$I+}
|
|
|
|
|
if ioresult<>0 then ee('TEMP$$$.BAT: Unable to create file.');
|
|
|
|
|
|
|
|
|
|
repeat
|
|
|
|
|
fil_pkunpak:='PKUNPAK'; fil_pkzip:='PKZIP -aeb4z';
|
|
|
|
|
clrscr;
|
|
|
|
|
textcolor(15);
|
|
|
|
|
writeln('ARC/ZIP utility filenames');
|
|
|
|
|
textcolor(11);
|
|
|
|
|
writeln;
|
|
|
|
|
writeln('Enter the filename and parameters of your ARC extract');
|
|
|
|
|
writeln('utility. It should be somewhere on the PATH.');
|
|
|
|
|
writeln;
|
|
|
|
|
textcolor(9); write('UNARCing params: ');
|
|
|
|
|
infield1(wherex,wherey,fil_pkunpak,40);
|
|
|
|
|
writeln;
|
|
|
|
|
writeln;
|
|
|
|
|
writeln;
|
|
|
|
|
textcolor(11);
|
|
|
|
|
writeln('Enter the filename and parameters of your ZIP create/update');
|
|
|
|
|
writeln('utility. It should be somewhere on the PATH.');
|
|
|
|
|
writeln;
|
|
|
|
|
textcolor(9); write('ZIPing params: ');
|
|
|
|
|
infield1(wherex,wherey,fil_pkzip,40);
|
|
|
|
|
clrscr;
|
|
|
|
|
fil_errlog:='TA2Z.LOG';
|
|
|
|
|
repeat
|
|
|
|
|
clrscr;
|
|
|
|
|
textcolor(15);
|
|
|
|
|
writeln('Error log file');
|
|
|
|
|
textcolor(11);
|
|
|
|
|
writeln;
|
|
|
|
|
writeln('A list of all conversion errors that occur will be output to');
|
|
|
|
|
writeln('a log file.');
|
|
|
|
|
writeln;
|
|
|
|
|
textcolor(9); write('A2Z log filespec: ');
|
|
|
|
|
infield1(wherex,wherey,fil_errlog,40); fil_errlog:=allcaps(fil_errlog);
|
|
|
|
|
ok:=TRUE;
|
|
|
|
|
assign(errlog,fil_errlog);
|
|
|
|
|
{$I-} reset(errlog); {$I+}
|
|
|
|
|
if ioresult=0 then begin
|
|
|
|
|
close(errlog);
|
|
|
|
|
writeln;
|
|
|
|
|
writeln;
|
|
|
|
|
ok:=l_pynq('"'+fil_errlog+'" exists -- Append to end? ');
|
|
|
|
|
end;
|
|
|
|
|
until ok;
|
|
|
|
|
|
|
|
|
|
zip_comments:=systat.bbsname+' '+systat.bbsphone;
|
|
|
|
|
clrscr;
|
|
|
|
|
textcolor(15);
|
|
|
|
|
writeln('BBS advertisement');
|
|
|
|
|
textcolor(11);
|
|
|
|
|
writeln;
|
|
|
|
|
writeln('The comment field of each .ZIP file may be used to for');
|
|
|
|
|
writeln('advertising your BBS. If you wish to do so, you may place');
|
|
|
|
|
writeln('whatever comments you like into each converted .ZIP file.');
|
|
|
|
|
writeln;
|
|
|
|
|
textcolor(9); write('Comments: ');
|
|
|
|
|
infield1(wherex,wherey,zip_comments,32);
|
|
|
|
|
|
|
|
|
|
clrscr;
|
|
|
|
|
textcolor(9); write('UNARC params: '); textcolor(15); writeln(fil_pkunpak);
|
|
|
|
|
textcolor(9); write('ZIP params: '); textcolor(15); writeln(fil_pkzip);
|
|
|
|
|
textcolor(9); write('Log filespec: '); textcolor(15); writeln(fil_errlog);
|
|
|
|
|
textcolor(9); write('Advertisement:'); textcolor(15); writeln(zip_comments);
|
|
|
|
|
writeln;
|
|
|
|
|
writeln;
|
|
|
|
|
until l_pynq('Is this OK? ');
|
|
|
|
|
|
|
|
|
|
clrscr;
|
|
|
|
|
textcolor(9);
|
|
|
|
|
|
|
|
|
|
assign(zipcommentsfile,'temp$$$.txt');
|
|
|
|
|
{$I-} rewrite(zipcommentsfile); {$I+}
|
|
|
|
|
if ioresult<>0 then ee('TEMP$$$.TXT: Unable to open.');
|
|
|
|
|
writeln(zipcommentsfile,zip_comments);
|
|
|
|
|
close(zipcommentsfile);
|
|
|
|
|
|
|
|
|
|
writeln(batfile,'@echo off');
|
|
|
|
|
writeln(batfile,'cd a2z.$$$');
|
|
|
|
|
writeln(batfile,fil_pkunpak+' %1.ARC >nul');
|
|
|
|
|
writeln(batfile,fil_pkzip+' %1.ZIP <..\temp$$$.txt >nul');
|
|
|
|
|
writeln(batfile,'cd ..');
|
|
|
|
|
close(batfile);
|
|
|
|
|
|
|
|
|
|
{$I-} reset(errlog); {$I+}
|
|
|
|
|
if ioresult<>0 then begin
|
|
|
|
|
{$I-} rewrite(errlog); {$I+}
|
|
|
|
|
if ioresult<>0 then ee(fil_errlog+': Unable to create.');
|
|
|
|
|
end;
|
|
|
|
|
{$I-} append(errlog); {$I+}
|
|
|
|
|
if ioresult<>0 then ee(fil_errlog+': Unable to append to.');
|
|
|
|
|
|
|
|
|
|
elog('');
|
|
|
|
|
elog('');
|
|
|
|
|
elog('');
|
|
|
|
|
elog('Telegard v'+ver+' ARC ---> ZIP file conversion utility');
|
|
|
|
|
elog('');
|
|
|
|
|
elog('Began conversion on '+date+' '+time+'.');
|
|
|
|
|
elog('');
|
|
|
|
|
|
|
|
|
|
scan_file_bases;
|
|
|
|
|
conv_file_bases;
|
|
|
|
|
|
|
|
|
|
elog('');
|
|
|
|
|
elog('Completed conversion on '+date+' '+time+'.');
|
|
|
|
|
|
|
|
|
|
writeln;
|
|
|
|
|
star('Press any key to continue');
|
|
|
|
|
c:=readkey;
|
|
|
|
|
|
|
|
|
|
close(ulf);
|
|
|
|
|
{$I-} rmdir('A2Z.$$$'); {$I+}
|
|
|
|
|
close(errlog);
|
|
|
|
|
erase(batfile); erase(zipcommentsfile);
|
|
|
|
|
|
|
|
|
|
removewindow(wind);
|
|
|
|
|
|
|
|
|
|
setwindow(wind,20,11,59,17,9,1,1);
|
|
|
|
|
clrscr; textcolor(15);
|
|
|
|
|
gotoxy(4,3);
|
|
|
|
|
write('Thank you for choosing Telegard!');
|
|
|
|
|
CursorOff; delay(1500);
|
|
|
|
|
exitnow;
|
|
|
|
|
end.
|