r284770 - [Driver] Parse Debian version as integer when possible. NFC
Michal Gorny via cfe-commits
cfe-commits at lists.llvm.org
Thu Oct 20 13:13:35 PDT 2016
Author: mgorny
Date: Thu Oct 20 15:13:35 2016
New Revision: 284770
URL: http://llvm.org/viewvc/llvm-project?rev=284770&view=rev
Log:
[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
Modified:
cfe/trunk/lib/Driver/ToolChains.cpp
Modified: cfe/trunk/lib/Driver/ToolChains.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/ToolChains.cpp?rev=284770&r1=284769&r2=284770&view=diff
==============================================================================
--- cfe/trunk/lib/Driver/ToolChains.cpp (original)
+++ cfe/trunk/lib/Driver/ToolChains.cpp Thu Oct 20 15:13:35 2016
@@ -3905,17 +3905,30 @@ static Distro DetectDistro(const Driver
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"))
More information about the cfe-commits
mailing list