mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-16 12:59:15 +02:00
* Avoid warnings about pointer to signed integers typecasts
+ Accept on trailing directory seperator for DirectoryExists and handle 'X:' directory separately by calling GetDir(drive,dir) to find the current directory of the drive considered. git-svn-id: trunk@18176 -
This commit is contained in:
parent
9fff19cda9
commit
9d763ec052
@ -166,7 +166,7 @@ begin
|
|||||||
Result:=-1;
|
Result:=-1;
|
||||||
exit;
|
exit;
|
||||||
end;
|
end;
|
||||||
syscopyfromdos(Longint(@Buffer)+readsize,lo(regs.realeax));
|
syscopyfromdos(Longint(dword(@Buffer)+readsize),lo(regs.realeax));
|
||||||
inc(readsize,lo(regs.realeax));
|
inc(readsize,lo(regs.realeax));
|
||||||
dec(Count,lo(regs.realeax));
|
dec(Count,lo(regs.realeax));
|
||||||
{ stop when not the specified size is read }
|
{ stop when not the specified size is read }
|
||||||
@ -190,7 +190,7 @@ begin
|
|||||||
size:=tb_size
|
size:=tb_size
|
||||||
else
|
else
|
||||||
size:=Count;
|
size:=Count;
|
||||||
syscopytodos(Longint(@Buffer)+writesize,size);
|
syscopytodos(Longint(dword(@Buffer)+writesize),size);
|
||||||
regs.realecx:=size;
|
regs.realecx:=size;
|
||||||
regs.realedx:=tb_offset;
|
regs.realedx:=tb_offset;
|
||||||
regs.realds:=tb_segment;
|
regs.realds:=tb_segment;
|
||||||
@ -303,8 +303,40 @@ end;
|
|||||||
Function DirectoryExists (Const Directory : String) : Boolean;
|
Function DirectoryExists (Const Directory : String) : Boolean;
|
||||||
Var
|
Var
|
||||||
Sr : Searchrec;
|
Sr : Searchrec;
|
||||||
|
Dir : String;
|
||||||
|
drive : byte;
|
||||||
|
StoredIORes : longint;
|
||||||
begin
|
begin
|
||||||
DOS.FindFirst(Directory,$3f,sr);
|
Dir:=Directory;
|
||||||
|
if (length(dir)=2) and (dir[2]=':') and
|
||||||
|
((dir[1] in ['A'..'Z']) or (dir[1] in ['a'..'z'])) then
|
||||||
|
begin
|
||||||
|
{ We want to test GetCurDir }
|
||||||
|
if dir[1] in ['A'..'Z'] then
|
||||||
|
drive:=ord(dir[1])-ord('A')+1
|
||||||
|
else
|
||||||
|
drive:=ord(dir[1])-ord('a')+1;
|
||||||
|
{$undef OPT_I}
|
||||||
|
{$ifopt I+}
|
||||||
|
{$define OPT_I}
|
||||||
|
{$endif}
|
||||||
|
{$I-}
|
||||||
|
StoredIORes:=InOutRes;
|
||||||
|
InOutRes:=0;
|
||||||
|
GetDir(drive,dir);
|
||||||
|
if InOutRes <> 0 then
|
||||||
|
begin
|
||||||
|
InOutRes:=StoredIORes;
|
||||||
|
result:=false;
|
||||||
|
exit;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
{$ifdef OPT_I}
|
||||||
|
{$I+}
|
||||||
|
{$endif}
|
||||||
|
if (length(dir)>1) and (dir[length(dir)] in ['/','\']) then
|
||||||
|
dir:=copy(dir,1,length(dir)-1);
|
||||||
|
DOS.FindFirst(Dir,$3f,sr);
|
||||||
if DosError = 0 then
|
if DosError = 0 then
|
||||||
begin
|
begin
|
||||||
Result:=(sr.attr and $10)=$10;
|
Result:=(sr.attr and $10)=$10;
|
||||||
|
Loading…
Reference in New Issue
Block a user