diff --git a/src/shared/utils.pas b/src/shared/utils.pas
index 712923e93b6c2a2fa2abefe95a1b282f51429ebc..235dee4a95627e1a39f8335aa81ade78f6648f1f 100644 (file)
--- a/src/shared/utils.pas
+++ b/src/shared/utils.pas
interface
interface
+uses
+ SysUtils, Classes;
+
+
// does filename have one of ".wad", ".pk3", ".zip" extensions?
function hasWadExtension (fn: AnsiString): Boolean;
// does filename have one of ".wad", ".pk3", ".zip" extensions?
function hasWadExtension (fn: AnsiString): Boolean;
// nobody cares about shitdoze, so i'll use the same code path for it
function findFileCI (var pathname: AnsiString; lastIsDir: Boolean=false): Boolean;
// nobody cares about shitdoze, so i'll use the same code path for it
function findFileCI (var pathname: AnsiString; lastIsDir: Boolean=false): Boolean;
+// they throws
+function openDiskFileRO (pathname: AnsiString): TStream;
+function createDiskFile (pathname: AnsiString): TStream;
-implementation
-
-uses
- SysUtils;
+implementation
function hasWadExtension (fn: AnsiString): Boolean;
begin
function hasWadExtension (fn: AnsiString): Boolean;
begin
end;
end;
+function openDiskFileRO (pathname: AnsiString): TStream;
+begin
+ if not findFileCI(pathname) then raise Exception.Create('can''t open file "'+pathname+'"');
+ result := TFileStream.Create(pathname, fmOpenRead or {fmShareDenyWrite}fmShareDenyNone);
+end;
+
+function createDiskFile (pathname: AnsiString): TStream;
+var
+ path: AnsiString;
+begin
+ path := ExtractFilePath(pathname);
+ if length(path) > 0 then
+ begin
+ if not findFileCI(path, true) then raise Exception.Create('can''t create file "'+pathname+'"');
+ end;
+ result := TFileStream.Create(path+ExtractFileName(pathname), fmCreate);
+end;
+
+
end.
end.