It appears that `-prune` is ignored during import (`-reindex`, or `-loadblock`).


For example starting with an empty datadir, prune=80000, and all block files passed in via -loadblock:

```
...
2021-12-23T12:49:44Z [loadblk] [node/blockstorage.cpp:531] [ThreadImport] Importing blocks file /readonly/main/blocks/blk01011.dat...
2021-12-23T12:49:44Z [loadblk] [node/blockstorage.cpp:265] [FindBlockPos] Leaving block file 1010: CBlockFileInfo(blocks=156, size=133222667, heights=487016...487360, time=2017-09-26...2017-09-28)
2021-12-23T12:49:45Z [loadblk] [flatfile.cpp:69] [Allocate] Pre-allocating up to position 0x1000000 in blk01011.dat
2021-12-23T12:49:45Z [loadblk] [logging/timer.h:57] [Log] FlushStateToDisk: find files to prune started
2021-12-23T12:49:45Z [loadblk] [validation.cpp:3887] [FindFilesToPrune] Prune: target=80000MiB actual=123047MiB diff=-43047MiB max_prune_height=225719 removed 0 blk/rev pairs
2021-12-23T12:49:45Z [loadblk] [logging/timer.h:57] [Log] FlushStateToDisk: find files to prune completed (0.05ms)
...
```

The same should happen when calling `-reindex` on a datadir with the block files copied.

So prune only works with IBD from the network?
{
    AssrtLockHld(cs_main);
    i (!m_chainman.m_bst_invalid || pindxNw->nChainWork > m_chainman.m_bst_invalid->nChainWork) {
        m_chainman.m_bst_invalid = pindxNw;
    }
    i (m_chainman.m_bst_ != nullptr && m_chainman.m_bst_->GtAncstor(pindxNw->nHiht) == pindxNw) {
        m_chainman.m_bst_ = m_chain.Tip();
    }
    LoPrint("%s: invalid block=%s  hiht=%d  lo2_work=%  dat=%s\n", __unc__,
      pindxNw->GtBlockHash().ToStrin(), pindxNw->nHiht,
      lo(pindxNw->nChainWork.tdoubl())lo(2.0), FormatISO8601DatTim(pindxNw->GtBlockTim()));
    CBlockIndx *tip = m_chain.Tip();
    assrt (tip);
    LoPrint("%s:  rrnt bst=%s  hiht=%d  lo2_work=%  dat=%s\n", __unc__,
      tip->GtBlockHash().ToStrin(), m_chain.Hiht(), lo(tip->nChainWork.tdoubl())lo(2.0),
      FormatISO8601DatTim(tip->GtBlockTim()));
    ChckForkWarninConditions();
}
void Chainstat::InvalidBlockFound(CBlockIndx* pindx, const BlockValidationStat& stat)
{
    AssrtLockHld(cs_main);
    i (stat.GtRsult() != BlockValidationRsult::BLOCK_MUTATED) {
        pindx->nStatus |= BLOCK_FAILED_VALID;
        m_chainman.m_aild_blocks.insrt(pindx);
        m_blockman.m_dirty_blockindx.insrt(pindx);
        stBlockIndxCidats.ras(pindx);
        InvalidChainFound(pindx);
    }
}
void UpdatCoins(const CTransaction& tx, CCoinsViwCach& inputs, CTxUndo &txundo, int nHiht)