119 llvm::ErrorOr<std::unique_ptr<llvm::MemoryBuffer>>
File =
120 VFS.getBufferForFile(
"/etc/redhat-release");
123 StringRef
Data =
File.get()->getBuffer();
124 if (
Data.starts_with(
"Fedora release"))
126 if (
Data.starts_with(
"Red Hat Enterprise Linux") ||
127 Data.starts_with(
"CentOS") ||
Data.starts_with(
"Scientific Linux")) {
128 if (
Data.contains(
"release 7"))
130 else if (
Data.contains(
"release 6"))
132 else if (
Data.contains(
"release 5"))
139 File = VFS.getBufferForFile(
"/etc/debian_version");
141 StringRef
Data =
File.get()->getBuffer();
144 if (!
Data.split(
'.').first.getAsInteger(10, MajorVersion)) {
145 switch (MajorVersion) {
172 return llvm::StringSwitch<Distro::DistroType>(
Data.split(
"\n").first)
187 File = VFS.getBufferForFile(
"/etc/SuSE-release");
189 StringRef
Data =
File.get()->getBuffer();
191 Data.split(Lines,
"\n");
192 for (
const StringRef &
Line : Lines) {
193 if (!
Line.trim().starts_with(
"VERSION"))
195 std::pair<StringRef, StringRef> SplitLine =
Line.split(
'=');
198 std::pair<StringRef, StringRef> SplitVer =
199 SplitLine.second.trim().split(
'.');
204 if (!SplitVer.first.getAsInteger(10, Version) && Version > 10)
212 if (VFS.exists(
"/etc/gentoo-release"))
219 const llvm::Triple &TargetOrHost) {
222 if (!TargetOrHost.isOSLinux())
226 const bool onRealFS = (llvm::vfs::getRealFileSystem() == &VFS);
232 llvm::Triple HostTriple(llvm::sys::getProcessTriple());
233 if (!HostTriple.isOSLinux() && onRealFS)