Skip to content

Commit

Permalink
[Driver] Parse Debian version as integer when possible. NFC
Browse files Browse the repository at this point in the history
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

llvm-svn: 284770
  • Loading branch information
mgorny committed Oct 20, 2016
1 parent c8bb422 commit 0a2cd96
Showing 1 changed file with 24 additions and 11 deletions.
35 changes: 24 additions & 11 deletions clang/lib/Driver/ToolChains.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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<Distro>(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"))
Expand Down

0 comments on commit 0a2cd96

Please sign in to comment.