| /* |
| * 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 |