From 9227b6d0ddd8ae0171aa466ceda797a948441740 Mon Sep 17 00:00:00 2001 From: Evan Martin Date: Tue, 24 May 2011 09:47:24 -0700 Subject: move ReadFile into util --- src/ninja.h | 2 -- src/ninja_jumble.cc | 22 ---------------------- src/util.cc | 23 +++++++++++++++++++++++ src/util.h | 4 ++++ 4 files changed, 27 insertions(+), 24 deletions(-) diff --git a/src/ninja.h b/src/ninja.h index b73d7be..5487cbe 100644 --- a/src/ninja.h +++ b/src/ninja.h @@ -33,8 +33,6 @@ struct FileStat; struct Node; struct Rule; -int ReadFile(const string& path, string* contents, string* err); - /// Interface for accessing the disk. /// /// Abstract so it can be mocked out for tests. The real implementation diff --git a/src/ninja_jumble.cc b/src/ninja_jumble.cc index bef562b..b6bf097 100644 --- a/src/ninja_jumble.cc +++ b/src/ninja_jumble.cc @@ -26,28 +26,6 @@ #include "graph.h" #include "util.h" -int ReadFile(const string& path, string* contents, string* err) { - FILE* f = fopen(path.c_str(), "r"); - if (!f) { - err->assign(strerror(errno)); - return -errno; - } - - char buf[64 << 10]; - size_t len; - while ((len = fread(buf, 1, sizeof(buf), f)) > 0) { - contents->append(buf, len); - } - if (ferror(f)) { - err->assign(strerror(errno)); // XXX errno? - contents->clear(); - fclose(f); - return -errno; - } - fclose(f); - return 0; -} - int RealDiskInterface::Stat(const string& path) { struct stat st; if (stat(path.c_str(), &st) < 0) { diff --git a/src/util.cc b/src/util.cc index 63d3800..ff6d18e 100644 --- a/src/util.cc +++ b/src/util.cc @@ -14,6 +14,7 @@ #include "util.h" +#include #include #include #include @@ -150,3 +151,25 @@ int MakeDir(const string& path) { return mkdir(path.c_str(), 0777); #endif } + +int ReadFile(const string& path, string* contents, string* err) { + FILE* f = fopen(path.c_str(), "r"); + if (!f) { + err->assign(strerror(errno)); + return -errno; + } + + char buf[64 << 10]; + size_t len; + while ((len = fread(buf, 1, sizeof(buf), f)) > 0) { + contents->append(buf, len); + } + if (ferror(f)) { + err->assign(strerror(errno)); // XXX errno? + contents->clear(); + fclose(f); + return -errno; + } + fclose(f); + return 0; +} diff --git a/src/util.h b/src/util.h index 49a9aec..8d42ed4 100644 --- a/src/util.h +++ b/src/util.h @@ -35,4 +35,8 @@ bool CanonicalizePath(string* path, string* err); /// Portability abstraction. int MakeDir(const string& path); +/// Read a file to a string. +/// Returns -errno and fills in \a err on error. +int ReadFile(const string& path, string* contents, string* err); + #endif // NINJA_UTIL_H_ -- cgit v0.12