115 llvm::ErrorOr<std::unique_ptr<llvm::MemoryBuffer>>
File =
116 VFS.getBufferForFile(
"/etc/redhat-release");
119 StringRef
Data =
File.get()->getBuffer();
120 if (
Data.starts_with(
"Fedora release"))
122 if (
Data.starts_with(
"Red Hat Enterprise Linux") ||
123 Data.starts_with(
"CentOS") ||
Data.starts_with(
"Scientific Linux")) {
124 if (
Data.contains(
"release 7"))
126 else if (
Data.contains(
"release 6"))
128 else if (
Data.contains(
"release 5"))
135 File = VFS.getBufferForFile(
"/etc/debian_version");
137 StringRef
Data =
File.get()->getBuffer();
140 if (!
Data.split(
'.').first.getAsInteger(10, MajorVersion)) {
141 switch (MajorVersion) {
168 return llvm::StringSwitch<Distro::DistroType>(
Data.split(
"\n").first)
183 File = VFS.getBufferForFile(
"/etc/SuSE-release");
185 StringRef
Data =
File.get()->getBuffer();
187 Data.split(Lines,
"\n");
188 for (
const StringRef &
Line : Lines) {
189 if (!
Line.trim().starts_with(
"VERSION"))
191 std::pair<StringRef, StringRef> SplitLine =
Line.split(
'=');
194 std::pair<StringRef, StringRef> SplitVer =
195 SplitLine.second.trim().split(
'.');
200 if (!SplitVer.first.getAsInteger(10, Version) && Version > 10)
208 if (VFS.exists(
"/etc/gentoo-release"))
215 const llvm::Triple &TargetOrHost) {
218 if (!TargetOrHost.isOSLinux())
222 const bool onRealFS = (llvm::vfs::getRealFileSystem() == &VFS);
228 llvm::Triple HostTriple(llvm::sys::getProcessTriple());
229 if (!HostTriple.isOSLinux() && onRealFS)