mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-18 21:09:07 +02:00
SysUtils: add ExpandFileName with a BasePath overload
git-svn-id: trunk@43928 -
This commit is contained in:
parent
9926eb8dc6
commit
34fecf90f3
@ -103,7 +103,7 @@ end;
|
|||||||
{$ENDIF FPC_FEXPAND_VOLUMES}
|
{$ENDIF FPC_FEXPAND_VOLUMES}
|
||||||
|
|
||||||
|
|
||||||
function FExpand (const Path: PathStr): PathStr;
|
function FExpand (const Path, BasePath: PathStr): PathStr;
|
||||||
|
|
||||||
(* LFNSupport boolean constant, variable or function must be declared for all
|
(* LFNSupport boolean constant, variable or function must be declared for all
|
||||||
the platforms, at least locally in the Dos unit implementation part.
|
the platforms, at least locally in the Dos unit implementation part.
|
||||||
@ -299,8 +299,15 @@ begin
|
|||||||
{$ENDIF FPC_FEXPAND_DRIVES}
|
{$ENDIF FPC_FEXPAND_DRIVES}
|
||||||
begin
|
begin
|
||||||
|
|
||||||
(* Get current directory on selected drive/volume. *)
|
(* Get base path *)
|
||||||
GetDirIO (0, S);
|
{$IF defined(FPC_FEXPAND_SYSUTILS) and not defined(SYSUTILSUNICODE)}
|
||||||
|
S := ToSingleByteFileSystemEncodedFileName (BasePath);
|
||||||
|
{$ELSE FPC_FEXPAND_SYSUTILS and not SYSUTILSUNICODE}
|
||||||
|
S := BasePath;
|
||||||
|
{$ENDIF FPC_FEXPAND_SYSUTILS and not SYSUTILSUNICODE}
|
||||||
|
if not FileNameCasePreserving then
|
||||||
|
S := UpCase(S);
|
||||||
|
|
||||||
{$IFDEF FPC_FEXPAND_VOLUMES}
|
{$IFDEF FPC_FEXPAND_VOLUMES}
|
||||||
{$IFDEF FPC_FEXPAND_DRIVESEP_IS_ROOT}
|
{$IFDEF FPC_FEXPAND_DRIVESEP_IS_ROOT}
|
||||||
PathStart := Pos (DriveSeparator, S);
|
PathStart := Pos (DriveSeparator, S);
|
||||||
@ -612,6 +619,19 @@ begin
|
|||||||
FExpand := Pa;
|
FExpand := Pa;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
function FExpand (const Path: PathStr): PathStr;
|
||||||
|
var
|
||||||
|
BaseDir: {$IF defined(FPC_FEXPAND_SYSUTILS) and not defined(SYSUTILSUNICODE)}RawByteString{$else}PathStr{$endif};
|
||||||
|
begin
|
||||||
|
GetDirIO(0, BaseDir);
|
||||||
|
{$IF defined(FPC_FEXPAND_SYSUTILS) and not defined(SYSUTILSUNICODE)}
|
||||||
|
{ convert BaseDir to expected code page }
|
||||||
|
SetCodePage(BaseDir,DefaultRTLFileSystemCodePage);
|
||||||
|
{$ENDIF FPC_FEXPAND_SYSUTILS and not SYSUTILSUNICODE}
|
||||||
|
FExpand := FExpand(Path, PathStr(BaseDir));
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
(* Description of individual conditional defines supported for FExpand
|
(* Description of individual conditional defines supported for FExpand
|
||||||
(disregard the used directory separators in examples, constant
|
(disregard the used directory separators in examples, constant
|
||||||
System.DirectorySeparator is used in the real implemenation, of course):
|
System.DirectorySeparator is used in the real implemenation, of course):
|
||||||
|
@ -167,6 +167,15 @@ Begin
|
|||||||
Result:=Fexpand(S);
|
Result:=Fexpand(S);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
function ExpandFileName (Const FileName, BasePath : PathStr): PathStr;
|
||||||
|
|
||||||
|
Var S : PathStr;
|
||||||
|
|
||||||
|
Begin
|
||||||
|
S:=FileName;
|
||||||
|
DoDirSeparators(S);
|
||||||
|
Result:=Fexpand(S,BasePath);
|
||||||
|
end;
|
||||||
|
|
||||||
{$ifndef HASEXPANDUNCFILENAME}
|
{$ifndef HASEXPANDUNCFILENAME}
|
||||||
function ExpandUNCFileName (Const FileName : PathStr): PathStr;
|
function ExpandUNCFileName (Const FileName : PathStr): PathStr;
|
||||||
|
@ -27,6 +27,7 @@ function ExtractFileExt(const FileName: PathStr): PathStr;
|
|||||||
function ExtractFileDir(Const FileName : PathStr): PathStr;
|
function ExtractFileDir(Const FileName : PathStr): PathStr;
|
||||||
function ExtractShortPathName(Const FileName : PathStr) : PathStr;
|
function ExtractShortPathName(Const FileName : PathStr) : PathStr;
|
||||||
function ExpandFileName (Const FileName : PathStr): PathStr;
|
function ExpandFileName (Const FileName : PathStr): PathStr;
|
||||||
|
function ExpandFileName (Const FileName, BasePath : PathStr): PathStr;
|
||||||
function ExpandFileNameCase (const FileName: PathStr; out MatchFound: TFilenameCaseMatch): PathStr;
|
function ExpandFileNameCase (const FileName: PathStr; out MatchFound: TFilenameCaseMatch): PathStr;
|
||||||
function ExpandUNCFileName (Const FileName : PathStr): PathStr;
|
function ExpandUNCFileName (Const FileName : PathStr): PathStr;
|
||||||
function ExtractRelativePath (Const BaseName,DestName : PathStr): PathStr;
|
function ExtractRelativePath (Const BaseName,DestName : PathStr): PathStr;
|
||||||
|
Loading…
Reference in New Issue
Block a user