From: Michal Gorny Date: Thu, 20 Oct 2016 20:13:35 +0000 (+0000) Subject: [Driver] Parse Debian version as integer when possible. NFC X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=5012968460aacbbb0769d62f41b7dc8fdaac8555;p=clang [Driver] Parse Debian version as integer when possible. NFC Replace the string matching for /etc/debian_version with split integer/string matching algorithm. When the file contains 'major.minor' version number, parse the major version as integer and use a switch clause to match it. Otherwise, attempt 'codename/sid' matching using a StringSwitch. Differential Revision: https://reviews.llvm.org/D25696 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@284770 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Driver/ToolChains.cpp b/lib/Driver/ToolChains.cpp index 558f47306b..cb1bddf5ca 100644 --- a/lib/Driver/ToolChains.cpp +++ b/lib/Driver/ToolChains.cpp @@ -3905,17 +3905,30 @@ static Distro DetectDistro(const Driver &D, llvm::Triple::ArchType Arch) { File = D.getVFS().getBufferForFile("/etc/debian_version"); if (File) { StringRef Data = File.get()->getBuffer(); - if (Data[0] == '5') - return DebianLenny; - else if (Data.startswith("squeeze/sid") || Data[0] == '6') - return DebianSqueeze; - else if (Data.startswith("wheezy/sid") || Data[0] == '7') - return DebianWheezy; - else if (Data.startswith("jessie/sid") || Data[0] == '8') - return DebianJessie; - else if (Data.startswith("stretch/sid") || Data[0] == '9') - return DebianStretch; - return UnknownDistro; + // Contents: < major.minor > or < codename/sid > + int MajorVersion; + if (!Data.split('.').first.getAsInteger(10, MajorVersion)) { + switch (MajorVersion) { + case 5: + return DebianLenny; + case 6: + return DebianSqueeze; + case 7: + return DebianWheezy; + case 8: + return DebianJessie; + case 9: + return DebianStretch; + default: + return UnknownDistro; + } + } + return llvm::StringSwitch(Data.split("\n").first) + .Case("squeeze/sid", DebianSqueeze) + .Case("wheezy/sid", DebianWheezy) + .Case("jessie/sid", DebianJessie) + .Case("stretch/sid", DebianStretch) + .Default(UnknownDistro); } if (D.getVFS().exists("/etc/SuSE-release"))