DEADSOFTWARE

proper (i hope) support for '.wad', '.pk3' and '.zip' extensions
[d2df-sdl.git] / src / shared / utils.pas
1 {$MODE DELPHI}
2 unit utils;
4 interface
6 // does filename have one of ".wad", ".pk3", ".zip" extensions?
7 function hasWadExtension (fn: string): Boolean;
9 // does filepath have ".XXX:\" in it?
10 function isWadPath (fn: string): Boolean;
12 // adds ".wad" extension if filename doesn't have one of ".wad", ".pk3", ".zip"
13 function addWadExtension (fn: string): string;
16 implementation
18 uses
19 SysUtils, sfs;
22 function hasWadExtension (fn: string): Boolean;
23 begin
24 fn := ExtractFileExt(fn);
25 result := SFSStrEqu(fn, '.wad') or SFSStrEqu(fn, '.pk3') or SFSStrEqu(fn, '.zip');
26 end;
29 function addWadExtension (fn: string): string;
30 begin
31 result := fn;
32 if not hasWadExtension(result) then result := result+'.wad';
33 end;
36 function isWadPath (fn: string): Boolean;
37 var
38 p: Integer;
39 s: string;
40 begin
41 result := false;
42 while true do
43 begin
44 p := Pos(':', fn);
45 if (p = 0) or (length(fn)-p < 1) then break;
46 if (p-4 > 1) and (fn[p-4] = '.') and ((fn[p+1] = '\') or (fn[p+1] = '/')) then
47 begin
48 s := Copy(fn, p-4, 4);
49 if SFSStrEqu(s, '.wad') or SFSStrEqu(s, '.pk3') or SFSStrEqu(s, '.zip') then
50 begin
51 result := true;
52 exit;
53 end;
54 end;
55 Delete(fn, 1, p);
56 end;
57 end;
60 end.