//===- Version.cpp - Clang Version Number -----------------------*- C++ -*-===//
//
//                     The LLVM Compiler Infrastructure
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
//
// This file defines several version-related utility functions for Clang.
//
//===----------------------------------------------------------------------===//
#include <cstring>
#include <cstdlib>
using namespace std;

namespace clang {
  
const char *getClangSubversionPath() {
  static const char *Path = 0;
  if (Path)
    return Path;
  
  static char URL[] = "$URL$";
  char *End = strstr(URL, "/lib/Basic");
  if (End)
    *End = 0;
  
  End = strstr(URL, "/clang/tools/clang");
  if (End)
    *End = 0;
  
  char *Begin = strstr(URL, "cfe/");
  if (Begin) {
    Path = Begin + 4;
    return Path;
  }
  
  Path = URL;
  return Path;
}


unsigned getClangSubversionRevision() {
#ifndef SVN_REVISION
  // Subversion was not available at build time?
  return 0;
#else
  return strtol(SVN_REVISION, 0, 10);
#endif
}

} // end namespace clang
