add parseObjectTextFileOrSTDIN() utility

llvm-svn: 146931
diff --git a/lld/include/lld/Core/YamlReader.h b/lld/include/lld/Core/YamlReader.h
index b2caf6a..a63af02 100644
--- a/lld/include/lld/Core/YamlReader.h
+++ b/lld/include/lld/Core/YamlReader.h
@@ -21,7 +21,16 @@
 namespace lld {
 namespace yaml {
 
-llvm::error_code parseObjectText(  llvm::MemoryBuffer *mb
+  /// parseObjectTextFileOrSTDIN - Open the specified YAML file (use stdin if 
+  /// the path is "-") and parse into lld::File object(s) and append each to 
+  /// the specified vector<File*>.
+  llvm::error_code parseObjectTextFileOrSTDIN(llvm::StringRef path
+                                 , std::vector<File *>&);
+
+
+  /// parseObjectText - Parse the specified YAML formatted MemoryBuffer
+  /// into lld::File object(s) and append each to the specified vector<File*>.
+  llvm::error_code parseObjectText(llvm::MemoryBuffer *mb
                                  , std::vector<File *>&);
 
 } // namespace yaml
diff --git a/lld/lib/Core/YamlReader.cpp b/lld/lib/Core/YamlReader.cpp
index 86dea54..9b093e4 100644
--- a/lld/lib/Core/YamlReader.cpp
+++ b/lld/lib/Core/YamlReader.cpp
@@ -555,5 +555,20 @@
   result.push_back(file);
   return success;
 }
+
+//
+// Fill in vector<File*> from path to input text file.
+//
+llvm::error_code parseObjectTextFileOrSTDIN(llvm::StringRef path
+                                 , std::vector<File*>& result) {
+  llvm::OwningPtr<llvm::MemoryBuffer> mb;
+  llvm::error_code ec = llvm::MemoryBuffer::getFileOrSTDIN(path, mb);
+  if ( ec ) 
+      return ec;
+      
+  return parseObjectText(mb.get(), result);
+}
+
+
 } // namespace yaml
 } // namespace lld
diff --git a/lld/tools/lld-core/lld-core.cpp b/lld/tools/lld-core/lld-core.cpp
index f7425e3..ab250ea 100644
--- a/lld/tools/lld-core/lld-core.cpp
+++ b/lld/tools/lld-core/lld-core.cpp
@@ -171,19 +171,18 @@
 }
 
 int main(int argc, const char *argv[]) {
-  llvm::OwningPtr<llvm::MemoryBuffer> mb;
-  if (error(llvm::MemoryBuffer::getFileOrSTDIN(llvm::StringRef(argv[1]), mb)))
-    return 1;
-
+  // read input YAML doc into object file(s)
   std::vector<File *> files;
-  if (error(yaml::parseObjectText(mb.get(), files)))
+  if (error(yaml::parseObjectTextFileOrSTDIN(llvm::StringRef(argv[1]), files)))
     return 1;
 
+  // merge all atom graphs
   LdCore core(files);
   Resolver resolver(core, core);
   std::vector<const Atom *> &mergedAtoms = resolver.resolve();
   MergedFile outFile(mergedAtoms);
 
+  // write new atom graph out as YAML doc
   std::string errorInfo;
   llvm::raw_fd_ostream out("-", errorInfo);
   yaml::writeObjectText(&outFile, out);