text: #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
  