diff options
Diffstat (limited to 'rtl/watcom')
-rw-r--r-- | rtl/watcom/sysutils.pp | 19 |
1 files changed, 11 insertions, 8 deletions
diff --git a/rtl/watcom/sysutils.pp b/rtl/watcom/sysutils.pp index 20c7e8e1f5..d5f8b48bf8 100644 --- a/rtl/watcom/sysutils.pp +++ b/rtl/watcom/sysutils.pp @@ -277,7 +277,7 @@ begin end; -Function FileAge (Const FileName : String): Longint; +Function FileAge (Const FileName : RawByteString): Longint; var Handle: longint; begin Handle := FileOpen(FileName, 0); @@ -335,7 +335,7 @@ begin end; -Function FindFirst (Const Path : String; Attr : Longint; out Rslt : TSearchRec) : Longint; +Function InternalFindFirst (Const Path : RawByteString; Attr : Longint; out Rslt : TAbstractSearchRec; var Name: RawByteString) : Longint; Var Sr : PSearchrec; @@ -343,6 +343,7 @@ begin //!! Sr := New(PSearchRec); getmem(sr,sizeof(searchrec)); Rslt.FindHandle := longint(Sr); + { FIXME: Dos version has shortstring interface -> discards encoding } DOS.FindFirst(Path, Attr, Sr^); result := -DosError; if result = 0 then @@ -351,12 +352,13 @@ begin Rslt.Size := Sr^.Size; Rslt.Attr := Sr^.Attr; Rslt.ExcludeAttr := 0; - Rslt.Name := Sr^.Name; + Name := Sr^.Name; + SetCodePage(Name,DefaultFileSystemCodePage,False); end ; end; -Function FindNext (Var Rslt : TSearchRec) : Longint; +Function InternalFindNext (var Rslt : TAbstractSearchRec; var Name : RawByteString) : Longint; var Sr: PSearchRec; begin @@ -371,17 +373,18 @@ begin Rslt.Size := Sr^.Size; Rslt.Attr := Sr^.Attr; Rslt.ExcludeAttr := 0; - Rslt.Name := Sr^.Name; + Name := Sr^.Name; + SetCodePage(Name,DefaultFileSystemCodePage,False); end; end; end; -Procedure FindClose (Var F : TSearchrec); +Procedure InternalFindClose(var Handle: Pointer); var Sr: PSearchRec; begin - Sr := PSearchRec(F.FindHandle); + Sr := PSearchRec(Handle); if Sr <> nil then begin //!! Dispose(Sr); @@ -389,7 +392,7 @@ begin DOS.FindClose(SR^); freemem(sr,sizeof(searchrec)); end; - F.FindHandle := 0; + Handle := 0; end; |