DEADSOFTWARE

get rid of "kastet" and "pulemet" in symbols
[d2df-editor.git] / src / sfs / sfsPlainFS.pas
diff --git a/src/sfs/sfsPlainFS.pas b/src/sfs/sfsPlainFS.pas
deleted file mode 100644 (file)
index e6571ef..0000000
+++ /dev/null
@@ -1,147 +0,0 @@
-(* Copyright (C)  Doom 2D: Forever Developers
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program.  If not, see <http://www.gnu.org/licenses/>.
- *)
-// simple grouping files w/o packing:
-//   Quake I/II .PAK (PACK)
-//   SiN .SIN (SPAK)
-//
-{$INCLUDE ../shared/a_modes.inc}
-{$SCOPEDENUMS OFF}
-{.$R+}
-unit sfsPlainFS;
-
-interface
-
-uses
-  SysUtils, Classes, Contnrs, sfs;
-
-
-type
-  TSFSPlainVolumeType = (sfspvNone, sfspvPAK, sfspvSIN);
-
-  TSFSPlainVolume = class (TSFSVolume)
-  protected
-    fType: TSFSPlainVolumeType;
-
-    procedure ReadDirectory (); override;
-
-  public
-    function OpenFileByIndex (const index: Integer): TStream; override;
-  end;
-
-  TSFSPlainVolumeFactory = class (TSFSVolumeFactory)
-  public
-    function IsMyVolumePrefix (const prefix: AnsiString): Boolean; override;
-    function Produce (const prefix, fileName: AnsiString; st: TStream): TSFSVolume; override;
-    procedure Recycle (vol: TSFSVolume); override;
-  end;
-
-
-implementation
-
-uses
-  xstreams, utils;
-
-
-{ TSFSPlainVolume }
-procedure TSFSPlainVolume.ReadDirectory ();
-var
-  dsize, dofs, esz: LongWord;
-  fi: TSFSFileInfo;
-  name: packed array [0..120] of Char;
-begin
-  if (fType <> sfspvPAK) and (fType <> sfspvSIN) then raise ESFSError.Create('invalid archive');
-  fFileStream.Seek(4, soCurrent); // skip signature
-  dofs := readLongWord(fFileStream);
-  dsize := readLongWord(fFileStream);
-  fFileStream.Position := dofs;
-  if fType = sfspvPAK then esz := 64 else esz := 128;
-  while dsize >= esz do
-  begin
-    fi := TSFSFileInfo.Create(self);
-    FillChar(name[0], length(name), 0);
-    fFileStream.ReadBuffer(name[0], esz-8);
-    fi.fName := PChar(@name[0]);
-    fi.fOfs := readLongWord(fFileStream);
-    fi.fSize := readLongWord(fFileStream);
-    Dec(dsize, esz);
-  end;
-end;
-
-function TSFSPlainVolume.OpenFileByIndex (const index: Integer): TStream;
-begin
-  result := nil;
-  if fFiles = nil then exit;
-  if (index < 0) or (index >= fFiles.Count) or (fFiles[index] = nil) then exit;
-  result := TSFSPartialStream.Create(fFileStream, TSFSFileInfo(fFiles[index]).fOfs, TSFSFileInfo(fFiles[index]).fSize, false);
-end;
-
-
-{ TSFSPlainVolumeFactory }
-function TSFSPlainVolumeFactory.IsMyVolumePrefix (const prefix: AnsiString): Boolean;
-begin
-  result :=
-    StrEquCI1251(prefix, 'pak') or
-    StrEquCI1251(prefix, 'sin');
-end;
-
-procedure TSFSPlainVolumeFactory.Recycle (vol: TSFSVolume);
-begin
-  vol.Free();
-end;
-
-function TSFSPlainVolumeFactory.Produce (const prefix, fileName: AnsiString; st: TStream): TSFSVolume;
-var
-  vt: TSFSPlainVolumeType;
-  sign: packed array [0..3] of Char;
-  dsize, dofs: Integer;
-begin
-  result := nil;
-  vt := sfspvNone;
-
-  st.ReadBuffer(sign[0], 4);
-  dofs := readLongWord(st);
-  dsize := readLongWord(st);
-  st.Seek(-12, soCurrent);
-  if sign = 'PACK' then
-  begin
-    if (dsize < 0) or (dofs < 0) or (dofs > st.Size) or (dofs+dsize > st.Size) or (dsize mod 64 <> 0) then exit;
-    vt := sfspvPAK;
-  end
-  else if sign = 'SPAK' then
-  begin
-    if (dsize < 0) or (dofs < 0) or (dofs > st.Size) or (dofs+dsize > st.Size) or (dsize mod 64 <> 0) then exit;
-    vt := sfspvSIN;
-  end;
-
-  result := TSFSPlainVolume.Create(fileName, st);
-  TSFSPlainVolume(result).fType := vt;
-  try
-    result.DoDirectoryRead();
-  except
-    FreeAndNil(result);
-    raise;
-  end;
-end;
-
-
-var
-  pakf: TSFSPlainVolumeFactory;
-initialization
-  pakf := TSFSPlainVolumeFactory.Create();
-  SFSRegisterVolumeFactory(pakf);
-//finalization
-//  SFSUnregisterVolumeFactory(pakf);
-end.