mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-21 09:09:30 +02:00
* FSearch bugfix
* FSplit bugfix + GetFAttr,SetFAttr and GetFTime accept dos dir separators
This commit is contained in:
parent
20bcbe3a24
commit
731d52a810
@ -924,17 +924,15 @@ Function DosExitCode: Word;
|
||||
End;
|
||||
|
||||
|
||||
Procedure GetCBreak(Var BreakValue: Boolean);
|
||||
Procedure GetCBreak(Var BreakValue: Boolean);
|
||||
Begin
|
||||
{ Not implemented for Linux, but set to true as a precaution. }
|
||||
breakvalue:=breakflag;
|
||||
End;
|
||||
|
||||
|
||||
Procedure SetCBreak(BreakValue: Boolean);
|
||||
Procedure SetCBreak(BreakValue: Boolean);
|
||||
Begin
|
||||
breakflag:=BreakValue;
|
||||
{ ! No Linux equivalent ! }
|
||||
End;
|
||||
|
||||
|
||||
@ -1187,11 +1185,12 @@ begin
|
||||
{ allow backslash as slash }
|
||||
for i:=1 to length(path) do
|
||||
if path[i]='\' then path[i]:='/';
|
||||
|
||||
I := Length(Path);
|
||||
while (I > 0) and not ((Path[I] = '/') or (Path[I] = ':'))
|
||||
do Dec(I);
|
||||
if Path[I] = '/' then
|
||||
dir := Copy(Path, 0, I-1)
|
||||
dir := Copy(Path, 0, I)
|
||||
else dir := Copy(Path,0,I);
|
||||
|
||||
if Length(Path) > Length(dir) then
|
||||
@ -1246,7 +1245,7 @@ end;
|
||||
if dirlist[i]='\' then dirlist[i]:='/';
|
||||
repeat
|
||||
p1:=pos(';',dirlist);
|
||||
if p1=0 then
|
||||
if p1<>0 then
|
||||
begin
|
||||
newdir:=copy(dirlist,1,p1-1);
|
||||
delete(dirlist,1,p1);
|
||||
@ -1278,10 +1277,15 @@ var
|
||||
FInfo : pFileInfoBlock;
|
||||
FTime : Longint;
|
||||
FLock : Longint;
|
||||
Str : String;
|
||||
i : integer;
|
||||
begin
|
||||
DosError:=0;
|
||||
FTime := 0;
|
||||
FLock := Lock(StrPas(filerec(f).name), SHARED_LOCK);
|
||||
Str := StrPas(filerec(f).name);
|
||||
for i:=1 to length(Str) do
|
||||
if str[i]='\' then str[i]:='/';
|
||||
FLock := Lock(Str, SHARED_LOCK);
|
||||
IF FLock <> 0 then begin
|
||||
New(FInfo);
|
||||
if Examine(FLock, FInfo) then begin
|
||||
@ -1326,12 +1330,17 @@ end;
|
||||
info : pFileInfoBlock;
|
||||
MyLock : Longint;
|
||||
flags: word;
|
||||
Str: String;
|
||||
i: integer;
|
||||
Begin
|
||||
DosError:=0;
|
||||
flags:=0;
|
||||
New(info);
|
||||
{ open with shared lock }
|
||||
MyLock:=Lock(StrPas(filerec(f).name),SHARED_LOCK);
|
||||
Str := StrPas(filerec(f).name);
|
||||
for i:=1 to length(Str) do
|
||||
if str[i]='\' then str[i]:='/';
|
||||
MyLock:=Lock(Str,SHARED_LOCK);
|
||||
if MyLock <> 0 then
|
||||
Begin
|
||||
Examine(MyLock,info);
|
||||
@ -1365,11 +1374,17 @@ Procedure setfattr (var f;attr : word);
|
||||
var
|
||||
flags: longint;
|
||||
MyLock : longint;
|
||||
str: string;
|
||||
i: integer;
|
||||
Begin
|
||||
DosError:=0;
|
||||
flags:=FIBF_WRITE;
|
||||
{ open with shared lock }
|
||||
MyLock:=Lock(StrPas(filerec(f).name),SHARED_LOCK);
|
||||
Str := StrPas(filerec(f).name);
|
||||
for i:=1 to length(Str) do
|
||||
if str[i]='\' then str[i]:='/';
|
||||
|
||||
MyLock:=Lock(Str,SHARED_LOCK);
|
||||
|
||||
{ By default files are read-write }
|
||||
if attr AND ReadOnly <> 0 then
|
||||
@ -1380,7 +1395,7 @@ Procedure setfattr (var f;attr : word);
|
||||
if MyLock <> 0 then
|
||||
Begin
|
||||
Unlock(MyLock);
|
||||
if SetProtection(StrPas(filerec(f).name),flags) = 0 then
|
||||
if SetProtection(Str,flags) = 0 then
|
||||
DosError:=5;
|
||||
end
|
||||
else
|
||||
@ -1506,7 +1521,12 @@ End.
|
||||
|
||||
{
|
||||
$Log$
|
||||
Revision 1.5 1998-08-04 13:37:10 carl
|
||||
Revision 1.6 1998-08-13 13:18:45 carl
|
||||
* FSearch bugfix
|
||||
* FSplit bugfix
|
||||
+ GetFAttr,SetFAttr and GetFTime accept dos dir separators
|
||||
|
||||
Revision 1.5 1998/08/04 13:37:10 carl
|
||||
* bugfix of findfirst, was not convberting correctl backslahes
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user