[PATCH] D25696: [Driver] Parse Debian version as integer when possible. NFC

2016-10-20 Thread Michał Górny via cfe-commits
This revision was automatically updated to reflect the committed changes.
Closed by commit rL284770: [Driver] Parse Debian version as integer when 
possible. NFC (authored by mgorny).

Changed prior to commit:
  https://reviews.llvm.org/D25696?vs=75269=75345#toc

Repository:
  rL LLVM

https://reviews.llvm.org/D25696

Files:
  cfe/trunk/lib/Driver/ToolChains.cpp


Index: cfe/trunk/lib/Driver/ToolChains.cpp
===
--- cfe/trunk/lib/Driver/ToolChains.cpp
+++ cfe/trunk/lib/Driver/ToolChains.cpp
@@ -3905,17 +3905,30 @@
   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"))


Index: cfe/trunk/lib/Driver/ToolChains.cpp
===
--- cfe/trunk/lib/Driver/ToolChains.cpp
+++ cfe/trunk/lib/Driver/ToolChains.cpp
@@ -3905,17 +3905,30 @@
   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"))
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[PATCH] D25696: [Driver] Parse Debian version as integer when possible. NFC

2016-10-20 Thread Michał Górny via cfe-commits
mgorny added a comment.

Thanks for the review. I'll now look into updating the code for other distros 
to follow suit.


https://reviews.llvm.org/D25696



___
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[PATCH] D25696: [Driver] Parse Debian version as integer when possible. NFC

2016-10-20 Thread Bruno Cardoso Lopes via cfe-commits
bruno accepted this revision.
bruno added a comment.
This revision is now accepted and ready to land.

LGTM!


https://reviews.llvm.org/D25696



___
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[PATCH] D25696: [Driver] Parse Debian version as integer when possible. NFC

2016-10-20 Thread Michał Górny via cfe-commits
mgorny updated this revision to Diff 75269.
mgorny added a comment.

Restructured and reformatted as requested.


https://reviews.llvm.org/D25696

Files:
  lib/Driver/ToolChains.cpp


Index: lib/Driver/ToolChains.cpp
===
--- lib/Driver/ToolChains.cpp
+++ lib/Driver/ToolChains.cpp
@@ -3905,17 +3905,30 @@
   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"))


Index: lib/Driver/ToolChains.cpp
===
--- lib/Driver/ToolChains.cpp
+++ lib/Driver/ToolChains.cpp
@@ -3905,17 +3905,30 @@
   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"))
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[PATCH] D25696: [Driver] Parse Debian version as integer when possible. NFC

2016-10-19 Thread Bruno Cardoso Lopes via cfe-commits
bruno added inline comments.



Comment at: lib/Driver/ToolChains.cpp:3903
+if (!Data.split('.').first.getAsInteger(10, MajorVersion)) {
+  switch (MajorVersion) {
+case 5:

clang-format the `switch`: `case`'s should be aligned with it.



Comment at: lib/Driver/ToolChains.cpp:3917
+  }
+} else {
+  return llvm::StringSwitch(Data.split("\n").first)

You can remove the `else` and just `return llvm::StringSwitch...`


https://reviews.llvm.org/D25696



___
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[PATCH] D25696: [Driver] Parse Debian version as integer when possible. NFC

2016-10-17 Thread Michał Górny via cfe-commits
mgorny created this revision.
mgorny added reviewers: bkramer, bruno, rafael.
mgorny added a subscriber: cfe-commits.

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.


https://reviews.llvm.org/D25696

Files:
  lib/Driver/ToolChains.cpp


Index: lib/Driver/ToolChains.cpp
===
--- lib/Driver/ToolChains.cpp
+++ lib/Driver/ToolChains.cpp
@@ -3897,17 +3897,31 @@
   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;
+  }
+} else {
+  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"))


Index: lib/Driver/ToolChains.cpp
===
--- lib/Driver/ToolChains.cpp
+++ lib/Driver/ToolChains.cpp
@@ -3897,17 +3897,31 @@
   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;
+  }
+} else {
+  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"))
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits