diff options
author | Daniel Dunbar <daniel@zuster.org> | 2009-03-26 15:58:36 +0000 |
---|---|---|
committer | Daniel Dunbar <daniel@zuster.org> | 2009-03-26 15:58:36 +0000 |
commit | c7fd57a2f3c86b7ac40e60138f38c51cece90a62 (patch) | |
tree | 9d4cacf18ce633db199a4054501f898a4cce20e0 /clang/lib/Driver/Driver.cpp | |
parent | 4e5696b984c3b07e1b9c46c563554beb341d93a0 (diff) | |
download | bcm5719-llvm-c7fd57a2f3c86b7ac40e60138f38c51cece90a62.tar.gz bcm5719-llvm-c7fd57a2f3c86b7ac40e60138f38c51cece90a62.zip |
Driver: Move GetReleaseVersion to static Driver::GetReleaseVersion method.
llvm-svn: 67754
Diffstat (limited to 'clang/lib/Driver/Driver.cpp')
-rw-r--r-- | clang/lib/Driver/Driver.cpp | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/clang/lib/Driver/Driver.cpp b/clang/lib/Driver/Driver.cpp index dc303ad0498..1562fde14ca 100644 --- a/clang/lib/Driver/Driver.cpp +++ b/clang/lib/Driver/Driver.cpp @@ -1029,3 +1029,42 @@ bool Driver::ShouldUseClangCompiler(const Compilation &C, const JobAction &JA, return true; } + +/// GetReleaseVersion - Parse (([0-9]+)(.([0-9]+)(.([0-9]+)?))?)? and +/// return the grouped values as integers. Numbers which are not +/// provided are set to 0. +/// +/// \return True if the entire string was parsed (9.2), or all groups +/// were parsed (10.3.5extrastuff). +bool Driver::GetReleaseVersion(const char *Str, unsigned &Major, + unsigned &Minor, unsigned &Micro, + bool &HadExtra) { + HadExtra = false; + + Major = Minor = Micro = 0; + if (*Str == '\0') + return true; + + char *End; + Major = (unsigned) strtol(Str, &End, 10); + if (*Str != '\0' && *End == '\0') + return true; + if (*End != '.') + return false; + + Str = End+1; + Minor = (unsigned) strtol(Str, &End, 10); + if (*Str != '\0' && *End == '\0') + return true; + if (*End != '.') + return false; + + Str = End+1; + Micro = (unsigned) strtol(Str, &End, 10); + if (*Str != '\0' && *End == '\0') + return true; + if (Str == End) + return false; + HadExtra = true; + return true; +} |