1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
|
#define XERR
#include "modules.ih"
// called by addextern.cc and connect.cc
// extModgcm: extern/Module.gcm
// find the Mod.gcm files required by extModgcm
bool Modules::addRequiredBy(Path const &extModgcm)
{
unique_ptr<Process>
procPtr{ new Process{ Process::COUT | Process::IGNORE_CERR } };
procPtr->setBufSize(512);
*procPtr = "/bin/strings " + extModgcm.string();
procPtr->start(); // find 'export:/import:' NTBSs
string ntbs;
while (getline(*procPtr, ntbs)) // get all the NTBSs
{
// ntbs starts with /
if (needsGcm(ntbs)) // a needed gcm now in ntbs
{
Path needed{ extModgcm.parent_path() += ntbs };
imsg << " adding " << needed << " required by " <<
extModgcm << endl;
addExtern( needed );
}
}
return true;
}
|