blob: dc31ddd080d1138b1b240a936823aeea730d3e22 [file] [log] [blame]
John Park33858a32018-09-28 23:05:48 -07001#include "aos/util/file.h"
Brian Silverman61175fb2016-03-13 15:35:56 -04002
3#include <fcntl.h>
4#include <unistd.h>
5
John Park33858a32018-09-28 23:05:48 -07006#include "aos/scoped/scoped_fd.h"
Brian Silverman61175fb2016-03-13 15:35:56 -04007
8namespace aos {
9namespace util {
10
11::std::string ReadFileToStringOrDie(const ::std::string &filename) {
12 ::std::string r;
13 ScopedFD fd(PCHECK(open(filename.c_str(), O_RDONLY)));
14 while (true) {
15 char buffer[1024];
16 const ssize_t result = read(fd.get(), buffer, sizeof(buffer));
17 if (result < 0) {
18 PLOG(FATAL, "reading from %s", filename.c_str());
19 } else if (result == 0) {
20 break;
21 }
22 r.append(buffer, result);
23 }
24 return r;
25}
26
27} // namespace util
28} // namespace aos