[Back to ARCHIVES SWAG index] [Back to Main SWAG index] [Original]
{
RS> Can anyone tell me where to find some source dealing with archive
RS> detection? I need to be able to determine what archival method was used
RS> on a file regardless of the extension..
Yep.
BTW: I cut it out of a source I made it for. I should compile as is. you might
have to "USES" dos and/or CRT.
----------------------------= CUT HERE =-------------------------------------
}
Type
ArchiveType = (ARJ,ZIP,UC2,LZH,UNKNOWN);
Function GetArchiveType (Name : String) : Archivetype;
Var F : File;
Buf: Word;
StrBuf : String [3];
Begin
GetArchiveType := UNKNOWN;
Assign (F,Name);
FileMode := 0;
Reset (F,1);
If IoResult <> 0 Then
Begin
Write ('Unable to access file - ');
WriteLn (Name);
Exit;
End;
BlockRead (F,Buf,2);
If Buf = $EA60 Then
Begin
GetArchiveType := ARJ;
Close (f);
Exit;
End;
If Buf = $4b50 Then
Begin
GetArchiveType := ZIP;
Close (f);
Exit;
End;
If Buf = $4355 Then
Begin
GetArchiveType := UC2;
Close (f);
Exit;
End;
BlockRead (F,StrBuf[1],3);
StrBuf[0] := #3;
If StrBuf = '-lh' Then
Begin
GetArchiveType := LZH;
Close (f);
Exit;
End;
End;
[Back to ARCHIVES SWAG index] [Back to Main SWAG index] [Original]