{ $Id$ } { /*************************************************************************** fileutil.pas ----------- ***************************************************************************/ ***************************************************************************** * * * This file is part of the Lazarus Component Library (LCL) * * * * See the file COPYING.modifiedLGPL, included in this distribution, * * for details about the copyright. * * * * This program is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * * * ***************************************************************************** } unit FileUtil; {$mode objfpc}{$H+} interface uses // For Smart Linking: Do not use the LCL! Classes, SysUtils, LCLStrConsts; // file attributes and states function CompareFilenames(const Filename1, Filename2: string): integer; function CompareFilenames(const Filename1, Filename2: string; ResolveLinks: boolean): integer; function CompareFilenames(Filename1: PChar; Len1: integer; Filename2: PChar; Len2: integer; ResolveLinks: boolean): integer; function FilenameIsAbsolute(const TheFilename: string):boolean; function FilenameIsWinAbsolute(const TheFilename: string):boolean; function FilenameIsUnixAbsolute(const TheFilename: string):boolean; procedure CheckIfFileIsExecutable(const AFilename: string); procedure CheckIfFileIsSymlink(const AFilename: string); function FileIsReadable(const AFilename: string): boolean; function FileIsWritable(const AFilename: string): boolean; function FileIsText(const AFilename: string): boolean; function FileIsText(const AFilename: string; out FileReadable: boolean): boolean; function FileIsExecutable(const AFilename: string): boolean; function FileIsSymlink(const AFilename: string): boolean; function FileSize(const Filename: string): int64; function GetFileDescription(const AFilename: string): string; function ReadAllLinks(const Filename: string; ExceptionOnError: boolean): string; // directories function DirPathExists(const FileName: String): Boolean; function ForceDirectory(DirectoryName: string): boolean; function DeleteDirectory(const DirectoryName: string; OnlyChilds: boolean): boolean; function ProgramDirectory: string; function DirectoryIsWritable(const DirectoryName: string): boolean; // filename parts const PascalFileExt: array[1..3] of string = ('.pas','.pp','.p'); function ExtractFileNameOnly(const AFilename: string): string; function ExtractFileNameWithoutExt(const AFilename: string): string; function CompareFileExt(const Filename, Ext: string; CaseSensitive: boolean): integer; function CompareFileExt(const Filename, Ext: string): integer; function FilenameIsPascalUnit(const Filename: string): boolean; function AppendPathDelim(const Path: string): string; function ChompPathDelim(const Path: string): string; function TrimFilename(const AFilename: string): string; function CleanAndExpandFilename(const Filename: string): string; function CleanAndExpandDirectory(const Filename: string): string; function CreateAbsoluteSearchPath(const SearchPath, BaseDirectory: string): string; function CreateRelativePath(const Filename, BaseDirectory: string): string; function FileIsInPath(const Filename, Path: string): boolean; function FileIsInDirectory(const Filename, Directory: string): boolean; // file search type TSearchFileInPathFlag = ( sffDontSearchInBasePath, sffSearchLoUpCase ); TSearchFileInPathFlags = set of TSearchFileInPathFlag; const AllDirectoryEntriesMask = '*'; function GetAllFilesMask: string; function GetExeExt: string; function SearchFileInPath(const Filename, BasePath, SearchPath, Delimiter: string; Flags: TSearchFileInPathFlags): string; function SearchAllFilesInPath(const Filename, BasePath, SearchPath, Delimiter: string; Flags: TSearchFileInPathFlags): TStrings; function FindDiskFilename(const Filename: string): string; function FindDiskFileCaseInsensitive(const Filename: string): string; function FindDefaultExecutablePath(const Executable: string): string; // file actions function ReadFileToString(const Filename: string): string; function CopyFile(const SrcFilename, DestFilename: string): boolean; function CopyFile(const SrcFilename, DestFilename: string; PreserveTime: boolean): boolean; function GetTempFilename(const Directory, Prefix: string): string; implementation {$IFNDEF windows} uses Unix, BaseUnix; {$ENDIF} var UpChars: array[char] of char; {$I fileutil.inc} procedure InternalInit; var c: char; begin for c:=Low(char) to High(char) do begin UpChars[c]:=upcase(c); end; end; initialization InternalInit; end.