Merge bitcoin/bitcoin#27073: Convert ArgsManager::GetDataDir to a read-only function

64c105442c util: make GetDataDir read-only & create datadir.. (willcl-ark)
56e370fbb9 util: add ArgsManager datadir helper functions (willcl-ark)

Pull request description:

  Fixes #20070

  Currently `ArgsManager::GetDataDir()` ensures it will always return a datadir by creating one if necessary. The function is shared between `bitcoind` `bitcoin-qt` and `bitcoin-cli` which results in the undesirable behaviour described in #20070.

  This PR splits out the part of the function which creates directories and adds it as a standalone function, only called as part of `bitcoind` and `bitcoin-qt` init, but not `bitcoin-cli`.

  `ReadConfigFiles`' behavior is changed to use the absolute path of the config file in error and warning messages instead of a relative path.

  This was inadvertantly the form being tested [here](https://github.com/bitcoin/bitcoin/blob/73966f75f67fb797163f0a766292a79d4b2c1b70/test/functional/feature_config_args.py#L287), whilst we were _not_ testing that a relative path was returned by the message even though we passed a relative path in as argument.

ACKs for top commit:
  achow101:
    ACK 64c105442c
  hebasto:
    re-ACK 64c105442c, only comments have been adjusted as requsted since my previous [review](https://github.com/bitcoin/bitcoin/pull/27073#pullrequestreview-1307435890).
  TheCharlatan:
    Re-ACK 64c105442c
  ryanofsky:
    Code review ACK 64c105442c. Only comment changes since last review

Tree-SHA512: b129501346071ad62551c9714492b21536d0558a94117d97218e255ef4e948d00df899a4bc2788faea27d3b1f20fc6136ef9d03e6a08498d926d9ad8688d6c96
This commit is contained in:
Andrew Chow committed 2023-02-23 16:41:14 -05:00
commit 1258af40c0
3 files changed
+42 -12

No files matched your search

+1
View File
@@ -167,6 +167,7 @@ static void initTranslations(QTranslator &qtTranslatorBase, QTranslator &qtTrans
static bool InitSettings()
{
gArgs.EnsureDataDir();
if (!gArgs.GetSettingsPath()) {
return true; // Do nothing if settings file disabled.
}