Hi all,
I have some problem with a file archiver which uses the Dos unit
under Windows, I suspect the flaw resides in GetFAttr function.
Looking in the source for Win RTL

procedure getfattr(var f;var attr : word);
var
   l : longint;
   s : RawByteString;
begin
  doserror:=0;
  s:=ToSingleByteFileSystemEncodedFileName(filerec(f).name);
  l:=GetFileAttributes(pchar(s));
  if l=longint($ffffffff) then
   begin
     doserror:=getlasterror;
     attr:=0;
   end
  else
   attr:=l and $ffff;
end;

I noted that two bytes are reported as a result, thought
IIRC in DOS only the low byte is affected while the high one
should be zero, so the assignment would become

   attr:=l and $ff;

Waiting for your comments,
Marco
-- 
Simplex sigillum veri
_______________________________________________
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal

Reply via email to