Change clang_getFileName() to return a 'CXString' instead of 'const char *'.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96424 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/tools/CIndex/CIndex.cpp b/tools/CIndex/CIndex.cpp
index 87645d2..44efba7 100644
--- a/tools/CIndex/CIndex.cpp
+++ b/tools/CIndex/CIndex.cpp
@@ -1223,12 +1223,12 @@
 //===----------------------------------------------------------------------===//
 
 extern "C" {
-const char *clang_getFileName(CXFile SFile) {
+CXString clang_getFileName(CXFile SFile) {
   if (!SFile)
-    return 0;
+    return createCXString(NULL);
   
   FileEntry *FEnt = static_cast<FileEntry *>(SFile);
-  return FEnt->getName();
+  return createCXString(FEnt->getName());
 }
 
 time_t clang_getFileTime(CXFile SFile) {
diff --git a/tools/c-index-test/c-index-test.c b/tools/c-index-test/c-index-test.c
index d4771c7..334c789 100644
--- a/tools/c-index-test/c-index-test.c
+++ b/tools/c-index-test/c-index-test.c
@@ -172,13 +172,19 @@
 
 static const char* GetCursorSource(CXCursor Cursor) {  
   CXSourceLocation Loc = clang_getCursorLocation(Cursor);
-  const char *source;
+  CXString source;
   CXFile file;
   clang_getInstantiationLocation(Loc, &file, 0, 0, 0);
   source = clang_getFileName(file);
-  if (!source)
-    return "<invalid loc>";  
-  return basename(source);
+  if (!source.Spelling) {
+    clang_disposeString(source);
+    return "<invalid loc>";
+  }
+  else {
+    const char *b = basename(source.Spelling);
+    clang_disposeString(source);
+    return b;
+  }
 }
 
 /******************************************************************************/
@@ -205,8 +211,11 @@
   if (file) {
     unsigned i, n;
     unsigned printed_any_ranges = 0;
+    CXString fname;
     
-    fprintf(out, "%s:%d:%d:", clang_getFileName(file), line, column);
+    fname = clang_getFileName(file);
+    fprintf(out, "%s:%d:%d:", fname.Spelling, line, column);
+    clang_disposeString(fname);
   
     n = clang_getDiagnosticNumRanges(Diagnostic);
     for (i = 0; i != n; ++i) {
@@ -376,7 +385,7 @@
   while (startBuf < endBuf) {
     CXSourceLocation Loc;
     CXFile file;
-    const char *source = 0;
+    CXString source;
     
     if (*startBuf == '\n') {
       startBuf++;
@@ -387,8 +396,9 @@
           
     Loc = clang_getCursorLocation(Cursor);
     clang_getInstantiationLocation(Loc, &file, 0, 0, 0);
+    
     source = clang_getFileName(file);
-    if (source) {
+    if (source.Spelling) {
       CXSourceLocation RefLoc
         = clang_getLocation(Data->TU, file, curLine, curColumn);
       Ref = clang_getCursor(Data->TU, RefLoc);
@@ -401,6 +411,7 @@
         printf("\n");
       }
     }
+    clang_disposeString(source);
     startBuf++;
   }
   
@@ -439,13 +450,20 @@
                       unsigned includeStackLen, CXClientData data) {
   
   unsigned i;
-  printf("file: %s\nincluded by:\n", clang_getFileName(includedFile));
+  CXString fname;
+
+  fname = clang_getFileName(includedFile);
+  printf("file: %s\nincluded by:\n", fname.Spelling);
+  clang_disposeString(fname);
+  
   for (i = 0; i < includeStackLen; ++i) {
     CXFile includingFile;
     unsigned line, column;
     clang_getInstantiationLocation(includeStack[i], &includingFile, &line,
                                    &column, 0);
-    printf("  %s:%d:%d\n", clang_getFileName(includingFile), line, column);
+    fname = clang_getFileName(includingFile);
+    printf("  %s:%d:%d\n", fname.Spelling, line, column);
+    clang_disposeString(fname);
   }
   printf("\n");
 }