| /* | |
| * Copyright (C) 2017-2020 The Project X-Ray Authors. | |
| * | |
| * Use of this source code is governed by a ISC-style | |
| * license that can be found in the LICENSE file or at | |
| * https://opensource.org/licenses/ISC | |
| * | |
| * SPDX-License-Identifier: ISC | |
| */ | |
| #include <prjxray/database.h> | |
| #include <glob.h> | |
| #include <memory> | |
| #include <absl/strings/str_cat.h> | |
| namespace prjxray { | |
| static constexpr const char kSegbitsGlobPattern[] = "segbits_*.db"; | |
| std::vector<std::unique_ptr<prjxray::SegbitsFileReader>> Database::segbits() | |
| const { | |
| std::vector<std::unique_ptr<prjxray::SegbitsFileReader>> segbits; | |
| glob_t segbits_glob_results; | |
| int ret = glob(absl::StrCat(db_path_, "/", kSegbitsGlobPattern).c_str(), | |
| GLOB_NOSORT | GLOB_TILDE, NULL, &segbits_glob_results); | |
| if (ret < 0) { | |
| return {}; | |
| } | |
| for (size_t idx = 0; idx < segbits_glob_results.gl_pathc; idx++) { | |
| auto this_segbit = SegbitsFileReader::InitWithFile( | |
| segbits_glob_results.gl_pathv[idx]); | |
| if (this_segbit) { | |
| segbits.emplace_back(std::move(this_segbit)); | |
| } | |
| } | |
| globfree(&segbits_glob_results); | |
| return segbits; | |
| } | |
| } // namespace prjxray |