ADD: Pass last error code

This commit is contained in:
Alexander Koblov 2019-09-15 09:20:26 +00:00
commit e0a85f2e9c
2 changed files with 20 additions and 1 deletions

View file

@ -61,7 +61,7 @@ var
implementation
uses
uDebug;
DCOSUtils, uDebug;
const
MasterAddress = 'doublecmd-master-';
@ -144,6 +144,7 @@ end;
function TWorkerProxy.ProcessObject(ACommand: UInt32; const ObjectName: String): LongBool;
var
LastError: Integer;
Stream: TMemoryStream;
begin
Result:= False;
@ -161,6 +162,8 @@ begin
FClient.WriteBuffer(Stream.Memory^, Stream.Size);
// Receive command result
FClient.ReadBuffer(Result, SizeOf(Result));
FClient.ReadBuffer(LastError, SizeOf(LastError));
SetLastOSError(LastError);
finally
Stream.Free;
end;
@ -169,6 +172,7 @@ end;
function TWorkerProxy.ProcessObject(ACommand: UInt32; const OldName,
NewName: String): LongBool;
var
LastError: Integer;
Stream: TMemoryStream;
begin
Result:= False;
@ -187,6 +191,8 @@ begin
FClient.WriteBuffer(Stream.Memory^, Stream.Size);
// Receive command result
FClient.ReadBuffer(Result, SizeOf(Result));
FClient.ReadBuffer(LastError, SizeOf(LastError));
SetLastOSError(LastError);
finally
Stream.Free;
end;

View file

@ -99,6 +99,7 @@ var
NewName: String;
FileName: String;
Result: LongBool;
LastError: Integer;
begin
case ACommand of
RPC_DeleteFile:
@ -106,7 +107,9 @@ begin
FileName:= ARequest.ReadAnsiString;
DCDebug('DeleteFile ', FileName);
Result:= mbDeleteFile(FileName);
LastError:= GetLastOSError;
ATransport.WriteBuffer(Result, SizeOf(Result));
ATransport.WriteBuffer(LastError, SizeOf(LastError));
end;
RPC_FileOpen:
begin
@ -130,7 +133,9 @@ begin
NewName:= ARequest.ReadAnsiString;
DCDebug('RenameFile ', FileName);
Result:= mbRenameFile(FileName, NewName);
LastError:= GetLastOSError;
ATransport.WriteBuffer(Result, SizeOf(Result));
ATransport.WriteBuffer(LastError, SizeOf(LastError));
end;
RPC_CreateHardLink:
begin
@ -138,7 +143,9 @@ begin
NewName:= ARequest.ReadAnsiString;
DCDebug('CreateHardLink ', NewName);
Result:= CreateHardLink(FileName, NewName);
LastError:= GetLastOSError;
ATransport.WriteBuffer(Result, SizeOf(Result));
ATransport.WriteBuffer(LastError, SizeOf(LastError));
end;
RPC_CreateSymbolicLink:
begin
@ -146,21 +153,27 @@ begin
NewName:= ARequest.ReadAnsiString;
DCDebug('CreateSymbolicLink ', NewName);
Result:= CreateSymLink(FileName, NewName);
LastError:= GetLastOSError;
ATransport.WriteBuffer(Result, SizeOf(Result));
ATransport.WriteBuffer(LastError, SizeOf(LastError));
end;
RPC_CreateDirectory:
begin
FileName:= ARequest.ReadAnsiString;
DCDebug('CreateDirectory ', FileName);
Result:= mbCreateDir(FileName);
LastError:= GetLastOSError;
ATransport.WriteBuffer(Result, SizeOf(Result));
ATransport.WriteBuffer(LastError, SizeOf(LastError));
end;
RPC_RemoveDirectory:
begin
FileName:= ARequest.ReadAnsiString;
DCDebug('RemoveDirectory ', FileName);
Result:= mbRemoveDir(FileName);
LastError:= GetLastOSError;
ATransport.WriteBuffer(Result, SizeOf(Result));
ATransport.WriteBuffer(LastError, SizeOf(LastError));
end;
RPC_Terminate: Halt;
end;