static void add_dep(struct manifest ***deps, const char *modname) { unsigned int i; struct manifest *m; char *errstr; if (have_mod(*deps, modname)) return; m = get_manifest(*deps, tal_fmt(*deps, "%s/ccan/%s", ccan_dir, modname)); errstr = build_submodule(m, cflags, COMPILE_NORMAL); if (errstr) errx(1, "%s", errstr); add_mod(deps, m); /* Get that modules depends as well... */ assert(!safe_mode); if (m->info_file) { char **infodeps; infodeps = get_deps(m, m->dir, "depends", false, get_or_compile_info); for (i = 0; infodeps[i]; i++) { if (strstarts(infodeps[i], "ccan/")) add_dep(deps, infodeps[i] + strlen("ccan/")); } } }
std::shared_ptr<VersionForRestore> BackupSystem::compute_latest_version(version_number_t version_number){ std::shared_ptr<VersionForRestore> latest_version; std::map<version_number_t, std::shared_ptr<VersionForRestore>> versions; std::vector<version_number_t> stack; const auto &latest_version_number = version_number; { auto version = make_shared(new VersionForRestore(latest_version_number, *this, this->keypair.get())); versions[latest_version_number] = version; for (auto &object : version->get_base_objects()) this->old_objects.push_back(object); for (auto &dep : version->get_manifest()->version_dependencies) versions[dep] = make_shared(new VersionForRestore(dep, *this, this->keypair.get())); } latest_version = versions[latest_version_number]; latest_version->fill_dependencies(versions); return latest_version; }
static bool add_dep(struct manifest *m, const char *dep, struct score *score) { struct stat st; struct manifest *subm; char *dir = talloc_asprintf(m, "%s/%s", ccan_dir, dep); /* FIXME: get_manifest has a tendency to exit. */ if (stat(dir, &st) != 0) { score->error = talloc_asprintf(m, "Could not stat dependency %s: %s", dir, strerror(errno)); return false; } subm = get_manifest(m, dir); list_add_tail(&m->deps, &subm->list); return true; }