diff --git a/src/shared/utils.pas b/src/shared/utils.pas
index a3a650070a1ff1ef05791ee85676edd231259dd1..bf8abf4fbc98a8d0ce8de1b687e6b35da9d63cd7 100644 (file)
--- a/src/shared/utils.pas
+++ b/src/shared/utils.pas
function setFilenameExt (const fn, ext: AnsiString): AnsiString;
function forceFilenameExt (const fn, ext: AnsiString): AnsiString;
+// rewrites slashes to '/'
+function fixSlashes (s: AnsiString): AnsiString;
+
+function isAbsolutePath (const s: AnsiString): Boolean;
+function isRootPath (const s: AnsiString): Boolean;
+
// strips out name from `fn`, leaving trailing slash
function getFilenamePath (const fn: AnsiString): AnsiString;
end;
+// ////////////////////////////////////////////////////////////////////////// //
+// rewrites slashes to '/'
+function fixSlashes (s: AnsiString): AnsiString;
+var
+ f: Integer;
+begin
+ result := s;
+ for f := 1 to length(result) do if (result[f] = '\') then result[f] := '/';
+end;
+
+
+function isAbsolutePath (const s: AnsiString): Boolean;
+begin
+ result := false;
+ if (length(s) = 0) then exit;
+ {$IFDEF WINDOWS}
+ if (s[1] = '/') or (s[1] = '\') then begin result := true; exit; end;
+ if (length(s) > 2) and (s[2] = ':') and ((s[3] = '/') or (s[3] = '\')) then begin result := true; exit; end;
+ {$ELSE}
+ result := (s[1] = '/');
+ {$ENDIF}
+end;
+
+
+function isRootPath (const s: AnsiString): Boolean;
+begin
+ result := false;
+ if (length(s) = 0) then exit;
+ {$IFDEF WINDOWS}
+ if (s = '/') or (s = '\') then begin result := true; exit; end;
+ if (length(s) = 3) and (s[2] = ':') and ((s[3] = '/') or (s[3] = '\')) then begin result := true; exit; end;
+ {$ELSE}
+ result := (s = '/');
+ {$ENDIF}
+end;
+
+
// ////////////////////////////////////////////////////////////////////////// //
constructor TSimpleList.TEnumerator.Create (const aitems: TItemArr; acount: Integer);
begin
function isWadPath (const fn: AnsiString): Boolean;
var
pos: Integer;
- s: AnsiString;
+ s, wext: AnsiString;
begin
result := false;
pos := 1;
if (pos-4 > 1) and (fn[pos-4] = '.') and ((fn[pos+1] = '\') or (fn[pos+1] = '/')) then
begin
s := Copy(fn, pos-4, 4);
- if StrEquCI1251(s, '.wad') or StrEquCI1251(s, '.pk3') or StrEquCI1251(s, '.zip') or StrEquCI1251(s, '.dfz') then
+ for wext in wadExtensions do
begin
- result := true;
- exit;
+ if strEquCI1251(s, wext) then
+ begin
+ result := true;
+ exit;
+ end;
end;
end;
end;