]> granicus.if.org Git - clang/commitdiff
Basic: Simplify getClangRepositoryPath and getClangRevision.
authorDaniel Dunbar <daniel@zuster.org>
Wed, 29 Sep 2010 19:15:29 +0000 (19:15 +0000)
committerDaniel Dunbar <daniel@zuster.org>
Wed, 29 Sep 2010 19:15:29 +0000 (19:15 +0000)
 - I don't like returning StringRef's ever, unless it is actually important for
   performance, which it isn't here.

 - Also, stop validating getClangRevision to be an integer, I don't see a good
   reason to do this.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@115071 91177308-0d34-0410-b5e6-96231b3b80d8

include/clang/Basic/Version.h
lib/Basic/Makefile
lib/Basic/Version.cpp

index 59d82925fb732ff141e6424641f9de899268a60a..ede68ed50d526f8d24decbcab28182a0c180671c 100644 (file)
@@ -44,11 +44,11 @@ namespace clang {
   /// \brief Retrieves the repository path (e.g., Subversion path) that 
   /// identifies the particular Clang branch, tag, or trunk from which this
   /// Clang was built.
-  llvm::StringRef getClangRepositoryPath();
+  std::string getClangRepositoryPath();
   
   /// \brief Retrieves the repository revision number (or identifer) from which
   ///  this Clang was built.
-  llvm::StringRef getClangRevision();
+  std::string getClangRevision();
   
   /// \brief Retrieves the full repository version that is an amalgamation of
   ///  the information in getClangRepositoryPath() and getClangRevision().
index 7dd5221710057686f583b5944d22984bcda2b0e9..61accba0b5d22da2058224c0686420919b7d67ad 100644 (file)
@@ -16,9 +16,11 @@ LIBRARYNAME := clangBasic
 
 include $(CLANG_LEVEL)/Makefile
 
-SVN_REVISION := $(shell $(LLVM_SRC_ROOT)/utils/GetSourceVersion $(PROJ_SRC_DIR)/../..)
+SVN_REVISION := $(strip \
+       $(shell $(LLVM_SRC_ROOT)/utils/GetSourceVersion $(PROJ_SRC_DIR)/../..))
 
-SVN_REPOSITORY := $(shell $(LLVM_SRC_ROOT)/utils/GetRepositoryPath $(PROJ_SRC_DIR)/../..) 
+SVN_REPOSITORY := $(strip \
+       $(shell $(LLVM_SRC_ROOT)/utils/GetRepositoryPath $(PROJ_SRC_DIR)/../..))
 
 CPP.Defines += -I$(PROJ_SRC_DIR)/../../include -I$(PROJ_OBJ_DIR)/../../include \
          -DSVN_REVISION='"$(SVN_REVISION)"' -DSVN_REPOSITORY='"$(SVN_REPOSITORY)"'
index e9649e284d0739c624835ab25535668890d8d1aa..900b3e3859bc7fbca85541166d77f9bd612527ba 100644 (file)
@@ -20,44 +20,37 @@ using namespace std;
 
 namespace clang {
   
-llvm::StringRef getClangRepositoryPath() {
+std::string getClangRepositoryPath() {
 #ifdef SVN_REPOSITORY
-  if (SVN_REPOSITORY[0] != '\0') {
-    static const char URL[] = SVN_REPOSITORY;
-    const char *URLEnd = URL + strlen(URL) - 1;
+  llvm::StringRef URL(SVN_REPOSITORY);
+#else
+  llvm::StringRef URL("");
+#endif
 
-    // Strip off version from a build from an integration branch.
-    const char *End = strstr(URL, "/src/tools/clang");
-    if (End)
-      URLEnd = End;
+  // Strip off version from a build from an integration branch.
+  URL = URL.slice(0, URL.find("/src/tools/clang"));
 
-    const char *Begin = strstr(URL, "cfe/");
-    if (Begin)
-      return llvm::StringRef(Begin + 4, URLEnd - Begin - 4);
+  // Trim path prefix off, assuming path came from standard cfe path.
+  size_t Start = URL.find("cfe/");
+  if (Start != llvm::StringRef::npos)
+    URL = URL.substr(Start + 4);
 
-    return llvm::StringRef(URL, URLEnd - URL);
-  }
-#endif
-  return "";
+  return URL;
 }
 
-llvm::StringRef getClangRevision() {
+std::string getClangRevision() {
 #ifdef SVN_REVISION
-  if (SVN_REVISION[0] != '\0') {
-    std::string revision;
-    llvm::raw_string_ostream OS(revision);
-    OS << strtol(SVN_REVISION, 0, 10);
-    return OS.str();
-  }
-#endif
+  return SVN_REVISION;
+#else
   return "";
+#endif
 }
 
 std::string getClangFullRepositoryVersion() {
   std::string buf;
   llvm::raw_string_ostream OS(buf);
-  const llvm::StringRef &Path = getClangRepositoryPath();
-  const llvm::StringRef &Revision = getClangRevision();
+  std::string Path = getClangRepositoryPath();
+  std::string Revision = getClangRevision();
   if (!Path.empty())
     OS << Path;
   if (!Revision.empty()) {