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