[Back to COPYMOVE SWAG index] [Back to Main SWAG index] [Original]
{$S-,R-,V-,I-,N-,B-,F-}
{$IFNDEF Ver40}
{Allow overlays}
{$F+,O-,X+,A-}
{$ENDIF}
UNIT MoveFile;
INTERFACE
USES Dos;
FUNCTION MoveFiles ( VAR OldFullPath : PathStr;
VAR NewFullPath : PathStr) : BOOLEAN;
IMPLEMENTATION
FUNCTION MoveFiles ( VAR OldFullPath : PathStr;
VAR NewFullPath : PathStr) : BOOLEAN;
VAR
regs : REGISTERS;
Error_Return,
N : BYTE;
PROCEDURE MoveToNewPath;
{ On same disk drive }
BEGIN
OldFullPath [LENGTH (OldFullPath) + 1] := CHR (0);
NewFullPath [LENGTH (NewFullPath) + 1] := CHR (0);
WITH regs DO
BEGIN
DS := SEG (OldFullPath);
DX := OFS (OldFullPath) + 1; {the very first byte is the length}
ES := SEG (NewFullPath);
DI := OFS (NewFullPath) + 1;
AX := $56 SHL 8; { ERRORS are }
INTR ($21, regs); { 2 : file not found }
IF Flags AND 1 = 1 THEN { 3 : path not found }
error_return := AX { 5 : access denied }
ELSE { 17 : not same device }
error_return := 0;
END; {with}
END;
BEGIN
Error_Return := 0;
IF OldFullPath [1] = '\' THEN OldFullPath := FExpand (OldFullPath);
IF NewFullPath [1] = '\' THEN NewFullPath := FExpand (NewFullPath);
IF UPCASE (OldFullPath [1]) = UPCASE (NewFullPath [1]) THEN MoveToNewPath
ELSE Error_Return := 17;
MoveFiles := (Error_Return = 0);
END;
END.
[Back to COPYMOVE SWAG index] [Back to Main SWAG index] [Original]