mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-18 20:39:43 +02:00
* First search for a user-specific configuration file, if that does not exist,
search for a system-wide configuration file. If this one also does not exist, create a system-wide configuration if the user is a super-user. Else create a user-specific configuration file git-svn-id: trunk@15161 -
This commit is contained in:
parent
e235d71cb7
commit
3295cd8370
@ -37,7 +37,6 @@ Type
|
||||
Public
|
||||
Constructor Create;
|
||||
Destructor Destroy;override;
|
||||
Function GetConfigFileName : String;
|
||||
Procedure LoadGlobalDefaults;
|
||||
Procedure LoadCompilerDefaults;
|
||||
Procedure ProcessCommandLine;
|
||||
@ -49,20 +48,12 @@ Type
|
||||
|
||||
{ TMakeTool }
|
||||
|
||||
function TMakeTool.GetConfigFileName: String;
|
||||
begin
|
||||
if HasOption('C','config-file') then
|
||||
Result:=GetOptionValue('C','config-file')
|
||||
else
|
||||
Result:=GetAppConfigFile(IsSuperUser,False);
|
||||
end;
|
||||
|
||||
|
||||
procedure TMakeTool.LoadGlobalDefaults;
|
||||
var
|
||||
i : integer;
|
||||
cfgfile : String;
|
||||
GeneratedConfig : boolean;
|
||||
GeneratedConfig,
|
||||
UseGlobalConfig : boolean;
|
||||
begin
|
||||
// Default verbosity
|
||||
LogLevels:=DefaultLogLevels;
|
||||
@ -72,20 +63,42 @@ begin
|
||||
LogLevels:=AllLogLevels+[vlDebug];
|
||||
break;
|
||||
end;
|
||||
// Load file or create new default configuration
|
||||
cfgfile:=GetConfigFileName;
|
||||
GeneratedConfig:=false;
|
||||
if FileExists(cfgfile) then
|
||||
UseGlobalConfig:=false;
|
||||
// First try config file from command line
|
||||
if HasOption('C','config-file') then
|
||||
begin
|
||||
GlobalOptions.LoadGlobalFromFile(cfgfile);
|
||||
if GlobalOptions.Dirty then
|
||||
GlobalOptions.SaveGlobalToFile(cfgfile);
|
||||
cfgfile:=GetOptionValue('C','config-file');
|
||||
if not FileExists(cfgfile) then
|
||||
Error(SErrNoSuchFile,[cfgfile]);
|
||||
end
|
||||
else
|
||||
begin
|
||||
ForceDirectories(ExtractFilePath(cfgfile));
|
||||
GlobalOptions.SaveGlobalToFile(cfgfile);
|
||||
GeneratedConfig:=true;
|
||||
// Now try if a local config-file exists
|
||||
cfgfile:=GetAppConfigFile(False,False);
|
||||
if not FileExists(cfgfile) then
|
||||
begin
|
||||
// If not, try to find a global configuration file
|
||||
cfgfile:=GetAppConfigFile(True,False);
|
||||
if FileExists(cfgfile) then
|
||||
UseGlobalConfig := true
|
||||
else
|
||||
begin
|
||||
// Create a new configuration file
|
||||
if not IsSuperUser then // Make a local, not global, configuration file
|
||||
cfgfile:=GetAppConfigFile(False,False);
|
||||
ForceDirectories(ExtractFilePath(cfgfile));
|
||||
GlobalOptions.SaveGlobalToFile(cfgfile);
|
||||
GeneratedConfig:=true;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
// Load file or create new default configuration
|
||||
if not GeneratedConfig then
|
||||
begin
|
||||
GlobalOptions.LoadGlobalFromFile(cfgfile);
|
||||
if GlobalOptions.Dirty and (not UseGlobalConfig or IsSuperUser) then
|
||||
GlobalOptions.SaveGlobalToFile(cfgfile);
|
||||
end;
|
||||
GlobalOptions.CompilerConfig:=GlobalOptions.DefaultCompilerConfig;
|
||||
// Tracing of what we've done above, need to be done after the verbosity is set
|
||||
|
Loading…
Reference in New Issue
Block a user